!--a11y-->

内部テーブルへの行の挿入は、以下のように個別に行うか一括して行うことができます。
内部テーブルに単一の行を追加するには、以下の命令を使用します。
INSERT <line> INTO TABLE <itab>.
<line> は、行データ型と互換性のある作業領域か、INITIAL LINE 式です。テーブルキーの項目に正しいデータ型の項目のデータが書き込まれなければならないため、作業領域は互換性がある必要があります。INITIAL LINE を指定すると、その構造の各項目の正しい初期値が含まれた空白行が挿入されます。
テーブルに一意のキーがあり、そのテーブル内にキーがすでに存在する行を挿入しようとしても、行はテーブルに追加されず、SY-SUBRC が 4 に設定されます。テーブルに行が追加された場合は、SY-SUBRC が 0 に設定されます。
行は以下のように内部テーブルに追加されます。
キ 標準テーブル
行は、内部テーブルの末尾にアペンドされます。これは、明示的な APPEND 命令と同じ効果があります。
キ ソートテーブル
行は、テーブルキーに従ってテーブルに挿入されます。キーが一意でない場合、重複する行は同じキーを持つ既存のエントリの上に挿入されます。操作の実行時間は既存のテーブルエントリの数と対数比例して増加します。
キ ハッシュテーブル
行は、テーブルキーに従って内部ハッシュ管理に挿入されます。
内部テーブルに複数の行を追加するには、以下の命令を使用します。
INSERT LINES OF <itab1> [FROM <n1>] [TO <n2>] INTO TABLE <itab2>.
<itab1> と <itab2> は、互換性のある行データ型を持つテーブルです。単一の行の挿入の場合と同じルールでテーブル <itab1> の行が 1 行ずつ <itab2> に挿入されます。
<itab1> が索引テーブルの場合は、アペンドするテーブル行の最初と最後の行を <n1> と <n2> に指定することができます。
テーブルの複数の行を別のテーブルに挿入するこの方法を使用すると、テーブルのサイズとテーブルを挿入する場所に応じて、ループで 1 行ずつ行を挿入するよりも最大で20 倍処理が速くなります。

DATA: BEGIN OF LINE,
LAND(3) TYPE C,
NAME(10) TYPE C,
AGE TYPE
I,
WEIGHT TYPE P
DECIMALS 2,
END OF LINE.
DATA ITAB LIKE SORTED
TABLE OF LINE
WITH NON-UNIQUE
KEY LAND NAME AGE WEIGHT.
LINE-LAND =
'G'. LINE-NAME = 'Hans'.
LINE-AGE =
20. LINE-WEIGHT = '80.00'.
INSERT LINE INTO TABLE
ITAB.
LINE-LAND =
'USA'.LINE-NAME = 'Nancy'.
LINE-AGE =
35. LINE-WEIGHT = '45.00'.
INSERT LINE INTO TABLE
ITAB.
LINE-LAND =
'USA'.LINE-NAME = 'Howard'.
LINE-AGE =
40. LINE-WEIGHT = '95.00'.
INSERT LINE INTO TABLE
ITAB.
LINE-LAND =
'GB'. LINE-NAME = 'Jenny'.
LINE-AGE =
18. LINE-WEIGHT = '50.00'.
INSERT LINE INTO TABLE
ITAB.
LINE-LAND =
'F'. LINE-NAME = 'Michele'.
LINE-AGE =
30. LINE-WEIGHT = '60.00'.
INSERT LINE INTO TABLE
ITAB.
LINE-LAND =
'G'. LINE-NAME = 'Karl'.
LINE-AGE =
60. LINE-WEIGHT = '75.00'.
INSERT LINE INTO TABLE
ITAB.
LOOP AT ITAB INTO
LINE.
WRITE: / LINE-LAND, LINE-NAME, LINE-AGE, LINE-WEIGHT.
ENDLOOP.
出力は以下のようになります。
F
Michele 30
60.00
G
Hans
20 80.00
G
Karl
60 75.00
GB Jenny 18
50.00
USA
Howard
40 95.00
USA
Nancy 35
45.00
この例では、ソート内部テーブルに 6 つのエントリが書き込まれ ます。

DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF
LINE.
DATA: ITAB LIKE STANDARD
TABLE OF LINE,
JTAB LIKE SORTED TABLE OF LINE
WITH NON-UNIQUE
KEY COL1 COL2.
DO 3
TIMES.
LINE-COL1 = SY-INDEX.LINE-COL2 = SY-INDEX **
2.
APPEND LINE TO ITAB.
LINE-COL1 = SY-INDEX.LINE-COL2 = SY-INDEX **
3.
APPEND LINE TO JTAB.
ENDDO.
INSERT LINES OF ITAB INTO TABLE JTAB.
LOOP AT JTAB INTO
LINE.
WRITE: / SY-TABIX, LINE-COL1, LINE-COL2.
ENDLOOP.
出力は以下のようになります。
1
1 1
2
1 1
3
2 4
4
2 8
5
3 9
6
3 27
この例では、行データ型が同じでテーブルタイプが異なる 2 つの内部テーブルが作成されます。それぞれ、3 行が書き込まれます。その後、ITAB がソートされて、ソートテーブル JTAB に挿入されます。