Show TOC Anfang des Inhaltsbereichs

Prozessdokumentation Aktionen bei der auf bestehenden SAP-Datenbanktabellen basierenden Erweiterung  Dokument im Navigationsbaum lokalisieren

Einsatzmöglichkeiten

Es wird angenommen, dass der Kunde eigene Felder an die dem BAPI zugrundeliegenden SAP-Tabellen anhängen bzw. bestehende Felder aus diesen Tabellen nachträglich in das BAPI einbeziehen will.

Ablauf

In diesem Fall muss er maximal die folgenden Schritte durchlaufen:

...

       1.      Erweiterungen der Datenbanktabelle
Für jede dem BAPI zu Grunde liegende SAP-Tabelle, an die der Kunde eigene Felder anhängen möchte, muss er folgende Vorkehrungen treffen:

...

                            a.      Es ist eine Datenstruktur anzulegen, welche die kundenspezifischen Felder enthält, um welche die Tabelle erweitert wird.

                            b.      An die Datenbanktabelle ist anschließend ein APPEND anzuhängen, welches die unter a) angelegte Datenstruktur inkludiert.

Ein erläuterndes Beispiel finden Sie unter Anhängen kundeneigener Felder.

Achtung

Beachten Sie, dass In BAPI Table Extensions vom Kunden nur Felder des Datentyps CHAR und ähnliche Datentypen verwendet werden dürfen.

 

       2.      Identifikation bzw. Anlegen der BAPI Table Extensions
Für jede SAP-Tabelle, die der Kunde für diese Art der Erweiterung nutzt, muß er zunächst sicherstellen, dass eine zugehörige BAPI Table Extension existiert. Dazu sollte er die Dokumentation zu den Extension-Parametern des BAPIs lesen. Ist eine benötigte Table Extension nicht von SAP ausgeliefert worden, so hat der Kunde sie eigenständig zu erstellen. Dabei sind folgende Richtlinien einzuhalten:

       Die Namenskonvention für BAPI Table Extensions lautet <Namensraum>BAPI_TE_<Tabellenname>.
Kann diese Namenskonvention aufgrund der Längenbeschränkung für Strukturnamen nicht eingehalten werden, so ist der Name möglichst sprechend abzukürzen.

       Jede Tabelle sollte nur eine einzige Table Extension besitzen. Benutzen also mehrere BAPIs die gleiche Tabelle, so müssen sie sich eine Table Extension teilen.

Ausnahme:

Besitzt ein BAPI zwei oder mehr Parameter, denen die gleiche Datenbanktabelle zugrundeliegt, dann wird für jeden BAPI-Parameter eine BAPI Table Extension angelegt. Die Namenskonvention lautet dann <Namensraum>BAPI_TE_<Tabellenname><fortlaufende Nummer>. Im Beispiel würden die Table Extensions YBAPI_TE_STRAVELAG1 und YBAPI_TE_STRAVELAG2, etc. heißen.

       Die Struktur der BAPI Table Extension muss alle identifizierenden Schlüsselfelder der Tabelle enthalten, auf die sich die BAPI Table Extension bezieht. Abgesehen von den Schlüsselfeldern enthält die ausgelieferte Table Extension zunächst keine weiteren Felder.

       3.      Erweiterung der BAPI Table Extensions
Die zuvor identifizierten bzw. ermittelten BAPI Table Extensions werden jetzt mittels der APPEND-Technik erweitert. Dabei lassen sich, wie bereits erwähnt, die folgenden Fälle unterscheiden:

...

                            a.      Möchte der Kunde aus der zu dieser BAPI Table Extension gehörenden SAP-Tabelle bestehende Felder nachträglich in das BAPI aufnehmen, so hängt er diese Felder direkt in die APPEND-Struktur.

                            b.      Hat er Kunde eigene Felder an die zugehörige SAP-Tabelle angehängt, so hat er in das APPEND die gleiche Datenstruktur mit den kundenspezifischen Feldern zu inkludieren, die er bei der Erweiterung der Datenbanktabelle verwendet hat.

                            c.      Sollen aus der SAP-Tabelle sowohl bestehende Felder nachträglich in das BAPI aufgenommen als auch kundeneigene Felder an diese Tabelle angehängt werden, dann ist wie folgt vorzugehen:

        In der APPEND-Struktur sind zunächst alle bestehenden Felder der zugehörigen Datenbanktabelle aufzunehmen.

        Anschließend wird in die gleiche APPEND-Struktur das INCLUDE eingefügt, welches die neuen, kundeneigenen Felder enthält. Auch hier gilt, dass das gleiche INCLUDE sowohl in der Datenbanktabelle als auch in der zugehörigen BAPI Table Extension verwendet werden muss

       4.      Ausprogrammierung der BAdIs
Innerhalb des ersten BAdIs hat der Kunde die Möglichkeit, Datenprüfungen durchzuführen, während er im zweiten BAdI die Weiterverarbeitung der an das BAPI übergebenen Daten ausprogrammieren kann (siehe Aktionen von Seiten des BAPI-Entwicklers). Hierbei gelten die üblichen Regeln für BadIs.

 

Hinweis

Lesen Sie hierzu die Dokumentation über Business Add-Ins.

 

       5.      Füllen von ExtensionIn vor einem BAPI-Aufruf
Bevor ein BAPI, dem erweiterte Tabellen zugrundeliegen, aufgerufen werden kann, muss sichergestellt werden, dass die Erweiterungen in den Parameter ExtensionIn geschrieben werden. Das Füllen von ExtensionIn läuft für jeden Datensatz, der in diesen Container geschrieben werden soll, wie folgt ab:

       Zunächst ist das Feld VALUEPART1 mit den die Tabellenzeile identifizierenden Schlüsseln zu füllen.

       Anschließend werden die Felder VALUPART1 bis VALUPART4 mit den Werten der kundenspezifischen Feldern der Reihe nach aufgefüllt. Durch diese Art der Strukturierung des Containers wird es möglich, seinen Inhalt mit einem MOVE-Befehl in die Struktur der BAPI Table Extension zu konvertieren.

Ein Beispiel für den zu implemetierenden Teil lässt sich in Pseudo-Code wie folgt beschreiben:

 

FOR jede erweiterbare Tabelle X

  REPEAT

Fülle ExtensionIn-VALUEPART1 mit Schlüsselwerten.

Fülle VALUEPART1 bis VALUEPART4 der Reihe nach mit Daten auf.

APPEND ExtensionIn.

UNTIL Tabelle X bearbeitet

END FOR

 

Ausnahme:

Bei Create-BAPIs mit interner Nummernvergabe ist es nicht möglich, dem Container einen Schlüsselwert mitzugeben, da dieser Wert erst innerhalb des BAPIs erzeugt wird. In diesem Fall sollte dem Container ein initialer Schlüsselwert mitgegeben werden. Die Zuweisung des im BAPI erzeugten Schlüssels zur BAPI Table Extension wurde bereits vom BAPI-Entwickler vorgedacht.

 

Ein ausführliches Programmierbeispiel zum Füllen des ExtensionIn-Parameters und zum Aufruf des erweiterten BAPIs finden Sie unter Beispiele.

       6.      Auswerten von ExtensionOut nach einem BAPI-Aufruf
Die Konvertierung des ExtensionOut-Containers in eine Struktur ist situationsabhängig zu implementieren.

Ende des Inhaltsbereichs