本ページでは、ABAPにおけるデータオブジェクトのインライン宣言について解説します。
インライン宣言とは、SAP NetWeaver7.4で導入された新しい記述方法です。
インライン宣言を用いることで、本来事前に定義しておく必要のあった変数や構造・内部テーブルなどのデータオブジェクトをABAP命令の一部として(インラインで)定義することが可能。
本ページでは、インライン宣言とは?インライン宣言の構文ルールは?について端的に解説します。
ABAPerを目指す方であれば知っておきたい重要知識の1つです。是非最後までご覧ください。
前提:データオブジェクトの宣言
データオブジェクトとは、変数・構造・内部テーブルといった「プログラム実行中のみ」に存在する一時的なメモリ領域のことです。
本来データオブジェクトは、ABAP命令で参照・代入等の処理の前に必ず事前に以下のように宣言をしておく必要がありました。
* 変数の宣言 DATA Z_DATE TYPE D. * 構造の宣言 DATA Z_DATE TYPE BKPF. * 内部テーブルの宣言 DATA Z_DATE TYPE TABLE OF BKPF. * 変数に任意の値を代入 ←この前に変数「Z_DATE」が宣言されている必要がある Z_DATE = SY-DATUM.
インライン宣言を理解するには、DATA命令の理解が必要になってきます。
DATA命令は、ABAPにおける「変数」宣言の命令であり、どのようなプログラムでも必ず用いられる理解必須の超・基本命令です。以下の記事で構文ルールなどを詳しく解説しておりますので、不安な方は是非ご一読ください。
インライン宣言とは?
ここからが本題です。
インライン宣言とは、本来事前に定義しておく必要があったデータオブジェクトを命令の途中で定義する方法です。
インライン宣言をした場合としない場合の書き方を以下の3通りで比較しながら、様々な利用方法を解説していきます。
DATA定義:インライン宣言
DATA定義でインライン宣言を利用する方法から解説します。
インライン宣言を用いない書き方がこちら。事前に定義した変数に対して値を代入します。
* 変数の宣言 DATA: LF_FLAG TYPE C. * 変数の代入 LF_FLAG = 'A'.
そして、インライン宣言を利用した記述方法がこちら。変数の代入をしつつ、同時に変数の宣言も行われます。
DATA(LF_FLAG) = 'A'
1行ですっきり見やすく書くことができました。
SELECT文:インライン宣言
続いて、SELECT文でインライン宣言を利用する方法です。
まずは、インライン宣言を利用しない方法。
* 内部テーブルの宣言 DATA: LT_BKPF TYPE STANDARD TABLE BKPF. * SELECTの結果を「LT_BKPF」に代入 SELECT * FROM BKPF INTO TABLE LT_BKPF.
そして、インライン宣言を利用した方法がこちら。
SELECT * FROM BKPF INTO TABLE @DATA(BKPF).
こちらも同様にコード全体がすっきりしました。
尚、SQL中でインライン宣言した変数を利用する場合は先頭に「@」を付与する必要があります。
SELECT文は、データベース(標準テーブル/アドオンテーブル)からレコードを取得する命令です。
以下の記事では初心者向けにSELECT文の基本を解説しておりますので、本ページで記載しているサンプルコードの意味が分からなかった方は一度以下の記事を読んでから戻ってきてみてください。
LOOP(FIELD-SYMBOLS):インライン宣言
3つ目ですが、これが一番利用頻度が高く、かつ便利さも一番上な気がしています。従来の書き方がこちら。
* フィールドシンボルの定義 FIELD-SYMBOLS: <LW_BSEG> TYPE BSEG. * LOOP処理 LOOP AT LT_BSEG ASSINGNING <LW_BSEG>. ・・・ ENDLOOP.
そして、フィールドシンボルをインライン宣言した場合がこちら。
LOOP AT LT_BSEG ASSINGNING FIELD-SYMBOL(<LW_BSEG>). ・・・ ENDLOOP.
感覚的に非常に分かりやすいコードになります。
一言で言うと、変数や構造などのデータオブジェクトを指し示す仕組みのこと。以下の記事で詳しく解説しております。
SAP / ABAPを1から学習したい方は
初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!