APPEND [<wa> TO|INITIAL LINE TO] <內表名稱>.
範例:新增帶表頭行和兩列的內表ITAB。表格用DO迴圈填充。每次通過循環時附加初始化行,然後用迴圈索引填充表格工作區域並且附加迴圈索引的平方根。
1: DATA: BEGIN OF ITAB OCCURS 10,
2: COL1 TYPE C,
3: COL2 TYPE I,
4: END OF ITAB.
5: DO 3 TIMES.
6: APPEND INITIAL LINE TO ITAB.
7: ITAB-COL1 = SY-INDEX. ITAB-COL2 = SY-INDEX ** 2.
8: APPEND ITAB.
9: ENDDO.
10: LOOP AT ITAB.
11: WRITE: / ITAB-COL1, ITAB-COL2.
12: ENDLOOP.
根據標準關鍵字附加行
語法:
COLLECT [<wa> INTO] <內表名稱>.
範例:新增帶表格工作區域的內表ITAB。前兩個COLLECT語句和APPEND語句一樣。在第三個COLLECT語句中,修改了ITAB的第一行。下面的數字圖表顯示三個步驟:
1: DATA: BEGIN OF ITAB OCCURS 3,
2: COLUMN1(3) TYPE C,
3: COLUMN2(2) TYPE N,
4: COLUMN3 TYPE I,
5: END OF ITAB.
6: ITAB-COLUMN1 = 'abc'. ITAB-COLUMN2 = '12'. ITAB-COLUMN3 = 3.
7: COLLECT ITAB.
8: WRITE / SY-TABIX.
9: ITAB-COLUMN1 = 'def'. ITAB-COLUMN2 = '34'. ITAB-COLUMN3 = 5.
10: COLLECT ITAB.
11: WRITE / SY-TABIX.
12: ITAB-COLUMN1 = 'abc'. ITAB-COLUMN2 = '12'. ITAB-COLUMN3 = 7.
13: COLLECT ITAB.
14: WRITE / SY-TABIX.
15: LOOP AT ITAB.
16: WRITE: / ITAB-COLUMN1, ITAB-COLUMN2, ITAB-COLUMN3.
17: ENDLOOP.
INSERT [<wa> INTO|INITIAL LINE INTO] <itab> [INDEX <idx>].
範例:新增內表ITAB,並用兩行對其進行填充。在第二行之前插入包含值的新行。然後,在第一行之前插入一個初始化行。
1: DATA: BEGIN OF LINE,
2: COL1 TYPE I,
3: COL2 TYPE I,
4: END OF LINE.
5: DATA ITAB LIKE LINE OCCURS 10.
6: DO 2 TIMES.
7: LINE-COL1 = SY-INDEX.
8: LINE-COL2 = SY-INDEX ** 2.
9: APPEND LINE TO ITAB.
10: ENDDO.
11: LINE-COL1 = 11. LINE-COL2 = 22.
12: INSERT LINE INTO ITAB INDEX 2.
13: INSERT INITIAL LINE INTO ITAB INDEX 1.
14: LOOP AT ITAB INTO LINE.
15: WRITE: / SY-TABIX, LINE-COL1, LINE-COL2.
16: ENDLOOP.
要將部分或全部內表附加到另一個內表中,如果沒有FROM和TO選項,該語句將整個表格<來源內表名稱>附加到<目地內表名稱>中
APPEND LINES OF <來源內表名稱> [FROM <起始行號>] [TO <結束行號>] TO <目地內表名稱>.
範例:新增兩個相同類型的內表ITAB和JTAB,且都有表頭行。在DO迴圈中,用一系列平方數填充ITAB,用一系列立方數填充JTAB。然後將JTAB的最後兩行附加到ITAB中。
1: DATA: BEGIN OF ITAB OCCURS 10.
2: COL1 TYPE C,
3: COL2 TYPE I,
4: END OF ITAB.
5: DATA JTAB LIKE ITAB OCCURS 10 WITH HEADER LINE.
6: DO 3 TIMES.
7: ITAB-COL1 = SY-INDEX. ITAB-COL2 = SY-INDEX ** 2.
8: APPEND ITAB.
9: JTAB-COL1 = SY-INDEX. JTAB-COL2 = SY-INDEX ** 3.
10: APPEND JTAB.
11: ENDDO.
12: APPEND LINES OF JTAB FROM 2 TO 3 TO ITAB.
13: LOOP AT ITAB.
14: WRITE: / ITAB-COL1, ITAB-COL2.
15: ENDLOOP.
要將部分或全部內表插入到另一個內表中,使用INDEX選項來確定要插入的行號。
INSERT LINES OF <來源內表名稱> [FROM <起始行號>] [TO <結束行號>] INTO <目地內表名稱> [INDEX <INDEX選項>]
範例:新增兩個類型相同的內表:ITAB和JTAB,並且用3行對其進行填充。然後將整個表格ITAB插入到JTAB的第一行之前。
1: DATA: BEGIN OF LINE,
2: COL1 TYPE I,
3: COL2 TYPE I,
4: END OF LINE.
5: DATA ITAB LIKE LINE OCCURS 10,
6: JTAB LIKE LINE OCCURS 10.
7: DO 3 TIMES.
8: LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 2.
9: APPEND LINE TO ITAB.
10: LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 3.
11: APPEND LINE TO JTAB.
12: ENDDO.
13: INSERT LINES OF ITAB INTO JTAB INDEX 1.
14: LOOP AT JTAB INTO LINE.
15: WRITE: / SY-TABIX, LINE-COL1, LINE-COL2.
16: ENDLOOP.
將內表的全部內容複製到另一內表中,複製整個表格內容並覆蓋目標表格原來的內容
MOVE <來源內表名稱> TO <目地內表名稱>.
或是: <來源內表名稱> = <目地內表名稱>.
範例:新增兩個行結構LINE相同的內表:ETAB和FTAB。新增的ETAB包含表格工作區域。在用APPEND語句填充ETAB之後,將其內容複製到FTAB。請注意方括號([])的用法,對於有表頭行的表格,表格工作區域和表格本身同名。要在上述語句中進行區分,必須在名稱之後輸入兩個方括號([])來定位內表而不是表格工作區域。
1: DATA: BEGIN OF LINE,
2: COL1,
3: COL2,
4: END OF LINE.
5: DATA ETAB LIKE LINE OCCURS 10 WITH HEADER LINE.
6: DATA FTAB LIKE LINE OCCURS 10.
7: LINE-COL1 = 'A'. LINE-COL2 = 'B'.
8: APPEND LINE TO ETAB.
9: MOVE ETAB[] TO FTAB.
10: LOOP AT FTAB INTO LINE.
11: WRITE: / LINE-COL1, LINE-COL2.
12: ENDLOOP.
使用LOOP語句建立一個迴圈將內表逐行讀入工作區域,邏輯運算式內的第一個運算元必須是內表行結構的組件。
LOOP AT <來源內表名稱> [INTO <工作區域>] [FROM <起始行號>] [TO <結束行號>] [WHERE <邏輯運算式>].
ENDLOOP.
範例:
用LOOP語句逐行讀取表格。將要讀取的行的索引限制在10和25之間,並將每行第二個組件的內容限制為大於400的數字。
1: DATA: BEGIN OF LINE,
2: COL1 TYPE I,
3: COL2 TYPE I,
4: END OF LINE.
5: DATA ITAB LIKE LINE OCCURS 10.
6: DO 30 TIMES.
7: LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX * SY-INDEX.
8: APPEND LINE TO ITAB.
9: ENDDO.
10: LOOP AT ITAB INTO LINE FROM 10 TO 25 WHERE COL2 > 400.
11: WRITE: / SY-TABIX, LINE-COL2.
12: ENDLOOP.
使用索引從內表中讀取單行
READ TABLE <來源內表名稱> [INTO <工作區域>] INDEX <INDEX選項>.
1: DATA: BEGIN OF LINE,
2: COL1 TYPE I,
3: COL2 TYPE I,
4: END OF LINE.
6: DATA ITAB LIKE LINE OCCURS 10.
8: DO 30 TIMES.
9: LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX * SY-INDEX.
10: APPEND LINE TO ITAB.
11: ENDDO.
13: READ TABLE ITAB INTO LINE INDEX 15.
15: WRITE: SY-SUBRC, SY-TABIX.
16: WRITE: / LINE-COL1, LINE-COL1.