!--a11y-->

TYPE オプションをさまざまな ABAP 命令で使用して、データ型を定義し、インタフェースパラメータまたはフィールドシンボルの型を指定します。TYPE オプションの意味は、構文とコンテキストによって異なります。
以下のオプションを使用します。
TYPE <type>
これにより、プログラムでこの時点ですでに明らかであるデータ型<type> を参照することができます。TYPE オプションは、以下に列記されているどの命令でも使用することができます。データ型 <type> はデータオブジェクト名、またはデータ型名です。
LINE OF <table-type>
この場合、TYPE オプションでは、プログラムでこの時点で可視状態であるテーブルデータ型<table-type> の行データ型を記述します。
キ 以下を使用してローカルプログラムタイプを定義します。
TYPES <t> TYPE <type>.
これにより、新規データ型 <t> の型は <type> と同じになります。
キ 以下を使用してデータオブジェクトを宣言します。
DATA <f> TYPE <type>.
CLASS-DATA <f> TYPE <type>.
CONSTANTS <f> TYPE <type>.
STATICS <f> TYPE <type>.
PARAMETERS <f> TYPE <type>.
これにより、データオブジェクト <f> のデータ型は型 <type> と一致します。
キ 以下を使用してデータオブジェクトを動的に作成します。
CREATE DATA <dref> TYPE <type>.
キ 以下を使用して、サブルーチンで仮パラメータの型を指定します。
FORM <sub> ...USING|CHANGING <p> TYPE <type> ...
仮パラメータ <p> の技術属性は、宣言したデータ型 <type> の技術属性から継承されます。この場合、これらの属性を備えた実パラメータのみを受け渡すことができます。
キ 以下を使用して、メソッドで仮パラメータの型を指定します。
METHODS <meth> ...IMPORTING|EXPORTING|CHANGING <p> TYPE <type> ...
仮パラメータ <p> の技術属性は、宣言したデータ型 <type> の技術属性から継承されます。この場合、これらの属性を備えた実パラメータのみを受け渡すことができます。
キ フィールドシンボルの型を指定します。
FIELD-SYMBOLS <fs> TYPE <type>.
フィールドシンボル <FS> の技術属性は、宣言したデータ型 <type> の技術属性から継承されます。この場合、これらの属性を備えた実パラメータのみを受け渡すことができます。
TYPE オプションによって既知のデータ型を参照するときは、データ型の可視性が重要です。
キ 組込 ABAP 型 (C 、D 、F 、I 、N 、P 、T 、X) は常に可視状態です。プログラムまたは ABAP ディクショナリでは、これらの組込データ型と同じ名称で型を宣言することはできません。
キ プログラムのローカルデータ型の可視性については、プロシージャ内のローカルデータ型と、グローバルデータ型とを区別する必要があります。プロシージャで定義されたデータ型は、それと同じ名称でプログラムのグローバル宣言で宣言されている他のオブジェクトを非可視にします。プログラム内のすべてのローカルデータ型は、それと同じ名称で ABAP ディクショナリにあるデータ型を非可視にします。これはデータ型グループのデータ型にも当てはまります。
キ ABAP ディクショナリでは、スタンドアロンデータ型と、データ型グループに保存されたデータ型に、それぞれ異なる可視性ルールが適用されます。データ型グループ内のデータ型は、それと同じ名称のスタンドアロンデータ型を非可視にします。ただし、これは 例外的な状況です。ABAP ディクショナリ内のすべてのデータ型は、同じ名称領域に所属する必要があります。スタンドアロンデータ型を作成するとき、その名称が、データ型グループ名の後にアンダースコアが続く書式で始まる場合、警告が表示されます。同様に、データ型グループを作成するとき、それと同じ名称の後にアンダースコアが続くスタンドアロンデータ型がすでにある場合は、そのデータ型グループを作成することはできません。
この図には、ローカルデータ型および ABAP ディクショナリデータ型の可視性が示されています。
検索は中から外へ行われます。プログラムで TYPE オプションによって TYPE1 を指定すると、プロシージャとメインプログラムの両方で ABAP ディクショナリ型が使用されます。プロシージャで TYPE2 を指定すると、プロシージャのローカル型が使用されます。ただし、メインプログラムで TYPE2 を指定すると、メインプログラムの型が使用されます。ABAP ディクショナリの TYPE2 は非可視になります。プロシージャまたはメインプログラムのいずれかで TYPE3 を指定すると、メインプログラムの型が使用されます。ABAP ディクショナリの TYPE3 は非可視になります。
TYPE オプションを使用すると、TYPES 、DATA 、CONSTANTS 、STATICS の各命令でデータ型を新たに作成することができます。TYPES 命令では、プログラムのローカルデータ型を作成可能です。その他の命令では、新規データオブジェクトの属性を作成可能です。
TYPE オプションでは、以下の型コンストラクタを使用することができます。
キ 参照の場合
REF TO <class>|<interface>
キ 構造の場合
BEGIN OF <struct>.
...
END OF <struct>.
キ テーブルの場合
<tabkind> OF <linetype> [WITH <key>]
これらのデータ型は、ABAP プログラムの実行時だけ存在します。
ABAP 構文には、インタフェースパラメータおよびフィールドシンボルの型指定に使用可能な組込汎用型のセットがあります。汎用型は、FORM 、METHODS 、および FIELD-SYMBOLS の各命令で、TYPE オプションの後にのみ使用することができます。
型指定の汎用型
|
ANY |
完全な汎用型 |
|
ANY TABLE |
あらゆる内部テーブルの汎用テーブル |
|
INDEX TABLE |
線形索引のあるテーブルの汎用型 |
|
TABLE STANDARD TABLE |
線形索引のある未ソートテーブルの汎用型 |
|
SORTED TABLE |
線形索引のあるソート済テーブルの汎用型 |
|
HASHED TABLE |
ハッシュ管理されるテーブルの汎用テーブル |
プログラムまたはデータオブジェクトでローカルデータ型を定義するために、これらの汎用型を使用することは できません。汎用型では、プロシージャに受け渡す項目のデータ型とフィールドシンボルのデータ型のみをチェックすることができます。
