各位好
SELECT aufnr plnbez gamng gltrp rsnum FROM afko INTO TABLE it_afko WHERE aufnr = p_aufnr.
進入debug模式測試時發現程式執行到"IF it_afko IS NOT INITIAL."後就跳過SELECT直接到ENDIF.。
是否有網大知道為什麼會這樣?請知道的朋友教教我如何修改。
謝謝!!
樓上應該是正確的解答, ABAP的ITable宣告方式有加WITH HEADER LINE跟沒加兩種, 若是有加ITable隱含有work area 及table data, 原宣告的itable名稱指的是work area(一筆資料), 而table data(多筆)會以array的型式存在所以要在itable的名稱後面加[], 之後都建議不要用WITH HEADER LINE的方式(個別宣告名稱不同), 但舊有的Library接收的參數還有很多是以有HEADER LINE的方式傳輸
例:
TYPES:BEGIN OF EMP,
????????????? NAME LIKE USER-UNAME,
????????????? TELNUM? LIKE USER-TELENUMBER,
????????????? ADDR? LIKE USER-ADDRNUMBER,
END OF EMP.
DATA: EMPTAB TYPE STANDARD TABLE? OF EMP INITIAL SIZE 10 WITH HEADER LINE.
或
DATA: BEGIN OF EMP OCCURS 0,
??? NAME LIKE USER-UNAME,
? TELNUM LIKE USER-TELENUMBER,
END OF EMP.
DATA ITAB LIKE TABLE OF EMP.
以上都是有HEADER LINE
下面是work area跟table data分開宣告(這時候itable就不用加[])
TYPES: Begin Of TP_NAME,
?? ??? ?? ? Col1 Like Tab1-Col1,
?? ??? ?? ? Col2 Like Tab2-Col2,
End Of TP_NAME.
TYPES tp_tab_name TYPE Standard Table Of TP_NAME With UNIQUE KEY uid.
(這種方式彈性多很多, itable有3種型態, Standard/Sort/Hash)
DATA it_name TYPE tp_tab_name.
(it_name是ITable的名稱)
DATA wa_name?LIKE LINE OF it_name.
(wa_name是work area的名稱)