メッセージ
18.3 メッセージ
3. メッセージ
以下について説明します。
- メッセージとメッセージクラス
- MESSAGE命令の記載方法
メッセージとメッセージクラス
プログラムでエラーが発生した場合やユーザに対して何か情報を提示したい場合、
MESSAGE命令を使用して、ステータスバーにメッセージを出力することができます。
MESSAGE命令を使用するには、まず先にトランザクションコー ド SE91でメッセージクラスとメッセージの設定を行う必要があります。
メッセージクラスとは、メッセージが集まったグループのようなものを言います。
メッセージクラスは、プロジェクトごとに作成したり、財務会計用、在庫管理用のように、モジュールごとに作成するなど自由に設定することができます。
ここでは、メッセージクラスと、メッセージの登録について説明します。
① トランザクションコード:SE91(メッセージ更新)を起動します。
② 任意の名称を指定し、[登録]ボタンをクリックします。
③ [属性]タブで[内容説明]を入力します。
④ 任意のメッセージ番号の箇所にテキストを入力し、[登録]ボタンをクリックします。
※SAP標準で登録されているメッセージを使用することも可能です。
MESSAGE命令の記載方法
MESSAGE命令の記載方法について以下の流れで説明します。
- 基本形の構文
- 省略形の構文
- メッセージクラスを省略する構文
MESSAGE命令の記載方法(基本形の構文)
まずは、一番基本の書き方を紹介します。
<メッセージタイフ>はA、E、I、S,W,またはXのいずれかが指定できます。
メッセージタイプA、E、Xは、主に異常発生時に使用し、メッセージ出力と同時に処理が終了するため注意が必要です。
INTOオプションを使用すると、メッセージの内容を変数に代入することができます。
この場合、ステータスバーにメッセージは出力されません。変数は文字型である必要があります。
WITHオプションを使用すると、指定メッセージ内に含まれる「&」 (アンパサンド)部分に値を転送することができます(最大4つ)。
DISPLAY-LIKEオプションを使用すると、見た目だけ指定した別のメッセージタイプで出力しているように見せることができます。
MESSAGE命令の記載方法(省略形の構文)
基本形を省略して記載する方法もあります。一般的には省略形の方がよく使用されます。
オプションは、基本形の構文と同様です。
MESSAGE命令の記載方法(メッセージクラスを省略する構文)
メッセージクラスを省略する書き方もあります。
この記述方法を使用する場合は、プログラムのはじめに使用するREPORT命令でメッセージクラスを宣言しておく必要があります。
オプションは、基本形の構文と同様です。
サンプルコード MESSAGE
REPORT ZR2111ABAPSQL_KANDA05 MESSAGE-ID Z_MSGCLASS. PARAMETERS: P_TEXT1(5) TYPE C, P_TEXT2(5) TYPE C, P_TEXT3(5) TYPE C. AT SELECTION-SCREEN ON P_TEXT1. CHECK P_TEXT1 <> ''. *基本形 MESSAGE ID 'Z_MSGCLASS' TYPE 'E' NUMBER 002 WITH P_TEXT1. AT SELECTION-SCREEN ON P_TEXT2. CHECK P_TEXT2 <> ''. *省略形(メッセージクラス指定あり) MESSAGE E002(Z_MSGCLASS) WITH P_TEXT2. AT SELECTION-SCREEN ON P_TEXT3. CHECK P_TEXT3 <> ''. *省略形(メッセージクラス指定なし→プログラム導入部分のMESSAGE-IDを使用) MESSAGE E002 WITH P_TEXT3.
出力結果
このサンプルは、選択画面のパラメータに何か入力がされると、エラーメッセージを出力する仕様になっています。
選択画面のパラメータによって、MESSAGE命令の記述形式が違いますが、いずれの形式で記入した場合も、同じメッセージが出力されます。
※AT SELECTION-SCREEN ON について
AT SELECTION-SCREENは選択画面全体に共通する処理を記載する際に
実装するイベントキーワードですが、
AT SELECTION-SCREEN ON <選択画面項目>とすることで、
そこで指定した選択画面項目だけに作用する処理を記載することができます。
※CHECK命令について
CHECK命令はそこに記載された条件を満たしているかを確認するための命令であり、条件を満たしていれば処理続行、満たしていなければ処理中断となります。
今回でいえばCHECK P_TEXT1 <> ”.なので、
選択画面項目「P_TEXT1」が空白でなければ(値が入力されて入れば)処理続行、未入力であれば処理を終了するという動きになります。
※WITHオプションについて
「WITH」オプションは、例えば出力したいメッセージに”&1″があった場合に、WITHオプションで指定した文字列を表示させることが出来ます。
例:
<メッセージテーブル>
I002の内容”&1の内容”
<プログラム>
MESSAGE I002(Z_MSGCLASS)
WITH ‘TEST’ ※変数に格納しているのであれば変数を指定
<出力結果>
“TESTの内容”
パラメータ:P_TEXT1(テキスト1)に入力された場合:
MESSAGE命令を基本形で出力します。
パラメータ:P_TEXT2(テキスト2)に入力された場合:
MESSAGE命令をメッセージクラスの指定ありの省略形で出力します。
パラメータ:P_TEXT3(テキスト3)に入力された場合:
MESSAGE命令をメッセージクラスの指定なしの省略形で出力します。