PR

【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から学習したい方は

初めて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をコピーしました