ABAPの登竜門!構造タイプを理解する
ABAPといえば内部テーブルの操作
ABAPのアドオン開発では、内部テーブルを使用しないなんてありえないというくらい重要です。内部テーブルはデータベースのSQLの結果の格納から、結果を使った様々なロジック、リストの作成、用途は様々によって扱い方など違うのでで、初心者はハマりやすいポイントですので、基本を押さえるのはとても重要です。
今回は内部テーブルを宣言する為に必要な項目定義で必要になってくる構造タイプについて説明したいと思います。
構造タイプ
構造は複数の連続した項目の連続体です。
書く項目のデータ型は、基本タイプ、参照タイプ、など定義でき、構造の中に構造を定義しネスト化させることもできます。
良く言われるののは、TYPEで宣言した構造は、内部テーブルの設計図で、データを格納することはできません。
構造を変数で扱う為には、下記のようにDATA宣言する必要があります。
- DATAで宣言し、変数として扱う
- 内部テーブルの構造の型として宣言する
構造タイプの記述例
基本定義方法は下記になりますが、
わかりにくいので、ほとんどのケースは
次の記述方法を使います。
TYPES BEGIN OF ITAB. TYPE WK1 TYPE C LENGTH 1. TYPE WK2 TYPE I. TYPE WK3 TYPE P. TYPES END OF ITAB.
チェーン命令を使った、下記の記述が多いです。
:を使って宣言しているので、スッキリしますね。
TYPES: BEGIN OF ITAB, WK1 TYPE C LENGTH 1, WK2 TYPE I, WK3 TYPE P, END OF ITAB.
こういうのも多いです
TYPES: BEGIN OF ITAB2, WK1 TYPE C LENGTH 1, WK2 TYPE I, WK3 TYPE P, END OF ITAB2.
- 内部テーブルの項目を決定する為に定義する
アドオンは圧倒的にこのパターンで定義れていることが多いです。内部テーブルは参照する構造が必要なので、必ず定義します。*1
- 変数が乱立しないように、ロジック用に変数をまとめる
処理結果のカウントやメッセージをグローバル変数にした場合など、用途は様々ですが、内部テーブル化しない構造も結構出てきます。
*1:内部テーブルの宣言方法で、構造を必要としない場合もあります