【ABAP】データ型―文字列型・整数型の基本理解

ABAP

ABAPデータ型とは、事前にSAPに登録されているデータ型のことです。

「データ型」とは、DATA命令で定義する変数(箱)の仕様を指定するものです。(整数なのか文字列なのか日付なのか・・・。)

TYPES命令でデータ型を定義し、それをDATA命令の変数定義で指定する―。

基本は上記の流れで変数定義を行いますが、よく使う単純なもの「日付」「文字列」などはSAP標準で事前に定義されています。すなわち、プログラム中でTYPES命令で定義しなくてもDATA命令で指定することができます。

このデータ型のことを「ABAPデータ型」と言います。

ここまで読んで「?」となった人は、以下のページを参照してから戻ってきてください。この2つのページの内容が分かっている前提で解説を始めます。

※以下のページは超・基本的な内容のため、短時間で学習できるようにしております。

前提:ABAPデータ型は2種類に分けて考える

後程解説しますが、ABAPデータ型は、「C」”文字”、「I」”整数”など様々な種類があります。

これを実際のコーディングで利用する際に気を付けなければならないのが、完全型と不完全型の区別です。

本サイト以外でも様々な区別を説明していますが、本サイトでは知っておかないと困る「完全型と不完全型の区別」に焦点を当てて説明します。

完全ABAPデータ型

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

不完全ABAPデータ型

データ型意味データ長
C文字列
N数値
P数値(小数点あり)
・・・・・

「完全」=データの長さが決まっている

上記二つの表を見比べれば気付く方もいらっしゃるかと思います。

「完全ABAPデータ型」という場合、データの長さも定義済であるデータ型を指します。(4文字の整数!など)

逆に、「不完全ABAPデータ型」という場合、データの長さが決まっていない(数字を入れることは決まっているけど、どれぐらいの長さが入るかは決まっていない)データ型を指します。

したがって不完全データ型の場合、DATA命令のコーディング中にデータ長を明示する必要があります。したがって、この「完全型と不完全型の区別」ができていない場合、コーディングエラーとなってしまいます。

不完全ABAPデータ型の場合のDATA命令

早速ですが、完全ABAPデータ型、不完全ABAPデータ型のコーディングの違いを見ていきましょう。

例1)不完全ABAPデータ型の場合

DATA: W_NUM(16)    TYPE N.           "16桁の数値

例2)完全ABAPデータ型の場合

DATA: W_INT  TYPE I.           "4桁の数値

不完全の場合はデータの長さが定義されていないため、DATA命令中でデータ長を定義する必要があります。

箱の名前のすぐ後に「(数値)」を付けます。

ちなみに以下の方法でも定義が可能です。

例3)

DATA: W_NUM TYPE N LENGTH 16.           "16桁の数値

逆に完全データ型の場合は、コーディング中に長さを明示する必要はありません。

上記、例2では、データ型は4桁の数値ということになります。

他にもABAPデータ型はありますが、理解促進のため本ページでは上記例にとどめておきます。

知っているとすごい!上級者知識

DATA : a(6) TYPE t.

のように、完全ABAPデータ型についてデータ長を記述しても(完全なのでデータ長は既にSAP標準で定義済)エラーとはなりません。

ただし、データ長を下記のように、誤って指定してしまうとコンパイル時に警告が表示されてしまいます。

DATA: a(1) TYPE t.

※本来はT(時刻:HHMMSS・・・6文字)なので長さ1ではない!

ただし、この際構文エラーにはなりません!!ので、めったに使うことはものではありません。

このページのまとめ

① SAP標準で定義されているデータ型が存在する

② データ型は「完全」と「不完全」に区別される

③ 「完全」はデータ長が決まっているのに対して「不完全」は決まっていない

④ 「不完全」なデータ型は変数定義時にデータ長を指定する必要がある

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