ABAP für uns Java-Entwickler – Teil II
ABAP scheint auf den ersten Blick meilenweit entfernt zu sein von Java. Den Einstieg für Java-Entwickler erleichtert es, sich die Gemeinsamkeiten vor Augen zu führen - zum Beispiel anhand der Definition eines Objektes.
Zunächst einmal: Auch ABAP ist objektorientiert. Die alte Java-Maxime “Everything is an object” gilt zwar nicht (“Some ABAP-things are an object” müsste es wohl heißen. Oder “Most new ABAP things are an object”). Trotzdem: ABAP Objects hat seit dem Release 4.6 Einzug gehalten und ist seit Langem etabliert. Allerding muss man sich darauf einstellen, dass in der Praxis die klassische prozedurale Variante durchaus noch eine Rolle spielt.
ABAP Klassen
ABAP kennt also Klassen analog zu Java. Die Syntax ist anders und etwas gewöhnungsbedürftig. Man muss sich aber nur die Analogien vor Augen führen, dann wird das Wichtigste schnell klar. Als Beispiel hier eine Java Klasse mit Konstruktor, Attributen, Methoden, Sichtbarkeit und ein paar Statements, wie man sie kennt:
(Zum Sinn und Zweck dieser Klasse siehe hier: 99 Bottles of beer)
Im Vergleich dazu eine ähnliche Klasse in ABAP. Zunächst fällt auf, dass Deklaration und Implementierung getrennt sind.
Die Deklaration umfasst eine öffentliche und eine private Liste von Methoden. Die wiederum beinhalten die Methodendefinition mit Eingabe- und Rückgabeparametern. Es fällt auf, dass viel häufiger mit sprechenden Schlüsselworten gearbeitet wird, als mit einfachen Trennzeichen. Die Implementierung:
Java | ABAP | |
Abschluss eines Statements | ; | . |
Blöcke | { } | Schlüsselwörter |
Referenz auf sich selbst | this | me |
Instanzieren | Object obj = new Object(); | DATA: lo_obj TYPE REF TO Object.CREATE OBJECT: lo_obj. |
Klassenmethoden rufen | object.method() | object->method() |
Wenn auch nicht zwingend erforderlich, ist es doch eine weit verbreitete Konvention die Datendeklaration gesammelt an den Anfang von Programmen und Methoden zu stellen. In Java wird dies zwar auch teilweise als guter Stil empfohlen, ist aber bei weitem nicht so üblich wie in ABAP. Diese TYPES- und DATA-Blöcke können durchaus etwas länger werden. Damit man nicht den Überblick verliert haben sich auch Konventionen in der Benennung der Variablen eingebürgert. Diese sind zwar nicht immer ganz einheitlich gehandhabt, werden aber oft nach folgendem Schema konstruiert:
{Prefix1}{Prefix2}_{name}
Das erste Prefix zeigt den Verwendungszweck an, das zweite den Typ:
Prefix1 | Prefix2 | |||
L | lokal | V | einfache Variable | |
I | Import | S | Struktur | |
E | Export | T | Tabelle | |
G | Global | R | Referenz | |
T | Tabellentyp | O | Referenz auf ein Objekt |
In unserem Beispiel wird daraus dann lv_text als lokale Variable und ev_text als einfacher Exportparameter. Die inflationäre Verwendung von Schlüsselworten ist auffällig. Nicht nur FOR, ELSE und NEXT sind in ABAP reserviert, sondern auch RADIOBUTTON, NO-DISPLAY, DISTANCE und DEPARTMENT. Über 700 reservierten Worte in ABAP stehen nur etwa 50 in Java gegenüber. In der Regel hilft da nur die Onlinehilfe, die aber zum Glück sehr umfangreich ist: Ein Druck auf F1 liefert zum Schlüsselwort DISTANCE die Erklärung:
Also die Sprache selbst dürfte keinen Java-Entwickler vom ABAP-Kodieren abhalten. Man darf sich nur nicht verwirren lassen!
Beim nächsten mal werfen wir mal einen Blick auf die Vorzüge der ABAP Entwicklungsumgebung!