Try-Endtry-Catch

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Mit dem Befehl Try - Entry lassen sich sehr komfortabel Ausnahmen abfangen, die durch SAP während der Laufzeit ausgelöst werden.

Globale Ausnahmeklassen werden in der Transaktion SE24 (Class Builder) definiert und verwaltet. Alle Ausnahmeklassen sind Erben der gemeinsamen Oberklasse CX_ROOT oder einer ihrer Unterklassen.

Ausnahmeklasse CX_ROOT

Alle Ausnahmeklassen vererben ihre Ausnahmen von der obersten Ausnahmeklasse CX_ROOT. Von dieser Klasse können die Ausnahmen also immer ausgegeben werden, sofern eine Ausnahme ausgelöst wurde.

Beispielcoding

Hier beim nachfolgenden Beispiel bei einer Division durch Null kann es passieren, dass ein Laufzeitfehler entsteht. Damit das Programm nicht mit einem Laufzeitfehler abbricht, wird eine Try-Endtry-Routine eingesetzt.

  DATA: oerror TYPE REF TO cx_root,  "Abstrakte Oberklasse aller globalen Exceptions (s. Anzeige Klasse CX_ROOT in SE80)
        lv_txterror TYPE string,
        lv_txterror_long type string.

  DATA: lv_zahl TYPE i. 

  TRY.
      lv_zahl = 4 / 0.

    CATCH cx_sy_zerodivide INTO oerror.
      lv_txterror = oerror->get_text( ).
      lv_txterror_long = oerror->get_longtext( ). "Langtext ist oft über 50 Zeichen

      MESSAGE i531(0u) WITH lv_txterror.

      message lv_txterror_long type 'I'.          "Auch Texte über 50 Zeichen werden ausgegeben

  ENDTRY.

Web-Links