【ABAP】DATA命令―3分で学ぶ変数定義

ABAP

本ページでは、ABAPコーディングの第1歩である「DATA命令」の使い方・構文ルールについてまとめています。DATA命令は、ABAPにおける「変数」宣言の命令であり、どのようなプログラムでも必ずと言ってよいほど用いられています。

このページで学べる内容

  • そもそも「変数」とは何か?
  • DATA命令の使い方
  • DATA命令の構文ルール
  • DATA命令に関する注意点・Tips

ABAPerを目指す人であれば、絶対に知っておきたい内容ばかりですので是非最後までご覧ください。

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

DATA命令とは?

DATA命令とは「変数」を定義する命令です。VBAでいうDimです。

プログラミングでいう「変数」とは、何かを入れておく「箱」のようなものです。

プログラミングでいう「変数」とは、何かを入れておく「箱」のようなものです。

プログラムの実際の処理は、極論この「箱」の操作である、ということができます。数字や文字列などの実際の値を「箱」に格納して、編集したり計算したり、その結果を表示するために利用したりします。

プログラムの実際の処理は、極論この「箱」の操作である、ということができます。数字や文字列などの実際の値を「箱」に格納して、編集したり計算したり、その結果を表示するために利用したりします。

データの操作は、必ずこの「変数」を用いる必要があるため、「変数」を使わないプログラムは、ほぼ存在しません。

変数について、しっかり理解したい!という方は、こちらのページで詳しく解説しておりますので是非ご覧ください。

ABAPでは、この変数の定義をDATA命令を用いて行います。実際のコーディングを見てさらにDATA命令の使い方・構文ルールを解説していきます。

構文ルール:DATA命令

①通常命令の場合

DATA (変数名)TYPE(データ型).


②チェーン命令の場合

DATA:
(変数名1)TYPE(データ型),
(変数名2) TYPE(データ型),
(変数名3) TYPE(データ型).


※チェーン命令について詳しく知りたい方は、こちらのページをご覧ください。

構文解説:DATA命令

例として、以下のサンプルコードを用います。

サンプルコード


DATA Z_DATETYPE D.


この構文では、「Z_DATE」という「変数」を宣言しています。

この「Z_DATE」という名称は、任意の文字列でOKです。ただし、変数の命名についてはソースコード全体の可読性を高めるためにできるだけわかりやすい名称を指定するようにします。

※変数の命名については、こちらの記事をご参考にしてみてください。

DATA Z_DATE TYPE D.


後半の「~TYPE D」は、この変数の仕様を決めています。

仕様を決めるとは「この変数にいれるのは、文字列にするのか、日付にするのか」みたいなことです。「D」は日付型を表します。詳しくは、ABAPデータ型を参照ください。

これで一旦、日付型の変数「Z_DATE」の宣言が完了します。

システムといっても、魔法ではなく確実にロジックが存在しており、その中心が変数となります。したがって、このDATA命令を理解しないと、ABAPのコーディングはおろか、読むことさえできません。

TYPEオプションについては、初心者にとって理解しがたい部分があるため、もう少し深堀して解説します。

"TYPE"オプションで変数の型を定義する

変数を宣言する際にはあらかじめ「変数の型」を指定する必要があります。


DATAZ_DATE TYPE D.


つまり、変数は必ず1つのデータ型(何を格納するものか?)を指定しなければなりません。

「Z_DATE」という変数を定義するよ!

だけでは変数定義は不完全であり、必ず

その変数は「日付」を格納するものだよ!

と指定することによってはじめて「変数の定義を行った」ことになるのです。変数は、箱の名前と箱の仕様(データ型)をセットで宣言すると覚えておきましょう。

サンプルコード:DATA命令

実際のプログラムで用いられている実物レベルのサンプルコードを記載しておきます。具体的なイメージを持っておくことが重要です。

DATA:
  Z_FORM_ID  TYPE FORM_ID,          "帳票ID
  Z_SCREE    TYPE TYP_W_SCREEN,     "選択画面構造
  Z_LAYO     TYPE Z001_FA0001,      "内部テーブル「帳票ID」
  Z_BLART    TYPE Z001_FA0001,      "内部テーブル「会計伝票タイプ」
  Z_BLART    TYPE RANGE OF BKPF-BLART, "レンジテーブル「会計タイプ」
  Z_BLART2   TYPE RANGE OF BKPF-BLART. "レンジテーブル2「会計タイプ」

トリビア:ABAPerでも知らないDATA命令のTIPS

ABAPerでも、知らない人は多くいる知識を紹介します。(初心者の方は読み飛ばしOKです。)

先ほど変数の宣言は「名前」と「データ型」をセットで行うと説明しました。ただし、実はセットで行わなくてもOKな場合が存在します。

例えば


DATA A.


のように、TYPEオプションを用いずにDATA命令を利用することも可能なのです。TYPEオプションを用いずにDATA命令で宣言した変数は、「データ型 "C" データ長1」になります。

基本は、この構文は利用しないため、あくまでも豆知識としてご理解ください。ある現場のプログラムで一度だけ見かけたことがありましたが、かなりレアなものであり、可読性も非常に低くなってしまうため、利用は厳禁です。

@DATA命令―インライン宣言

ABAPも他のプログラミング言語同様に、日々進化し続けています。@DATA で「箱」と「箱の中身」を同時に定義・処理する記述方式があります。

インラインでの変数宣言を詳しく知りたい方は、こちらの記事を是非ご覧ください。

TYPES命令との混同に注意

最初に躓くのが、TYPEとTYPESの違いです。先ほどの章で、構文の後半部分の「~TYPE」を説明しましたがよくある間違い・混乱ポイントとなるのが、TYPEとTYPES命令の違いです。両者は似て非なるものであるので、しっかりとした理解・認識が必要になります。

以下のページでは、TYPES命令について詳しく説明しているので、DATA命令を理解しきった後にお読みください。

合わせて覚えておきたい:定数定義

DATA命令は、変数を定義する命令でした。

変数と対をなす概念に「定数」があります。これは、プログラム実行中に値が書き換えられない「箱」です。

以下に、定数定義を詳しく解説したページを記載しておきますので、合わせてご覧ください。

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