【最新】ABAPのデータインライン宣言とは?

ABAP

日々、刻々と進化するIT業界、そしてWEB業界。

IT人材の活躍の場は増える一方で、日々知識を吸収し続けなければならない状況ですね。ABAPも、かなりレガシーと化した言語になっているように感じますが、一方でこれから大きな波(~2025年)が来ることも確か。(多分)

今回は、最新のABAPコーディングについて解説します。

本記事では、DATA命令、TYPES命令がなんとなくわかっていることが必要です。理解に自信が無い方は、一度以下のページをご覧いただくことをお勧めします。

スポンサーリンク
スポンサーリンク

@DATAでデータのインライン宣言

何故、インライン宣言というのか。これも合わせて解説します。

従来の書き方と、これからの書き方を比較してみてみましょう。

例)変数に値を入れる場合

従来の記述

DATA:
  GW_DATA001 TYPE YT_001.

GW_DATA001 = "I".

DATA命令の解説ページで説明した通りです。

事前に、DATA命令で変数を格納する「箱」を作ったうえで、後続の処理命令で「箱」の操作を実行しました。

最新の書き方

@DATA(GW_DATA001) = "I".

@DATA(変数名) と記述することで、変数の宣言と変数に対する操作を同時に実行することができます。

さらに別の例も見ていきましょう。

例)SELECT文で利用する場合

従来の記述

DATA : LV_VKORG TYPE YD_VKORG. 

SELECT SINGLE
 VKORG
 FROM TVKO
 INTO LV_VKORG
 WHERE VKORG = @P_VKORG.

最新の書き方

SELECT SINGLE
 VKORG
 FROM TVKO
 INTO @DATA(LV_VKORG)
 WHERE VKORG = @P_VKORG.

このように1行にまとめて記述することが可能です。

メリットとしては、パッと見でわかるように、書く行数が少なくて済むことです。ただし、実はそれだけではありません。この記述方式を使うとかなり便利になるポイントがあるんです。

@DATAによるインライン宣言のメリット

blank

データ型差異による構文エラーが出ない

@DATA宣言をすると、コードが短くなり読みやすくなります。ただし、それよりも強調したいのは「データ型」をあまり意識する必要がなくなる、ということです。言い換えれば、データ型が違うことによる構文エラーがでない、ということです。

もう一度、先ほどの例を見てみましょう。

SELECT SINGLE
 VKORG
 FROM TVKO
 INTO @DATA(LV_VKORG)
 WHERE VKORG = @P_VKORG.

この場合、LV_VKORGのデータ型(※「箱」の仕様)はどうなっているでしょうか?

ご推察通り、項目 "VKORG" と同様のデータ型に勝手になってくれるんです。インライン宣言が導入される前のABAPでは、事前にDATA命令で変数定義を行う際に必ず取得元の項目のデータ型に対応して宣言する必要がありました。
(対応するデータ型は定まっているものの、わざわざ定義する必要があった。)

しかし、ここで行っているように@DATAでインライン宣言をすると、データ型は論理的に追従してくれるようになります。

コーディング時に強く意識する必要がなくなります。

読みやすい

先ほど言った「短くなるから読みやすい」ということではありません。

上記のようにインライン宣言をすると、変数定義と変数の処理を同時に、同じ箇所で行えるため、どの変数がどの処理で変更されているのかが分かりやすいんです。

コードが長くなればなるほど、変数が多くなれば多くなるほど、どれがどれか非常に分かりにくいのですが、インライン宣言をすることでその欠点を補うことができます。

最後に

インライン宣言を使えると「おっ!」と言わせることができます。かつ、メリットも大きいので積極的に利用することを推奨します。ただし、対応しているABAPのバージョンは限定されますので、ご注意ください。

タイトルとURLをコピーしました