ABAPstatement:変数等宣言

ABAP-基礎系

ABAPにおける変数等の宣言は2つに分類することができます。
ここでは、変数等の宣言の分類/宣言の仕方/Tipsについて解説します。

■変数の分類

グローバル変数

ABAPにおけるグローバル変数はプログラム全体や複数のプロシージャにて使用可能な変数です。
プログラムのREPORTやCLASSの直下で宣言します。

ローカル変数

ローカル変数は特定のプロシージャ内(FORM~ENDFORM内やMETHOD~ENDMETHODなど)
にて有効な変数でそのプロシージャ内で宣言可能です。
宣言したプロシージャの外では使用できません。
※STATIC命令を使えば入れ子構造の下層プロシージャでも使用可能。
※MODULE~ENDMODULE内で宣言しても、グローバル変数となります。

■変数等宣言

TYPES データ型の定義

PGM内のみ有効なカスタム型を作成できます。

DATA 変数宣言

PGM内のみ有効な変数を作成できます。

FIELD-SYMBOLS フィールドシンボル宣言

PGM内のみ有効なフィールドシンボルを作成できます。

CONSTANTS 定数宣言

PGM内のみ有効な定数を作成できます。

TABLES テーブル作業領域宣言

PGM内のみ有効な作業領域を作成できます。
宣言された作業領域は構造付きテーブルになります。

STATIC 静的変数

PGM内のみ有効な作業領域を作成できます。
プロシージャ内で使用可能な宣言方法で、自身と入れ子構造となった下位プロシージャ内で使用可能です。

■変数等宣言時のTips

BEGIN OF ~END OF

カスタム構造を指定できます。
TYPESで一度構造型を指定してからそれを使用してテーブル型を作成できます。
TYPESやDATA、CONSTANTSなどで使用できます。

INCLUDE

BEGIN OF ~END OF内で使用すると構造の中に事前定義された構造を展開できます。
展開された構造の項目はほかの項目と同じように使用できます。
TYPES INCLUD~では指定できないため、チェーン命令を使用している場合は一旦TYPESのチェーンを切る必要があります。

TABLE OF

変数や型定義時にTABLE OFの直後に指定した型のテーブル型を指定できます。
以下の種類があり、テーブルの種類によって使い分けます。
STANDARD TABLE OF
SORTED TABLE OF
HASHED TABLE OF
TABLE OF (基本的にSTANDARD TABLE扱い)

REF TO

参照変数を作成できます。
参照変数の方でクラスを指定し、その参照変数を使用してインスタンスを作成できます。

RANGE OF

以下構造からなる範囲指定用内部テーブル(レンジテーブル)を作成できます。
SAP標準でレンジテーブルとして認識されるようになっており、IFやSELECT、CHECKなど様々な場面で使用可能です。
※選択画面のSELECT-OPTIONSで作成できるパラメータもレンジテーブルになります。

項目説明
SIGN包括(I)か排他(E)かを指定
OPTION比較子を指定
LOWレンジの下限値(OPTION:EQの場合はこちらと=かどうか)
HIGHレンジの上限値

TYPEとLIKE

TYPEとLIKEの大きな違いは以下になります。
TYPE:型のみを参照できる
LIKE:変数を参照できる
特殊な事情がない限りTYPEの使用を推奨します。

レンジテーブルなど構造付きテーブルの明示的な指定

レンジテーブルなどはテーブルと構造が全く同一の変数名で双方作成されます。
(ヘッダ付きテーブル、構造付きテーブルと呼ばれる)
通常、自動的にどちらかを判定しますが、うまくいかなくなる場合があるため、下記を指定して明示的に指定してください。
※構造付きテーブルは現在廃止になっている+可読性が悪く、バグの温床となるため古いPGMの改修などで仕方がない限り使用しないほうが良いです。

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