Class- und Interface-Pools 

Dieser Abschnitt geht etwas näher auf den Aufbau und die Besonderheiten von Class- und Interface-Pools für globale Klassen ein.

Globale Klassen und Interfaces

Klassen und Interfaces sind sogenannte Objekttypen. Die Definition von Klassen und Interfaces erfolgt entweder global im R/3-Repository oder lokal in einem ABAP-Programm. Bei der globalen Definition dienen spezielle ABAP-Programme namens Class-Pools oder Interface-Pools vom Typ K oder J als Container für Klassen und Interfaces. Jeder Class- bzw. Interface-Pool enthält die Definition genau einer Klasse bzw. eines Interfaces. Die Class- und Interface-Pools werden beim Anlegen von Klassen und Interfaces mit dem Werkzeug Class Builder der ABAP Workbench automatisch generiert.

Ein Class-Pool ist in etwa vergleichbar mit einem Modulpool oder einer Funktionsgruppe. Er enthält sowohl deklarative als auch ausführbare ABAP-Anweisungen, kann aber nicht eigenständig gestartet werden. Das Laufzeitsystem kann bei einer Anforderung durch die Anweisung CREATE OBJECT Laufzeitinstanzen (Objekte) der Klasse erzeugen, welche die Anweisungen des Class-Pools ausführen.

Ein Interface-Pool enthält keine ausführbaren Anweisungen, sondern dient als Ablage für die Definition eines Interfaces. Bei der Implementierung des Interfaces in eine Klasse, wird die Definition des Interfaces implizit in die Definition der Klasse eingebunden.

Aufbau eines Class-Pools

Der Aufbau eines Class-Pools ist wie folgt:

Ein Class-Pool enthält einen Definitionsteil für typdeklarative Anweisungen, den Deklarationsteil und den Implementationsteil der Klasse.

Unterschiede zu anderen ABAP-Programmen

Class-Pools unterscheiden sich in folgenden Punkten von anderen ABAP-Programmen:

Lokale Klassen in Class-Pools

Die im Definitionsteil eines Class-Pools definierten Klassen und Interfaces sind von außen nicht sichtbar. Sie spielen im Class-Pool eine ähnliche Rolle wie lokale Klassen und Interfaces in sonstigen ABAP-Programmen. Die lokalen Klassen können ausschließlich in den Methoden der globalen Klasse instanziert durch die. Da in Class-Pools keine Unterprogramme erlaubt sind, sind die lokalen Klassen die einzigen Modularisierungseinheiten, in die innerhalb des Class-Pools Funktionalität der globalen Klasse ausgelagert werden kann. Die lokalen Klassen spielen für die globale Klasse in etwa die gleiche Rolle wie Unterprogramme in Funktionsgruppen, mit dem großen Unterschied, daß sie von außen nicht sichtbar sind.