Nachrichten senden 

Nachrichten werden mit der ABAP-Anweisung MESSAGE gesendet. Dabei müssen Arbeitsgebiet, Nachrichtennummer und ein einstelliger Nachrichtentyp angegeben werden.

Arbeitsgebiet und Nachrichtennummer dienen der Identifizierung der Nachricht in der Tabelle T100. Der Nachrichtentyp kann entweder A, E, I, S, W oder X sein und definiert, in welcher Form die ABAP-Laufzeitumgebung die Nachricht verarbeitet.

Nachrichten können in modalen Dialogfenstern oder in der Statuszeile des Bildschirmbilds angezeigt werden. Die Nachrichtenverarbeitung ist außer vom Nachrichtentyp auch vom Kontext abhängig, in dem die Nachricht gesendet wird.

Die MESSAGE-Anweisung

Die MESSAGE-Anweisung hat drei Varianten und mehrere Zusätze:

Verwendung einer programmübergreifenden Nachrichtenklasse

Wenn hinter der programmeinleitenden Anweisung des ABAP-Programms der Zusatz

... MESSAGE-ID <id>.

mit Angabe einer Nachrichtenklasse <id> aus der Tabelle T100 aufgeführt ist, kann die Anweisung MESSAGE wie folgt verwendet werden:

MESSAGE <t><nnn> [WITH <f1> ... <f 4>] [RAISING <exc>].

Dabei ist <t> der einstellige Nachrichtentyp und <nnn> die dreistellige Nachrichtennummer. Das System holt den entsprechenden Nachrichtentext der Nachrichtenklasse, die in der programmeinleitenden Anweisung angegeben ist, aus der Tabelle T100 und stellt ihn abhängig von Nachrichtentyp und Kontext dar.

Statische Spezifizierung der Nachricht

Um Nachrichtenklasse, Nachrichtennummer und Nachrichtentyp statisch zu spezifizieren, verwendet man MESSAGE wie folgt:

MESSAGE <t><nnn>(<id>) [WITH <f1> ... <f4>] [RAISING <exc>].

Diese Anweisung arbeitet wie die erste Variante, nur daß die Nachrichtenklasse <id> hier in der MESSAGE-Anweisung angegeben wird. Eine eventuelle Nachrichtenklasse aus der programmeinleitenden Anweisung wird überschrieben.

Dynamische Spezifizierung der Nachricht

Um Nachrichtenklasse, Nachrichtennummer und Nachrichtentyp dynamisch zu spezifizieren, verwendet man MESSAGE wie folgt:

MESSAGE ID <id> TYPE <t> NUMBER <n> [WITH <f1> ... <f4>] [RAISING <exc>].

Dabei sind <id>, <t> und <n> Felder, die Nachrichtenklasse, Nachrichtennummer und Nachrichtentyp enthalten. Das System greift entsprechend den Feldinhalten auf T100 zu und stellt die Nachricht Typ- und kontextabhängig dar.

Nachrichtentexte dynamisch ergänzen

Die Nachrichtentexte in der Tabelle können bis zu vier Platzhalter & enthalten. Diese Platzhalter können zur Laufzeit mit dem WITH-Zusatz der MESSAGE-Anweisung ersetzt werden:

MESSAGE ... WITH <f1> ... <f 4>.

Dabei werden die Feldinhalte von <f1> ... <f 4> der Reihe nach anstatt der Platzhalter in den Nachrichtentext eingesetzt und ausgegeben.

Nachrichten und Ausnahmen

Innerhalb von Funktionsbausteinen und Methoden können mit dem Zusatz RAISING der MESSAGE-Anweisung Ausnahmen ausgelöst werden:

MESSAGE ... RAISING <exc>.

Falls das aufrufende Programm die Ausnahme <exc> nicht behandelt, zeigt die Anweisung die spezifizierte Nachricht an und setzt die Verarbeitung in Abhängigkeit vom Nachrichtentyp und Kontext fort. Falls das aufrufende Programm die Ausnahme behandelt, wird keine Nachricht angezeigt, sondern die Ausnahme ausgelöst. Die Systemfelder SY-MSGID, SY-MSGNO, SY-MSGTY und SY-MSGV1 bis SY-MSGV4 enthalten dann im Aufrufer Nachrichtenklasse, Nachrichtennummer, Nachrichtentyp und eventuelle Werte für Platzhalter.

Beispiel

REPORT demo_messages_simple MESSAGE-ID sabapdocu.

MESSAGE i014.

MESSAGE s015.

WRITE text-001.

Dieses einfache Beispiel führt zur Anzeige einer Informationsnachricht in einem modalen Dialogfenster

und einer Statusmeldung in der Statusleiste des Folgebildschirms, hier also einer Liste.