?@ DATA A001 TYPE TABLE001.
?A DATA B001 LIKE A001.
さて、この構文はどちらもエラーなく成り立つものですが、両者の違いを説明できますか?
このページでは、TYPEとLIKEの使い分けについて端的に解説します。
目次
1 TYPEオプションの使い方
2 LIKEの使い方
3 LIKEオプションの注意点
1 TYPEオプションの使い方
2 LIKEの使い方
3 LIKEオプションの注意点
1 TYPEオプションの使い方
TYPEは「TYPES命令で宣言したデータ型や構造、ABAPディクショナリで定義されているデータ型や構造に利用する」オプションです。
2 LIKEの使い方
TYPEオプションが「TYPES命令などで、 事前に定義された構造や変数 を参照する」のに対して、LIKEオプションは「 プログラム内で先に宣言されている構造や構造・変数 」を参照します。
LIKEとは英語で「好き」という意味もありますが、ここでは副詞の「 〜のような」という意味です。冒頭で出した、コード例をもう一度見てみましょう。
DATA B001 LIKE A001.
ここで定義されているB001は、A001と同じ変数・同じ構造ですよ、という意味です。
つまりA001と全く同じ変数・構造をB001が受け継ぐということになります。
3 LIKEオプションの注意点
結論、LIKEオプションはあまり利用しないほうが良いです。
LIKEオプションを多用した場合、参照先の変数・構造が変更された場合、自動的に自らも変更されてしまうからです。
以下の2つの構文を再度見てみましょう。
?@ DATA A001 TYPE i.
?A DATA B001 LIKE A001.
「i」とは4桁の整数という意味です。
この場合、A001もB001も両方のデータ型は「4桁の整数」です。
では、以下のようにコードを改修したらどうなるでしょうか?
?@ DATA A001 TYPE D.
?A DATA B001 LIKE A001.
Dは、日付型です。もうわかりましたね。
この際、?Aのコードは一切いじっていないのにも関わらず、B001も日付型の変数に修正されるのです。
なので、改修を行う際の影響分析が困難になってしまうため注意が必要です。
あまり、多用するコードではありませんが、両者の利用方法の差異・使い分けは頭に入れておきましょう。
タグ: ABAP