SAP BAPI-Tutorial – Wie man eine BAPI in ABAP erstellt
⚡ Intelligente Zusammenfassung
BAPI in SAP ABAP ist eine standardisierte, RFC-fähige Methode zur Erstellung von Geschäftsobjekten, die es externen Anwendungen ermöglicht, auf R/3-Prozesse und -Daten zuzugreifen. Diese Seite erläutert standardisierte BAPIs, deren Erstellung in SWO1, das Testen und Freigeben sowie den Aufruf von BAPIs aus ABAP.

Was ist BAPI?
Business Application Programming Interfaces (BAPI) sind standardisierte Programmierschnittstellen (Methoden), die externen Anwendungen den Zugriff auf Geschäftsprozesse und Daten im R/3-System ermöglichen.
Sie Bereitstellung stabiler und standardisierter Methoden um eine nahtlose Integration zwischen dem R/3-System und externen Anwendungen, Altsystemen und Add-Ons zu erreichen.
BAPIs sind im definiert BOR (Geschäftsobjekt-Repository) als Methoden der SAP Geschäftsobjekttypen, die spezifische Geschäftsfunktionen ausführen. Sie werden implementiert als RFC-fähige Funktion Module und werden im Function Builder der ABAP Workbench erstellt.
Einige BAPIs und Methoden stellen grundlegende Funktionen zur Verfügung und können für die meisten SAP Business Objects. Diese heißen STANDARDISIERTE BAPIs.
Liste der standardisierten BAPIs:
- BAPIs zum Auslesen von Daten – GetList() , GetDetail() , GetStatus() , ExistenceCheck()
- BAPIs zum Anlegen oder Ändern von Daten – Create(), Change(),Delete() und Undelete(),
- BAPIs für Massenverarbeitung -ChangeMultiple(), CreateMultiple(), DeleteMultiple().
Vorteile von BAPI
Eine BAPI-Schnittstelle wird gegenüber bildschirmbasierten Techniken bevorzugt, da sie eine dokumentierte, freigegebene Schnittstelle darstellt, die SAP Die Stabilität bleibt über verschiedene Releases hinweg erhalten. Dies bringt mehrere praktische Vorteile mit sich.
- Stabile Schnittstelle: Die Signatur eines freigegebenen BAPI ändert sich bei einem Upgrade nicht, sodass das aufrufende Programm weiterhin funktioniert.
- Wiederverwendung von Geschäftslogik: Ein BAPI führt die gleichen Validierungen wie die Transaktion durch, sodass die darüber hinzugefügten Daten konsistent bleiben.
- Fernsteuerung aktiviert: Da es sich bei einem BAPI um ein RFC-fähiges Funktionsmodul handelt, kann es von einem anderen Modul aufgerufen werden. SAP System, a Java oder ein .NET-Programm oder ein Webdienst.
- Keine Bildschirmabhängigkeit: Im Gegensatz zur Aufzeichnung von Batch-Eingaben wird ein BAPI nicht unterbrochen, wenn sich das Bildschirm-Layout ändert.
Nachdem das Konzept und seine Vorteile erläutert wurden, wird im nächsten Abschnitt Schritt für Schritt ein BAPI aufgebaut.
So erstellen Sie ein BAPI
Schritt 1) Gehen Sie zur Transaktion swo1 (Tools->Business Framework -> BAPI-Entwicklung ->Business Object Builder). Wählen Sie das Business-Objekt entsprechend der funktionalen Anforderung aus, für die das BAPI erstellt wird.
Schritt 2) Öffnen Sie das Geschäftsobjekt im Änderungsmodus. Wählen Sie dann Dienstprogramme ->API-Methoden ->Methode hinzufügen. Geben Sie dann den Namen des Funktionsbausteins ein und wählen Sie Weiter.
Schritt 3) Im nächsten Dialogfeld müssen folgende Informationen angegeben werden:
- Methode: Schlagen Sie einen passenden Namen für die Methode vor.
- Texte: Beschreibung für das BAPI eingeben,
- Optionsfelder: Dialog, SyncSynchron, instanzunabhängig. BAPIs werden üblicherweise synchron implementiert.
Schritt 4) Um die Methode zu erstellen, wählen Sie im nächsten Dialogfeld „Ja“ aus.
Schritt 5) Nachdem das Programm generiert und ausgeführt wurde, überprüfen Sie das Programm in der gerade erstellten Methode. Dadurch wird ein BAPI erstellt.
Testen des BAPI
Sie können das BAPI testen, indem Sie Tests die individuelle Methode des Business Objekts im Business Object Builder. (Oder man kann die Transaktion 'SWUD' verwenden, um die Methode zu testen).
BAPI freigeben und einfrieren
- Um das BAPI freizugeben, geben Sie zunächst den Funktionsbaustein frei (über Transaktion se37).
- Setzen Sie im Business Object Builder den Status der Methode auf „freigegeben“ (über Transaktion SWo1 – Bearbeiten->Status ändern->freigegeben).
Sie können auch den BAPI Explorer (Transaktionscode BAPI) für eine 360′-Ansicht auf BAPI verwenden
Wie ruft man eine BAPI in ABAP auf?
Ein BAPI wird wie jedes RFC-fähige Funktionsmodul aufgerufen. Wichtig ist, dass ein BAPI niemals ein eigenes COMMIT WORK ausführt. Der Aufrufer muss die Änderung daher mit BAPI_TRANSACTION_COMMIT bestätigen oder mit BAPI_TRANSACTION_ROLLBACK verwerfen. Das folgende Beispiel erstellt einen Kundenauftrag mit einem Standard-BAPI.
DATA: ls_header TYPE bapisdhd1, lt_items TYPE STANDARD TABLE OF bapisditm, lt_return TYPE STANDARD TABLE OF bapiret2, lv_order TYPE vbeln. * Fill the header and item structures, then call the BAPI CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = ls_header IMPORTING salesdocument = lv_order TABLES order_items_in = lt_items return = lt_return. * A BAPI does not commit on its own - decide based on the return table READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF.
⚠️ Warnung: Vor dem Commit sollte stets die RETURN-Tabelle auf Meldungen vom Typ E oder A geprüft werden. Der Aufruf von BAPI_TRANSACTION_COMMIT nach einem Fehler speichert ein unvollständiges Dokument, was einer der häufigsten BAPI-Fehler ist.
BAPI vs. BDC vs. RFC
Ein BAPI, ein BDCund ein einfacher RFC verschieben alle Daten in SAPSie unterscheiden sich jedoch in ihrer Stabilität und in den wiederverwendbaren Materialien. Die folgende Tabelle vergleicht sie.
| Eigenschaften | BAPI | BDC | RFC (benutzerdefiniert) |
|---|---|---|---|
| Interface | Freigabemethode eines Geschäftsobjekts | Bildschirmsequenz einer Transaktion | Beliebiges benutzerdefiniertes Funktionsmodul |
| Stabilität beim Upgrade | Garantiert für freigegebene BAPIs | Funktioniert nicht, wenn sich ein Bildschirm ändert | Hängt vom Entwickler ab |
| Fernzugriff aktiviert | Ja | Nein | Ja |
| Geschäftsvalidierung | Vollständig, genau wie bei der Transaktion | Vollständig, die eigentlichen Bildschirme werden ausgeführt | Nur das, was der Entwickler codiert |
| am besten für | Stabile Integration und Schnittstellen | Lasten, für die kein BAPI existiert | Kundenspezifische Punkt-zu-Punkt-Dienste |
Als Faustregel gilt: Verwenden Sie eine freigegebene BAPI, sofern vorhanden; greifen Sie andernfalls auf eine BDC zurück; benutzerdefinierte RFCs sollten für kundenspezifische Dienste reserviert werden.





