Switch für Ausnahmen eines Funktionsbausteins [ABAP740]

Seit Release ABAP740 gibt es die Anweisung SWITCH. Sehr anschaulich beschrieben im Blog von Horst Keller: ABAP News for Release 7.40 – Constructor Operators COND and SWITCH

Was mich bei Funktionsbausteinen schon immer gestört hat ist, dass man bei der sinnvollen Protokollierung von Returncodes von Funktionsbausteinen umständliche CASE-Konstrukte benötigt. Natürlich nur, wenn der Funktionsbaustein bei einem Fehler lediglich RAISE EXCEPTION verwendet aber nicht MESSAGE RAISING. Und Ersteres ist leider sehr häufig der Fall.

Mit dem neuen Feature SWITCH jedenfalls lässt sich ein Konstrukt bauen, das immer noch nicht schön ist, jedoch einigermaßen gut verwendbar. Hier am Beispiel von Funktionsbaustein CO_RU_CONFIRMATION, der schön viele Ausnahmen hat:

Zusammen mit dem Blockmarkiermodus (ALT-Taste während der Markierung des Quelltextes gedrückt halten) lässt sich auf diese Weise einfach eine saubere Protokollierung programmieren. Leider trotzdem sehr schade, dass man nicht mit Hilfe eines ABAP-Befehls den Text bzw. die Ausnahme erhalten kann.

PS: Der Zusatz MESSAGE zur Anweisung RAISE EXCEPTION ist erst ab Release ABAP750 vorhanden… Siehe Beitrag Ausnahmen mit T100-Nachricht

COMMENTS

  • abapkadabra

    Ich überlege gerade, ob man nicht eine Methode bauen könnte, die anhand des Fuba-Namens aus der Tabelle FUPARAREF den Wert aus Spalte PARAMETER mit PARAMTYPE = X und PPOSITION = sy-subrc ermittelt und daraus dann eine Message generiert… Aber das würde nur funktionieren, wenn der Fuba am besten über Muster ins Coding einkopiert und nicht an den Wertzuweisungen zu den Exceptions herumgespielt wurde.

    • Das ist genau das entscheidende Problem… 🙁
      Zudem kann ein Funktionsbaustein auch noch nachträglich geändert werden und es kann eine Ausnahme hinzukommen oder wegfallen. Dann würden auch über Muster eingefügte Aufrufe nicht mehr passen. Eine falsche Fehlermeldung ist meistens schlimmer, als gar keine.

Comments are closed.