定数と変数

 

このトピックでは、ABAP言語の定数と変数を取り上げて説明します。

ABAP定数は、CONSTANTS 命令を使用して宣言します。

CONSTANTS <name> TYPE <type> VALUE [<value> | IS INITIAL]

CONSTANS 命令の構文は、以下の例外を除いて DATA 命令とまったく同じです。

  • CONSTANTS命令では VALUE オプションを使用しなければなりません。
    VALUE オプションで指定した開始値をプログラムの実行中に変更することはできません。
  • XSTRINGS 、参照、内部テーブル、または内部テーブルを含む構造に対して定数を定義することはできません。

ABAP変数は、DATA命令を使用して宣言します。

DATAS <name> TYPE <type> VALUE [<value> | IS INITIAL]

完全に定義されたデータ型<type>の他に、もう1つのデータオブジェクト<obj>と同じデータ型の変数<f>を宣言することもできます。
<ABAP7.4以降>
ABAP7.4以降は上記のようにプログラムやルーチンの先頭でタイプ付きで変数をまとめて定義するほかに、使いたい場所で宣言すればよくタイプの指定も必要がないようになりました。
一般的な場所

DATA(l_str) = 'xyz'.

メソッド呼び出し時の引数

CALL METHOD CL_ABAP_CHAR_UTILITIES=>NUMBER_FORMAT_TO_ENDIAN
EXPORTING
NUMBER_FORMAT = lv_NUMBER_FORMAT
IMPORTTING
ENDIAN = DATA(lv_ENDIAN)

内部テーブルの操作

SELECT * FROM bkpf INTO TABLE @DATA(itab_bkpf) WHERE BUKRS = 'xxxx' AND  BLART= 'xxxx'.
LOOP AT itab_bkpf INTO DATA(wa_bkpf).
  WRITE: / wa_bkpf-bukrs, wa_bkpf-belnr,wa_bkpf-gjahr
ENDLOOP.

データ型は定義される場所により、スコープが変わります。

  データ型変数定数
スコープグローバル(システムレベル)○※1××
グローバル(プログラムレベル)○※2○※2○※2
ローカル○※3○※3○※3
生存期間自動記憶域期間-○※4-
静的記憶域期間-○※5-
  • ※1
    ABAPディクショナリーで定義されているデータ型は、全てのABAPプログラムで参照することが可能です。
  • ※2
    ABAPプログラムの「グローバルデータ宣言部分」で定義されているデータ型、変数及び定数は、当プログラムの中でどこでも参照することができます。
  • ※3
    ABAPプログラムのプロシージャの中で定義されているデータ型、変数及び定数は、当プロシージャの内部でしか参照できません。
  • ※4
    プロシージャの中で定義された非statics変数の生存期間はプロシージャのの実行が完了するまでです。
  • ※5
    ABAPプログラムの「グローバルデータ宣言部分」で定義されている変数や、プロシージャの中で定義されたstatics変数の生存期間は、プログラムの実行開始から終了までです。