Show TOC Anfang des Inhaltsbereichs

Von Funktionsgruppen zu Objekten  Dokument im Navigationsbaum lokalisieren

Im Zentrum objektorientierten Denkens stehen Objekte, die Attribute (Daten) und Methoden (Funktionalität) enthalten. Objekte sollen es erlauben, die Modelle eines Problembereichs und eines zugehörigen Lösungsentwurfs möglichst eins zu eins widerzuspiegeln. Typische Objekte in einer Business-Umgebung sind z.B. 'Kunde', 'Auftrag', 'Rechnung'. Beispiele für solche Objekte finden seit Release 3.1 im BOR (Business Object Repository) des SAP Web AS ABAP. Das Objektmodell von ABAP Objects, also der Programmiersprache ABAP, ist kompatibel zum Objektmodell des BOR.

Vor Release 4.0 waren in ABAP die zu Funktionsgruppen zusammengefassten Funktionsbausteine die nächste Annäherung an Objekte. Nehmen wir eine Funktionsgruppe zur Bearbeitung von Aufträgen an. Die Attribute eines Auftrags entsprechen den globalen Daten der Funktionsgruppe und die einzelnen Funktionsbausteine führen bestimmte Operationen (Methoden) auf diesen Daten aus. Auf diese Weise sind die Interna des Auftrags in der Funkionsgruppe gekapselt und die Daten des Auftrags werden nie direkt, sondern immer nur durch die Funktionsbausteine bearbeitet. Die Funktionsbausteine können dadurch für die Konsistenz der Daten sorgen.

Die Ausführung eines ABAP-Programms öffnet einen internen Modus. Der Speicherbereich des internen Modus enthält das ABAP-Programm und seine Arbeitsdaten. Beim Aufruf eines Funktionsbausteins wird eine Instanz seiner Funktionsgruppe mit ihren Daten, in den Speicherbereich des internen Modus dazugeladen. Ein ABAP-Programm kann durch den Aufruf von Funktionsbausteinen aus verschiedenen Funktionsgruppen mehrere Instanzen laden.

Diese Grafik wird im zugehörigen Text erklärt

Die Instanz einer Funktionsgruppe im Speicherbereich des internen Modus stellt schon fast ein Objekt im Sinne der Objektorientierung dar. Vergleichen Sie dazu die Definitionen im Abschnitt Was ist Objektorientierung?. Beim Aufruf eines Funktionsbausteins, verwendet das aufrufende Programm die Instanz einer Funktionsgruppe, die im Function Builder definiert wurde. Das Programm hat keinen direkten Zugriff auf die Daten der Funktionsgruppe, sondern nur über die Funktionsbausteine. Die Funktionsbausteine und deren Parameter stellen die Schnittstelle der Funktionsgruppe zum Verwender dar.

Der wesentliche Unterschied zwischen echter Objektorientierung und Funktionsgruppen ist der, dass ein Programm zwar mit mehreren Instanzen verschiedener Funktionsgruppen auf einmal arbeiten kann, aber nicht mit mehreren Instanzen einer einzigen Funktionsgruppe. Ein Programm will beispielsweise mehrere unabhängige Zähler oder mehrere Aufträge zugleich behandeln. Für diesen Zweck müßte die Funktionsgruppe speziell programmiert werden, um eine Instanzverwaltung bereitzustellen, wobei die verschiedenen Instanzen z.B. durch Nummern unterschieden werden.

In der Praxis ist dies sehr umständlich, was dazu führt, dass im allgemeinen die Daten beim Verwender, also dem aufrufenden Programm liegen, und die Funktionsbausteine auf diesen Daten arbeiten (strukturierte Programmierung). Ein Problem dabei ist zum Beispiel, dass alle Verwender von Funktionsbausteinen die gleichen Datenstrukturen verwenden müssen, wie die Funktionsgruppe selbst. Wenn man die interne Datenstruktur einer Funktionsgruppe ändern will, sind sehr viele Verwender betroffen, und es ist häufig schwierig die Implikationen von Änderungen vorherzusagen. Hier hilft nur eine strenge Betonung von Schnittstellen und eine Technik, die es erlaubt, die internen Strukturen von Instanzen garantiert vor dem Verwender zu verbergen, so dass man sie später ohne Probleme ändern kann.

Diese Technik liefert die Objektorientierung. ABAP Objects bietet die Möglichkeit, Daten und Funktionalität statt in Funktionsgruppen in Klassen zu definieren. Ein ABAP-Programm kann dadurch mit beliebig vielen Instanzen (Objekten) der gleichen Vorlage arbeiten.

Diese Grafik wird im zugehörigen Text erklärt

Statt eine einzige Instanz einer Funktionsgruppe implizit durch den Aufruf eines Funktionsbausteins in den Speicher zu laden, erzeugt ein ABAP-Programm die Instanzen von Klassen explizit durch die neue ABAP-Anweisung CREATE OBJECT. Die einzelnen Instanzen stellen eindeutig identifizierbare Objekte dar und werden durch Objektreferenzen adressiert. Über die Objektreferenzen kann das ABAP-Programm auf die Schnittstellen der Instanzen zugreifen.

Mehr zu Klassen, Objekten, Schnittstellen und Objektreferenzen in ABAP Objects finden Sie in den folgenden Abschnitten.

 

 

Ende des Inhaltsbereichs