Ansicht
Dokumentation

ABAPMESSAGE_MSG - MESSAGE MSG

ABAPMESSAGE_MSG - MESSAGE MSG

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

MESSAGE, msg

Kurzreferenz



... ${ tn $}
  $| ${ tn(id) $}
  $| ${ ID mid TYPE mtype NUMBER num $}
  $| ${ oref $[TYPE mtype$] $} ...

Alternativen:

1. ... tn ...

2. ... tn(id) ...

3. ... ID mid TYPE mtype NUMBER num ...

4. ... oref $[TYPE mtype$] ...

Wirkung

In msg wird eine Nachricht aus der Datenbanktabelle T100 entweder über direkte Angaben id und n, bzw. über den Inhalt der Datenobjekte mid und num für die Nachrichtenklasse und die Nachrichtennummer spezifiziert oder es wird eine Objektreferenzvariable oref angegeben, deren dynamischer Typ das Interface IF_T100_MESSAGE implementiert. Durch direkte Angabe von t oder als Inhalt des Datenobjekts mtype muss einer der möglichen Nachrichtentypen A, E, I, S, W oder X angegeben werden , wodurch das Verhalten der Nachricht gesteuert wird Ein ungültiger Typ führt zu einem Syntax- oder Laufzeitfehler.

Wenn die angegebene Nachricht für die Anmeldesprache des aktuellen Benutzers nicht gefunden wird, wird sie als Nächstes in der Sekundärsprache des AS ABAP und danach in der Sprache Englisch gesucht. Wird sie auch dort nicht gefunden, werden der angegebene Nachrichtentyp, die Nachrichtenklasse und die Nachrichtennummer in Großbuchstaben und durch Doppelpunkte ":" getrennt als Kurztext verwendet.

Die Systemfelder der Anweisung MESSAGE werden immer mit den angegebenen Werten versorgt.

Hinweise

  • Die maximale Länge einer Nachricht ist 269 und bestimmt sich aus dem maximal 73-stelligen Kurztext der Nachricht in der Datenbanktabelle T100, in dem bis zu 4 einstellige Platzhalter & über den Zusatz WITH durch maximal 50-stellige Zeichenketten ersetzt werden können.

Alternative 1

... tn ...


Wirkung

Mit t und n werden der einstellige Nachrichtentyp und die dreistellige Nachrichtennummer direkt hintereinander angegeben (statische Kurzform). Die Nachrichtenklasse muss mit dem Zusatz MESSAGE-ID bei der programmeinleitenden Anweisung angegeben sein.

Anzeigen des Kurztexts der Nachricht mit der Nummer 014 aus der Nachrichtenklasse SABAPDEMOS als Informationsnachricht.

Alternative 2

... tn(id) ...


Wirkung

Für t und n gilt das Gleiche wie bei der statischen Kurzform. In der statischen Langform wird mit id die Nachrichtenklasse direkt in Klammern angegeben.

Hinweis

Die explizite Angabe der Nachrichtenklasse übersteuert den Zusatz MESSAGE-ID der programmeinleitenden Anweisung. Die Angabe der Nachrichtenklasse in Klammern bedeutet hier nicht, dass der Inhalt von id verwendet wird. Vielmehr wird die Nachrichtenklasse verwendet, die den direkt mit id angegebenen Namen hat.

Beispiel

Wie Beispiel zu Alternative 1, mit expliziter Angabe der Nachrichtenklasse.

Alternative 3

... ID mid TYPE mtype NUMBER num ...


Wirkung

Die Nachrichtenklasse, der Nachrichtentyp und die Nachrichtennummer werden als Inhalte der Datenobjekte mid, mtype und num angegeben (dynamische Form). Für mid und mtype werden zeichenartige Datenobjekte erwartet, die Nachrichtenklasse bzw. Nachrichtentyp in Großbuchstaben enthalten müssen. Die Nachrichtenklasse, der Nachrichte Ungültige Nachrichtentypen erzeugen eine unbehandelbare Ausnahme. Für num wird ein Datenobjekt vom Typ n der Länge 3 erwartet.

Hinweis

Die explizite Angabe der Nachrichtenklasse übersteuert den Zusatz MESSAGE-ID der programmeinleitenden Anweisung.

Beispiel

Wie Beispiel zu Alternative 2, mit dynamischer Spezifikation der Nachricht und des Nachrichtentyps.

Alternative 4

... oref $[TYPE mtype$] ...


Wirkung

Für oref kann eine Objektreferenzvariable angegeben werden, die bei Ausführung der Anweisung MESSAGE auf ein Objekt zeigt, dessen Klasse das Systeminterface IF_T100_MESSAGE implementiert, welches wiederum das Komponenten-Interface IF_MESSAGE enthält. Bei oref handelt es sich um eine funktionale Operandenposition. Bei der Angabe von oref sind der Zusatz WITH und die Variante mit INTO nicht erlaubt.

Die Anweisung MESSAGE wertet die Komponenten des strukturierten Attributs T100KEY des Interfaces IF_T100_MESSAGE im referenzierten Objekt aus:

  • Die Nachrichtenklasse wird der Komponente MSGID, die Nachrichtennummer der Komponente MSGNO entnommen. Wird die Nachricht nicht gefunden, wird ein Kurztext generiert, der die verwendete Nachrichtenklasse und Nachrichtennummer sowie die Platzhaltertexte aufzählt.
  • Den Komponenten ATTR1 bis ATTR4 werden die Namen von Attributen des Objekts entnommen. Die Platzhalter "&1" bis "&4" und "&" des Kurztextes bzw. "" bis "&V4&" des Langtextes der Nachricht werden nach den Regeln zur Verwendung des Zusatzes WITH mit dem Inhalt dieser Attribute ersetzt. Wenn ein Attribut nicht vorhanden ist oder ein Attribut nicht in einen Platzhaltertext konvertiert werden kann, wird dem Attributnamen am Anfang und am Ende das Zeichen "&" hinzugefügt und als Platzhaltertext verwendet. Initiale Komponenten ATTR1 bis ATTR4 führen zu initialen Platzhaltertexten.

Der Nachrichtentyp wird entweder explizit angegeben oder implizit bestimmt:

  • Die explizite Angabe erfolgt über TYPE mtype, wobei für mtype ein zeichenartiges Datenobjekt erwartet wird, das einen gültigen Nachrichtentyp in Großbuchstaben enthalten muss.
  • Wenn oref auf ein Objekt zeigt, welches statisch erkennbar das Systeminterface IF_T100_DYN_MSG implementiert, kann der Zusatz TYPE weggelassen werden und es wird implizit der Nachrichtentyp verwendet, der im Interfaceattribut MSGTY enthalten ist.

Hinweise

  • Wenn für oref Feldsymbole oder Formalparameter vom generischen Typ any oder data angegeben sind, wird die syntaktisch gleiche Variante MESSAGE text verwendet.
  • Diese Variante ist hauptsächlich zur Verwendung mit Ausnahmeobjekten vorgesehen. Wenn eine globale Ausnahmeklasse das Interface IF_T100_MESSAGE implementiert, werden die Komponenten der Struktur T100KEY beim Auslösen einer entsprechenden Ausnahme in der Interfacemethode GET_TEXT, die in der Oberklasse CX_ROOT implementiert ist, gemäß der Definition des zugehörigen Ausnahmetexts gefüllt. Bei lokalen Ausnahmeklassen muss man die Komponenten selbst füllen. Hierfür sollte aber nicht die Interfacemethode GET_TEXT redefiniert, sondern der Instanzkonstruktor verwendet werden.
  • Das System-Interface IF_T100_DYN_MSG bindet IF_T100_MESSAGE ein und entsprechend können auch Objekte von Klassen verwendet werden, die IF_T100_DYN_MSG implementieren. Während die alleinige Verwendung von IF_T100_MESSAGE für statisch vordefinierte Ausnahmetexte von Ausnahmeklassen vorgesehen ist, ermöglicht IF_T100_DYN_MSG die Verknüpfung von Ausnahmeobjekten mit beliebigen Nachrichten.
  • Wenn für ein Objekt mit dem Systeminterface IF_T100_DYN_MSG der TYPE-Zusatz weggelassen wird, wird implizit der Zusatz TYPE oref->if_t100_dyn_msg~msgty ergänzt.
  • Aus Kompatibilitätsgründen kann diese Variante auch noch für Klassen verwendet werden, die nur das Interface IF_MESSAGE implementieren. In diesem Fall werden im referenzierten Objekt automatisch die Interfacemethoden GET_TEXT und GET_LONGTEXT aufgerufen und deren Rückgabewert als Kurztext bzw. Langtext der Nachricht verwendet. Die Systemfelder sy-msgid und sy-msgno werden in diesem Fall nicht spezifisch gefüllt. Die Wurzelklasse aller Ausnahmeklassen, CX_ROOT, implementiert das Interface IF_MESSAGE. In Ausnahmeklassen, die nicht das Interface IF_T100_MESSAGE implementieren, besorgen die Interfacemethoden GET_TEXT und GET_LONGTEXT die im OTR (Online Text Repository) abgelegten Ausnahmetexte von Ausnahmeobjekten, die dann mit dieser Variante der MESSAGE-Anweisung als Nachricht ausgegeben werden können.

Beispiel

Senden einer Nachricht über ein mit dem Instanziierungsoperator NEW erzeugtes Objekt der Klasse cls, welche das Systeminterface IF_T100_DYN_MSG einbindet. Die Nachricht ist vollständig durch Interfaceattribute des Objekts spezifiziert.






Addresses (Business Address Services)   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 13961 Date: 20240418 Time: 161327     sap01-206 ( 141 ms )