Anfang des Inhaltsbereichs

Hintergrunddokumentation Erweiterungstechnologien  Dokument im Navigationsbaum lokalisieren

Arten von Erweiterungstechnologien

Es gibt unterschiedliche Technologien für Erweiterungsoptionen:

      Quelltext-Erweiterungen – Erweiterungsoptionen sind Positionen im Quelltext, an denen Sie Quelltext-Plugins anhängen können, welche den Quelltext an diesen Stellen erweitern. Ein Quelltext-Plugin an einer Erweiterungsoption wird zusätzlich zum Originalcode verarbeitet. Der Quelltext einer Enhancement Section hingegen wird durch das entsprechende Quelltext-Plugin ersetzt.

Hinweis

Programmgebundene Erweiterungsimplementierungen in einem mehrfach verwendbaren Include können nur angezeigt werden, wenn die dazugehörigen Hauptprogramme generiert werden. Die Programme, Funktionsgruppen, Klassen usw. können in den jeweiligen Editoren generiert werden. Alternativ können Sie Transaktion SGEN zur Ausführung einer Massengenerierung in einem System benutzen.

      Funktionsgruppenerweiterungen – Über Funktionsgruppenerweiterungen können Sie das Interface eines Funktionsbausteins um zusätzliche Parameter erweitern.

      Klassenerweiterungens – Über Klassenerweiterungen können Sie bereits vorhandenen Methoden zusätzliche Methoden, optionale Parameter, Pre- und Post-Methoden hinzufügen.

      BAdIs – objektorientierte Erweiterungsoptionen. Das BAdI definiert ein Interface, dass von Klassen implementiert werden kann, die selber Transportobjekte sind. Das neue BAdI ist vollständig in das Enhancement Framework integriert. Innerhalb des Enhancement Frameworks ist ein BAdI eine Erweiterungsoption oder ein Ankerpunkt für ein Objekt-Plugin.

      Web-Dynpro-Erweiterungen

      Erweiterungen im Switch Framework:

Implizite und explizite Erweiterungen

Es gibt einen wichtigen Unterschied zwischen den Erweiterungstechnologien: die Unterteilung in implizite und explizite Erweiterungen.

Implizite Erweiterungsoptionen werden vom Framework bereitgestellt ohne zusätzlichen Aufwand seitens der Entwickler. Das bedeutet, die Erweiterungsdefinition ist frei, jedoch muss die Implementierung eingefügt werden.

Implizite Erweiterungen umfassen Klassenerweiterungen, Funktionsgruppenerweiterungen und vordefinierte Erweiterungsoptionen an bestimmten, vordefinierten Positionen (beispielsweise am Ende eines Reports, eines Funktionsbausteins, eines Includes oder einer Struktur, oder am Anfang und am Ende einer Methode).

Wenn Sie weitere oder andere Erweiterungsoptionen als die vom Framework bereitgestellten benötigen, können Sie explizite Erweiterungsoptionen benutzen. Diese müssen explizit von den Entwicklern eingefügt werden.

Es gibt zwei Arten von expliziten Erweiterungsoptionen: BAdIs und explizite Erweiterungsoptionen oder Enhancement Sections, in die Sie Quelltext-Plugins einfügen können.

Erweiterungen gruppieren

Das Enhancement Framework definiert eine nützliche, komplexe Containerstruktur für die verschiedenen Erweiterungsoptionen und Erweiterungsimplementierungselementen.

Erweiterungen kommen selten alleine vor, insbesondere wenn Sie Ihre Programme nach bewährten Modularisierungsprinzipien schreiben. Eine zusätzliche Variable sollte beispielsweise als Erweiterung eingeführt warden. Sie arbeiten mit dieser Variablen, transportieren sie zu den verschiedenen Prozeduren, die diese neue Variable für ihre Aufgaben benötigen, und lassen ihren Wert am besten in der Benutzungsoberfläche anzeigen. Sie müssen dann die Schnittstelle für alle betroffenen Prozeduren erweitern, die Vorgehensweisen über die neue Variable aufrufen sowie die entsprechende Benutzungsoberfläche erweitern. Das bedeutet, dass Sie eine große Anzahl an Erweiterungen haben, sobald Sie mit dieser Technologie arbeiten. Um den Überblick zu behalten, ist es sinnvoll, alle Erweiterungsoptionen eines Projekts zusammenzustellen.

Erweiterungsoptionen und ihre Implementierungen dürfen nicht in einer Gruppe zusammengefasst werden, da sie in verschiedene Entwicklungsstadien gehören.

Beispiel

Die zentrale IT-Abteilung eines Unternehmens entwickelt ein Programm mit Erweiterungsoptionen, die später in den verschiedenen örtlichen Niederlassungen implementiert werden. Das Gruppieren dieser Erweiterungsimplementierungen gemeinsam mit den Erweiterungsoptionen unterstützt die Grundidee des Enhancement Frameworks: Platz schaffen für Quelltext, der zu Laufzeit an einer bestimmten Position einer Kompilationseinheit verarbeitet wird, wobei er eigentlich nicht zu dieser Kompilationseinheit gehört. Außerdem ist die Entwicklung dieser Implementierungen ein anderes Projekt als das Anlegen von Implementierungen. Und die Gruppierung muss Erweiterungen, die zu verschiedenen Projekten gehören, getrennt gruppieren.

Struktur von Containern

Ausgehend von der obigen Beschreibung ist es offensichtlich, dass Sie mindestens zwei Container benötigen: einen für die Erweiterungsoptionen auf der Definitionsseite und einen weiteren für die Implementierungsseite. Innerhalb des Enhancement Frameworks gibt es mehrere dieser Containerarten:

      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 verschiedener 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

Jedes Erweiterungselement muss Teil eines Erweiterungsspots sein. Wenn Sie eine Erweiterung ganz neu anlegen, müssen Sie zuerst die entsprechenden Container anlegen. Der Vorgang entspricht dem Anlegen einer Methode. Sie sind immer Teil einer Klasse. Ebenso wenig 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.

 

 

 

Ende des Inhaltsbereichs