【ABAP】データオブジェクトのインライン宣言を1分で

ABAP

本ページでは、ABAPにおけるデータオブジェクトのインライン宣言について解説します。

インライン宣言とは、SAP NetWeaver7.4で導入された新しい記述方法です。

インライン宣言を用いることで、本来事前に定義しておく必要のあった変数や構造・内部テーブルなどのデータオブジェクトをABAP命令の一部として(インラインで)定義することが可能。

本ページでは、インライン宣言とは?インライン宣言の構文ルールは?について端的に解説します。

このページで学べる内容
  • 【前提】データオブジェクトの宣言
  • インライン宣言とは?
  • インライン宣言を用いた構文例
    • DATA定義で用いる例
    • SELECT文で用いる例
    • LOOP文(フィールドシンボル)で用いる例

ABAPerを目指す方であれば知っておきたい重要知識の1つです。是非最後までご覧ください。

スポンサーリンク

前提:データオブジェクトの宣言

データオブジェクトとは、変数・構造・内部テーブルといった「プログラム実行中のみ」に存在する一時的なメモリ領域のことです。

ABAP 変数,ABAP 構造,ABAP 内部テーブル

本来データオブジェクトは、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命令

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文は、データベース(標準テーブル/アドオンテーブル)からレコードを取得する命令です。

以下の記事では初心者向けに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から学習したい方は

SAP / ABAPを1から学習したい初心者の方向けに、できるだけ網羅的にABAPが理解できるよう以下ページに知識体系を整理しています。

特に初心者のうちは、どこから学べばよいか?どう勉強すれば良いか?すらわからない状態になりがち。

ある程度の知識を持ったうえで、はじめて実践的な理解へとつながります。

是非、一度ご覧になってみてください。

タイトルとURLをコピーしました