Anfang des Inhaltsbereichs

Hintergrunddokumentation Erweiterungskonzept  Dokument im Navigationsbaum lokalisieren

Definition

Das Enhancement Framework bietet eine Technologie, mit der Quelltext-Einheiten erweitert werden können, ohne sie zu modifizieren. Der grundlegende Mechanismus besteht darin, so genannte Erweiterungsoptionen in Entwicklungsobjekten anzubieten. Diese Erweiterungsoptionen funktionieren wie "Haken", an die Sie Ihre  Erweiterungen hängen können. Die Erweiterungsoptionen sind Teil der erweiterbaren Entwicklungsobjekte. Wenn Sie einer Erweiterungsoption eine Erweiterung zuordnen, wird die Erweiterung zur Laufzeit dann verarbeitet, wenn der Steuerungsablauf die Option erreicht. Die Erweiterung verhält sich zur Laufzeit so, als gehöre sie zu dem erweiterten Entwicklungsobjekt. Die Erweiterung als Transportobjekt gehört nicht zu dem erweiterten Objekt.

Hauptvorteile von Erweiterungen gegenüber Modifikationen

Erweiterungen bringen im Vergleich zu Modifikationen einen erheblich geringeren Aufwand beim Upgrade mit sich. Erweiterungen sind eigenständige Transportobjekte, die in eigenen Paketen gespeichert werden können. Im Gegensatz dazu sind Modifikationen Teil des Objekts, das sie modifizieren. Da bei einem Upgrade alle SAP-Objekte durch die neue Version ersetzt werden, sind alle Modifikationen nach dem Upgrade verloren. Dies führt dazu, dass der Kunde alle Modifikationen anpassen muss, egal ob das zugrunde liegende Objekt geändert wurde oder nicht.

Im Gegensatz dazu werden Kundenerweiterungen als Transportobjekte bei einem Upgrade niemals überschrieben, da sie in Kundenpaketen im Kundennamensraum abgelegt sind. Es kann vorkommen, dass die neue Version eines Entwicklungsobjekts nicht mehr mit einer Erweiterung kompatibel ist, wenn z.B ein erweitertes Objekt gelöscht wird oder ein in der Erweiterung verwendeter Datentyp nicht mehr existiert. In diesen Fällen liefern die entsprechenden Werkzeuge des Enhancement Framework Informationen darüber, welche Erweiterungen angepasst werden müssen, und unterstützen den Anwender bei diesem Prozess.

Zwar muss der Kunde nach einem Upgrade auch die Erweiterungen anpassen, die nicht mehr mit der neuen Version des erweiterten Objekts kompatibel sind, aber er muss nicht jede einzelne Modifikation im System anfassen. Somit sind Erweiterungen bei einem Upgrade weitaus robuster.

Grundlegende Konzepte

Die grundlegenden Konzepte des Enhancement Framework sind:

      Erweiterungsoptionen: Stellen in Repository-Objekten, an denen Erweiterungen vorgenommen werden können. Erweiterungsoptionen können explizit und implizit sein.

      Erweiterungsspots: Container für explizite Erweiterungsoptionen.

      Erweiterungsimplementierungs-Elemente: Sie enthalten die eigentliche Erweiterung, z.B. den hinzuzufügenden Quelltext.

      Erweiterungsimplementierungen: Container für Erweiterungsimplementierungs-Elemente sowohl von impliziten als auch expliziten Erweiterungsoptionen.

Die Erweiterungsoptionen sind in zwei Klassen unterteilt:

      Implizite Erweiterungsoptionen werden vom Framework bereitgestellt und existieren ohne die besondere Vorbereitung seitens eines Entwicklers; sie müssen nicht zu einem Container (Erweiterungsspot) gehören.

      Explizite Erweiterungsoptionen müssen ausdrücklich in den Quelltext eingefügt werden. Sie werden in einem Ausgangssystem angelegt und müssen den Entwicklern in den Zielsystemen über Erweiterungsspots bekannt gemacht werden.

Die folgende Abbildung zeigt eine Übersicht über Erweiterungspots und Erweiterungsimplementierungen. Der linke Teil der Abbildung zeigt die für Erweiterungsspots wichtigen Begriffe und ihre Beziehungen untereinander. Er gilt nur für explizite Erweiterungsoptionen. Für implizite Erweiterungsoptionen werden keine Erweiterungsspots benötigt.

Der rechte Teil der Abbildung zeigt die für Erweiterungsimplementierungen wichtigen Begriffe und ihre Beziehungen untereinander. Er gilt für die Erweiterungsimplementierungen expliziter sowie impliziter Erweiterungsoptionen.

Auf der Implementierungsseite gehören alle Implementierungselemente zu anderen Containern, unabhängig davon ob sie implizite oder explizite Erweiterungsoptionen erweitern. Sowohl die Container auf der Definitionsseite als auch auf der Implementierungsseite sind einander mit einer bestimmten Kardinalität zugeordnet.

Diese Grafik wird im zugehörigen Text erklärt

Erweiterungen gruppieren

Alle expliziten Erweiterungsoptionen und alle Erweiterungsimplementierungs-Elemente müssen Teil von Containern sein. Dies wird von den Werkzeugen des Framework erzwungen. Erweiterungsoptionen und ihre Implementierungen dürfen nicht in einer Gruppe zusammengefasst werden, da sie in verschiedene Entwicklungsstadien gehören.

Im Enhancement Framework gibt es Container für die Erweiterungsoptionen auf der Definitionsseite sowie Container für die Implementierungen auf der Implementierungsseite.

      Einfache Container

Sie können nur Erweiterungsoptionen oder Erweiterungsimplementierungselemente enthalten. Eine Schachtelung ist nicht möglich. Ein einfacher Container kannn nur Elemente einer Art enthalten. Beispielsweise kann ein einfacher Container nicht gleichzeitig BAdIs und Erweiterungsoptionen enthalten.

      Zusammengesetzte Container

Um eine Schachtelung zu ermöglichen, gibt es zusammengesetzte Container, die einfache sowie weitere zusammengesetzte Container enthalten können. Zusammengesetzte Container können einfache Container für verschiedene Erweiterungstypen enthalten. Da eine Schachtelung möglich ist, können Sie eine Struktur erstellen, die den Ansprüchen Ihres Projekts gerecht wird. Eine einfache Struktur sieht folgendermaßen aus:

Diese Grafik wird im zugehörigen Text erklärt

Wenn Sie eine Erweiterung ganz neu anlegen, müssen Sie zuerst die entsprechenden Container anlegen. Der Vorgang entspricht dem Anlegen einer Methode. Eine Methode ist immer Teil einer Klasse. Ebensowenig gibt es Standalone-BAdIs. Jedes BAdI ist Teil eines Erweiterungsspots und dieser Spot fungiert als Transportobjekt. Daher können Sie nicht einfach ein neues BAdI anlegen und dabei das Framework außer Acht lassen, wie dies bei einem klassischen BAdI möglich war. Bevor Sie ein BAdI bauen, müssen Sie sich überlegen, wie es in die Containerstruktur passt. Es muss von Anfang an in der entsprechenden Struktur gebaut werden. Dies gilt jedoch nur für einfache Container. Zusammengesetzte Erweiterungsspots und zusammengesetzte Erweiterungsimplementierungen werden nicht von den Werkzeugen erzwungen.

Hinweis

Beachten Sie, dass nach dem Anlegen eines Erweiterungsspots und einer einfachen Erweiterungsimplementierung nur die Container vorhanden sind. Sie müssen noch eine Erweiterungsoption oder die entsprechende Implementierung anlegen.

Geschachtelte Erweiterungen

Erweiterungen können geschachtelt werden. Eine Erweiterungsimplementierung kann auch (implizite oder explizite) Erweiterungsoptionen bereitstellen. Somit kann ein Erweiterungsspot mehrere Erweiterungsoptionen eines Erweiterungsimplementierungs-Objekts verwalten.

Da ein Erweiterungsspot Erweiterungsoptionen eines einzelnen Repository-Objekts kombiniert, ist es nicht möglich, Erweiterungsoptionen eines Hauptobjekts (z.B. eines ABAP-Programms) und eine Erweiterungsimplementierung in einem einzelnen Erweiterungsspot-Objekt zu kombinieren. Analog kann eine Erweiterungsimplementierung nur Implementierungselemente für Optionen enhalten, die von einem Repository-Objekt, z.B. einem Hauptobjekt oder einem Erweiterungsimplementierungs-Objekt, bereitgestellt werden. Weitere Informationen über geschachtelte Erweiterungen finden Sie unter ABAP-Quelltexterweiterungen.

 

 

Ende des Inhaltsbereichs