2009-08-27 6 views
2

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


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'. 

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

Runtime Errors GETWA_NOT_ASSIGNED Date and Time
08/26/2009 19:54:19

Short text Field symbol has not yet been assigned.

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

ответ

5

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

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

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

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'. 

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

+0

Это исправление, и это имеет смысл. Я предполагаю, что первоначальный тип добавляет некоторый фрагмент памяти, чтобы помещать результаты запроса. Я думаю, что я исправил все проблемы форматирования с помощью фрагмента кода, спасибо за указание на это. Спасибо. –

+0

Я бы тоже немного почитал на полевых символах. Если вы новичок, я абсолютно уверен, что вам не нужны полевые символы для большинства того, что вам нужно делать. При правильном использовании они могут сделать вашу жизнь намного проще, но если вы ошибаетесь, это может быть ужасом для отладки. – Esti