SAP-BAPI-Ausführungsleitfaden für Jitterbit App Builder
Übersicht
Eine BAPI (Business Application Programming Interface) ist SAP's primäre Schnittstelle zum Lesen und Aktualisieren von Daten in einem SAP-System, aufrufbar sowohl von innen als auch von außen über das RFC-Protokoll oder ALE/IDoc-Technologie. BAPIs werden im SAP Business Object Repository (BOR) als Methoden von SAP-Geschäftsobjekttypen definiert, die spezifische Geschäftsfunktionen ausführen, und werden als RFC-aktivierte Funktionsmodule implementiert, die im Function Builder der ABAP Workbench erstellt werden. Weitere Hintergrundinformationen finden Sie in der BAPI-Einführung von SAP.
Dieser Leitfaden beschreibt, wie Sie SAP-BAPI-Funktionsmodule aus App Builder ausführen: Verbinden Sie einen Datenserver mit dem SAP-System, erstellen Sie lokale Staging-Tabellen, die die Struktur der BAPI widerspiegeln, füllen Sie sie mit den zu sendenden Daten und lösen Sie dann die Ausführung der BAPI über RFC aus.
Voraussetzungen
Bevor Sie BAPIs aus App Builder ausführen können, benötigen Sie Folgendes:
-
Eine App-Builder-Release-Version, die die zusätzlichen SAP-Komponenten enthält. Jede veröffentlichte Build-Version hat ihren eigenen
thirdpartysap-Download unterhttps://download.jitterbit.com/vinyl/<version>/vinyl-<version>-thirdpartysap-win.zip(zum Beispielhttps://download.jitterbit.com/vinyl/4.66.0.39333/vinyl-4.66.0.39333-thirdpartysap-win.zipfür Version 4.66.0+39333). Dieses Paket platziert die SAP-DLLs (Dynamic Link Libraries), die App Builder zum Herstellen einer Verbindung zu SAP benötigt, im OrdnerApp Builder/Bin. -
Eine Datenserververbindung zum SAP-System, auf dem Sie BAPIs aufrufen möchten, mit Type auf SAP ABAP over RFC eingestellt. Diese Verbindung nutzt den CData ADO.NET Provider für SAP ERP, der wiederum die nächsten zwei Voraussetzungen erfordert. Siehe SAP-Datenserververbindung, falls Sie diese noch nicht eingerichtet haben.
-
SAP NetWeaver RFC SDK: Platzieren Sie die DLLs des SDK in
C:\Windows\System32auf dem Server, auf dem App Builder ausgeführt wird. Weitere Informationen zum SDK und zum Download finden Sie in der NetWeaver RFC SDK-Dokumentation von SAP. -
Microsoft Visual C++ 2015-2022 Redistributable (x64): Installieren Sie dieses Microsoft-Systemdateienpaket auf dem Server, auf dem App Builder ausgeführt wird. Laden Sie das Paket herunter.
Weitere Informationen zu diesen Abhängigkeiten finden Sie in der CData-Dokumentation zum Konfigurieren von ADO.NET-Provider-Abhängigkeiten.
SAP-Datenserververbindung
Konfigurieren Sie eine Datenserververbindung, um App Builder mit dem SAP-System zu verbinden, auf dem Sie BAPIs aufrufen möchten:
-
Wählen Sie IDE > Data Servers.
-
Klicken Sie auf die Schaltfläche + Server. Die Seite Server wird geöffnet. Legen Sie Werte für Folgendes fest:

-
Im Bereich Server Settings:
- Server Name: Erkennbarer Name für die Serververbindung. Zum Beispiel:
SAP ABAP over RFC (BAPI). - Type: SAP ABAP over RFC.
- Host Name: Der Hostname des SAP-Anwendungsservers. Zum Beispiel:
example.jitterbit.com. - (Optional) Messaging Server: Der Hostname des SAP-Nachrichtenservers, der zusammen mit Group für eine lastverteilte Verbindung anstelle einer Verbindung mit einem einzelnen Anwendungsserver verwendet wird.
- (Optional) Group: Die SAP-Anmeldegruppe zum Verbinden, wenn Messaging Server für eine lastverteilte Verbindung verwendet wird.
- System Id or R3 Name: Die dreistellige System-ID (SID) des SAP-Systems. Zum Beispiel:
EH8. - System No: Die Instanznummer des SAP-Systems. Zum Beispiel:
0.
- Server Name: Erkennbarer Name für die Serververbindung. Zum Beispiel:
-
Im Bereich Security Settings:
- Client: Die SAP-Clientnummer (Mandant), unter der Sie sich anmelden möchten.
- User Name: Der Benutzername, den App Builder zur Authentifizierung beim SAP-System verwendet.
- Password: Das Passwort für diesen Benutzer.
-
-
Im Bereich Staging: - (Optional) Datenquelle: Die lokale Datenquelle, in der sich deine BAPI-Stagingtabellen befinden.
- (Optional) Beschreibung: Gib eine Beschreibung für diese Verbindung ein.
-
Klick auf die Schaltfläche Speichern.
-
Erweitere Testing und klick dann auf die Schaltfläche Verbindung testen, um die Verbindung zu überprüfen.
Benutzerdefinierte Funktionsmodule finden
Standardmäßig werden mit dem Importmuster der SAP-Datenquelle nur gespeicherte Prozeduren angezeigt, die BAPI* entsprechen. Um ein benutzerdefiniertes Funktionsmodul zu finden und zu importieren, z. B. eines mit dem Präfix Z, füge eine erweiterte Eigenschaft StoredProcedureFilter zur Verbindung hinzu. Beispiel: StoredProcedureFilter=Z* zeigt zusätzlich Prozeduren an, die mit Z beginnen.
Hinweis
Falls ein Funktionsmodul nicht vom Importmuster zurückgegeben wird oder die Ausführung mit der Fehlermeldung Procedure not found fehlschlägt, stelle sicher, dass sein Name durch den konfigurierten StoredProcedureFilter-Wert der Verbindung abgedeckt ist.
BAPI-Stagingtabellen
Um Daten an SAP zu übergeben, kompiliert App Builder diese in lokale Stagingtabellen, bevor ein BAPI ausgeführt wird. Jede Komponente des BAPI-Funktionsmoduls (seine Eingabeparameter, Ausgabeparameter und alle übergeordneten oder untergeordneten Strukturen) hat ihre eigene Stagingtabelle mit Spalten, die die vom Modul erwarteten Werte enthalten.
Neben diesen BAPI-Parameterspalten benötigt jede Stagingtabelle auch eine kleine Menge App-Builder-spezifischer Spalten mit dem Präfix _, die die Stagingtabellen während der Ausführung verknüpfen. App Builder sendet diese Spalten nicht an SAP; er nutzt sie nur zum Staging der Ausführung. Wenn die Daten bereit sind, führt eine RFC-Aktion das BAPI aus und nutzt dabei die Spalte _id, um zu bestimmen, welcher Datensatz übergeben werden soll.
Hinweis
App Builder protokolliert jede SAP-Verbindung und -Ausführung sowie BAPI-spezifische Parameterdaten in den Datenbankprotokollen.
Lokale BAPI-Stagingtabellen erstellen
Erstelle für jede Komponente des BAPI, das du ausführen möchtest, eine lokale Stagingtabelle, entweder manuell oder durch Importieren der Struktur über das Feld Importmuster der SAP-Datenquelle (siehe Benutzerdefinierte Funktionsmodule finden, falls das benötigte Funktionsmodul nicht angezeigt wird).
Die Eingabeparameter eines BAPI (Daten, die von App Builder an SAP gesendet werden) und Ausgabeparameter (Daten, die von SAP zurückgegeben werden) erstrecken sich oft über mehr als eine Struktur: eine übergeordnete Komponente, die die Daten auf höchster Ebene enthält, und eine oder mehrere untergeordnete Komponenten, die Daten auf niedrigerer Ebene enthalten – normalerweise auch eine untergeordnete Komponente /RETURN, die Erfolgs- oder Fehlermeldungen zurückgibt. Wenn du die Stagingtabellen manuell erstellst, musst du diese Struktur und die Parameter des BAPI selbst genau verstehen, da App Builder sich darauf verlässt, um das BAPI korrekt auszuführen.
Benenne jede untergeordnete Stagingtabelle nach ihrer übergeordneten Tabelle; beispielsweise eine übergeordnete Tabelle namens BAPI_PO_CREATE1 und eine untergeordnete Tabelle namens BAPI_PO_CREATE1/POHEADER. Füge dann folgende Spalten zu jeder Stagingtabelle hinzu:
-
Füge eine Spalte
_idhinzu, stelle sie auf den Datentyp UUID ein, und wähle Primärschlüssel und Automatisch generiert, damit App Builder jeden bereitgestellten Datensatz eindeutig identifizieren kann. -
Falls die Tabelle eine untergeordnete Komponente ist, füge eine Spalte
_ParentIdhinzu, ebenfalls vom Typ UUID, und definiere eine Viele-zu-Eins-Beziehung zur übergeordneten Tabelle, die deren primäre Spalte_Idmit der Spalte_ParentIddieser Tabelle verknüpft. -
Falls die Reihenfolge der Ausführung von Datensätzen wichtig ist, füge eine Spalte
_indexhinzu, um einen Indexwert zu speichern, auf den App Builder während der Ausführung verweisen kann. -
Füge alle weiteren lokalen Fremdschlüssel- oder Auditspalten hinzu, die du benötigst, mit dem Präfix
_, um BAPI-Datensätze an dein eigenes Datenmodell zu knüpfen. Beispiel:_POHeaderIDermöglicht es dir, bereitgestellte BAPI-Daten für einen lokalen PO-Datensatz abzufragen, und_ExecutedOnverfolgt die Ausführungshistorie. -
Füge die Eingabe- und Ausgabeparamterspalten des BAPI selbst hinzu, z. B.
PURCHASEORDER,PO_ITEM,DELIVERY_DATEoderQUANTITY, die die Struktur des Funktionsmoduls widerspiegeln.
Ein BAPI ausführen
Nachdem deine Stagingtabellen mit Daten gefüllt sind, triggere die Ausführung des BAPI über RFC, indem du eine RFC-Aktion für ein Ereignis eines Geschäftsobjekts oder einer Tabelle registrierst, von App Workbench > Regeln. Wähle im Feld RFC der Aktion das aufzurufende SAP-Funktionsmodul aus. App Builder bietet vier integrierte Optionen:
-
BAPI_OBJCL_CHANGE -
BAPI_OBJCL_CREATE -
BAPI_OBJCL_DELETE -
BAPI_TRANSACTION_COMMIT
BAPI_TRANSACTION_COMMIT wird zuletzt aufgelistet, da es jeden der anderen drei bereits ausgeführten Aktionen committed.
BAPI-Funktionsmodulbeispiele
Im Folgenden sind einige der vielen BAPI-Funktionsmodule aufgelistet, die Sie aus App Builder ausführen können. Die Spalte Untergeordnete Komponenten listet die untergeordneten Komponenten des übergeordneten Funktionsmoduls auf, falls zutreffend.
| Funktionsmodul | Beschreibung | Untergeordnete Komponenten |
|---|---|---|
BAPI_PO_CREATE1 |
Wird zum Erstellen einer neuen Bestellung verwendet. | /POHEADER, /POHEADERX, /POITEM, /POITEMX, /POSCHEDULE, /POSCHEDULEX, /POCOND, /POCONDX, /POEXPIMPITEM, /POEXPIMPITEMX, /POTEXTHEADER, /EXTENSIONIN |
BAPI_PO_CHANGE |
Wird zum Aktualisieren von Werten auf einer bestehenden Bestellung verwendet. | /POHEADER, /POHEADERX, /POITEM, /POITEMX, /POSCHEDULE, /POSCHEDULEX, /POCOND, /POCONDX, /POEXPIMPITEM, /POEXPIMPITEMX, /POTEXTHEADER, /EXTENSIONIN, /POPARTNER |
BAPI_PO_RELEASE |
Wird zum Freigeben einer Bestellung nach deren Bearbeitung verwendet. | — |
BAPI_PO_GETDETAIL |
Wird zum Abrufen der Kopfzeilennoten und Textwerte auf der Bestellung verwendet. | _PO_GETDETAIL/RETURN, PO_HEADER_TEXTS |
BAPI_SALESORDER_CREATEFROMDAT2 |
Wird zum Erstellen von Verkaufsaufträgen verwendet. | /ORDER_HEADER_IN, /ORDER_PARTNERS, /ORDER_ITEMS_IN, /ORDER_SCHEDULES_IN, /RETURN |
BAPI_CONTRACT_CREATEFROMDATA |
Wird zum Erstellen von Verträgen verwendet. | /CONTRACT_HEADER_IN, /CONTRACT_PARTNERS, /CONTRACT_PARTNERS, /CONTRACT_ITEMS_IN |
BAPI_EXCHANGERATE_GETDETAIL |
Wird zum Abrufen von Währungswechselkursen verwendet. | — |
Z_ADAPT_DATA_EXTRACT |
Ein benutzerdefiniertes Funktionsmodul zum Abrufen von Investitionsplaninformationen. | — |
Fehlerbehebung
Falls ein BAPI- oder benutzerdefiniertes Funktionsmodul mit einem Fehler Procedure not found nicht ausgeführt werden kann, bestätigen Sie Folgendes:
-
Die Voraussetzungen (das SAP NetWeaver RFC SDK und das Microsoft Visual C++ Redistributable) sind auf dem Server installiert, auf dem App Builder ausgeführt wird.
-
Der Name des Funktionsmoduls wird durch die erweiterte Eigenschaft
StoredProcedureFilterder Datenserververbindung abgedeckt. Siehe Benutzerdefinierte Funktionsmodule suchen. -
Das benutzerdefinierte Funktionsmodul existiert und ist auf dem SAP-Zielsystem aktiv. Ein benutzerdefiniertes Funktionsmodul (z. B. eines mit dem Präfix
ZoderZZ) ist auf einem bestimmten SAP-System nur verfügbar, nachdem der Transport, das es enthält, dort importiert wurde. Wenden Sie sich an den SAP-Administrator, oder überprüfen Sie das Funktionsmodul direkt mit dem Function Builder (SE37) oder dem Object Navigator (SE80), um zu bestätigen, dass es vorhanden und aktiv ist. Falls dies nicht der Fall ist, muss der entsprechende SAP-Transport in diese Umgebung importiert werden, bevor er aufgerufen werden kann. -
Der SAP-Benutzer, der auf der Datenserververbindung konfiguriert ist, hat die
S_RFC-Berechtigung für das Funktionsmodul. Das AutorisierungsobjektS_RFCwird nach Funktionsgruppe und nicht nach dem Namen des einzelnen Funktionsmoduls überprüft. Daher muss die SAP-Rolle des BenutzersS_RFCmitRFC_TYPEaufFUGRundRFC_NAMEauf die Funktionsgruppe, die das benutzerdefinierte Funktionsmodul enthält, gewährt werden – nicht mit einem Platzhalter für den Modulnamen selbst. -
Aktivieren Sie Datenprotokollierung, um Protokolldateien und Daten zu generieren, die heruntergeladen und überprüft werden können.
-
Weitere Informationen finden Sie in der CData ADO.NET Provider for SAP ERP-Dokumentation.