Bei Nachrichten in Funktionsbausteinen und Methoden können wir folgende Fälle unterscheiden:
Wenn Nachrichten in Funktionsbausteinen und Methoden ohne den Zusatz RAISING der MESSAGE-Anweisung gesendet werden und der Aufrufer die Nachricht nicht abfängt, erfolgt die Nachrichtenbehandlung gemäß dem Kontext, in dem die Funktionsbausteine oder Methoden aufgerufen werden.
Wenn Nachrichten in Funktionsbausteinen und Methoden mit dem Zusatz
... RAISING exc
der MESSAGE-Anweisung gesendet werden, hängt die Behandlung davon ab, ob der Aufrufer die angegebene Ausnahme excbehandelt oder nicht.
· Falls das aufrufende Programm die Ausnahme nicht behandelt, wird die Nachricht gesendet und die Nachrichtenbehandlung erfolgt gemäß dem Kontext, in dem die Funktionsbausteine oder Methoden aufgerufen werden.
· Falls das aufrufende Programm die Ausnahme behandelt, wird die Nachricht nicht gesendet sondern die Prozedur unabhängig vom Nachrichtentyp abgebrochen und der Programmablauf im aufrufenden Programm fortgesetzt. Der Nachrichteninhalt steht in den Systemfeldern sy-msgid, sy-msgty, sy-msgno und sy-msgv1 bis sy-msgv4 zur Verfügung.
Wenn Nachrichten in Funktionsbausteinen ohne den Zusatz RAISING der MESSAGE-Anweisung gesendet werden, kann man die Nachrichtenbehandlung durch die Angabe der impliziten Ausnahme error_message in der EXCEPTION-Liste der Anweisung CALL FUNCTIONbeeinflussen. Bei Angabe von error_message gilt Folgendes:
· Nachrichten vom Typ S, I, und W werden ignoriert (bei Hintergrundverarbeitung aber im Protokoll vermerkt).
· Nachrichten vom Typ E und A lösen die Ausnahme error_message aus.
· Nachrichten vom Typ X führen wie gewohnt zum Laufzeitfehler mit Kurzdump.
Für Methoden ist das Abfangen von Nachrichten zur Zeit noch nicht unterstützt.