!--a11y-->

メッセージには、汎用モジュールとメソッド内で異なる 2 つの機能があります。
汎用モジュールおよびメソッドでメッセージを使用する際に MESSAGE 命令に RAISING オプションを指定せず、呼出元がメッセージを捕捉しない場合、メッセージは通常、汎用モジュールまたはメソッドで呼び出されたコンテキストに応じて処理されます。
汎用モジュールとメソッドで以下のオプションを指定してメッセージを使用するとします。
... RAISING <exc>
この場合、メッセージが処理される方法は、呼出元プログラムが例外 <exc> を処理するかどうかによって決まります。
キ 呼出元プログラムが例外を処理しない場合、メッセージが表示され、呼出元の汎用モジュールまたはメソッドでのコンテキストに応じて処理されます。
キ 呼出元プログラムが例外を処理する場合は、メッセージは表示されません。代わりに、メッセージタイプに応じてプロシージャが中断され、処理が呼出元プログラムに戻されます。メッセージの内容は、システム項目SY-MSGID 、SY-MSGTY 、SY-MSGNO 、および SY-MSGV1 から SY-MSGV4 に保存されます。
MESSAGE 命令で RAISING オプションを使用して送信されない汎用モジュールからのメッセージを、CALL FUNCTION 命令の EXCEPTIONS 一覧に暗黙的例外ERROR_MESSAGE を含めることによって捕捉することができます。以下の条件が適用されます。
キ タイプ S 、I および W のメッセージは無視されます ( ただし、バックグラウンド処理中にログに記録されます) 。
キ タイプ E と A のメッセージは、例外 ERROR_MESSAGE をトリガします。
キ タイプ X のメッセージは、通常の実行時エラーとショートダンプをトリガします。
メソッドに対するメッセージの捕捉は、現時点ではサポートされていません。