Ausnahme- und Fehlerbehandlung in ABAP Reports

Einführung

Ein Programmierer versucht immer, so zu codieren, dass sein Code fehlerfrei und vollständig nachweisbar ist. Aber es gibt bestimmte Szenarien, in denen seine Codes versagen können. Kennt der Codierer in einem solchen Fall die Szenarien bereits, behandelt er sie in Form einer Fehlerbehandlung. In Situationen, in denen aufgrund unbekannter Situationen ein Fehler generiert und nicht behandelt werden kann, kann dies jedoch zu schwerwiegenden Dumps führen. Für diese Szenarien haben wir eine Ausnahmebehandlung in SAP. In diesem Artikel werden wir alle Szenarien der Ausnahme- und Fehlerbehandlung in ABAP Reports untersuchen

Ausnahme- und Fehlerbehandlung in SAP ABAP Reports

Wie oben besprochen, ist ein Codierer erforderlich, um bekannte Probleme sowie beabsichtigte Fehlermeldungen zu behandeln. Diese Nachrichten werden dem Benutzer in der Ausgabe über die MESSAGE-Anweisung angezeigt.

Verschiedene Möglichkeiten, Fehler/Ausnahmen abzufangen

ABAP bietet verschiedene Möglichkeiten, Fehler in einem ABAP-Programm abzufangen.

  1. Verwenden von Systemvariablen

Der einfachste Weg besteht darin, ihre Systemvariablen zu verwenden.

 SY-SUBRC EQ 0. "Diese Anweisung zeigt an, dass eine Operation erfolgreich abgeschlossen wurde. SY-SUBRC NE 0. "Diese Anweisung zeigt an, dass eine Operation fehlgeschlagen ist.

Dieser Weg funktioniert direkt, wenn der gesamte Berichtscode im selben Programm verarbeitet wurde. Es kann also keinen Fehler direkt abfangen, wenn Sie einen Funktionsbaustein oder eine ABAP-Klassen-Anweisung verarbeitet haben. Für diese Entitäten müssen wir eine Ausnahme von ihrem Ende aus auslösen, und dann kann die Ausnahme im Bericht behandelt und entsprechend verarbeitet werden.

  1. Abfangen von Fehlern basierend auf Ausnahmen

Falls wir einen Funktionsbaustein oder eine Methode einer Klasse implementieren, dann ist es wichtig, eine Ausnahme von diesen Klassen auszulösen und dann können wir diese Ausnahmen im Bericht abfangen und entsprechende Fehler anzeigen.

Zum Beispiel:

CALL FUNCTION 'Test_Function' EXPORTING DELIMITER = ':' STRING = lv_string IMPORTING HEAD = lv_head TAIL = lv_tail AUSNAHMEN NOT_FOUND = 1 ANDERE = 2. CASE SY-SUBRC. WHEN 1. ... // Fehlermeldung anzeigen WHEN 2. ... // Fehlermeldung anzeigen WENN ANDERE. // Fehlermeldung anzeigen ENDCASE.

 

  1. Verwenden von TRY CATCH ENDTRY

Falls eine Ausnahme über eine Methode der Klasse oder eine unerwartete Ausnahme ausgelöst wird, verwenden wir in diesen Fällen die TRY CATCH-Funktionalität von SAP ABAP. Dies ist eine der besten Möglichkeiten, um alle Arten von Ausnahmen zu behandeln.

Beispiel:

VERSUCHEN. //Rufe hier deine Klasse oder deinen Funktionsbaustein auf CATCH CX_SY_ZERODIVIDE INTO O_REF. // Die Ausnahme, die Sie dort ausgelöst haben MESSAGE „Ihre Fehlermeldung“. ENDTRY.

 

Verschiedene Möglichkeiten zum Anzeigen von Nachrichten

  1. ABAP-Anweisung verwenden

Syntax:

BOTSCHAFT ' ' TYPE 'Geben Sie hier den Nachrichtentyp ein'.

 

Arten von Nachrichten

ABAP bietet die folgenden 6 Arten von Nachrichten:

NachrichtentypBedeutungErläuterung
AKündigungDiese Meldung wird während der Programmbeendigung angezeigt.
EFehlerDiese Meldung wird während des Fehlers angezeigt.
IInformationenDiese Nachricht wird verwendet, um Informationen anzuzeigen.
SErfolgeDies wird im Status des Ausgabebildschirms angezeigt.
WWarnungEs verhält sich wie eine Fehlermeldung.
XAusgangEs verursacht einen Kurzdump mit Fehlermeldung.

 

  1. Verwenden vordefinierter Funktionsmodule

ABAP stellt folgende Funktionsbausteine ​​zur Verfügung, mit denen Nachrichten insgesamt gespeichert, formatiert und angezeigt werden können:

FunktionsbausteinAnwendungsbereich
MESSAGES_INITIALIZEUm die Nachrichten zu initialisieren.
MESSAGE_STOREZum Speichern der anzuzeigenden Nachrichten.
NACHRICHTEN_SHOWUm alle Nachrichten zusammen in einem Popup anzuzeigen
FORMAT_MESSAGESo formatieren Sie die Nachrichten
HR_DISPLAY_ERROR_LISTUm alle Fehlermeldungen anzuzeigen

Beispiel:

  1. Message-Anweisung verwenden
NACHRICHT 'Dies ist eine Fehlermeldung' TYP 'E'.

 

  1. Verwenden mehrerer Funktionen zum Speichern und Anzeigen von Nachrichten:
" Es wird nur anfänglich initialisiert ... * Initialisieren Sie Ihre Nachrichten CALL FUNCTION 'MESSAGES_INITIALIZE' EXCEPTIONS log_not_active = 1 false_identification = 2 OTHERS = 3. "Hängen Sie nacheinander alle Ihre Nachrichten hier an. PERFORM store_messages USING 'E' w_pn w_batch2 w_werks ' ' w_msgno . FORM store_messages USING p_msgty p_msgv1 p_msgv2 p_msgv3 p_msgv4 p_txtnr. IF p_msgty EQ 'E'. w_err_fg = 'X'. ENDIF. * Speichern Sie alle Ihre Nachrichten, die angezeigt werden sollen. CALL FUNCTION 'MESSAGE_STORE' EXPORTING arbgb = 'ZCCH001' msgty = p_msgty msgv1 = p_msgv1 msgv2 = p_msgv2 msgv3 = p_msgv3 msgv4 = p_msgv4 txtnr = p_txtnr EXCEPTIONS = 1 nicht_aktiv . " STORE_MESSAGES "Am Ende holen Sie alle Ihre Nachrichten und zeigen sie zusammen * Dies zeigt alle Nachrichten in einem Popup CALL FUNCTION 'MESSAGES_SHOW' EXPORTING show_linno = ' ' IMPORTING e_exit_command = wa_exit_command EXCEPTIONS inconsistent_range = 2 no_messages = 3 OTHERS = 1.

 

  1. HR_DISPLAY_ERROR_LIST verwenden
DATA: it_error TYPE STANDARD TABLE OF HFERROR, "TABLES PARAM wa_error LIKE LINE OF it_error . DATA(ld_no_popup) = 'etwas Text hier'. DATA(ld_no_print) = 'etwas Text hier'. DATA(ld_no_img) = 'etwas Text hier' . DATA(ld_no_msgno) = 'etwas Text hier' DATA(ld_linesize) = '123 ' DATA(ld_listheader) = 'Überprüfen Sie den erforderlichen Datentyp' DATA(ld_colheader) = 'Überprüfen Sie den erforderlichen Datentyp' DATA(ld_hidemsg ) = 'etwas Text hier'. "Felder der Struktur ausfüllen und an itab anhängen wa_error an it_error anhängen. . CALL FUNCTION 'HR_DISPLAY_ERROR_LIST' * EXPORTING * no_popup = ld_no_popup * no_print = ld_no_print * no_img = ld_no_img * no_msgno = ld_no_msgno * linesize = ld_linesize * listheader = ld_listheader * colheader = ld_colheader * hidemsg = ld_hidemsg * TABLES * error " HR_DISPLAY_ERROR_LIST IF SY-SUBRC EQ 1. "Alle OK ELSEIF SY-SUBRC EQ 0. "Ausnahme "Code für Ausnahme hier hinzufügen ENDIF.

 

Hinterlassen Sie eine Nachricht

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.