Freigeben über


Empfangen eingehender RFC-Aufrufe von SAP mithilfe von BizTalk Server

In einem RFC-Serverszenario gibt es drei Entitäten:

  • Ein SAP-Client, der eine Anforderung an SAP sendet, um einen RFC aufzurufen. Dies kann entweder mithilfe der SAP-GUI oder durch Einen RFC-Clientaufruf über den SAP-Adapter aufgerufen werden.

  • Das SAP-System, das eine RFC-Funktionsdefinition enthält, die der SAP-Client aufruft. Das SAP-System übergibt die Anforderung an den RFC-Server (den Adapter). Dies wird vom Adapter verwendet, um die Metadaten des RFC-Aufrufs abzurufen, den der SAP-Server in den Adapter eingibt.

  • Der SAP-Adapter, der als RFC-Server fungiert und den tatsächlichen RFC hosten soll.

    Die erste Entität, der SAP-Client, wird in diesem Thema nicht behandelt. Wenn Sie die SAP-GUI zum Aufrufen eines RFC verwenden, lesen Sie die SAP-Dokumentation. Wenn Sie den SAP-Adapter zum Aufrufen eines RFC verwenden, lesen Sie "Aufrufen von RFCs in SAP mithilfe von BizTalk Server".

    Dieser Abschnitt enthält Anweisungen zum Verwenden des Adapters zum Empfangen eines RFC-Serveraufrufs, sobald der RFC von einem SAP-Client aufgerufen wird. Weitere Informationen dazu, wie der Adapter RFC-Serveraufrufe mithilfe des SAP-Adapters unterstützt, finden Sie unter Operations on RFCs in SAP.

Wie erhalte ich einen eingehenden RFC-Anruf vom SAP-System?

Das Ausführen eines Vorgangs auf einem SAP-System mit BizTalk Server umfasst Verfahrensaufgaben, die in Bausteinen zum Erstellen von SAP-Anwendungen beschrieben werden. Zum Empfangen eines RFC-Aufrufs vom SAP-System sind die folgenden Schritte:

  1. Konfigurieren Sie Ihr SAP-System so, dass RFC an eine externe Anwendung gesendet wird, in diesem Fall der SAP-Adapter.

  2. Erstellen Sie ein BizTalk-Projekt und generieren Sie ein Schema für das RFC, das der SAP-Adapter vom SAP-System empfängt.

  3. Erstellen Sie Nachrichten im BizTalk-Projekt zum Empfangen von Nachrichten aus dem SAP-System und zum Senden von Antworten.

  4. Erstellen Sie eine Orchestrierung, um einen RFC vom SAP-System zu erhalten, zu verarbeiten und die Antwort an das SAP-System zu senden.

  5. Erstellen und Bereitstellen des BizTalk-Projekts.

  6. Konfigurieren Sie die BizTalk-Anwendung, indem Sie physische Sende- und Empfangsports erstellen.

  7. Starten Sie die BizTalk-Anwendung.

    Dieses Thema enthält Anweisungen zum Ausführen dieser Aufgaben.

Aktivitäten im SAP-System

Bevor Sie den SAP-Adapter verwenden, um eingehende RFC-Aufrufe vom SAP-System zu empfangen, stellen Sie sicher, dass Sie die folgenden Aufgaben im SAP-System ausführen.

  • Ein RFC-Ziel für den SAP-Adapter muss vorhanden sein. Der SAP-Adapter empfängt RFCs vom SAP-System über ein RFC-Ziel, das im SAP-System definiert ist. Das RFC-Ziel enthält den SAP-Gatewayhost, den SAP-Gatewaydienst und die SAP-Programm-ID, die Sie im Verbindungs-URI im Code angeben müssen. Informationen zum Einrichten eines RFC-Ziels im SAP-System finden Sie unter Erstellen eines RFCs, eines RFC-Ziels und Senden eines RFCs aus dem SAP-System.

  • Sie müssen ein Funktionsmodul erstellen, das rfc im SAP-System definiert. Der SAP-Adapter verwendet die RFC-Definition im SAP-System zum Abrufen von Metadaten zu RFC (sowohl zur Entwurfszeit als auch zur Laufzeit). Weitere Informationen finden Sie unter Erstellen eines RFC in einem SAP-System.

    Im Folgenden sehen Sie ein Beispiel für den Quellcode im SAP-System für einen RFC, der zwei ganze Zahlen hinzufügt und ihr Ergebnis zurückgibt. Der Code ruft lediglich den RFC über ein angegebenes Ziel auf. Die Implementierung der Funktion erfolgt durch den SAP-Adapterclientcode.

    FUNCTION Z_RFC_ADD.  
    *"------------------------------------------------------------------  
    *"  
    *"Local interface:  
    *"  IMPORTING  
    *"     VALUE(X) TYPE  INT4  
    *"     VALUE(Y) TYPE  INT4  
    *"     VALUE(DEST) TYPE  CHAR20 DEFAULT 'SAPADAPTER'  
    *"  EXPORTING  
    *"     VALUE(RESULT) TYPE  INT4  
    *"------------------------------------------------------------------  
    CALL FUNCTION 'Z_RFC_ADD' DESTINATION DEST  
      EXPORTING X = X  
                Y = Y  
      IMPORTING RESULT = RESULT.  
    
    ENDFUNCTION.  
    

Beispiel basierend auf diesem Thema

Ein Beispiel, RFCServer, basierend auf diesem Thema, wird auch mit dem BizTalk Adapter Pack bereitgestellt. Weitere Informationen finden Sie unter Beispiele für den SAP-Adapter.

Generieren des Schemas

In diesem Thema wird demonstriert, wie ein eingehender RFC-Aufruf aus dem SAP-System empfangen wird und das Schema für den Z_RFC_ADD RFC erzeugt wird. Sie haben diesen RFC im vorherigen Schritt erstellt. Dieser RFC akzeptiert zwei ganzzahlige Werte als Eingabeparameter.

Anweisungen zum Generieren von Schemas für ein bestimmtes RFC finden Sie unter Durchsuchen, Suchen und Abrufen von Metadaten für RFC-Vorgänge in SAP .

Von Bedeutung

Da Sie das Schema für einen eingehenden RFC-Aufruf generieren, stellen Sie sicher, dass Sie "Dienst ( Eingehender Vorgang)" in der Dropdownliste " Vertragstyp auswählen" im Add-In "Verbrauchsadapterdienst BizTalk-Projekt" auswählen.

Definieren von Nachrichten und Nachrichtentypen

Das Schema, das Sie früher generiert haben, beschreibt die für die Nachrichten in der Orchestrierung erforderlichen "Typen". Eine Nachricht ist in der Regel eine Variable, deren Typ durch das entsprechende Schema definiert wird. Sie müssen das im ersten Schritt generierte Schema mit den Nachrichten aus der Orchestrierungsansicht des BizTalk-Projekts verknüpfen.

Für dieses Thema müssen Sie zwei Nachrichten erstellen– eine zum Empfangen von Nachrichten aus dem SAP-System und das andere, um eine Antwort an das SAP-System zu senden.

Führen Sie die folgenden Schritte aus, um Nachrichten zu erstellen und mit dem Schema zu verknüpfen:

  1. Fügen Sie dem BizTalk-Projekt eine neue Orchestrierung hinzu.

  2. Öffnen Sie die Orchestrierungsansicht des BizTalk-Projekts, falls noch nicht geöffnet. Klicken Sie auf "Ansicht", zeigen Sie auf "Andere Fenster", und klicken Sie auf "Orchestrierungsansicht".

  3. Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf "Nachrichten", und klicken Sie dann auf "Neue Nachricht".

  4. Klicken Sie mit der rechten Maustaste auf die neu erstellte Nachricht, und wählen Sie "Eigenschaftenfenster" aus.

  5. Gehen Sie im Eigenschaftenbereich für Message_1 wie folgt vor.

    Verwenden Sie diese Aktion
    Kennung Geben Sie "Anforderung" ein.
    Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie RFCServer.SAPBindingSchema.Z_RFC_ADD aus, wobei RFCServer der Name Ihres BizTalk-Projekts ist. SAPBindingSchema ist das Schema, das für die RFC-Z_RFC_ADD generiert wird.
  6. Wiederholen Sie Schritt 2, um eine neue Nachricht zu erstellen. Gehen Sie im Eigenschaftenbereich für die neue Nachricht wie folgt vor.

    Verwenden Sie diese Aktion
    Kennung Geben Sie "Antwort" ein.
    Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie RFCServer.SAPBindingSchema.Z_RFC_ADDResponse aus.

Einrichten der Orchestrierung

Sie müssen eine BizTalk-Orchestrierung erstellen, um BizTalk Server für den Empfang von RFC-Serveraufrufen aus dem SAP-System zu verwenden. Betrachten Sie in diesem Beispiel ein Szenario, in dem ein RFC-Client eine Anforderung an das SAP-System sendet, um zwei ganze Zahlen hinzuzufügen. Das SAP-System übernimmt die Anforderung mit den Eingabeparametern und übergibt sie an den externen RFC-Server, der vom SAP-Adapter gehostet wird. Der SAP-Adapter empfängt die Anforderung vom SAP-System, verarbeitet die Anforderung, zwei ganze Zahlen hinzuzufügen, und generiert eine Antwort. Der SAP-Adapter übergibt die Antwort an das SAP-System, das wiederum an den RFC-Client übergeben wird.

Um dies als Teil einer Orchestrierung zu erreichen, muss die Orchestrierung Folgendes enthalten:

  • Ein Empfangsport für den Empfang von RFC-Serveranforderungen aus dem SAP-System und das Senden der Antwort.

  • Senden und Empfangen von Formen.

  • Erstellen Sie die Nachrichtenform und innerhalb dieser Nachrichtenform eine Nachrichtenzuweisung, um die Anforderung des RFC-Servers aus dem SAP-System zu verarbeiten.

    Eine Beispiel-Orchestrierung für einen RFC-Serveraufruf ähnelt dem folgenden.

    Orchestrierung für RFC-Serveraufruf

Hinzufügen von Nachrichtenformen

Stellen Sie sicher, dass Sie die folgenden Eigenschaften für die einzelnen Nachrichten-Shapes angeben. Die in der Spalte "Form " aufgeführten Namen sind die Namen der Nachrichten-Shapes, die in der vorherigen Orchestrierung angezeigt werden.

Gestalt Shape-Typ Eigenschaften
ListenToSAP Empfangen - Name aufListenToSAP festlegen
- Setze Aktivieren auf True
SendResponse Senden - Name auf SendResponse setzen

Hinzufügen eines Message-Shape-Konstrukts

Um den eingehenden RFC-Aufruf zu verarbeiten und zwei ganzzahlige Werte hinzuzufügen, müssen Sie zwischen den beiden Sende-Shapes Ihrer Orchestrierung ein "Construct Message"-Shape und darin ein "Message Assignment"-Shape hinzufügen. In diesem Beispiel wird das Shape "Nachrichtenzuweisung" aufgerufen, um zwei ganze Zahlen zu addieren. Das Shape "Nachrichtenzuweisung" legt auch das Verfahren für die Antwort fest, die an das SAP-System gesendet werden soll.

Legen Sie für das Shape " Nachricht erstellen" die Eigenschaft "Message Constructed " auf "Response" fest.

Der Code zum Verarbeiten der RFC-Anforderung kann Teil derselben Visual Studio-Lösung wie Ihr BizTalk-Projekt sein. Ein Beispielcode zum Hinzufügen von zwei ganzzahligen Zahlen sieht wie folgt aus.

namespace RFCServerResponseCreator  
{  
    public class RFCServerResponseCreator  
    {  
        private static XmlDocument messageIn;  
        private static XmlDocument messageOut;  
        public static XmlDocument CreateRequest(int a, int b, string destination)  
        {  
            messageIn = new XmlDocument();  
            messageIn.LoadXml(  "<Z_RFC_ADD xmlns=\"http://Microsoft.LobServices.Sap/2007/03/Rfc/\">" +  
                                "<DEST>" + destination + "</DEST>" +  
                                "<X>" + a + "</X>" +  
                                "<Y>" + b + "</Y>" +   
                                "</Z_RFC_ADD>"  
                             );  
            return messageIn;  
        }  
        public static XmlDocument CreateResponse(int a, int b)  
        {  
            int c = a + b;  
            messageOut = new XmlDocument();  
            messageOut.LoadXml( "<Z_RFC_ADDResponse xmlns=\"http://Microsoft.LobServices.Sap/2007/03/Rfc/\">" +  
                                "<RESULT>" + c + "</RESULT>" +   
                                "</Z_RFC_ADDResponse>"  
                              );  
            return messageOut;  
        }  
    }  
}  

Hinweis

Nachdem Sie das Projekt erstellt haben, wird RFCServerResponseCreator.dll im Projektverzeichnis erstellt. Sie müssen diese DLL dem globalen Assemblycache (GAC) hinzufügen.

Fügen Sie den folgenden Ausdruck hinzu, um diesen Code aus dem Shape "Nachrichtenzuweisung" aufzurufen und die Aktion für die an das SAP-System gesendete Antwort festzulegen. Um einen Ausdruck hinzuzufügen, doppelklicken Sie auf das Shape "Nachrichtenzuweisung", um den Ausdrucks-Editor zu öffnen.

Response = RFCServerResponseCreator.RFCServerResponseCreator.CreateResponse(Request.X, Request.Y);  
Response(WCF.Action) = "http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADD/response";  

Von Bedeutung

Sie müssen die Aktion für die Antwortnachricht explizit festlegen. Wenn Sie die Aktion nicht festlegen, fügt der WCF-Custom-Adapter an die Anforderungsaktion "Antwort" hinzu und gelangt so zur Aktionsnachricht. Die Aktion für die Antwortnachricht wird also zu http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADDResponse. Das sapBinding erwartet jedoch die Antwortaktion, indem "/response" an die Anforderungsaktion angefügt wird, z. B. http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADD/response.

Hinzufügen von Ports

Stellen Sie sicher, dass Sie die folgenden Eigenschaften für den logischen Port angeben. Der in der Spalte "Port" aufgeführte Name ist der Name des Ports, wie er in der Orchestrierung angezeigt wird.

Hafen Eigenschaften
RFCServerPort - Bezeichner auf RFCServerPort festlegen
- Setzen Sie Type auf RFCServerPortType
- Kommunikationsmuster auf Anfrage-Antwort festlegen
- Kommunikationsrichtung auf "Empfangen senden" festlegen

Angeben von Nachrichten für Aktions-Shapes und Verbinden mit Ports

In der folgenden Tabelle werden die Eigenschaften und deren Werte angegeben, um Nachrichten für Aktions-Shapes anzugeben und sie mit den Ports zu verknüpfen. Die in der Spalte "Form " aufgeführten Namen sind die Namen der Nachrichten-Shapes, die in der vorherigen Orchestrierung angezeigt werden.

Gestalt Eigenschaften
ListenToSAP - Nachricht auf Anforderung festlegen
- Vorgang auf RFCServerPort.Add.Request festlegen
SendResponse - Nachricht auf FuncResponse festlegen
- Set Operation auf RFCServerPort.Add.Response

Nachdem Sie diese Eigenschaften angegeben haben, sind die Nachrichtenformen und Ports verbunden, und die Orchestrierung ist abgeschlossen.

Sie müssen nun die BizTalk-Lösung erstellen und dann auf einem BizTalk Server bereitstellen. Weitere Informationen finden Sie unter Building and Running Orchestrations.

Konfigurieren der BizTalk-Anwendung

Nachdem Sie das BizTalk-Projekt bereitgestellt haben, wird die zuvor erstellte Orchestrierung im Bereich "Orchestrierungen " in der BizTalk Server-Verwaltungskonsole aufgeführt. Sie müssen die BizTalk Server-Verwaltungskonsole verwenden, um die Anwendung zu konfigurieren. Weitere Informationen zum Konfigurieren einer Anwendung finden Sie unter "Konfigurieren einer Anwendung".

Das Konfigurieren einer Anwendung umfasst Folgendes:

  • Auswählen eines Hosts für die Anwendung.

  • Zuordnen der ports, die Sie in Ihrer Orchestrierung erstellt haben, zu physischen Ports in der BizTalk Server-Verwaltungskonsole. Für diese Orchestrierung müssen Sie:

    • Definieren Sie einen WCF-Custom- oder WCF-SAP-Empfangsport. Dieser Port empfängt eingehende RFC-Aufrufe vom SAP-System und sendet die Antwort an das SAP-System zurück. Informationen zum Erstellen von Ports finden Sie unter Manuelles Konfigurieren einer physischen Portbindung an den SAP-Adapter.

      Hinweis

      Durch das Generieren des Schemas mithilfe des Add-Ins "Verbrauchsadapterdienst BizTalk Project" wird auch eine Bindungsdatei erstellt, die Informationen zu den Ports und den aktionen enthält, die für diese Ports festgelegt werden sollen. Sie können diese Bindungsdatei aus der BizTalk-Verwaltungskonsole importieren, um Sendeports (für ausgehende Anrufe) oder Empfangsports (für eingehende Anrufe) zu erstellen. Weitere Informationen finden Sie unter Konfigurieren einer physischen Portbindung mithilfe einer Portbindungsdatei zu SAP.

    Sie müssen der BizTalk-Anwendung auch die Assembly für das RFCServerResponseCreator-Projekt hinzufügen. Sie haben dieses Projekt erstellt, um den VOM SAP-System empfangenen RFC-Aufruf zu verarbeiten. Gehen Sie folgendermaßen vor:

  1. Klicken Sie in der Konsolenstruktur auf der linken Seite der BizTalk Server-Verwaltungskonsole unter der BizTalk-Anwendung, in der Sie die Bindungen importiert haben, mit der rechten Maustaste auf "Ressourcen", zeigen Sie auf "Hinzufügen", und klicken Sie dann auf "BizTalk-Assemblys".

  2. Klicken Sie im Dialogfeld "Ressourcen hinzufügen " auf "Hinzufügen", und navigieren Sie dann zu dem Ordner, der RFCServerResponseCreator.dllenthält. Wählen Sie die Datei aus, und klicken Sie dann auf Öffnen.

  3. Klicken Sie im Dialogfeld " Ressourcen hinzufügen " auf "OK".

Starten der Anwendung

Sie müssen die BizTalk-Anwendung zum Empfangen eingehender RFC-Aufrufe von einem SAP-System starten. Anweisungen zum Starten einer BizTalk-Anwendung finden Sie unter "So starten Sie eine Orchestrierung" und "Starten einer Anwendung".

Stellen Sie in dieser Phase folgendes sicher:

  • Der Empfangsport WCF-Custom oder WCF-SAP zum Empfangen von RFC-Aufrufen vom SAP-System ist in Betrieb.

  • Die BizTalk-Orchestrierung für den Vorgang wird ausgeführt.

Ausführen des Vorgangs

Nachdem Sie die Anwendung ausgeführt haben, müssen Sie einen RFC an den SAP-Adapter senden. Dazu führen Sie die Transaktion SE37 im SAP-System aus. Sie müssen auch die Eingabeparameter für den RFC-Aufruf angeben. Der Adapter empfängt den Aufruf zusammen mit den Parametern, verarbeitet ihn und sendet die Antwort an das SAP-System zurück. Sie können die Antwort für dieselbe Transaktion sehen, von der aus Sie den RFC gesendet haben.

Mögliche Ausnahmen

Informationen zu den Ausnahmen, die beim Empfangen eines RFC-Serveraufrufs von einem SAP-System mit BizTalk Server auftreten können, finden Sie unter Ausnahmen und Fehlerbehandlung mit dem SAP-Adapter.

Bewährte Methoden

Nachdem Sie das BizTalk-Projekt bereitgestellt und konfiguriert haben, können Sie Konfigurationseinstellungen in eine XML-Datei exportieren, die als Bindungsdatei bezeichnet wird. Nachdem Sie eine Bindungsdatei generiert haben, können Sie die Konfigurationseinstellungen aus der Datei importieren, sodass Sie keine Sendeports, Empfangsports usw. für dieselbe Orchestrierung erstellen müssen. Weitere Informationen zu Bindungsdateien finden Sie unter Wiederverwenden von SAP-Adapterbindungen.

Siehe auch

Entwickeln von BizTalk-Anwendungen