PR

【ABAP】ASSERT命令―アサーションエラーの使いどころを3分で解説

ABAP

ASSERT命令及びアサーションエラーの仕組みと使いどころを解説します。

ASSERT命令は、一言で言うとプログラム内で起きた想定外のエラー情報を "開発者" に知らせるための命令です。読者の中には「ASSERT 1 = 2.」のような奇妙なコードを見かけたことがある方もいらっしゃるかもしれません。

このページでは、ASSERT命令の仕組み(アサーションエラーとは?)と使いどころをサンプルコード付きで解説します。

このページで学べる内容
  • Assert Error(アサートエラー)とは?
  • ASSERT命令の構文ルール:使い方

ABAPerとして1つレベルアップしたい方は必見です。是非最後までご覧ください。

スポンサーリンク

Assert Error(アサートエラー)とは?

ASSERT命令を正式に解説すると・・・
  • ASSERT命令はプログラムの進行中に特定の条件が満たされているかどうかをチェックするために使用される
  • 条件が満たされていない場合ASSERT命令はランタイムエラーを発生させプログラムの実行を中断する
  • 開発中やテスト中に問題のある箇所を特定しやすくなる

あまり聞きなれない言葉かと思いますが、アサートエラーを分かりやすく言い換えると開発者にとって想定外のエラーとなります。

つまり、ASSERT命令は、テスト中に問題を特定する目的で使用されるべき命令であり、本番環境では通常使用すべきではありません。通常のエラー(例えばユーザによる入力ミスなど)であれば、IF文MESSAGE命令を用いて適切なエラーハンドリングを行うべきです。

REPORT ZDEMO_ASSERT.

DATA: lv_dividend TYPE i VALUE 10,
      lv_divisor  TYPE i VALUE 0,
      lv_result   TYPE f.

* 0で割る前に、割る数が0でないことを確認
ASSERT lv_divisor <> 0.

* 除算を実行
lv_result = lv_dividend / lv_divisor.

WRITE: / 'Result:', lv_result.

この例では、ASSERT命令を使用して "lv_divisor" が0でないことを確認しています。もし "lv_divisor" が0の場合、ASSERT命令がランタイムエラーを発生させ、プログラムの実行が中断(プログラムがダンプします)されます。

ASSERT命令(ASSERT 1 = 2 .)

ASSERT命令を利用したコードでたまに見かける例がこちら。

CASE GV_VALUE.
  WHEN GP_1000.
    PERFORM Dynrpo_SET_1000.      "Dynpro1000呼び出し
  WHEN GP_2000.
    PERFORM Dynrpo_SET_1000.      "Dynpro2000呼び出し
  WHEN GP_3000.
    PERFORM Dynrpo_SET_3000.      "Dynpro3000呼び出し    
  WHEN OTHERS.
    ASSERT 1 = 2.                 "想定外のエラー
ENDCASE.

「ASSERT 1 = 2. 」のように論理式が必ず偽(FALSE)となるように記述する例です。

変数「GV_VALUE」は、1000 / 2000 / 3000 のいずれかの値しか持たない想定のコード。この場合、1000 / 2000 / 3000 以外の値となった場合、アサートエラーを発生させることができます。

ASSERT命令利用時の注意点

冒頭でも記載した通り、ASSERT命令は他のABAP命令と比較すると少し異質な命令です。

あまり見かけることはないと思いますが、もしこのページを読んでASSERT命令を利用してみたい!という方は以下の注意点に気を付けましょう。

ASSERT命令利用時の注意点
  • ASSERT命令は開発中やテスト中に問題を特定する目的で使用されるべき
    →本番環境では通常使用すべきではありません。本番環境では、問題が発生した際に適切なエラー処理を行うべき。
    →あくまでも開発・テストを手助けするためのツールとして利用する。

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
ビズドットオンラインをフォローする
blank
ビズドットオンライン
タイトルとURLをコピーしました