Exception Handling in Klassen: Fehlermeldungen leicht gemacht
Eine saubere Fehlerbehandlung ist die Grundlage für eine schnelle und effektive Analyse von auftretenden Fehlern im ABAP Coding. Aktuell gibt es zwei Möglichkeiten behandelbare Ausnahmen zu definieren: Klassische und klassenbasierte Ausnahmen. Beide Methoden können noch verwendet werden. Laut Empfehlung der SAP sollen in neuen Entwicklungen, sofern möglich, nur noch klassenbasierte Ausnahmen verwendet werden. Wie diese einsetzt werden können, zeigen wir an einem kleinen Beispiel.
Beispiel:
Wir wollen Daten zu einer Mitarbeiterin lesen und stellen fest, dass die übergebene Personalnummer der Mitarbeiterin nicht im System vorhanden ist. Aus diesem Grund wollen wir eine Fehlermeldung ausgeben.
1. Eine Nachrichtenklasse anlegen
Grundlage für unsere Fehlermeldungen sind weiterhin die Nachrichtenklassen, welche alle Fehlermeldungen enthalten. Über Transaktion SE91 legen wir eine neue Nachrichtenklasse an:
Dort definieren wir unsere Fehlermeldung „Personalnummer &1 wurde nicht gefunden“. &1 ist eine Variable, die wir später mit der fehlerhaften Personalnummer füllen.
2. Eine Ausnahmenklasse anlegen
Da wir klassenbasierte Ausnahmen verwenden wollen, brauchen wir als nächstes eine Ausnahmeklasse. Diese legen wir über die Transaktion SE80 an:
Wichtig ist hierbei, dass der Punkt Ausnahmeklasse ausgewählt wird. Nachdem die Klasse angelegt wurde, können im Reiter „Texte“ die einzelnen Ausnahmen definiert werden. In unserem Beispiel legen wir eine Ausnahme NO_PERNR_FOUND an.
Jetzt fehlt noch die Verknüpfung der Ausnahme mit dem Text der Nachrichtenklasse. Hierfür markieren wir unsere Nachricht und pflegen die Verknüpfung über den Button „Nachrichtentext“.
Wir geben unsere Nachrichtenklasse ZL3_DEMO_MSGS und die auszugebende Nachrichtennummer an. Wenn in der Nachricht Parameter definiert worden sind, können diese an dieser Stelle mit übergeben werden. In unserem Fall verknüpfen wir das Attribut 1 mit dem Klassenattribut PERNR.
Das Klassenattribut PERNR wurde in der Klasse definiert :
Jetzt steht die Grundstruktur und die Ausnahmenklasse kann in anderen Klassen verwendet werden.
Fehlermeldungen werfen
Fertig! Jetzt können wir die neue Nachrichtenklasse einsetzen. Hierfür wechseln wir in die Beispielklasse ZCL_L3_BEISPIELKLASSE und legen dort eine Methode EXCEPTION_TEXT an.
Diesen ordnen wir über den Button „Ausnahmen“ unserer Ausnahmenklasse zu.
Anschließend können wir die Ausnahmeklasse in der Methode verwenden und eine Exception werfen. Der Aufruf der Ausnahme erfolgt dann so:
Wenn wir jetzt die Methode EXCEPTION_TEST ausführen, bekommen wir folgendes Ergebnis:
Fazit
Klassenbasierte Ausnahmen sind kein Hexenwerk. Mit den o.g. 3 Schritten lassen sie sich einfach in neue Entwicklungen integrieren. Wenn klassenbasierte Ausnahmen verwendet werden, folgt man nicht nur der SAP Empfehlung, sondern profitiert auch von den Vorteilen der klassenbasierten Implementierung – wie des vereinfachten Ausnahmehandlings. Tritt ein Fehler auf, kann dieser direkt oder einfach irgendwo entlang der Aufrufhierarchie behandelt werden, ohne dass das Übergeben der Ausnahme an die nächsthöhere Aufrufebene ausprogrammiert werden muss.
Gibt es evtl. ein Thema, was Sie „brennend“ interessiert und worüber wir unbedingt schreiben sollten?
Dann schicken Sie uns Ihre Idee gerne per Mail über das folgende Kontaktformular! Vielen Dank im Voraus.