!--a11y-->

内部テーブルオブジェクトを作成するときに、同じ名前のヘッダ行も宣言することができます。このヘッダ行は、内部テーブルを処理するときに作業領域として使用することができます。内部テーブルに対して使用する ABAP 命令には、内部テーブルにヘッダ行がある場合に使用できる簡易書式があります。それらの命令では、ヘッダ行は自動的に暗黙的な作業領域と見なされます。以下の表に、ヘッダ行のない内部テーブルの場合に使用する必要がある命令と、ヘッダ行があるテーブルの場合に使用できる同等の命令を示します。
|
ヘッダ行を使用しない操作 |
ヘッダ行を使用する操作 |
|
すべてのテーブルタイプに対する操作 |
|
|
INSERT <wa> INTO TABLE <itab>. |
INSERT TABLE ITAB. |
|
COLLECT <wa> INTO <itab>. |
COLLECT <itab>. |
|
READ TABLE <itab> ...INTO <wa>. |
READ TABLE <itab> ... |
|
MODIFY TABLE <itab> FROM <wa> ... |
MODIFY TABLE <itab> ... |
|
MODIFY <itab> FROM <wa> ...WHERE ... |
MODIFY <itab> ...WHERE ... |
|
DELETE TABLE <itab> FROM <wa>. |
DELETE TABLE <itab>. |
|
LOOP AT ITAB INTO <wa> ... |
LOOP AT ITAB ... |
|
索引テーブルに対する操作 |
|
|
APPEND <wa> TO <itab>. |
APPEND <itab>. |
|
INSERT <wa> INTO <itab> ... |
INSERT <itab> ... |
|
MODIFY <itab> FROM <wa> ... |
MODIFY <itab> ... |
ヘッダ行を作業領域として使用すると、簡易書式の 命令を使用することができます。しかし、割り当て元と割り当て先をすぐに識別することができないため、簡易書式の命令が必ずしもわかりやすいとは限りません。さらに、テーブルとそのヘッダ行が同じ名前を持つため、内部テーブル全体に対して操作する場合に混乱が生じることがあります。混乱を避けるためには、異なる名前の付いた作業領域を持つ内部テーブルを使用してください。

以下の例は、同じ機能を持つ 2 つのプログラムを示しています。1 つはヘッダ行を使用するプログラムで、もう 1 つはヘッダ行を使用しないプログラムです。
ヘッダ行を使用するプログラム:
TYPES: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA ITAB TYPE HASHED
TABLE OF LINE WITH UNIQUE KEY COL1
WITH HEADER LINE.
DO 4
TIMES.
ITAB-COL1 = SY-INDEX.
ITAB-COL2 = SY-INDEX ** 2.
INSERT TABLE ITAB.
ENDDO.
ITAB-COL1 = 2.
READ TABLE ITAB FROM ITAB.
ITAB-COL2 = 100.
MODIFY TABLE ITAB.
ITAB-COL1 = 4.
DELETE TABLE ITAB.
LOOP AT
ITAB.
WRITE: / ITAB-COL1, ITAB-COL2.
ENDLOOP.
ヘッダ行を使用しないプログラム:
TYPES: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA: ITAB TYPE HASHED
TABLE OF LINE WITH UNIQUE KEY COL1,
WA LIKE LINE OF ITAB.
DO 4
TIMES.
WA-COL1 = SY-INDEX.
WA-COL2 = SY-INDEX ** 2.
INSERT WA INTO TABLE ITAB.
ENDDO.
WA-COL1 = 2.
READ TABLE ITAB FROM WA INTO WA.
WA-COL2 = 100.
MODIFY TABLE ITAB FROM WA.
WA-COL1 = 4.
DELETE TABLE ITAB FROM WA.
LOOP AT ITAB INTO
WA.
WRITE: / WA-COL1, WA-COL2.
ENDLOOP.
どちらの場合も、以下のような一覧が出力されます。
1 1
2 100
3 9
よりわかりやすいのは、ヘッダ行を使用しないプログラム内の命令のほうです。さらに、内部テーブルのキーを指定するためだけの、テーブルのその他の値は割り当てられない追加の作業領域を使用することもできたりします。