【ABAP】DATA命令(変数定義)を3分でわかりやすく解説

本ページはプロモーションが含まれています
ABAP

ABAPのDATA命令は変数を定義するために使用する命令です。↓の基本的な形式を使用します。

DATA: <変数名> TYPE <型>.

参考 プログラミングにおける「変数」とは?

恐らくABAP初心者がトレーニングや研修などで最初に学ぶ命令がこのDATA命令です。

決して難しい内容ではありませんが、初心者の方にとっては「そもそも変数って何?」というような疑問もあるかと思いますので、プログラミングの基礎知識からステップバイステップでわかりやすく解説します。

このページで学べる内容
  • 前提:「変数」とは何か?
  • DATA命令の使い方と構文ルール
  • DATA命令に関する注意点・Tips

SAPエンジニアやABAPerを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。

参考 ABAPの基本構文ルール

blank

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

スポンサーリンク

DATA命令とは?(変数とは?)

DATA命令は「変数」を定義する命令です。

変数とは、プログラム内でデータを一時的に保存して利用するための領域を指す抽象的な概念。変数には名前(変数名)がつけられ、この名前を使ってその領域にアクセスすることができます。

分かりやすく説明すると、「変数」とは何かを入れておく「箱」のようなものと考えることができます。

ポイント1 変数は「箱」

データを保存するための「箱」をイメージしてください。これが変数です。変数名はこの箱に付けられたラベルと考えることができます。

変数とは?
図1:変数とは?

ポイント2 箱の内容(値)

箱の中に入っているもの。それが、変数が保持している値です。この値は時間と共に変化することが可能で、それが変数(variable)という名前の由来です。

図2:変数の値

ポイント3 箱の形状(型)

箱の形状は、それが何を収納できるかを決定します。例えば、小さな箱は小さな物しか収納できませんが、大きな箱は大きな物を収納できます。これは変数の型に対応します。整数型の変数は整数を、文字列型の変数は文字列を保存します。

「型」とは一般的に「データ型」と呼ばれ、その変数の仕様を決める役割を持っており、変数には決まった「データ型」と一致する値だけを格納することができます。
図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:(実行日の日付)

参考 WRITE命令 / ABAPのデータ型

↑のサンプルコードでは、まずDATA命令を用いて日付型(D)の変数「Z_DATE」を宣言しています。

図4:Z_DATE

↑のコードを実行すると、まず初期のZ_DATEが出力されますが、この時点ではZ_DATEは宣言直後で値が設定されていないため、"00000000"と表示されます。

次に、SY-DATUM(現在のシステム日付)をZ_DATEに代入。最後に、代入後のZ_DATEを出力します。この時点でZ_DATEは現在のシステム日付を格納しているため、その日付が表示されるという仕組みです。

変数名の頭には「Z」を付与していますが、これはアドオンプログラムで利用される変数であることを表しています。

TYPES命令とTYPEオプションの混同に注意

初心者の方が混乱しがちなのが、TYPES命令とTYPEオプションの違い。TYPEオプションとTYPES命令の違いは、ABAP初心者が混乱しがちな部分でもあるので、以下をしっかり押さえておきましょう。

TYPES命令とTYPEオプション
  • TYPES命令
    データ型を定義
  • TYPEオプション
    変数のデータ型を指定

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

Tips:1ランク上のABAPer知識

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

サンプルコードの説明

  1. DATA命令で整数型(I)の変数Z_NUMBERを宣言。この時点でZ_NUMBERは初期値0。
  2. Z_NUMBERに値5を代入。Z_NUMBERはこれにより値5を持つ。
  3. 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命令のまとめ

  1. DATA命令はABAPにおいて変数を宣言するための命令。
  2. DATA命令は変数名と型を指定して変数を定義。DATA: Z_NUMBER TYPE I.
  3. DATA命令はチェーン形式で記述することも可能で、一度のDATA命令で複数の変数を同時に宣言することができる。
  4. ABAPでは@DATA形式を使ったインライン宣言も可能で、これにより変数宣言と値の代入を一行で行うことができる。
* 整数型の変数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

初めてABAPを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

blank

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

blank

スキルアップを手軽に!
話題のサブスク型プログラミングスクールをご紹介。

SAMURAI TERAKOYAblank
月額2,980円から始める-入会金不要/途中解約自由。無料体験プランからスタート可能!​
飲み会1回分以下の料金で継続的なスキルアップを。

Freeks(フリークス)
blank
月額10,780円でJavaScript、Pythonなどのカリキュラムが
学び放題
質問し放題転職サポート制度あり。

ウズウズカレッジ/CCNAコース用
月額33,000円(税込)〜インフラエンジニアの登竜門「CCNA」取得を目指す。
コース受講→転職成功で【実質全額無料】(最大240,000円)

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
ABAPSAP
ビズドットオンラインをフォローする
blank
ビズドットオンライン
タイトルとURLをコピーしました