添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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.