Programmieren von Create()-BAPIs 

Verwendung

Mit dem BAPI Create() wird eine einzelne Instanz eines SAP-Business-Objekttyps erstellt. Analog hierzu legt das BAPI CreateMultiple() gleichzeitig mehrere Instanzen eines Business-Objekttyps an.

Gibt es an dem betreffenden Business-Objekttyp bereits eine Workflow-Methode mit dem Namen Create(), können Sie für Ihr BAPI den Namen CreateFromData() verwenden. Der bevorzugte Name für dieses BAPI ist jedoch Create().

Das BAPI Create() bzw. CreateMultiple() ist eine Klassenmethode (instanzunabhängig).

Zu jedem Create()-BAPI muß eine Methode bereitstehen, mit der die erstellte Business-Objektinstanz gelöscht bzw. storniert werden kann. Hierzu sollten Sie, abhängig von der betriebswirtschaftlichen Anwendungspraxis, eines der folgenden BAPIs implementieren:

Weitere Informationen hierzu finden Sie unter Programmieren von Delete()-BAPIs.

Weitere Informationen hierzu finden Sie unter Programmieren von Cancel()-BAPIs.

Funktionsumfang

BAPI-Schnittstelle

Import-Parameter

Bei der Festlegung der Import-Parameter sind folgende Aspekte zu beachten:

Weitere Informationen finden Sie unter TestRun-Parameter.

Informationen zu Extension-Parametern und Empfehlungen, wie das Kundenerweiterungskonzept in einem Create()-BAPI realisiert werden sollte, finden Sie unter Kundenerweiterung von BAPIs.

Export-Parameter

Bei der Festlegung der Export-Parameter sind folgende Aspekte zu beachten:

Dabei sind folgende Aspekte von Bedeutung:

Ist der Gesamtschlüssel länger als die maximale Kapazität von MESSAGE_V2 (also 50 Zeichen), so wird er auf die beiden Felder MESSAGE_V2 und MESSAGE_V3 aufgeteilt. Dabei werden die ersten 50 Zeichen in MESSAGE_V2 gespeichert und der Rest MESSAGE_V3 zugewiesen.

Der einzige Unterschied zum Erfolgsfall besteht darin, daß die Felder MESSAGE_V2 und MESSAGE_V3 leer übergeben werden müssen. Der extern mitgegebene Schlüssel wird dagegen in MESSAGE_V4 zurückgegeben, um die Identifizierung zu erleichtern.

Weitere Informationen zu diesem Parameter finden Sie unter Return-Parameter (Fehlerdarstellung).

BAPI-Coding

Mehrere Instanzen in einer LUW

Ein Create()-BAPI muß so implementiert werden, daß es möglich ist, mehrere Aufrufe derselben Create()-Methode innerhalb einer LUW abzusetzen und somit mehrere Instanzen des gleichen Objekttyps in einer LUW zu erzeugen.

Nutzung eines Zwischenspeichers

Um einerseits zu erreichen, daß mehrere Instanzen des gleichen Objekttyps innerhalb einer LUW angelegt werden können und andererseits eine hohe Performance zu gewährleisten, sollten die Ergebnisse eines Create()-BAPIs bis zu ihrer Verbuchung im Verbucher gebündelt werden.
Dazu ruft das BAPI nach erfolgreicher Abarbeitung der Anwendungslogik einen Verbuchungsbaustein "IN UPDATE TASK" auf. Diese Verbuchungsbausteine stoßen die Datenbankzugriffe nicht direkt einzeln an, sondern die durchzuführenden Operationen werden jeweils im Funktionsgruppenspeicher zwischengespeichert und anschließend in einer Formroutine indirekt "ON COMMIT" aufgerufen. Somit wird diese Formroutine nur einmal durchlaufen und kommt durch Techniken wie Array-Insert mit nur einem Datenbankzugriff für die Verbuchung aus.

Einzelheiten zur Aufrufbündelung finden Sie unter Details.

Vermeiden von Konflikten mit Customizing-Einstellungen

Es ist möglich, daß bestimmte Werte durch das Customizing festgelegt werden, jedoch an der BAPI-Schnittstelle weiterhin als variabel erscheinen. Diese Werte dürfen von einem Create()-BAPI nicht überschrieben werden.

Um Konflikte mit Customizing-Einstellungen zu vermeiden, sollten Sie ein Create()-BAPI folgendermaßen implementieren:

Externe Schlüsselvergabe

Bei einem Create()-BAPI mit externer Schlüsselvergabe übergibt der Aufrufer den Schlüssel (ID) der zu erzeugenden Objektinstanz, z.B. eine Belegnummer.

Wichtig: Diese Parameter für den externen Schlüssel dürfen nicht den gleichen Namen haben wie die Schlüssel des Objekttyps im BOR, da sonst das BAPI fälschlicherweise als Instanzmethode identifiziert werden würde. Außerdem müssen auch weiterhin die im BAPI erzeugten Schlüssel als Export-Parameter definiert werden.

Beachten Sie, daß Sie im Programmcode derartiger Create()-BAPIs die spezifizierten Schlüssel explizit in Großbuchstaben konvertieren müssen. Andernfalls werden Schlüssel erzeugt, die in einer Dialoganwendung nicht verfügbar gemacht werden können. Dies liegt daran, daß bei Dialoganwendungen externe Schlüssel immer implizit in Großbuchstaben konvertiert werden.

Siehe auch:

Beispiel für ein Create()-BAPI