この記事を読むメリット
- ABAP7.4以降の変数定義についての新構文を理解することができます。
ABAP7.4は2013年にリリースされました。多くの便利な構文の追加がされています。
ABAP開発者やプログラムを読む必要のある設計者の方に向けて、ABAP7.4以降で追加された新たな構文を紹介していきます。
ここでは変数の定義についての新構文を解説します!
・ABAP7.4以降でも旧構文は利用可能です。
・同じプログラム内でも旧構文と新構文が同居することもできます。
・どの構文を用いるかはプロジェクトのコーディング規約に則り開発が必要です。
この記事のポイント
変数等の定義
ABAP7.4以降は変数等を処理前に定義しなくても利用できるようになりました。
ただしローカルの変数としての宣言となるので使いどころに注意。
例えばform~endformの中で新構文で定義された変数は、formの外では利用できません。
新構文で定義された変数等はローカル宣言となる。
ここでは変数定義に関する旧構文と新構文の比較の例を解説していくのじゃ!
変数の定義(新構文の例)
文字列の格納
新構文では処理の中でDATA(変数名)の形で定義することができます。
旧構文
* 変数定義
DATA l_test TYPE char4.
* 変数へ文字列格納
l_test = 'aaaa'.
新構文
* 変数へ文字列格納
DATA(l_test) = 'aaaa'.
新構文では型を自動で判別してくれます。
上記の新構文の例にあるl_testは4文字の文字列として判別されるため、4文字を超える文字列を入れることはできません。
METHODのIMPORTING(新構文の例)
以下のようにMETHODのIMPORTINGでも変数の定義を省略可能です。
旧構文
* 変数定義
DATA:
l_time TYPE uzeit,
l_datE TYPE datum,
l_timestamp TYPE tzntstmpl.
* METHOD呼び出し
CALL METHOD cl_reca_date=>get_current_date
EXPORTING
id_timezone = sy-zonlo
IMPORTING
ed_time = l_time
ed_date = l_date
ed_timestamp = l_timestamp.
新構文
* METHOD呼び出し
CALL METHOD cl_reca_date=>get_current_date
EXPORTING
id_timezone = sy-zonlo
IMPORTING
ed_time = DATA(l_time)
ed_date = DATA(l_date)
ed_timestamp = DATA(l_timestamp).
汎用モジュール(CALL FUNCTION)ではMETHODのようにIMPORT変数の定義を省略することはできません。
SELECTから変数への格納(新構文の例)
旧構文
* 変数定義
DATA:
l_ebeln TYPE ekko-ebeln.
* データ取得
SELECT SINGLE ebeln
FROM ekko
INTO l_ebeln
WHERE ernam = 'TEST'.
新構文
* データ取得
SELECT SINGLE ebeln
FROM ekko
INTO @DATA(l_ebeln)
WHERE ernam = 'TEST'.
SELECTの新構文については、新構文のSELECT文では変数等の頭に「@」を付ける必要があります。詳しくは以下をご確認下さい!
あわせて読みたい
【SAP ABAP】ABAP7.4以降のS4HANAでの新構文(SELECT文)
この記事を読むメリット ABAP7.4以降のSELECT文についての新構文を理解することができます。 ABAP7.4以降ではSELECT文の書き方がだいぶ変わり、非常に便利になりました…
構造の定義(新構文の例)
新構文では処理の中でDATA(構造名)の形で定義することができます。
LOOPでのINTO先の構造
旧構文
* 変数定義
DATA wa_ekko LIKE LINE OF it_ekko.
* LOOP処理
LOOP AT it_ekko INTO wa_ekko.
"何かの処理
ENDLOOP.
新構文
* LOOP処理
LOOP at it_ekko INTO data(wa_ekko).
"何らかの処理
ENDLOOP.
READ TABLEでのINTO先の構造(新構文の例)
旧構文
* 構造定義
DATA wa_ekko LIKE LINE OF it_ekko.
* 内部テーブルから1行目を構造へ格納
READ TABLE it_ekko INTO wa_ekko INDEX 1.
新構文
* 内部テーブルから1行目を構造へ格納
READ TABLE it_ekko INTO DATA(wa_ekko) INDEX 1.
内部テーブルの定義(新構文の例)
新構文では処理の中でDATA(内部テーブル名)の形で定義することができます。
SELECT文から内部テーブルへのデータ取得
旧構文
* 型定義
TYPES:
BEGIN OF typ_ekko,
ebeln,
burks,
END OF typ_ekko.
* 内部テーブル定義
DATA:
it_ekko TYPE STANDARD TABLE OF TYP_ekko.
* データ取得
SELECT ebeln
bukrs
FROM ekko
INTO TABLE it_ekko
WHERE ernam = 'TEST'.
新構文
* データ取得
SELECT ebeln,
bukrs
FROM ekko
INTO TABLE @DATA(it_ekko)
WHERE ernam = 'TEST'.
SELECTの新構文については別途解説しますが、新構文のSELECT文では項目の区切りで「,」を付ける必要があります。
あわせて読みたい
【SAP ABAP】ABAP7.4以降のS4HANAでの新構文(SELECT文)
この記事を読むメリット ABAP7.4以降のSELECT文についての新構文を理解することができます。 ABAP7.4以降ではSELECT文の書き方がだいぶ変わり、非常に便利になりました…
FIELD-SYMBOLSの定義(新構文の例)
新構文では処理の中でFIELD-SYMBOL(フィールドシンボル名)の形で定義することができます。
LOOPでのASSIGNING先のフィールドシンボル
旧構文
* データ定義
FIELD-SYMBOLS <FS_EKKO> TYPE EKKO.
* LOOP処理
LOOP AT IT_EKKO ASSIGNING <FS_EKKO>.
"何らかの処理
ENDLOOP.
新構文
* LOOP処理
LOOP AT IT_EKKO ASSIGNING FIELD-SYMBOL(<FS_EKKO>).
"何らかの処理
ENDLOOP.
READ TABLEでのASSIGNING先のフィールドシンボル
旧構文
* データ定義
FIELD-SYMBOLS <FS_EKKO> TYPE EKKO.
* 内部テーブルから1行目をフィールドシンボルへ格納
READ TABLE IT_EKKO ASSIGNING <FS_EKKO> INDEX 1.
新構文
* 内部テーブルから1行目をフィールドシンボルへ格納
READ TABLE IT_EKKO ASSIGNING FIELD-SYMBOL(<FS_EKKO>) INDEX 1.
変数に関するABAP7.4以降の新構文についての解説は以上じゃ。
他の新構文については他の記事でまとめていくので楽しみにしているのじゃ~!