
ABAP OO - Nutzung von Konstanten
Konstanten sind in der ABAP Entwicklung ein wichtiger Bestandteil zur Wiederverwendung, aber auch zur Vorgabe für Schnittstellen. Lass uns einmal ins Thema eintauchen.
Inhaltsverzeichnis
In diesem Artikel schauen wir uns die Definition von Konstanten an, sowie die Nutzung der Konstanten bei der Entwicklung und wie du einfach an die entsprechenden Werte kommst.
Einleitung
Konstante Werte sind in der Entwicklung zentraler Bestandteil, wenn es um die Nutzung von Schnittstellen geht. Darüber kannst du zum Beispiel verschiedene Optionen von Inhalten abbilden und dem nutzenden Entwickler die Möglichkeiten vorgeben. Damit muss dieser nicht Raten, welche Werte an welchen Parameter übergeben werden müssen, was die Fehlerwahrscheinlichkeit reduziert. Sollten sich zum Beispiel einmal Inhalte, also der eigentliche Wert, der Konstante ändern, kannst du das auf technischer Ebene machen, ohne die Entwicklung deiner Kollegen inkonsistent zu machen.
Definition
In diesem Kapitel schauen wir uns die Definition von Konstanten an.
Einzelwerte
Grundsätzlich können wir jede Konstante einzeln definieren, das macht bei einzelnen Werten auch durchaus Sinn, da es keinen Zusammenhang zwischen verschiedenen Werten gibt. Häufig finden wir aber auch im Standard die Variante, dass Gruppe gebildet werden, die den selben Anfang haben. In diesem Beispiel definieren wir drei Konstanten, die verschiedene Optionen eines Status abbilden.
CONSTANTS option_created TYPE basic_option VALUE 'C'.
CONSTANTS option_planned TYPE basic_option VALUE 'P'.
CONSTANTS option_finished TYPE basic_option VALUE 'F'.
Gruppen
Eine Alternative für Gruppen ist die Definition einer Struktur. Mit BEGIN OF und END OF, können wir eine Gruppe von Konstanten erstellen und diese unter einem Zugriff bündeln. Das macht die Definition, die Zuordnung und Verwendung etwas einfacher. Ein anderer Entwickler findet so die zusammenhängenden Werte viel einfacher. Dazu definieren wir die einzelnen Werte von oben noch einmal in einer Struktur.
CONSTANTS:
BEGIN OF options,
created TYPE basic_option VALUE 'C',
planned TYPE basic_option VALUE 'P',
finished TYPE basic_option VALUE 'F',
END OF options.
ENUM
Eine sehr spezielle Form der Konstanten und Strukturen ist die Enumeration, die Aufzählung. Sie erlaubt dir eine Definition von konstanten Werten mit einer genauen Prüfung der Inhalte. Bereits der Compiler kann dann sagen, ob ein Wert für eine Schnittstelle zulässig ist oder nicht. In diesem Artikel werden wir das Thema nun benennen, möchtest du mehr Informationen dazu haben, dann kannst du bei diesem Artikel zum Thema vorbeischauen.
Mit den Simple Types aus dem Bereich Core Data Services und den Table Entities werden Enumeration in Zukunft öfter zum Einsatz kommen, da sie von der Datenbank bis zum UI funktionieren werden und es keinen Bruch in der Logik gibt, wie es aktuell der Fall mit ENUMs ist.
Verwendung
In diesem Kapitel geht es um die Verwendung der Konstanten während der Entwicklung. Dabei werden wir auf zwei verschiedene Möglichkeiten der Verwendung eingehen.
Interface
Die erste und meistgenutzte Variante ist es, über das entsprechende Interface zu gehen, wo auch die Konstanten und Gruppen definiert sind. Dabei rufen wir das Interface auf, rufen die Gruppe auf und dann das entsprechende Feld bzw. die Konstante der Struktur.
IF demo->evaluate_option( zif_bs_demo_oo_constants=>options-created ).
ENDIF.
Die Gruppe von Konstanten gibt uns hier einen schnellen Überblick über die verschiedenen Werte die für die OPTION möglich sind. Bei den Einzelwerten müssen wir aufpassen, dass wir sie in Pseudo-Gruppen zusammenfassen und dann auch wiederfinden, bei viele Konstanten könnte damit die Übersicht leiden, wie im folgenden Beispiel.
Hinweis: Mehr Informationen dazu findest du in den Clean ABAP Guidelines.
Objekt
Eine zweite Option, die wir bisher nicht so oft gefunden haben, ist die Nutzung des eigentlichen Objektes mit dem du gerade am Arbeiten bist. In diesem Fall finden wir unsere Optionen direkt hinter DEMO und können darauf zugreifen. Dabei müssen wir das Interface nicht kennen oder angeben, was die Schreibweise etwas kürzer macht.
IF demo->evaluate_option( demo->options-planned ).
ENDIF.
Da die Konstanten im Interface definiert sind, stehen sie im Objekt ebenso zur Verfügung. Durch diese Kopplung können wir sie direkt mitverwenden.
Prüfung
Im Gegensatz zu ENUMs musst du allerdings bei Konstanten selbst die Validierung auf die zulässigen Werte machen. Entweder werden die Werte im Prozess von dir gesetzt oder du solltest die übergebenen Werte an die Methode validieren. Ansonsten kann es im Folgeprozess zu Fehlern wegen unbekannter Werte kommen. Damit könnte im schlimmsten Fall die Verarbeitung hängen bleiben und eine Nachverarbeitung nicht mehr möglich sein.
Vollständiges Beispiel
Die beiden Ressourcen haben wir im entsprechenden GitHub Repository abgelegt, dort findest du im Paket ZBS_DEMO_OO_INTERFACE die beiden Objekte des Artikles. Über den Commit kannst du die Änderungen aus diesem Artikel anschauen.
Fazit
Konstanten sind ein wichtiger Bestandteil in der Arbeit mit Interfaces und Methodenschnittstellen. Bereits bei der Definition legst du die Grundlage für eine einfache und schnelle Nutzung für dich und andere Entwickler.