テーブルデータ型は、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を取り上げてそのイメージを示します。