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.

  • ???? Kerndefinition: Eine Business Application Programming Interface (BAPI) ist eine stabile Methode, die externen Systemen einen standardisierten Zugriff ermöglicht. SAP Geschäftsprozesse und Daten.
  • 🗃️ Geschäftsobjekt-Repository: BAPIs werden im BOR als Methoden von Geschäftsobjekttypen definiert und als RFC-fähige Funktionsbausteine ​​implementiert.
  • 📚 Standardisierte BAPIs: GetList, GetDetail, Create, Change, Delete und die Multiple-Varianten bieten wiederverwendbare Lese-, Schreib- und Massenverarbeitungsmethoden.
  • Schaffung: Ein BAPI wird in der Transaktion SWO1 erstellt, indem eine API-Methode hinzugefügt wird, die auf einen RFC-fähigen Funktionsbaustein verweist.
  • Test und Freigabe: Die Methode wird im Business Object Builder oder SWUD getestet und anschließend durch Freigabe des Funktionsbausteins und Festlegung des Methodenstatus freigegeben.
  • 📞 Aufruf einer BAPI: Ein ABAP-Programm ruft den Funktionsbaustein auf und führt anschließend mit BAPI_TRANSACTION_COMMIT einen Commit durch, da ein BAPI nicht von selbst einen Commit durchführt.

Wie man eine BAPI erstellt SAP 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.

Erstellen Sie ein BAPI in ABAP

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.

Erstellen Sie ein BAPI in ABAP

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.

Erstellen Sie ein BAPI in ABAP

Schritt 4) Um die Methode zu erstellen, wählen Sie im nächsten Dialogfeld „Ja“ aus.

Erstellen Sie ein BAPI in ABAP

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.

Erstellen Sie ein BAPI in ABAP

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.

Häufig gestellte Fragen

Ein BAPI führt die Aktualisierung durch, überlässt aber das COMMIT WORK dem Aufrufer, sodass mehrere BAPIs zu einer logischen Arbeitseinheit zusammengefasst werden können. BAPI_TRANSACTION_COMMIT speichert diese dann gemeinsam.ping die Daten sind konsistent.

Die RETURN-Tabelle vom Typ BAPIRET2 enthält die Meldungen des Aufrufs. Eine Zeile vom Typ S bedeutet Erfolg, E bedeutet Fehler, W bedeutet Warnung und A bedeutet Abbruch. Der Aufrufer liest diese Tabelle, um zu entscheiden, ob er den Aufruf bestätigen soll.

Die Transaktion BAPI öffnet den BAPI-Explorer, der alle Geschäftsobjekte und ihre Methoden mit Dokumentation und Testwerkzeugen auflistet. SE37 zeigt ebenfalls ein BAPI an, da es sich bei jedem um ein RFC-fähiges Funktionsmodul handelt.

Ja. KI-Assistenten in ABAP-Entwicklungstools schlagen die Standard-BAPI für ein Geschäftsobjekt vor und erstellen die Parameterzuordnung.pingund fügen die Commit- und Fehlerbehandlung hinzu. Der Entwickler bestätigt die Felder und testet den Aufruf.

Ja. Viele OData-Dienste und KI-Integrationen nutzen im Hintergrund eine BAPI-Schnittstelle, da diese bereits die Geschäftslogik enthält. Neuere Schichten ergänzen die stabile BAPI-Schnittstelle um REST-Zugriff und natürliche Sprache.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: