Назначить результат SELECT для поля-символа - PullRequest
2 голосов
/ 27 августа 2009

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


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

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

Любая помощь будет оценена.

1 Ответ

5 голосов
/ 27 августа 2009

Я думаю, что сайт скрывает любой код, который он находит между <>. Похоже, вы объявили символ поля, но на самом деле я не вижу, как вы его назвали.

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

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

data: wa_bkpf type bkpf_type.

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

или

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.

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

или

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

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

...