Присвоить результат SELECT символу поля GETWA_NOT_ASSIGNED

Я не понимаю, почему закомментированный запрос не работает.


REPORT  z_hello_world_local.

TYPES:  BEGIN OF bkpf_type,
          xblnr          TYPE bkpf-xblnr,
        END OF bkpf_type.

DATA: t_bkpf                 TYPE TABLE OF bkpf_type.

FIELD-SYMBOLS:  <bkpf>        TYPE bkpf_type.


*This query does not work?
*SELECT xblnr
*      INTO CORRESPONDING FIELDS OF <bkpf> UP TO 1 ROWS
*      FROM bkpf
*      WHERE belnr = '1800001017'.
*    ENDSELECT.
*
DATA: t_xblnr TYPE bkpf-xblnr.

*This query works and in my head it is roughly the same thing.
SELECT SINGLE xblnr
      INTO t_xblnr
      FROM bkpf
      WHERE belnr = '1800001017'.


write 'Done'.

Если я запускаю закомментированный запрос, я получаю сообщение об ошибке:

Ошибки выполнения GETWA_NOT_ASSIGNED Дата и время
26.08.2009 19:54:19

Краткий текст Символ поля еще не назначен.

Почему я получаю эту ошибку времени выполнения?


person Mosquito Mike    schedule 27.08.2009    source источник


Ответы (1)


Я предполагаю (основываясь на ошибке и фрагментах кода, которые я на самом деле не вижу), что вы пытаетесь выбрать данные непосредственно в символ поля. Вы не можете этого сделать. Символ поля - это не область памяти, это (в основном) указатель.

Вы можете сделать одно из следующих действий:

data: wa_bkpf type bkpf_type.

select xblnr
  into corresponding fields of wa_bkpf
  up to 1 rows
  from bkpf
  where xblnr = '1800001017'.
endselect.

or

field-symbols: <bkpf> type bkpf_type.
append initial line to t_bkpf assigning <bkpf>.
select xlbnr
  into corresponding fields <bkpf>
  up to 1 rows
  from bkpf
  where xblnr = '1800001017'.
endselect.

В этом случае вы указываете символ поля на новую строку, которую вы добавили во внутреннюю таблицу.

or

select xblnr
  into corresponding fields of table t_bkpf
  from bkpf
  where xlbnr = '1800001017'.

В этом случае вы получите все соответствующие документы и поместите их непосредственно во внутреннюю таблицу.

person Bryan Cain    schedule 27.08.2009
comment
Это исправляет это, и это имеет некоторый смысл. Я предполагаю, что начальный тип добавления выделяет некоторый кусок памяти для размещения результатов запроса. Я думаю, что исправил все проблемы с форматированием с помощью фрагмента кода, спасибо за указание на это. Спасибо. - person Mosquito Mike; 27.08.2009
comment
Я бы посоветовал также немного почитать о полевых символах. Если вы новичок, я почти уверен, что вам не потребуются полевые символы для большей части того, что вам нужно сделать. При правильном использовании они могут сделать вашу жизнь намного проще, но если вы ошибетесь, отладка может оказаться ужасной. - person Esti; 29.08.2009