2009-08-27 77 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

修復它,這是有道理的。我想append最初類型分配一些內存來把查詢結果。 我想我修復了代碼片段的所有格式問題,謝謝指出。 謝謝。 – 2009-08-27 13:33:51

+0

我建議讀一下字段符號。如果你是新手,我幾乎可以肯定你不需要現場符號來滿足你需要做的大部分工作。如果使用得當,它們可以讓你的生活變得更加輕鬆,但是如果你弄錯了,那麼調試可能是一件恐怖的事情。 – Esti 2009-08-29 03:27:37

相關問題