ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Textablagen →  Nachrichten →  System-Interfaces für Nachrichten →  System-Interface IF_T100_MESSAGE für Nachrichten → 

IF_T100_MESSAGE für Ausnahme mit Nachricht

Das Beispiel demonstriert den MESSAGE-Zusatz beim Auslösen einer Ausnahme mit IF_T100_MESSAGE.

Quelltext

REPORT demo_raise_message_reuse_attr.

CLASS msg_demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS main.
  PRIVATE SECTION.
    CLASS-METHODS meth EXCEPTIONS exception.
ENDCLASS.

CLASS msg_demo IMPLEMENTATION.
  METHOD main.
    TRY.
        meth( EXCEPTIONS exception = 4 ).
        IF sy-subrc <> 0.
          RAISE EXCEPTION TYPE cx_demo_t100
            MESSAGE ID sy-msgid
                    NUMBER sy-msgno
            EXPORTING text1 = conv #( sy-msgv1 )
                      text2 = conv #( sy-msgv2 )
                      text3 = conv #( sy-msgv3 )
                      text4 = conv #( sy-msgv4 ).
        ENDIF.
      CATCH cx_demo_t100 INTO DATA(oref).
        cl_demo_output=>display(
          |Caught exception:\n\n| &&
          |"{ oref->get_text( ) }"| ).
        MESSAGE oref TYPE 'I' DISPLAY LIKE 'E'.
    ENDTRY.
  ENDMETHOD.
  METHOD meth.
    MESSAGE e888(sabapdemos) WITH 'I' 'am' 'an' 'Exception!'
                             RAISING exception.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  msg_demo=>main( ).

Beschreibung

Das Beispiel demonstriert die Umwandlung einer nicht-klassenbasierten Ausnahme, die mit der Anweisung MESSAGE RAISING in einer Methode ausgelöst und bei deren Aufruf mit dem Zusatz EXCEPTIONS behandelt wurde, in eine klassenbasierte Ausnahme. Es wird die Ausnahmeklasse CX_DEMO_T100 aus dem Beispiel für das System-Interface IF_T100_MESSAGE in globaler Ausnahmeklasse verwendet, die nur das Interface IF_T100_MESSAGE aber nicht IF_T100_DYN_MSG einbindet.

Die Eigenschaften der mit MESSAGE RAISING gesendeten Nachricht stehen nach dem Abfangen der Ausnahme in den Systemfeldern sy-msgty, sy-msgid, sy-msgno und sy-msgv1 bis sy-msgv4 zur Verfügung.

Das Beispiel für das System-Interface IF_T100_DYN_MSG in globaler Ausnahmeklasse zeigt wie alle Eigenschaften der Nachricht hinter dem Zusatz MESSAGE angegeben werden können.