Ansicht
Dokumentation

ABENIF_T100_MESSAGE - IF T100 MESSAGE

ABENIF_T100_MESSAGE - IF T100 MESSAGE

Addresses (Business Address Services)   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- System-Interface IF_T100_MESSAGE

Das Interface IF_T100_MESSAGE verknüpft Klassen mit Nachrichten. Mit Klassen, die dieses Interface implementieren, kann auf Nachrichten zugegriffen werden und Nachrichten verschickt werden. Dazu enthält IF_T100_MESSAGE ein strukturiertes Attribut T100KEY vom Typ SCX_T100KEY. In einer Klasse, die dieses Interface implementiert, gibt der Inhalt dieser Struktur eine Nachricht in der Datenbanktabelle T100 an,

  • Der Inhalte der Komponenten ATTR1 bis ATTR4 ist die Namen von Klassenattributen, deren Inhalt als Platzhaltertexte für die eventuellen Platzhalter in den Texten der Nachricht dienen.

Über eine implementierende Klasse kann wie folgt auf den Nachrichtentext zugegriffen werden:

  • Das Interface IF_T100_MESSAGE bindet das Interface IF_MESSAGE ein, welches nicht alleinstehend verwendet werden sollte. Dieses Interface enthält die Methoden GET_TEXT und GET_LONGTEXT, die von einer Klasse mit dem Interface IF_T100_MESSAGE so implementiert werden können, dass sie den Kurz- und Langtext der aktuellen Nachricht zurück geben. Hierzu dienen die Methoden der Klasse CL_MESSAGE_HELPER.

Die Anweisung MESSAGE bzw. die Klasse CL_MESSAGE_HELPER wertet hierfür den Inhalt der Struktur T100KEY aus:

  • In der Datenbanktabelle T100 wird eine Nachricht gesucht, deren Nachrichtenklasse und Nachrichtennummer den Komponenten MSGID und MSGNO der Struktur T100KEY entsprechen. Wenn eine Nachricht gefunden wird, werden ihre Texte verwendet. Wenn keine Nachricht gefunden wird, wird ein Kurztext erzeugt, die neben der Nachrichtenklasse und Nachrichtennummer auch die Platzhaltertexte aus den in der Struktur angegebenen Klassenattributen aufführt.
  • Die eventuellen Platzhalter "&1" bis "&4" und "&" des Kurztextes bzw. "&V1&" bis "&V4&" des Langtextes der Nachricht werden nach den Regeln zur Verwendung des Zusatzes WITH der Anweisung MESSAGE durch den Inhalt der in den Komponenten ATTR1 bis ATTR4 der Struktur T100KEY angegebenen Klassenattribute ersetzt. Wenn ein in den Komponenten ATTR1 bis ATTR4 angegebenes Attribut nicht vorhanden ist oder wenn der Inhalt eines Attributs nicht in einen Platzhaltertext konvertiert werden kann wird dem Attributnamen am Anfang und am Ende das Zeichen "&" hinzugefügt und die resultierende Zeichenkette als Platzhaltertext verwendet. Wenn eine der Komponenten ATTR1 bis ATTR4 initial ist, wird der entsprechende Platzhaltertext initialisiert.

Hinweise

  • Das Interface IF_T100_MESSAGE ist im Wesentlichen zur Verwendung für Ausnahmetexte von Ausnahmeklassen vorgesehen. Wenn das Interface in normale Klassen und auch in lokale Ausnahmeklassen eingebunden wird, muss das Füllen der Interfacestruktur T100KEY dort selbst programmiert werden. Für globale Ausnahmenklassen ist die Implementierung der Interfacemethoden GET_TEXT und GET_LONGTEXT aber bereits in der Oberklasse CX_ROOT vorgenommen und es sind dort Aliasnamen für diese deklariert. Beim Anlegen von globalen Ausnahmeklassen unterstützen die Werkzeuge das Füllen der Struktur T100KEY und die Zuordnung von Attributen zu Platzhaltern. Hierfür dienen strukturierte Konstanten, die beim Auslösen einer Ausnahme angegeben werden können.
  • Dabei ist zu beachten, dass es beim Interface IF_T100_MESSAGE ein doppelte Indirektion für die möglichen Platzhalter einer Nachricht gibt. Der Text für einen Platzhalter wird einem Attribut der implementierenden Klasse entnommen, dessen Namen selbst in einer Komponente der Struktur T100KEY enthalten ist.
  • Die Klasse CL_MESSAGE_HELPER hat eine Methode GET_LATEST_T100_EXCEPTION, mit der das letzte Objekt einer über das Attribut PREVIOUS erfolgten Verkettung von Ausnahmeobjekten zurück gegeben werden kann, das einen über eine Nachricht definierten Ausnahmetext hat.
  • Das Interface IF_T100_MESSAGE hat kein Attribut für den Nachrichtentyp.
  • Das Interface IF_T100_DYN_MSG erweitert das Interface IF_T100_MESSAGE um vordefinierte Attribute für den Nachrichtentyp und die Platzhalter der Nachricht. Während IF_T100_MESSAGE für statische Ausnahmetexte von Ausnahmeklassen vorgesehen ist, kann IF_T100_DYN_MSG beliebige Nachrichten mit Ausnahmeklassen verknüpfen.

Beispiel

Auslösen einer Ausnahme der Klasse CX_DEMO_T100, die über THROW das Interface IF_T100_MESSAGE implementiert.






ROGBILLS - Synchronize billing plans   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7938 Date: 20240523 Time: 175103     sap01-206 ( 131 ms )