對內表的定義,我只說下有沒occurs的區別。
*
*DATA: BEGIN OF itab OCCURS 0,
* matnr LIKE mara-matnr,
* maktx LIKE makt-maktx,
* END OF itab.
*
*SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE itab .
*
*LOOP AT itab.
* WRITE:/
* itab-matnr,
* itab-maktx.
*ENDLOOP.
DATA: BEGIN OF itab,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
END OF itab.
DATA it_itab LIKE TABLE OF itab.
SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE it_itab .
LOOP AT it_itab INTO itab.
WRITE:/
itab-matnr,
itab-maktx.
ENDLOOP.
這是我寫的1點特別簡單的很基礎的代碼。
簡單的看出了,帶有OCCURS的這個關鍵字的內表,有表存儲還有表輸出。就是說,它可以不用再次的寫like table of 內表。這樣做的目的,就是它有存儲功能。如果沒有occurs,就只有輸出顯示的功能,只是1個結構。有occurs,就是可以存儲了。
指定內存。<n> 是指定行(ex:10)的初始號。當第一行寫入內表后,就為指定行保留了內存。如果添加到內表中的行比 <n> 指定的要多 ,則自動擴展保留的內存。
這是老寫法了,應該直接 data ittab type standard table of spfli