PR

【ABAP】TYPES命令―3分で学ぶデータ型定義

ABAP

TYPES命令はABAPにおける宣言命令の1つで、データ型(基本データ型/構造化型データ型)を定義する命令です。

初心者にとっては、そもそもデータ型って?内部テーブル?構造?と、少しとっつきにくい印象を受けてしまうかもしれませんが、TYPES命令をマスターせずにABAPをマスターすることは不可能です。

このページでは、TYPES命令の基本、その前提となる知識を1から分かりやすく初心者向けに解説します。

このページで学べる内容
  • TYPES命令の基本
  • TYPES命令の使い方・書き方
  • 基本データ型 / 構造データ型 / テーブルデータ型
  • TYPEオプション/LIKEオプションの使い分け(別記事へのリンクあり)

SAPエンジニア・ABAPエンジニアを目指す人であれば、絶対に知っておきたい内容ばかりですので是非最後までご覧ください。

スポンサーリンク

TYPES命令―データ型定義

TYPES命令はデータ型を定義する命令です。

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

データ型とは、その名の通りデータオブジェクト(変数・構造・内部テーブル)がどのようなデータであるか?を示すもの。そのデータオブジェクトに格納できる値が、文字列なのか?数字なのか?はたまた日付型なのか?これらを決定する役割を担うのがデータ型です。

ページ後半で実際のコードを見ながら「データ型とは?」を再度解説します。文字だけではイメージがつかないという方もご安心ください。

TYPES命令は、変数のデータ型・構造のデータ型・内部テーブルのデータ型すべてを宣言することができます。

TYPES命令で定義するデータ型の分類

基本データ型
 "変数" のデータ型

構造データ型
 "構造" のデータ型

テーブルデータ型
 "内部テーブル" のデータ型

「変数」「構造」「内部テーブル」の違いは以下の通り。

変数と構造と内部テーブルの違い

詳しくは、こちらの記事で詳しく解説しておりますので、合わせてご覧ください。

DATA命令によって宣言されるデータオブジェクトは、このTYPES命令で定義したデータ型(もしくはABAPディクショナリに登録したデータ型)を参照します。

プログラムの中で一度だけ必要になるデータ型や、わざわざABAPディクショナリに登録する必要がないようなデータ型をTYPES命令で定義します。

構文ルール:TYPES命令

TYPES命令は、作成するデータ型の種類に応じて微妙に書き方が異なります。

例えば、基本データ型を作成する場合は項目は1つなので、1つの項目名とデータ型を作成しておけばOKですが、構造データ型・テーブルデータ型の場合は複数の項目名、それに対応するデータ型を宣言する必要があります。

TYPES命令:基本データ型

TYPES (データ型名) TYPE (データ型) .

TYPES:
    ZBUKRS TYPE BKPF-BUKRS, "会社コード"
    Z_DAY1  TYPE I,        "数字(4文字)"
    Z_DAY2  TYPE N LENGTH 8. "数字(8文字)"

TYPESの後に、任意のデータ型名称を。TYPEオプションの後に事前定義ABAPデータ型、もしくはABAPディクショナリに登録されているオブジェクトを指定します。

TYPES命令は、ソースコード上部にチェーン命令の形で記載されることが普通です。

チェーン命令

ABAPキーワードの後に””を記述。命令が一つ終わるごとに、” ,”を記述します。チェーン命令の最後は、ルール③の通りピリオドを記述します。

TYPES:
    BUKRS TYPE BKPF-BUKRS, "会社コード"
    BELNR TYPE BKPF-BELNR,  "会計伝票番号"
    GJAHR TYPE BKPF-GJAHR, "会計年度"
    BLART TYPE BKPF-BLART. "伝票タイプ"

TYPES命令:構造データ型

TYPES:
 BEGIN OF (構造データ型名),
    
(項目名) TYPE (データ型),
    
(項目名) TYPE (データ型),
    ・・・・・・・・・・・・・・
 END OF (構造データ型名).

TYPES:
* BKPF格納用内部テーブル項目
  BEGIN OF GTS_BKPF,
    BUKRS TYPE BKPF-BUKRS, "会社コード
    BELNR TYPE BKPF-BELNR,  "会計伝票番号
    GJAHR TYPE BKPF-GJAHR, "会計年度
    BLART TYPE BKPF-BLART, "伝票タイプ
  END OF GTS_BKPF.

構造データ型は、"BEGIN OF" と ”END OF” で開始と終了を明示します。

上記のサンプルコードでは、4つの項目を持つ "GTS_BKPF" という構造データ型を作成しています。 もし、「BEGIN OF」「END OF」を書き忘れると・・・

TYPES:
    BUKRS TYPE BKPF-BUKRS, "会社コード"
    BELNR TYPE BKPF-BELNR,  "会計伝票番号"
    GJAHR TYPE BKPF-GJAHR, "会計年度"
    BLART TYPE BKPF-BLART. "伝票タイプ" 

4つの基本データ型が出来上がってしまいます。

この点、基本データ型と構造データ型では括りが異なりますので、明確に分類して理解しておきましょう。

TYPES命令:テーブルデータ型

テーブルデータ型は、TYPEオプションの後に指定するデータ型の種類によって書き方が異なります。

テーブルデータ型を参照する場合

TYPES (データ型名) TYPE (テーブルデータ型) .

基本データ型の場合と書き方は全く同じです。

構造データ型を参照する場合

TYPES (データ型名) TYPE TABLE OF (構造データ型) .

TYPEオプションの後に「TABLE OF」と記述します。

TYPES:
* BKPF格納用内部テーブル
  GTS_WORK  TYPE TABLE OF GTS_BKPF,

こうすることで、テーブルデータ型が定義されます。

TYPES命令とDATA命令の違い?

ここまでの内容を理解できていれば、TYPES命令とDATA命令の違いは明確です。

  • DATA命令  ⇒ 変数/構造/内部テーブルを宣言
  • TYPES命令 ⇒ 変数/構造/内部テーブルの基となる「型」を定義

となります。

したがって、基本的な流れは、①「TYPES命令で型を定義」を行ったあと、②「①で定義したデータ型に基づいてDATA命令で変数/構造を宣言」するという流れになります。

ABAPを学習して間もない方は、この点で混乱してしまう方が多いのですが、一つ一つ丁寧に考えれば決して難しくはありません。まだ理解しきれていない、という方は、再度ページ上部から読んでみてください。

LIKEオプション

TYPES命令では、LIKEオプションが利用できます。

LIKEオプション

TYPES A TYPE D.

TYPES B LIKE A.

TYPES命令のオプションTYPEとLIKEの使い分けについても、この機会に学んでみましょう。続きは、以下のページにて解説しています。

ABAPを1から学習したい方は

初めてABAPを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
ABAPSAP
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました