【ABAP】DATA命令(変数)

概要

値を格納する箱を定義する命令がDATA命令となります。
DATA命令で定義するものをデータオブジェクトや変数と呼びます。
命令文を見ると分かりますがデータ型によって箱(メモリ領域)の形を決めてどの様な値を格納するのかを定義します。
例えば、123と数字のみを格納する型なのか’あいう’と文字のみを格納する型、長さは10桁なのかまたは500桁なのか、格納できる値は1つなのか複数あるのかなどの長さや値の種類、箱の仕切りをデータ型によって決めます。

命令文

命令文の通りデータ型によって格納する箱の形(変数)が変わります。
一般的に1つの箱に値を格納するものを変数と呼びますがデータ型によっては1行に3列や20列など複数列の仕切りを持った箱を構造(作業領域またはワークエリア)と呼んだり、複数行複数列の仕切りを持った内部テーブルなども以下の様に定義する事が可能です。

命令文

DATA 変数 TYPE データ型.

定義の仕方は以下もあります。
この場合、上記と異なる点はデータ型を直接指定するのではなくディクショナリテーブルの項目名や事前に定義した変数などを指定します。そのため命令文ではデータオブジェクトとして表現しています。
つまり、事前に定義されたデータオブジェクトのデータ型を参照する定義の仕方となります。

そのため指定しているデータオブジェクトの型が変わると以下で定義した変数も同様に型が変わるので注意が必要です。
基本的にはTYPEを使用します。

命令文

DATA 変数 LIKE データオブジェクト.

特徴

DATA命令の特長は以下の通りです。
命令文の説明にはありませんでしたがVALUEを使用する事で初期値の指定が可能です。
変数のため値を書き換える事も可能です。
しかし、固定値を定義する場合はCONSTANTS命令があるためこちらを使用します。
CONSTANTS命令については以下記事をご確認ください。

  • データ型によって箱の形が変わる
  • TYPEまたはLIKEによってデータ型を指定する
  • VALUEを使用して初期値を指定することができる
  • 変数は最大30文字まで

コーディング

コーディングサンプルは内部テーブルや構造は使用せず変数のみとします。
ディクショナリテーブルの型やABAPデータ型のI型、C型を使用し、初期値を実際に変更したりしています。

DATA:
  LTEST1 TYPE LAND1_GP,   "国コード
  LTEST2 LIKE KNA1-LAND1. "国コード

DATA:
  LTEST3 TYPE I,      "整数
  LTEST4 LIKE LTEST3. "整数

DATA:
  LTEST5 TYPE C VALUE 'X',
  LTEST6 LIKE LTEST5 VALUE 'A'.

LTEST1 = LTEST2 = 'JP'.
LTEST3 = 2 + 4. "足し算
LTEST4 = 3 * 5. "掛け算
LTEST5 = 'B'.   "値"B"を代入

WRITE:
    'LTEST1:', LTEST1,
  / 'LTEST2:', LTEST2,
  / 'LTEST3:', LTEST3,
  / 'LTEST4:', LTEST4,
  / 'LTEST5:', LTEST5,
  / 'LTEST6:', LTEST6.
実行後