このトピックでは、ABAP言語の定数と変数を取り上げて説明します。
ABAP定数は、CONSTANTS 命令を使用して宣言します。
CONSTANTS <name> TYPE <type> VALUE [<value> | IS INITIAL]
CONSTANS 命令の構文は、以下の例外を除いて DATA 命令とまったく同じです。
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 | - |