ABAP OO - Konstanteninterface
Die Verwendung von Konstanten in der objektorientierten Programmierung gehört zum Standard für die meisten Klassen. Heute zeigen wir dir ein einfaches Beispiel für übergreifende Objekte.
Inhaltsverzeichnis
In diesem Artikel zeigen wir dir eine weitere und schöne Verwendung von Konstanten über globale, leichte Interfaces die du immer wieder verwenden kannst. Wie baust du solche Bibliotheken auf und verwaltest sie mit wenig Aufwand? Das wollen wir dir in diesem Artikel zeigen.
Konstanten
Wieso verwenden wir Konstanten und für was werden sie benötigt? Die Frage kann man recht schnell beantworten, denn wir verwenden Konstanten an diesen Stelle, wo wir immer wieder die gleichen (konstanten) Werte in Literalen verwenden. Hier kann man als Beispiel einen True oder False Wert nennen, dafür gibt es auch bereits im System Konstanten wie ABAP_TRUE und ABAP_FALSE.
An vielen Stellen im System findest du auch Domänen denen fixe Werte hinterlegt sind. Solche Werte kannst du dann in deiner Klasse oder deinem Report ansprechen und verwenden. Als Beispiel mal solch eine Domäne:
Verwaltung
Wo werden solche Konstanten überlichweise verwaltet? Meist in den Klassen oder Reports, wo sie auch verwendet werden. Somit liegen sie in vielen Fällen nicht an einer zentralen Stelle, sondern separat im aktuellen Objekte. Dies hat zur Folge, dass bei einer Änderung der Werte oder neuen Werten nicht alle aufrufenden Stellen angepasst oder auch gefunden werden.
Eine Abhilfe schafft daher ein globales Objekt, welches die Konstanten aufnimmt und verwaltet. Hier kann eine Klasse oder ein Interface in Frage kommen. Wir empfehlen ein leichtgewichtigeres Interface, da nur Definitionen für die Konstanten benötigt werden. Du solltest außerdem vermeiden alle Konstanten in ein Objekt integrieren zu wollen, dies hat den Nachteil das Änderungen an zentralen Objekten schwer zu verwalten und zu transportieren sind. Außerdem wird bei jeder Verwendung ein Overhead an Konstanten geladen, die du wahrscheinlich zur Laufzeit nicht benötigst.
Interface
Schauen wir uns dazu einmal die Domäne von oben an und definieren dazu ein Konstanteninterface als Beispiel:
INTERFACE zif_bs_c_demo_status PUBLIC.
CONSTANTS:
"! Status - Inititalized
c_initialized TYPE zbs_demo_status VALUE '',
"! Status - Finished
c_finished TYPE zbs_demo_status VALUE 'X',
"! Status - New
c_new TYPE zbs_demo_status VALUE '1',
"! Status - In Progress
c_progress TYPE zbs_demo_status VALUE '2',
"! Status - In Test
c_test TYPE zbs_demo_status VALUE '3'.
ENDINTERFACE.
In dem Interface befinden sich nur Konstanten für die Domäne ZBS_DEMO_STATUS, damit müssen die Namen nicht mehr sonderlich kryptisch ausfallen, sondern können den Inhalt beschreiben. Für jede Konstante kannst du einen entsprechende ABAP Doc hinterlegen, um die Konstante oder deren Verwendung genauer zu erklären. Das Konstanteninterface besitzt eine Namenskonvention, mit der du alle deine Interfaces über die Suche finden kannst. Mit _C_ markieren wir ein Interface mit Konstanten und am Ende des Namens wir die Domäne aufgeführt, aus denen die Werte stammen.
Wir würden daher in Kurzform folgende Eckpunkte für ein Konstanteninterface aufführen:
- Einheitliche Konvention für Konstanteninterfaces
- Maximal für ein Element Konstanten
- Beschreibung mit ABAP Doc
Vorteile
Was kannst du für Vorteile mitnehmen, wenn du nach dieser oder einer ähnlichen Weise arbeitest? Hier einmal eine kurze Auflistung der positiven Aspekte der Methode:
- Konstanten nur einmal im System gepflegt
- Zentrale Verwaltung und Nutzung der Werte
- Verwendungsnachweis über Werte
- Leichter Austausch und Refactoring
Vor allem der Verwendungsnachweis kann dir dabei helfen, das System im Griff zu halten. Wenn du mal eine Anfrage bekommst, wo ein bestimmtes Konto oder ein bestimmter Buchungskreis verwendet wird, dann kannst du dies mit einem kurzen Verwendungsnachweis aufzeigen, ohne der Codescanner starten zu müssen.
Wir haben einmal für das gesamte Interface einen Verwendungsnachweis gestartet und erhalten alle Aufrufstellen aller Konstanten und des Interface selbst. Damit wird die Recherche ein klein wenig einfacher.
Fazit
Konstanten zentral und einfach zu verwalten ist keine große Herausforderung, erfordert nur etwas Disziplin und die nötigen Regeln. Wenn die Voraussetzugen erfüllt sind, dann macht das Arbeiten mit Konstanten noch einmal mehr Spaß, denn man findet Dinge viel einfacher im System und weiß bei der nächsten Anfrage, wo überall die Objekte eingesetzt werden.