ABAPのDATA命令は変数を定義するために使用する命令です。↓の基本的な形式を使用します。
DATA: <変数名> TYPE <型>.
恐らくABAP初心者がトレーニングや研修などで最初に学ぶ命令がこのDATA命令です。
決して難しい内容ではありませんが、初心者の方にとっては「そもそも変数って何?」というような疑問もあるかと思いますので、プログラミングの基礎知識からステップバイステップでわかりやすく解説します。
SAPエンジニアやABAPerを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
参考 ABAPの基本構文ルール
DATA命令とは?(変数とは?)
DATA命令は「変数」を定義する命令です。
変数とは、プログラム内でデータを一時的に保存して利用するための領域を指す抽象的な概念。変数には名前(変数名)がつけられ、この名前を使ってその領域にアクセスすることができます。
分かりやすく説明すると、「変数」とは何かを入れておく「箱」のようなものと考えることができます。
ポイント1 変数は「箱」
データを保存するための「箱」をイメージしてください。これが変数です。変数名はこの箱に付けられたラベルと考えることができます。
ポイント2 箱の内容(値)
箱の中に入っているもの。それが、変数が保持している値です。この値は時間と共に変化することが可能で、それが変数(variable)という名前の由来です。
ポイント3 箱の形状(型)
箱の形状は、それが何を収納できるかを決定します。例えば、小さな箱は小さな物しか収納できませんが、大きな箱は大きな物を収納できます。これは変数の型に対応します。整数型の変数は整数を、文字列型の変数は文字列を保存します。
ABAPでも他のプログラミング言語同様に、この変数をうまく利用することで、様々な処理を動的に行うことが可能になります。
プログラミングを学び始める際には「変数とは何か?」の基本概念が重要になるので、しっかりとこの基本を押さえておきましょう。
変数の基本的な利用方法「宣言」「代入」「参照」については、以下の記事で詳しく解説しております。
ABAPだけではなく、VBAやJavaScriptなど他言語での変数宣言方法も合わせて解説しておりますので、プログラミング初心者の方でもより具体的なイメージを掴めるでしょう。
「変数」の基本を把握したところで、ここから実際のコーディング方法についてご説明します。
ABAP:DATA命令
DATA命令の構文ルールは以下の通り。
DATA: <変数名> TYPE <型>.
DATA命令を用いて日付型(TYPE D)の変数「Z_DATE
」を宣言するサンプルコードを以下に示します。
DATA: Z_DATE TYPE D. WRITE: / '初期のZ_DATE:', Z_DATE. " 初期のZ_DATE: 00000000 Z_DATE = SY-DATUM. " システム日付をZ_DATEに格納 WRITE: / '更新後のZ_DATE:', Z_DATE. " 更新後のZ_DATE:(実行日の日付)
↑のサンプルコードでは、まずDATA命令を用いて日付型(D)の変数「Z_DATE
」を宣言しています。
↑のコードを実行すると、まず初期のZ_DATE
が出力されますが、この時点ではZ_DATE
は宣言直後で値が設定されていないため、"00000000"と表示されます。
次に、SY-DATUM
(現在のシステム日付)をZ_DATE
に代入。最後に、代入後のZ_DATE
を出力します。この時点でZ_DATE
は現在のシステム日付を格納しているため、その日付が表示されるという仕組みです。
変数名の頭には「Z」を付与していますが、これはアドオンプログラムで利用される変数であることを表しています。
軽視されがちですが、プログラミングにおいて変数や関数につける名前は非常に重要です。以下の記事では、変数の命名にスポットライトを当てて命名のコツを解説しています。合わせてご覧ください。
初心者の方が混乱しがちなのが、TYPES命令とTYPEオプションの違い。TYPEオプションとTYPES命令の違いは、ABAP初心者が混乱しがちな部分でもあるので、以下をしっかり押さえておきましょう。
以下のページでは、TYPES命令について詳しく説明しているので、DATA命令を理解しきった後にお読みください。
DATA命令はチェーン形式で利用すると、同じ型を持つ複数の変数を一度に宣言することができます。型は一度だけ指定し、その後に列挙する変数名全てにその型が適用されます。以下に具体的な例を示します。
DATA: my_integer1 TYPE i, my_integer2, my_integer3.
ただし、可読性が低くなるため、実際の現場ではあまり利用されませんのでご注意ください。
サンプルコード 簡易的な足し算プログラム
* 整数型の変数Z_NUMBERを定義します。 DATA: Z_NUMBER TYPE I. WRITE: / '初期のZ_NUMBER:', Z_NUMBER. " 初期のZ_NUMBER: 0 * Z_NUMBERに5を代入します。 Z_NUMBER = 5. WRITE: / 'Z_NUMBERに5を代入後:', Z_NUMBER. " Z_NUMBERに5を代入後: 5 * Z_NUMBERに3を足します。 Z_NUMBER = Z_NUMBER + 3. WRITE: / 'Z_NUMBERに3を足す:', Z_NUMBER. " Z_NUMBERに3を足す: 8
サンプルコードの説明
- DATA命令で整数型(I)の変数
Z_NUMBER
を宣言。この時点でZ_NUMBER
は初期値0。 Z_NUMBER
に値5を代入。Z_NUMBER
はこれにより値5を持つ。Z_NUMBER
の現在の値(5)に3を足し、その結果を再びZ_NUMBER
に代入。これによりZ_NUMBER
は値8を持つ。
DATA命令の基本を押さえたところで、ABAPのインライン宣言についてご説明します。
DATA命令を利用する際の注意点
DATA命令を利用する際には、いくつかの注意点があります。
注意点 | 詳細 |
---|---|
型の選択 | 変数に代入される予定のデータに適した型を選ぶことが重要です。 |
変数の命名 | ABAPの命名規則に従い、その用途を理解しやすい名前をつけましょう。 |
初期化 | DATA命令で宣言された変数は自動的に初期化されます。その初期値を理解しておくことが重要です。 |
DATA命令を利用する際には、上記の点を常に念頭に置いておくことが大切です。
適切な型の選択や変数の命名は、後のコードの可読性やデータの正確性に直結します。これらを意識し、DATA命令を安全かつ効率的に利用してください。
@DATA命令:変数のインライン宣言
@DATA
という形式で変数をインライン宣言(=別の命令の中で即時に変数を宣言すること)することができます。
データ定義をプログラムの途中で行い、その直後にそのデータを利用する場合に便利です。また、この形式を用いると変数宣言と代入を一行で行うことができ、コードの見通しが良くなるというメリットもあります。
サンプルコード 変数のインライン宣言
MOVE 'Hello, world!' TO @DATA(lv_message). WRITE: / 'Message:', lv_message. " Message: Hello, world!
参考 MOVE命令
↑の例では、@DATA
を用いて文字列'Hello, world!'を新たに宣言する変数lv_message
に代入しています。その後、代入した結果を出力します。
インライン宣言については、初心者のうちは少し難しいかもしれません。詳しくは↓の記事で解説しておりますので、合わせてご覧ください。
変数と対をなす概念に「定数」があります。これは、プログラム実行中に値が書き換えられない「箱」です。
以下に、定数定義を詳しく解説したページを記載しておきますので、合わせてご覧ください。
ABAP:DATA命令のまとめ
初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!