Erweiterung des BAPIs durch Einbeziehung
zusätzlicher, kundeneigener Datenbanktabellen
Über das Kundenerweiterungskonzept kann es dem Kunden möglich gemacht werden, zusätzliche, selbst angelegte Tabellen in einem BAPI zu verarbeiten.
Um dem Kunden diese Möglichkeit der Erweiterung zu geben, müssen am BAPI ebenfalls mindestens die folgenden Vorkehrungen getroffen werden:
...
1.
Extension-Parameter an der
BAPI-Schnittstelle
In Abhängigkeit von den Anforderungen, die an das jeweilige BAPI gestellt
werden, muss ein Extension-Parameter (ExtensionIn) für den Datenimport und/oder ein
Extension-Parameter (ExtensionOut)
für den Datenexport in der Schnittstelle des BAPI-Funktionsbausteins enthalten
sein.
2.
Business Add-Ins
(BadIs)
Auch für diesen Anwendungsfall muss jeder BAPI-Funktionsbaustein neben den
durch die Anwendung vorgegebenen Exits, in Abhängigkeit von den Anforderungen,
maximal zwei zusätzliche BAdIs
enthalten, in denen der Kunde Datenprüfungen oder weitere Verarbeitungen
durchführen kann.
Die
Extension-Parameter an der BAPI-Schnittstelle und die BadIs sind
obligatorisch. In welcher Form allerdings die an die neuen Kundentabellen zu
übergebenden Daten bzw. die aus den Kundentabellen zurückzugebenden Daten in
den Extension-Containern angeordnet werden, ist vollständig dem Kunden
überlassen.
Im Gegensatz zu den zuvor beschriebenen Arten der Erweiterung ist folglich die
Verwendung von BAPI Table Extensions nicht zwingend notwendig. Allerdings wird
empfohlen, trotzdem zu den neu angelegten Tabellen jeweils Hilfsstrukturen zu
definieren, da mit ihrer Hilfe das Füllen bzw. die Auswertung der
Extension-Container komfortabler und sicherer durchgeführt werden
kann.
Im folgenden wird anhand des BAPIs TravelAgency.CreateFromData verdeutlicht, welche Komponenten an dieser Art der Erweiterung beteiligt sind. In diesem Beispiel hat der Kunde zusätzlich zu den dem BAPI zugrundeliegenden SAP-Tabellen eine eigene Tabelle YSTRAVELAG angelegt, in welcher er zusätzliche Daten zu dem Objekt TravelAgency abspeichert.
Die vom Kunden angelegte Tabelle YSTRAVELAG hat die folgende Struktur:

Um das Füllen bzw. Auswerten der Extension-Parameter zu erleichtern, sollte für jede Kundentabelle eine Datenstruktur angelegt werden, die diejenigen Felder aus der zugehörigen Kundentabelle enthält, welche im BAPI berücksichtigt werden sollen. Dabei sollten die folgenden Punkte beachtet werden:
● Die einzelnen Felder dieser Datenstruktur sollten den gleichen Namen und den gleichen Datentyp besitzen wie die zugehörigen Felder in der Kundentabelle.
● Insbesondere müssen alle Schlüsselfelder der Kundentabelle in der Datenstruktur enthalten sein, um eine eindeutige Identifizierung der Datensätze zu ermöglichen.
● Der Name der Datenstruktur sollte der Konvention <Namensraum>BAPI_<Tabellenname> genügen, um eine eindeutige Zuordnung zur Datenbanktabelle herzustellen.
Die folgende Abbildung zeigt, wie die Hilfsstruktur YBAPI_YSTRAVELAG für das begleitende Beispiel aussehen sollte:


Das Anlegen dieser Hilfsstruktur ist optional und stellt lediglich eine Erleichterung beim Füllen und Auswerten des Extension-Containers dar. Alternativ können andere Hilfsstrukturen verwendet werden, oder es kann vollständig auf derartige Hilfsstrukturen verzichtet werden.
Wie bereits erwähnt, werden die beiden Extension-Parameter (ExtensionIn und ExtensionOut) an der BAPI-Schnittstelle dazu verwendet, die Erweiterungen in einem Containerformat an den BAPI-Funktionsbaustein zu übergeben bzw. aus dem Funktionsbaustein heraus an den Aufrufer weiterzuleiten.
Im Gegensatz zur Erweiterung über BAPI Table Extensions gibt es in diesem Fall keine Richtlinien, wie die Daten in diesen Extension-Containern anzuordnen sind.
Wird allerdings eine Hilfsstruktur in der zuvor beschriebenen Form verwendet, ist die Strukturierung der Daten in diesen Containern bis auf eine Ausnahme äquivalent zu der unter Anhängen kundeneigener Felder beschriebenen Strukturierung. Der einzige Unterschied besteht darin, dass in dem Feld STRUCTURE der BAPIPAREX-Struktur nicht der Name der BAPI Table Extension übergeben wird, sondern der Name der zugehörigen Hilfsstruktur.
Dem Beispiel folgend könnte der Extension-Container bei Verwendung der Hilfsstruktur YBAPI_YSTRAVELAG wie folgt aussehen:

Die Werte „BOEING747“ und „LUFTHANSA“ des ersten Datensatzes würden in die durch YBAPI_YSTRAVELAG spezifizierten Felder der Kundentabelle YSTRAVELAG geschrieben. Die Tabellenzeile, in welche die Werte einzufügen sind, wird durch den Schlüssel „4711“ identifiziert.
Das Prüfen und die Weiterverarbeitung der Daten aus dem Import-Container bzw. das Füllen des Export-Containers findet anschließend in den BAdIs statt, die vom BAPI-Entwickler dafür vorgesehen wurden.