Nutzung von SAP-Standard-Klasse CX_T100_MSG, Definition eigener Nachrichten-IDs
- Ausnahmeklasse anlegen
- Verwendung der vorhandenen und frei verwendbaren T100-Text-ID: 00 398 „& & & &“
- SE80 Projekt -> Klassen -> Anlegen
- Klassenname: ZCX_MY_EXCEPTION
- Oberklasse: CX_T100_MSG
- Klassentyp: Ausnahmeklasse mit Haken bei „Nachrichtenklasse“
- Interfaces: „IF_T100_MESSAGE“ wird automatisch hinzugefügt
- Klasse / Interface: ZCX_MY_EXCEPTION
- Reiter „Texte“
- neue Ausnahme-ID (Text-ID) hinzufügen: MY_OBJECT_NOT_FOUND
- auf Button „Nachrichtentext“ klicken
- entweder eigene Z-Nachrichtenklasse mit Nachrichtennummern und Nachrichtenkurztexten pflegen
- oder bestehende Standardnachrichtenklasse nutzen:
- Nachrichtenklasse: 00
- Nachrichtennummer: 398 (ergibt Nachrichtentext „& & & &“)
- Nachrichtentext: wird automatisch aus der Nachrichtenklasse gezogen
- Attrib. 1 zuweisen: T100_MSGV1
- Attrib. 2 zuweisen: T100_MSGV2
- Attrib. 3 zuweisen: T100_MSGV3
- Attrib. 4 zuweisen: T100_MSGV4
- aktivieren
Auslösen der Exeption ZCX_MY_EXCEPTION
CLASS zxyz DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
METHODS: constructor
IMPORTING
!iv_text TYPE string " Übergabestring für Test
RAISING
zcx_my_exception. " Fehler im Konstruktor löst evtl. ZCX_MY_EXCEPTION aus
ENDCLASS.
CLASS zxyz IMPLEMENTATION.
METHOD constructor.
IF NOT iv_text IS INITIAL.
...
ELSE.
* Text leer -> ZCX_MY_EXCEPTION auslösen
RAISE EXCEPTION TYPE zcx_my_exception
EXPORTING
textid = zcx_my_exception=>my_object_not_found
t100_msgid = 'E' " nicht verwendet
t100_msgno = '000' " nicht verwendet
t100_msgv1 = 'Text war leer.' " 1. String, wenn benötigt
t100_msgv2 = '' " 2. String, wenn benötigt
t100_msgv3 = '' " 3. String, wenn benötigt
t100_msgv4 = ''. " 4. String, wenn benötigt
ENDIF.
ENDMETHOD.
ENDCLASS.
Exception ZCX_MY_EXCEPTION und abfangen und Text-ID MY_OBJECT_NOT_FOUND ausgeben
TRY.
* zum Auslösen der Exception ZCX_MY_EXCEPTION den Übergabeparameter leer lassen
DATA(o_test) = NEW zxyz( iv_text = '' ).
* Exception abfangen
CATCH cx_root INTO DATA(e_txt).
* Klassenname
WRITE: / cl_abap_classdescr=>get_class_name( p_object = e_txt ).
* Messagetext
WRITE: / e_txt->get_text( ).
ENDTRY.
Links