【ABAP】データ型の基本を5分で解説します【初心者向け】

ABAP

ABAPのプログラミングを行う際に必要不可欠な基本知識―データ型について初心者向けに1から整理して解説します。

データ型とは、その名の通りデータオブジェクトがどのようなデータであるか?を示すもの。

データ型とは、DATA命令で定義する変数(箱)の仕様を指定するもの。

ABAPでは、すべてのデータオブジェクトは必ずいずれかのデータ型を保持しています。このページでは、SAPにおけるデータ型とデータ型の定義方法・利用方法を初心者向けに網羅的に解説します。

このページで学べる内容
  • データ型とは何か?
  • 覚えておきたいデータ型の3分類
    • 事前定義のABAPデータ型
      • 完全ABAPデータ型
      • 不完全ABAPデータ型
    • ABAPディクショナリ定義のデータ型
    • ローカルデータ型

ABAPエンジニアを目指す方であれば、これを知らないと何も始まらないレベルで重要な基本知識です。是非最後までご覧ください。

スポンサーリンク

データ型とは?

冒頭でも説明した通り、データ型とは数字・文字等のデータ種別と、データ長(データの大きさ)の属性情報です。

データ型とは、DATA命令で定義する変数(箱)の仕様を指定するもの。

例えば、"数字" のデータ型を持つ変数に、「こんにちは!」などの文字列を格納することはできません。

データ型を適切に定義しておくことで、誤って異なるデータを格納することを防げると同時に、金額の桁誤りなどを防止することができます。

PythonやJavaScriptなど、自動的にデータ型を付与してくれる言語もありますが、ABAPは事前定義が必須。

したがって、ABAPでプログラミングを行う際にはこのデータ型に対する理解は不可欠です。

動的型付け/静的型付け

プログラミング言語の種類によっては、プログラム実行時に変数のデータ型を自動判定してくれます。このようなプログラミング言語「動的型付け言語」と呼びます。

対義語は「静的型付け言語」で、静的型付け言語はプログラム実行時に自動でのデータ型が付与は行われません。静的型付け言語では、変数の定義時に必ずどのデータ型を持つか?を事前定義しておく必要があります。

ABAP:データ型の3分類

ABAPでは、このデータ型を3つの領域で管理しています。

1つが、事前にSAP標準で用意されている事前定義のABAPデータ型。もう1つが、ABAPディクショナリで自分で定義するABAPディクショナリデータ型。最後が、プログラム内で定義するローカルデータ型です。

3つの定義領域
  1. 事前定義のABAPデータ型
  2. ABAPディクショナリデータ型
  3. ローカルデータ型

それぞれ定義方法や利用制限などで細かく種類が分かれます。

1つずつ、解説します。

事前定義のABAPデータ型

事前定義のABAPデータ型は、SAPをインストールした時点で初めから定義されているデータ型です。

この事前定義ABAPデータ型は、どのプログラムからでも利用することができるデータ型で、最も基本的なデータ型のセットが定義されています。

事前定義のABAPデータ型は、さらに2つに分類が可能です。1つが、完全ABAPデータ型。もう1つが不完全ABAPデータ型です。

事前定義ABAPデータ型の分類

完全ABAPデータ型
⇒データ長も決まっているデータ型

不完全ABAPデータ型
⇒データ長が決まっていないデータ型

完全ABAPデータ型

完全ABAPデータ型は、以下の4つを覚えておけばOK。全て項目長が決まっているので、変数定義時の項目表の指定が不要です。

データ型意味項目長
D日付(YYYYMMDD)8文字
T時刻(HHMMSS)6文字
I整数4文字
F浮動小数点形式8文字

不完全ABAPデータ型

不完全ABAPデータ型も以下の4つを押さえておきましょう。こちらは、項目長が未定ですので、変数定義時に項目長を明示する必要があります。

データ型意味項目長
C文字列1~65535
N数値1~65535
P数値(小数点あり)1~16
X16進項目1~65535

完全/不完全ABAPデータ型を利用したコーディング例

完全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ディクショナリを用いて定義するデータ型です。ABAPディクショナリ(トランザクションコード:SE11)を用いて登録されたデータはすべてABAPディクショナリデータ型です。

ABAPディクショナリデータ型は、どのプログラムからでも呼び出しが可能。(事前定義ABAPデータ型も同様です。)

ABAPディクショナリのデータ型の分類やそれぞれの設定方法は以下の記事をご覧ください。

ローカルデータ型

ローカルデータ型とは、TYPES命令を用いてプログラムの中でローカルに定義するデータ型です。このローカルデータ型は、その名通り他の2つのデータ型と異なり他のプログラムから参照して利用することはできません。

ローカルデータ型の定義方法は以下のページで詳しく解説しております。

SAP/ABAPを1から勉強したい方は

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

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

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

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

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