Aufrufbündelung
Die Aufrufbündelung verbessert die Performance beim Einsatz von Instanz-BAPIs, indem einzelne BAPI-Aufrufe im Verbucher gebündelt werden. Da die Bündelung der einzelnen BAPI-Aufrufe erst in der Verbuchungs-Task erfolgt, bleibt das Programmiermodell für die BAPIs bis auf eine Änderung der Verbuchungslogik in den Verbuchungsbausteinen erhalten.
Um eine Aufrufbündelung zu realisieren, müssen folgende drei Komponenten angepaßt bzw. erzeugt werden:
In jedem BAPI werden einzeln die notwendigen Konsistenzprüfungen und organisatorische Operationen wie Nummernvergabe und Sperrverwaltung durchgeführt. Wird diese Anwendungslogik fehlerfrei durchlaufen, so werden die Verbuchungsbausteine IN UPDATE TASK gerufen.
Die Erweiterung des Programmiermodells bezieht sich auch auf die Verbuchungsbausteine, d.h. hier werden die Datenbankzugriffe nicht einzeln direkt angestoßen, sondern die durchzuführenden Operationen werden jeweils im Funktionsgruppenspeicher zwischengespeichert und anschließend eine Formroutine indirekt "ON COMMIT" gerufen, so daß diese nur einmal zum Schluß der Verbuchungstask durchlaufen wird.
Die Formroutine nimmt die Summe der im Funktionsgruppenspeicher vorgemerkten Operationen und kommt durch Techniken wie Array-Insert mit einem Datenbankzugriff für die Verbuchung aus.
Der Aufbau der drei für die Aufrufbündelung relevanten Komponenten läßt sich in Pseudo-Code wie folgt darstellen:
function bapi_<object>_create.
{Konsistenzprüfungen und Fehlerbehandlung}
call <object>_post in update task
exporting
{Daten}.
endfunction.
function <object>_post.
{Operationen im Puffer}
perform <buffersave> on commit.
endfunction.
form <buffersave>.
{Verbuchen Pufferdaten}
endform.
Das Konzept der Aufrufbündelung weist die folgenden Vorteile auf:
Der Nachteil dieses Konzeptes ist allerdings, daß bei technischen Problemen, wie z.B. beim Ausfall des Servers, sämtliche Werte verloren sind.