各位好
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的名稱)