新規記事の投稿を行うことで、非表示にすることが可能です。
2020年02月06日
【ABAP】TYPES命令―データ型定義
TYPES命令は、データ型(基本データ型/構造化型データ型)を定義する命令です。
初心者にとっては、DATA命令との区別が難しく、とっつきにくい印象を受けてしまうかもしれませんが、TYPES命令をマスターせずにABAPをマスターすることは不可能です。
このページで学べる内容
・TYPES命令とは?
・TYPES命令の使い方・書き方
・基本データ型と構造化型データ型とは?
・TYPEオプション/LIKEオプションの使い分け
・TYPES命令とは?
・TYPES命令の使い方・書き方
・基本データ型と構造化型データ型とは?
・TYPEオプション/LIKEオプションの使い分け
ABAPを学習中の人であれば、絶対に知っておきたい内容ばかりですので是非最後までご覧ください。
最初に構文ルール(TYPES命令の基本形)を解説し、その後深堀していく形でTYPES命令を学習していきます。
目次
1 構文ルール:TYPES命令
2 TYPES命令とは?
2.1 「基本データ型」とは?
2.2 「構造化型データ型」とは?
2.3 TYPES命令とDATA命令の違い?
3 LIKEオプション
1 構文ルール:TYPES命令
2 TYPES命令とは?
2.1 「基本データ型」とは?
2.2 「構造化型データ型」とは?
2.3 TYPES命令とDATA命令の違い?
3 LIKEオプション
1 構文ルール:TYPES命令
@基本データ型の場合
TYPES (データ型名) TYPE (データ型) .
TYPES (データ型名) TYPE (データ型) .
A構造化型データ型の場合
TYPES:
BEGIN OF (構造化型データ型名),
(項目名) TYPE (データ型),
(項目名) TYPE (データ型),
・・・・・・・・・・・・・・
END OF (構造化型データ型名).
TYPES:
BEGIN OF (構造化型データ型名),
(項目名) TYPE (データ型),
(項目名) TYPE (データ型),
・・・・・・・・・・・・・・
END OF (構造化型データ型名).
2 TYPES命令とは?
TYPES命令は「基本データ型」と「構造化型データ型」を定義する命令です。
まず、最初に「基本データ型」について解説します。
2.1 「基本データ型」とは?
基本データ型を簡単に説明すると「変数」の元となるデータ型です。
DATA命令を用いて変数を定義する際に、TYPEオプションで指定するデータ型は、「基本データ型」に分類されます。
SAP標準で事前に定義されているデータ型(ABAPデータ型)には、限りがあります。
例えば、「C(テキスト項目)」や「D(日付)」といった基本的なものしか用意されていません。
CやDといったデータ型だけでコーディングしていくことも不可能ではありませんが、例えばデータ型自体に意味を持たせたい場面などが出てきます。
こんな時に、TYPES命令を用いるのです。
D(日付) → Birth_D(生年月日)
ただの「日付」ではなく、「生年月日」を格納する「データ型」を作成する場面が出てきます。
こんな時に
TYPES Birth_D TYPE D.
とコーディングすることで、新しいデータ型を生み出すわけです。
2.2 「構造化型データ型」とは?
では、「構造化型データ型」とは何でしょう。
答えは、その名前から推測できる通り「構造」を定義する際の基となるデータ型です。
構造は1行に並んだ変数の集合です。
構造
変数 変数 変数 変数 ・・・・・
この構造のデータ型を定義する際にも用いることができるのがTYPES命令なのです。
TYPES:
BEGIN OF TYPE_FT001,
RBUKRS TYPE ACDOCA-RBUKRS,
GJAHR TYPE ACDOCA-GJAHR,
BELNR TYPE ACDOCA-BELNR,
DOCLN TYPE ACDOCA-DOCLN,
BLART TYPE ACDOCA-BLART,
END OF TYPE_FT001.
BEGIN OF TYPE_FT001,
RBUKRS TYPE ACDOCA-RBUKRS,
GJAHR TYPE ACDOCA-GJAHR,
BELNR TYPE ACDOCA-BELNR,
DOCLN TYPE ACDOCA-DOCLN,
BLART TYPE ACDOCA-BLART,
END OF TYPE_FT001.
このようにコーディングすることで、構造化型データ型を定義することができるのです。
もし、上記サンプルコードで定義した「TYPE_FI001」型の構造を宣言したい場合は、
DATA HENSU1 TYPE TYPE_FT001.
というようにコーディングしてあげればOKです。
2.3 TYPES命令とDATA命令の違い?
ここまでの内容を理解できていれば、TYPES命令とDATA命令の違いは明確です。
・DATA命令 ⇒ 変数/構造/内部テーブルを宣言
・TYPES命令 ⇒ 変数/構造/内部テーブルの基となる「型」を定義
となります。
したがって、基本的な流れは、
@「TYPES命令で型を定義」を行ったあと、
A「@で定義したデータ型に基づいてDATA命令で変数/構造を宣言」するという流れになります。
ABAPを学習して間もない方は、この点で混乱してしまう方が多いのですが、一つ一つ丁寧に考えれば決して難しくはありません。
3 LIKEオプション
TYPES命令では、LIKEオプションが利用できます。
TYPES A TYPE D. → TYPES B LIKE A.
TYPES命令のオプションTYPEとLIKEの使い分けについても、この機会に学んでみましょう。
タグ:ABAP