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 になります。