INSERT

15.2 INSERT

2. INSERT

INSERTを使用することで、内部テーブルに値を挿入することができます。APPENDが「末尾に追加」なのに対して、INSERTは 追加する位置(INDEX)を指定できる点が特徴です。ただし、内部テーブルと挿入したい構造は同じ構造データ型でなければいけません。

「サンプルコード」①

REPORT Z_SAMPLE152.
"------------------------------------------------------------
" 目的:
"   1) APPENDで 4行分のレコードを追加する
"   2) INSERTで 2行目に 「-96」 を挿入し、並びが変わることを確認する
"------------------------------------------------------------
TYPES: BEGIN OF TY_LINE,
         VALUE TYPE I,
       END OF TY_LINE.

DATA: LT_TABLE TYPE STANDARD TABLE OF TY_LINE WITH EMPTY KEY,
      LS_LINE  TYPE TY_LINE.

START-OF-SELECTION.

  "1) 1~4 までのレコード作成(APPENDで末尾追加)
  DO 4 TIMES.
    LS_LINE-VALUE = SY-INDEX.
    APPEND LS_LINE TO LT_TABLE.
  ENDDO.

  WRITE: / '--- APPEND後(1~4)---'.
  LOOP AT LT_TABLE INTO LS_LINE.
    WRITE: / LS_LINE-VALUE.
  ENDLOOP.

  "2) 2行目に挿入
  CLEAR LS_LINE.
  LS_LINE-VALUE = -96.
  INSERT LS_LINE INTO LT_TABLE INDEX 2.

  SKIP.
  WRITE: / '--- INSERT後(2行目に「-96」を挿入)---'.
  LOOP AT LT_TABLE INTO LS_LINE.
    WRITE: / LS_LINE-VALUE.
  ENDLOOP.

実行結果

補足(SY-INDEXとは)

SY-INDEX は、DO/WHILE/LOOPなどの繰り返し処理で 「いま何回目か」を示すシステム変数です。今回の「 DO 4 TIMES 」では、SY-INDEXが 1,2,3,4 と変化します。
SY-INDEX は データ型が “INT4” なので数値が格納されます。

補足(オプションINDEXについて)

「 INSERT LS_LINE INTO LT_TABLE INDEX 2 」は、
2行目にレコードを挿入する、という命令です。元が1,2,3,4なら、2行目に -96 を入れて 1,-96,2,3,4 になります。


NEXT>> 15.3 MODIFY

研修の詳細はこちら