In SAP-Systemen können Sie Funktionen in anderen Anwendungen oder SAP-Systemen aufrufen, die bei SAP als RFC-Server (Server für ferne Funktionsaufrufe) registriert sind. In WebSphere Message Broker können Sie den SAP-Adapter bei SAP als RFC-Server registrieren, der dann sowohl synchrone als auch asynchrone Aufrufe von SAP empfangen kann.
In SAP ist eine BAPI-Schnittstelle ein Funktionsaufruf. Wenn ein System als RFC-Server mit SAP verbunden ist, können Sie die BAPI-Schnittstelle zur Definition der Schnittstelle verwenden, über die ein in SAP ausgeführtes Programm ein externes System aufrufen kann. Das externe System wird in SAP durch seinen RFCDestination-Wert identifiziert, der einer Programm-ID der SAP-Verwaltung zugeordnet ist. Die Programm-ID wird vom externen System angegeben, wenn es zum ersten Mal eine Verbindung mit SAP herstellt.
Über den WebSphere Adapter für SAP können Nachrichtenflüsse eine Verbindung zu SAP in der Funktion eines RFC-Servers herstellen. Hierfür wird der Adapter mit der entsprechenden Programm-ID konfiguriert und der Nachrichtenfluss wird auf dem Broker implementiert. Nach der Implementierung kann der Nachrichtenfluss über die BAPI-Schnittstelle synchrone Funktionsaufrufe empfangen.
Die BAPI-Importparameter werden vom Adapter empfangen und von einem SAPInput-Knoten als Nachrichtenbaumstruktur weitergeleitet. Die BAPI-Exportparameter werden als Nachrichtenbaumstruktur an einen SAPReply-Knoten weitergegeben. Der Adapter sendet die Exportparameter dann zurück an das aufrufende SAP-Programm. In diesem Fall befindet sich der SAPReply-Knoten in der Regel im gleichen Nachrichtenfluss wie der SAPInput-Knoten. Der SAPInput-Knoten stellt jedem BAPI-Aufruf eine eindeutige ID (die Antwort-ID) bereit. Die Antwort-ID wird an den SAPReply-Knoten (in der lokalen Umgebung) weitergegeben, damit dieser angeben kann, welcher BAPI-Aufruf beantwortet wird.
Wenn in der lokalen Umgebung keine Antwort-ID vorhanden ist, verwendet der SAPReply-Knoten automatisch die Antwort-ID des SAPInput-Knotens, durch den die aktuelle Ausführung des Nachrichtenflusses ausgelöst wurde. Wenn der Fluss nicht von einem SAPInput-Knoten ausgelöst wird oder es innerhalb des Flusses zu einer Unterbrechung kommt, wird ein Fehler ausgegeben. Eine nicht behandelte Ausnahme innerhalb des Nachrichtenflusses führt in SAP zu einem Systemfehler.
Selbst wenn die BAPI keine Ausgabeparameter erwartet, muss eine (leere) Nachricht an den SAPReply-Knoten geleitet werden.
Sie können zwei Aufrufe von SAP gleichzeitig verarbeiten, indem Sie für den Nachrichtenfluss eine weitere Instanz konfigurieren.
Szenario 1
Das folgende Diagramm zeigt einen Nachrichtenfluss, in dem WebSphere Message Broker eine Verknüpfung zwischen SAP und einer Zielanwendung bereitstellt (in diesem Fall DB2). Das SAP-Programm benötigt Antwortdaten und blockiert deswegen die weitere Verarbeitung bis zum Abschluss des Aufrufs.
Szenario 2
Auch das folgende Diagramm zeigt einen Nachrichtenfluss, in dem das SAP-Programm Antwortdaten benötigt. Hier erfolgen die Aufrufe zwischen WebSphere Message Broker und der Zielanwendung (in diesem Fall WebSphere MQ) jedoch asynchron. Auch hier blockiert das SAP-System die weitere Verarbeitung bis zum Abschluss des Aufrufs. Wenn der Wert der SAP-Eigenschaft Maximum client wait time (Maximale Clientwartezeit) nicht ausreicht oder die Eigenschaft auf 0 gesetzt ist, wird möglicherweise ein Zeitlimitfehler generiert. Weitere Informationen zur Eigenschaft Maximum client wait time des SAP-Empfangsknotens finden Sie im Abschnitt Maximale Clientwartezeit (Sekunden). Wenn Sie den SAPReply-Knoten in einem anderen Nachrichtenfluss als dem, der den SAPInput-Knoten enthält, verwenden, muss der SAPReply-Knoten in derselben Ausführungsgruppe wie der SAPInput-Knoten implementiert sein.
Szenario 3
Das folgende Diagramm zeigt einen asynchronen Aufruf von SAP an WebSphere Message Broker und einen asynchronen Aufruf von WebSphere Message Broker an eine Zielanwendung. Dieses Szenario zeigt, wie Sie die in diesem Abschnitt beschriebene Eingangsverarbeitung mit einer Ausgangsverarbeitung kombinieren können, um das gleiche Ergebnis wie in Szenario 1 und 2 zu erhalten. Weitere Informationen zur Ausgangsverarbeitung finden Sie im Abschnitt Verarbeitung abgehender Ereignisse für die BAPI-Schnittstelle.