ABAPのプログラミングを行う際に必要不可欠な基本知識―データ型について初心者向けに1から整理して解説します。
データ型とは、その名の通りデータオブジェクトがどのようなデータであるか?を示すもの。

SAP/ABAPでは、すべてのデータがいずれかのデータ型に属します。このページでは、SAPにおけるデータ型とデータ型の定義方法・利用方法を網羅的に解説します。
ABAPエンジニアを目指す方であれば、これを知らないと何も始まらないレベルで重要な基本知識です。是非最後までご覧ください。
データ型とは?
冒頭でも説明した通り、データ型とは数字・文字等のデータ種別と、データ長(データの大きさ)の属性情報です。

例えば、"数字" のデータ型を持つ変数に、「こんにちは!」などの文字列を格納することはできません。
データ型を適切に定義しておくことで、例えば誤って異なるデータを格納することを防げると同時に、金額の桁誤りなどを防止することができます。
PythonやJavaScriptなど、自動的にデータ型を付与してくれる言語もありますが、ABAPは事前定義が必須。
したがって、ABAPでプログラミングを行う際にはこのデータ型に対する理解は不可欠です。
3つの定義領域
ABAPでは、このデータ型を3つの領域で定義されます。
1つが、事前にSAP標準で用意されている事前定義のABAPデータ型。もう1つが、ABAPディクショナリ(後述)で自分で定義するABAPディクショナリデータ型。最後が、プログラム内で定義するローカルデータ型です。
- 事前定義ABAPデータ型
- ABAPディクショナリデータ型
- ローカルデータ型
それぞれ定義方法や利用制限などで細かく種類が分かれます。
1つずつ、解説します。
事前定義ABAPデータ型
事前定義ABAPデータ型は、SAPをインストールした時点で定義されているデータ型です。
この事前定義ABAPデータ型は、どのプログラムからでも利用することができるデータ型で、最も基本的なデータ型のセットが定義されています。
事前定義のABAPデータ型は、大きく2つに分類可能。
1つが、完全ABAPデータ型。もう1つが不完全ABAPデータ型です。
完全ABAPデータ型
⇒データ長も決まっているデータ型
不完全ABAPデータ型
⇒データ長が決まっていないデータ型
完全ABAPデータ型
データ型 | 意味 | 項目長 |
---|---|---|
D | 日付(YYYYMMDD) | 8文字 |
T | 時刻(HHMMSS) | 6文字 |
I | 整数 | 4文字 |
F | 浮動小数点形式 | 8文字 |
不完全ABAPデータ型
データ型 | 意味 | 項目長 |
---|---|---|
C | 文字列 | 1~65535 |
N | 数値 | 1~65535 |
P | 数値(小数点あり) | 1~16 |
X | 16進項目 | 1~65535 |
不完全ABAPデータ型を用いて、変数を定義する際には項目長を明示する必要がある点に注意が必要です。
不完全ABAPデータ型の場合のDATA命令
ここで、完全ABAPデータ型 / 不完全ABAPデータ型のコーディングの違いを見ていきましょう。
例1)不完全ABAPデータ型の場合
DATA: W_NUM(16) TYPE N. "16桁の数値
DATA: W_NUM TYPE N LENGTH 16. "16桁の数値
データ型 | 意味 | 項目長 |
---|---|---|
N | 数値 | 1~65535 |
例2)完全ABAPデータ型の場合
DATA: W_INT TYPE I. "4桁の数値
データ型 | 意味 | 項目長 |
---|---|---|
I | 整数 | 4文字 |
不完全の場合はデータの長さが定義されていないため、DATA命令中でデータ長を定義する必要があります。
逆に完全データ型の場合は、変数宣言時に項目長を明示する必要はありません。
上記、例2ではデータ型は4桁の数値ということになります。
Tips:完全ABAPデータ型の項目長を明示したときの挙動
DATA : A(6) TYPE T.
上記サンプルコードのように、完全ABAPデータ型についてデータ長を記述しても、実は構文エラーにはなりません。
ただし、それは明示する項目長が事前定義された項目長と一致する場合のみ。
データ長を下記のように、誤って指定してしまうとコンパイル時に警告が表示されてしまいます。
DATA : A(1) TYPE T.
※本来はT(時刻:HHMMSS・・・6文字)なので長さ1ではない!ただし、構文エラーにはならないので、めったに使うものではありません。
ABAPディクショナリデータ型
続いて2つ目のデータ型定義領域です。
これはABAPディクショナリを用いて定義するデータ型です。
アドオン/SAP標準を問わず「テーブル」や「データ型」といったディクショナリオブジェクトを一元的に管理する機能のこと。
ABAPディクショナリで定義したデータ型も、事前定義ABAPデータ型同様どのプログラムからでも呼び出しが可能です。
ABAPディクショナリでデータ型を登録する方法は別の記事で解説します。
ローカルデータ型
ローカルデータ型とは、TYPES命令を用いてプログラムの中でローカルに定義するデータ型です。
このローカルデータ型は、他の2つのデータ型と異なり他のプログラムから参照して利用することはできません。
ローカルデータ型の定義方法は以下のページで詳しく解説しておりますので、そちらをご覧ください。
ABAPを1から勉強したい方は
ABAPを1から学習したい方のために、ABAPの基本知識・基礎概念を1つのページにまとめました。
現在、完全無料で公開しておりますので、是非ご覧ください!