SAPABAP-内部テーブルの作成

DATAステートメントは、内部テーブルを宣言するために使用されます。プログラムは、テーブルの開始位置と終了位置を通知する必要があります。したがって、BEGIN OFステートメントを使用してから、テーブル名を宣言します。この後、OCCURSの追加が使用され、その後に数字(ここでは0)が続きます。OCCURSはSAPに内部テーブルが作成されていることを通知し、0は最初はレコードが含まれないことを示します。その後、データが入力されると展開されます。

以下は構文です-

DATA: BEGIN OF <internal_tab> Occurs 0,

新しい行にフィールドを作成しましょう。たとえば、LIKEZCUSTOMERS1-nameとして宣言されている「name」を作成します。「dob」という別のフィールド、LIKEZCUSTOMERS1-dobを作成します。最初は、内部テーブルのフィールド名に、他の場所で作成された他のフィールドと同じ名前を付けると便利です。最後に、「END OF <internal_tab>」で内部テーブルの終わりを宣言します。次のコードに示すように-

DATA: BEGIN OF itab01 Occurs 0,
   name LIKE ZCUSTOMERS1-name,
   dob LIKE ZCUSTOMERS1-dob, 
END OF itab01.

ここで、「itab01」は、SAPで一時テーブルを作成するときに一般的に使用される省略形です。OCCURS句は、テーブルのフィールドを宣言することにより、内部テーブルの本体を定義するために使用されます。OCCURS句を使用する場合、必要に応じて数値定数「n」を指定して、追加のデフォルトメモリを決定できます。OCCUR0句で使用されるメモリのデフォルトサイズは8KBです。これで内部テーブルの構造が作成され、コードを記述してレコードを入力できます。

内部テーブルは、ヘッダー行を使用して、または使用せずに作成できます。ヘッダー行を含む内部テーブルを作成するには、内部テーブルの定義で、OCCURS句の前にBEGIN OF句を使用するか、OCCURS句の後にWITH HEADERLINE句を使用します。ヘッダー行のない内部テーブルを作成するには、BEGINOF句のないOCCURS句を使用します。

TYPESステートメントを使用して、ローカルデータ型(現在のプログラムのコンテキストでのみ使用されるデータ型)として内部テーブルを作成することもできます。このステートメントは、TYPEまたはLIKE句を使用して、既存のテーブルを参照します。

ローカルデータ型として内部テーブルを作成するための構文は次のとおりです。

TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF 
   <line_type_itab> WITH <key> INITIAL SIZE <size_number>.

ここで、<internal_tab_type>は内部テーブル<internal_tab>のテーブルタイプを指定し、<line_type_itab>は内部テーブルの行のタイプを指定します。TYPESステートメントでは、TYPE句を使用して内部テーブルの行タイプをデータ型として指定し、LIKE句を使用して行タイプをデータオブジェクトとして指定できます。内部テーブルのキーの指定はオプションであり、ユーザがキーを指定しない場合、SAPシステムは任意のキーを使用してテーブルタイプを定義します。

INITIAL SIZE <size_number>は、初期量のメモリを割り当てることにより、内部テーブルオブジェクトを作成します。上記の構文では、INITIALSIZE句はsize_numberテーブル行用のメモリスペースを予約します。内部テーブルオブジェクトが宣言されている場合は常に、テーブルのサイズはテーブルのデータ型に属していません。

Note −内部テーブルに初めてデータを入力するときに消費されるメモリははるかに少なくなります。

Step 1− SE38トランザクションコードを実行して、ABAPエディタを開きます。ABAPエディタの第一画面が表示されます。

Step 2 −初期画面で、プログラムの名前を入力し、[ソースコード]ラジオボタンを選択し、[作成]ボタンをクリックして新しいプログラムを作成します。

Step 3−「ABAP:プログラム属性」ダイアログボックスで、「タイトル」フィールドにプログラムの簡単な説明を入力し、「属性」グループボックスの「タイプ」ドロップダウンメニューから「実行可能プログラム」オプションを選択します。[保存]ボタンをクリックします。

Step 4 −ABAPエディタで以下のコードを記述します。

REPORT ZINTERNAL_DEMO. 
TYPES: BEGIN OF CustomerLine, 
Cust_ID TYPE C, 
Cust_Name(20) TYPE C, 
END OF CustomerLine. 
 
TYPES mytable TYPE SORTED TABLE OF CustomerLine  
WITH UNIQUE KEY Cust_ID. 
WRITE:/'The mytable is an Internal Table'.

Step 5 −通常どおり、プログラムを保存、アクティブ化、および実行します。

この例では、mytableは内部テーブルであり、Cust_IDフィールドに一意のキーが定義されています。

上記のコードは次の出力を生成します-

The mytable is an Internal Table.