!--a11y-->

TYPE オプションと同様に、LIKE オプションをさまざまな ABAP 命令で使用して、データ型を定義し、インタフェースパラメータまたはフィールドシンボルの型を指定します。このオプションは、以下のように使用します。
LIKE <obj>
このオプションを TYPE オプション と同じ ABAP 命令で使用すると、プログラムでこの時点にすでに可視状態であるデータオブジェクト <obj> を参照することができます。データ型 <obj> はデータオブジェクト名、またはデータ型名です。
LINE OF <table-object>
この場合、LIKE オプションでは、プログラムでこの時点に可視状態であるテーブルオブジェクトの行データ型を参照します。
LIKE を使用して、既存データオブジェクトの技術属性が新しいオブジェクトまたは型に継承されるようにします。
キ 以下を使用して、プログラムでローカル型を定義します。
TYPES <t> LIKE <obj>.
新しいデータ型 <t> に、データオブジェクト <obj> の技術属性がすべて継承されます。
キ 以下を使用して、データオブジェクトを宣言します。
DATA <f> LIKE <obj>.
CLASS-DATA <f> LIKE <obj>.
CONSTANTS <f> LIKE <obj>.
STATICS <f> LIKE <obj>.
PARAMETERS <f> LIKE <obj>.
データオブジェクト <f> に 、データオブジェクト <obj> の技術属性がすべて継承されます。
キ 以下を使用してデータオブジェクトを動的に作成します。
CREATE DATA <dref> LIKE <obj>.
キ 以下を使用して、サブルーチンで仮パラメータの型を指定します。
FORM <sub> ...USING|CHANGING <p> LIKE <obj> ...
仮パラメータ <p> の技術属性は、宣言したデータオブジェクト <obj> の技術属性から継承されます。この場合、これらの属性を備えた実パラメータのみを受け渡すことができます。
キ 以下を使用して、メソッドで仮パラメータの型を指定します。
METHODS <meth> ...IMPORTING|EXPORTING|CHANGING <p> LIKE <obj> ...
仮パラメータ <p> の技術属性は、宣言したデータ型 <type> の技術属性から継承されます。この場合、これらの属性を備えた実パラメータのみを受け渡すことができます。
キ フィールドシンボルの型を指定します。
FIELD-SYMBOLS <fs> LIKE <obj>.
フィールドシンボル <FS> の技術属性は、宣言したデータオブジェクト <obj> の技術属性から継承されます。この場合、これらの属性を備えたデータオブジェクトのみを割り当てることができます。
一般に、LIKE を使用すると、DATA またはそれと同様の命令で宣言されていて、現在のコンテキストで可視状態であるオブジェクトを参照することができます。オブジェクトが宣言されていることだけが必要です。LIKE 参照を行うときに、データオブジェクトがすでにメモリにあるかどうかは関係ありません。
キ 原則として、同一プログラム内のローカルデータオブジェクトは可視状態になります。ローカルデータ型と同様に、プロシージャ内のローカルデータオブジェクトと、グローバルデータオブジェクトとは区別されます。プロシージャで定義されたデータオブジェクトは、それと同じ名称でプログラムのグローバル宣言で宣言されている他のオブジェクトを非可視にします。
キ 他の可視 ABAP プログラムのデータオブジェクトを参照することもできます。たとえば、クラスプール内のグローバルクラスの可視属性を参照したりします。グローバルクラス<cl_global> の属性がパブリックインスタンス属性または静的属性 <attr> である場合、その属性を ABAP プログラムで以下のように参照することができます。
DATA <ref> TYPE REF TO <cl_global>.
DATA: f1 LIKE
<cl_global>=><attr>,
f2 LIKE
<ref>-><attr>.
最初にオブジェクトを作成しなくても、クラス名と参照変数を使用して、インスタンス属性の技術プロパティにアクセスすることができます。クラス属性のプロパティは、インスタンス固有ではなく、クラスの静的属性に含まれています。
キ 以前のリリースと互換性を保つために、LIKE オプションを引き続き使用して、ABAP ディクショナリのデータベーステーブルまたはフラット構造のデータ型を参照することができます。LIKE オプションでは、最初にプログラム内でデータオブジェクト <obj> が検索されてから、それと同じ名称のデータベーステーブルまたはフラット構造が ABAP ディクショナリ内で検索されます。こうしたタイプの参照を ABAP オブジェクトクラスで使用することはできません。また、データオブジェクトを参照する以外に、他の ABAP プログラムで LIKE オプションを使用することは避けてください。データ型を参照する場合、代わりに TYPE オプションを使用する必要があります。
