【ABAP】3分で学ぶCONSTANTS命令―定数定義

ABAP

ABAPの基本中の基本。CONSTANTS命令について解説します。

CONSTANTS命令はABAPで定数定義を行うための命令です。変数定義を行うDATA命令とセットで覚えるのがおすすめ!

このページでは、そもそも定数とは何か?定数を定義することのメリットは何か?DATA命令との違いは何かなど、基本的な内容を中心に解説します。

このページで学べる内容
  • 定数とは?
  • 定数を定義する方法―構文ルール:CONSTANTS命令
    • CONSTANTS命令を用いたサンプルコード
    • 定数の利用シーン・使いどころ

SAPエンジニア/ABAPerを目指す方であれば知らないと恥ずかしい超・重要知識です。是非最後までご覧ください。

スポンサーリンク

ABAP:定数とは?

まずはプログラミングにおける「定数」の意味から学習します。

「定数」とはプログラム実行時に値を変更することができないデータオブジェクト(箱)のことです。

「定数」の対義語は「変数」で、変数の場合はプログラム実行中に値を書き換えることが可能です。一方「定数」の場合はプログラム実行中にその値を書き換えることはできません。

仮に無理やり書き換えようとするコードを書くと、構文エラー/実行時エラー(ダンプ)が発生します。

定数はプログラム開発時点から終了時点まで定数は不変であると理解しておきましょう。

ABAP CONSTANTS

構文ルール:CONSTANTS命令

ここからは本題のABAPにおける定数定義の仕方・使いどころを学習していきます。

CONSTANTS命令

CONSTANTS (定数名) TYPE (データ型) VALUE (初期値).

CONSTANTS GC_TEST(5) TYPE N VALUE '12345'.

CONSTANTS:
  GC_BUKRS_1 TYPE C VALUE '1000', 
  GC_BUKRS_2 TYPE C VALUE '2000', 
  GC_BUKRS_3 TYPE C VALUE '3000'.

構文ルールはDATA命令と基本的には同じですが、CONSTANTS命令で定義するのは変数ではなく定数なので、宣言時にVALUEオプションを利用して「初期値」を指定する必要があります。

サンプルコード:CONSTANTS命令

CONSTANTS命令の使い方をよりイメージしやすいようにいくつかサンプルコードを記載します。

どのような使い方があるのか?をインプットしておきましょう。

CONSTANTS命令のサンプルコード1
CONSTANTS:
  BEGIN OF LCF_ADDLESS,
    city     TYPE string VALUE 'TOKYO',
    country  TYPE string VALUE 'JAPAN',
  END   OF LCF_ADDLESS.

CONSTANTS命令ではDATA命令と同じように構造として定義することも可能です。

上記のように似たような種類の定数を分類しておきたい場合などに利用します。

CONSTANTS命令のサンプルコード2
CONSTANTS:
    city     TYPE string VALUE 'TOKYO',
    country  TYPE string VALUE 'JAPAN',
    TOWN     TYPE string VALUE 'SHIBUYA'.

単にチェーン命令の形式で定義することも可能です。基本はプログラム冒頭にまとめてチェーン形式で定数定義を行うことが一般的です。

定数を利用する意味/メリット

構文ルールも簡単で、概念も理解しやすいCONSTANTS命令ですが、一体どこで利用するのでしょうか?何のために定数が用いられるのでしょうか?

この章ではCONSTANTS命令を利用するメリットを以下の2点に集約して解説します。

CONSTANTS命令を利用するメリット
  • 可読性の向上
  • 保守性の向上

CONSTANTS命令を利用するメリット①:可読性の向上

まず1つ目のメリットは「可読性」の向上。つまり、簡単に言えばCONSTANTS命令を利用する方がプログラム全体が読みやすくなる場合が多いです。

定数を定義せずにコーディングしたプログラムと、定義定義がされているプログラムを比較してみます。

コード比較1

CONSTANTS命令を利用しない場合

RESULT = PRICE * 0.1.

CONSTANTS命令を利用した場合

CONSTANTS TAX_RATE TYPE NUMC VALUE '0.1'.  " 定数定義 税率→10%
RESULT = PRICE * TAX_RATE.

いかがでしょうか。CONSTANTS命令を利用することで、ただの定数が「どんな意味を持った数字・値」なのか?という点を明確にすることができます。

処理は同じでも、ハードコーティングされている場合「1.1」という数字の意味が分かりませんが、定数として「TAX_RATE = 15」とすれば「15」という数字が税率であることが直感的にわかるようになります。

CONSTANTS命令を利用するメリット②:保守性の向上

2つ目のメリットは保守性の向上です。つまり、後で修正を行う必要が出た場合にCONSTANTS命令を利用していれば修正・改修が簡単になるということです。

以下2つのサンプルコードを改修する場面を考えてみます。例として、消費税率の変更を考えましょう。

コード比較1

CONSTANTS命令を利用しない場合

RESULT  = PRICE * 1.1 .
AMOUNT  = U_PRICE * 1.1 .
PAYMENT = P_PRICE * 1.1 .

CONSTANTS命令を利用した場合

CONSTANTS TAX TYPE NUMC VALUE '1.1'.

RESULT  = PRICE * TAX.
AMOUNT  = U_PRICE * TAX.
PAYMENT = P_PRICE * TAX.

下のサンプルコードを改修するとすれば最初の1行だけ(定数の値を変更)を変更すればOK。ですが、ハードコーティングされていると3か所直す必要が出てきてしまいます。

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

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

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

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

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