Sap-abap-creating-internal-tables

提供:Dev Guides
移動先:案内検索

SAP ABAP-内部テーブルの作成

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

以下は構文です-

DATA: BEGIN OF <internal_tab> Occurs 0,

新しい行にフィールドを作成しましょう。 たとえば、LIKE ZCUSTOMERS1-nameとして宣言されている「名前」を作成します。 「dob」という別のフィールド、LIKE ZCUSTOMERS1-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」を指定できます。 OCCUR 0句で使用されるメモリのデフォルトサイズは8 KBです。 これで、内部テーブルの構造が作成され、コードを記述してレコードを埋めることができます。

内部テーブルは、ヘッダー行を使用して、または使用せずに作成できます。 ヘッダー行を含む内部テーブルを作成するには、内部テーブルの定義で、OCCURS句の前にBEGIN OF句を使用するか、OCCURS句の後にWITH HEADER LINE句を使用します。 ヘッダー行なしで内部テーブルを作成するには、BEGIN OF句なしで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>は、初期メモリ量を割り当てて内部テーブルオブジェクトを作成します。 上記の構文では、INITIAL SIZE句はsize_numberテーブル行用のメモリスペースを予約します。 内部テーブルオブジェクトが宣言されるたびに、テーブルのサイズはテーブルのデータ型に属しません。

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

  • ステップ1 *-SE38トランザクションコードを実行してABAPエディターを開きます。 ABAPエディターの初期画面が表示されます。
  • ステップ2 *-初期画面で、プログラムの名前を入力し、[ソースコード]ラジオボタンを選択し、[作成]ボタンをクリックして新しいプログラムを作成します。
  • ステップ3 *-[ABAP:Program Attributes]ダイアログボックスの[Title]フィールドにプログラムの簡単な説明を入力し、[Attributes]グループボックスの[Type]ドロップダウンメニューから[Executable program]オプションを選択します。 [保存]ボタンをクリックします。
  • ステップ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'.
  • ステップ5 *-通常どおりプログラムを保存、アクティブ化、実行します。

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

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

The mytable is an Internal Table.