テーブルデータ型

 

テーブルデータ型は、ABAP における内部テーブルの構造と機能属性を示します。このトピックでは、テーブルデータ型を取り上げて、その構成や種類などを説明します。

テーブルデータ型は、行データ型、キー、およびアクセス方法によって完全指定されます。

(source:SAP Help Portal)

行データ型

通常、内部テーブルのデータ型は構造であり、その構造の各コンポーネントは、それぞれ内部テーブル内の1つの列になります。 ただし、内部テーブルのデータ型の仕様としては、構造以外の任意のデータ型を使用することも可能です。

キー

テーブル行データはキーによって識別されます。キーは、システムからデフォルトで生成されるは標準キーのほかに、ユーザから定義することもできます。ユーザ定義キーはUNIQUE または NON-UNIQUE として指定することができます。

アクセス方法

内部テーブルのアクセス方法は以下三つの種類から指定できます。

  • 標準テーブル
    標準テーブルは内部的な線型索引を持ちます。
    索引を使用して個別のテーブルエントリをアドレス指定する予定がある場合には、これが最適なデータ型です。
  • ソートテーブル
    ソートテーブルは常にキー別にソートされ、保存されます。ソートテーブルも内部索引を持ちます。
    バイナリ検索が求められる場合には、これが最適なデータ型です。
  • ハッシュテーブル
    ハッシュテーブルは線型索引を持ちません。キーを使用した場合にのみハッシュテーブルにアクセスすることができます。
    ハッシュ検索が求められる場合には、これが最適なデータ型です。

テーブルデータ型は以下の階層図で示されたように、内部テーブルのアクセス方法により分類することができます。

(source:SAP Help Portal)

完全指定のテーブルデータ型

内部テーブルのアクセス方法が明示されたテーブルデータ型です。

  • STANDARD TABLE または TABLE
    標準テーブルを登録します。
  • SORTED TABLE
    ソートテーブルを登録します。
  • HASHED TABLE
    ハッシュテーブルを登録します。

ジェネリックテーブルデータ型

内部テーブルのアクセス方法が明示されたテーブルデータ型です。

  • INDEX TABLE
    索引アクセスを使用するジェネリックテーブルデータ型を登録します。
  • ANY TABLE
    完全なジェネリックテーブルデータ型を登録します。

ジェネリックテーブルデータ型は動的なプログラミングでよく使用されます。

テーブルデータ型は、ローカルまたはグローバルに定義することができます。

ローカル定義

プログラムの中でTYPE命令を使用してテーブルデータ型をローカルに定義することができます。 構文:

TYPES type TYPE|LIKE tabkind OF linetype [WITH key]
 [INITIAL SIZE n].

グローバル定義

ABAP ディクショナリのデータ型としてテーブルデータ型をグローバルに定義することもできます。 例として、標準のMMPUR_REQUISITION_ITEMSを取り上げてそのイメージを示します。