ABAPMESSAGE_MSG - MESSAGE MSG

General Material Data   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

MESSAGE - msg

Kurzreferenz



Syntax

... { 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 DatenbanktabelleT100 entwederüber direkte Angaben id und n, bzw. über den Inhalt der Datenobjekte midund num für die Nachrichtenklasse und die Nachrichtennummer spezifiziert oder es wird eine Objektreferenzvariable oref angegeben, derendynamischerTyp das Interface IF_T100_MESSAGE implementiert. Durch direkte Angabe von t oder als Inhaltdes Datenobjekts mtype muss einer der möglichen Nachrichtentypen "A", "E", "I", "S", "W" oder "X" angegeben werden, wodurch dasVerhalten der Nachricht gesteuert wird.

Wenn die angegebene Nachricht für die Anmeldesprache des aktuellen Benutzers nicht gefunden wird, wird sie als Nächstes in der Sekundärsprache (Profilparameterzcsa/second_language) und danach in der SpracheEnglisch gesucht. Wird sie auch dort nicht gefunden, werden der angegebene Nachrichtentyp, die Nachrichtenklasseund die Nachrichtennummer in Großbuchstaben und durch Doppelpunkte ":" getrennt als Kurztext verwendet.

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

Alternative 1

... tn ...


Wirkung

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

Beispiel

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

REPORT rep MESSAGE-ID sabapdemos.
...
MESSAGE i014.

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.

Hinweise

  • 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.

REPORT ...
...
MESSAGE i014(sabapdemos).

Alternative 3

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


Wirkung

Die Nachrichtenklasse, der Nachrichtentyp und die Nachrichtennummer werden als Inhalte der Datenobjektemid, mtype und num angegeben (dynamische Form). Für mid und mtypewerden zeichenartige Datenobjekte erwartet, die Nachrichtenklasse bzw. Nachrichtentyp in Großbuchstabenenthalten müssen. 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.

DATA: mid   TYPE sy-msgid VALUE 'SABAPDEMOS',
      mtype TYPE sy-msgty VALUE 'I',
      num   TYPE sy-msgno VALUE '014'.

MESSAGE ID mid TYPE mtype NUMBER num.

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 dasKomponenten-InterfaceIF_MESSAGE enthält. Für mtype wird ein zeichenartiges Datenobjekt erwartet, das den Nachrichtentyp in Großbuchstaben enthalten muss.

Die Anweisung MESSAGE wertet die Komponenten des strukturierten Attributs T100KEY des InterfacesIF_T100_MESSAGE im referenzierten Objekt aus.Die Nachrichtenklasse wird der Komponente MSGID, die Nachrichtennummer der Komponente MSGNO entnommen.Wenn die Komponenten ATTR1 bis ATTR4 den Namen anderer Attribute des Objekts enthalten, werden die Platzhalter"&1" bis "&4" und "&" des Kurztextes bzw. "&V1&" bis "&V4&" des Langtextes der Nachricht nach den Regelnzur Verwendung des Zusatzes WITH in message_optionsdurch den Inhalt dieser Attribute ersetzt. Wenn eine dieser Komponenten keine Attributnamen enthält, wird ihrem Inhalt am Anfang und am Ende das Zeichen "&" hinzugefügt und der Platzhalter damit ersetzt.

Hinweise

  • Bei dieser Variante sind die Zusätze WITH und INTO in message_options nicht erlaubt.
  • Wenn für oref Feldsymbole oder Formalparameter vom generischen Typ any oder dataangegeben sind, wird die syntaktisch gleiche Variante MESSAGE text verwendet.
  • Diese Variante ist hauptsächlich zur Verwendung mitAusnahmeobjekten vorgesehen. Wenn eine globaleAusnahmeklassedas Interface IF_T100_MESSAGE implementiert, werden die Komponenten der Struktur T100KEY beim Auslöseneiner entsprechenden Ausnahme in der Interfacemethode GET_TEXT, die in der Oberklasse CX_ROOT implementiertist, gemäß der Definition des zugehörigen Ausnahmetexts gefüllt. Bei lokalenAusnahmeklassen muss man die Komponenten selbst füllen. Hierfür sollte aber nicht die Interfacemethode GET_TEXT redefiniert, sondern der Instanzkonstruktor verwendet werden.
  • Aus Kompatibilitätsgründen kann diese Variante auch noch für Klassen verwendetwerden, die nur das Interface IF_MESSAGE implementieren. In diesem Fall werden im referenzierten Objektautomatisch die Interfacemethoden GET_TEXT und GET_LONGTEXT aufgerufen und deren Rückgabewertals Kurztext bzw. Langtext der Nachricht verwendet. Die Systemfelder sy-msgid und sy-msgno werden in diesem Fall nicht spezifisch gefüllt. Die Wurzelklasse allerAusnahmeklassen,CX_ROOT, implementiert das Interface IF_MESSAGE. In Ausnahmeklassen, die nicht das Interface IF_T100_MESSAGEimplementieren, 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

In einer lokalen Ausnahmeklasse lcx_exception wird das Interface IF_T100_MESSAGE implementiertund dessen Attribut T100KEY mit Werten versorgt. Bei Behandlung der Ausnahme zeigt die Anweisung MESSAGEdie entsprechende Nachricht an, wobei ein Platzhalter "&" mit dem Inhalt des Attributs text ersetzt wird.

CLASS lcx_exception DEFINITION INHERITING FROM cx_dynamic_check.
  PUBLIC SECTION.
    INTERFACES if_t100_message.
    METHODS constructor IMPORTING text TYPE csequence.
    DATA text TYPE c LENGTH 40.
ENDCLASS.

CLASS lcx_exception IMPLEMENTATION.
  METHOD constructor.
    super->constructor( ).
    me->text = text.
    if_t100_message~t100key-msgid = 'SABAPDEMOS'.
    if_t100_message~t100key-msgno = '888'.
    if_t100_message~t100key-attr1 = 'TEXT'.
  ENDMETHOD.
ENDCLASS.

DATA exc_ref TYPE REF TO lcx_exception.

START-OF-SELECTION.
  TRY.
      RAISE EXCEPTION TYPE lcx_exception EXPORTING text = 'Error!'.
    CATCH lcx_exception INTO exc_ref.
      MESSAGE exc_ref TYPE 'I' DISPLAY LIKE 'E'.
  ENDTRY.


CPI1466 during Backup   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.


Length: 11094 Date: 20120526 Time: 214752     triton ( 356 ms )