Partager via


Recevoir des appels RFC entrants à partir de SAP à l’aide de BizTalk Server

Dans un scénario de serveur RFC, il existe trois entités :

  • Client SAP qui envoie une demande à SAP pour appeler une RFC. Cela peut être appelé à l’aide de l’interface utilisateur graphique SAP ou en effectuant un appel client RFC via l’adaptateur SAP.

  • Système SAP qui contient une définition de fonction RFC appelée par le client SAP. Le système SAP transmet la demande au serveur RFC (l’adaptateur). Il est utilisé par l’adaptateur pour obtenir les métadonnées de l’appel RFC que le serveur SAP effectue dans l’adaptateur.

  • Adaptateur SAP qui agit en tant que serveur RFC et héberge le RFC réel.

    La première entité, le client SAP, n’est pas abordée dans cette rubrique. Si vous utilisez l’interface utilisateur graphique SAP pour appeler une RFC, reportez-vous à la documentation SAP. Si vous utilisez l’adaptateur SAP pour appeler une RFC, consultez Appeler des RFC dans SAP à l’aide de BizTalk Server.

    Cette section fournit des instructions sur l’utilisation de l’adaptateur pour recevoir un appel de serveur RFC, une fois que le RFC est appelé par un client SAP. Pour plus d’informations sur la façon dont l’adaptateur prend en charge la réception d’appels de serveur RFC à l’aide de l’adaptateur SAP, consultez Opérations sur les RFC dans SAP.

Comment recevoir un appel RFC entrant à partir du système SAP ?

L’exécution d’une opération sur un système SAP à l’aide de BizTalk Server implique des tâches procédurales décrites dans les blocs de construction pour créer des applications SAP. Pour recevoir un appel RFC du système SAP, ces tâches sont les suivantes :

  1. Configurez votre système SAP pour envoyer RFC à une application externe, dans ce cas l’adaptateur SAP.

  2. Créez un projet BizTalk et générez un schéma pour la RFC que l’adaptateur SAP recevra du système SAP.

  3. Créez des messages dans le projet BizTalk pour recevoir des messages du système SAP et envoyer des réponses.

  4. Créez une orchestration pour recevoir une RFC à partir du système SAP, traitez-le et envoyez la réponse au système SAP.

  5. Générez et déployez le projet BizTalk.

  6. Configurez l’application BizTalk en créant des ports d’envoi et de réception physiques.

  7. Démarrez l’application BizTalk.

    Cette rubrique fournit des instructions pour effectuer ces tâches.

Activités sur le système SAP

Avant d’utiliser l’adaptateur SAP pour recevoir des appels RFC entrants du système SAP, veillez à effectuer les tâches suivantes sur le système SAP.

  • Une destination RFC pour l’adaptateur SAP doit exister. L’adaptateur SAP reçoit des RFC du système SAP via une destination RFC définie sur le système SAP. La destination RFC contient l’hôte de passerelle SAP, le service de passerelle SAP et l’ID de programme SAP que vous devez spécifier dans l’URI de connexion dans votre code. Pour plus d’informations sur la configuration d’une destination RFC sur SAP, consultez Créer une RFC, une destination RFC et envoyer une RFC à partir du système SAP.

  • Vous devez créer un module de fonction qui définit la RFC sur le système SAP. L’adaptateur SAP utilise la définition RFC sur le système SAP pour récupérer les métadonnées relatives au RFC (au moment du design et au moment de l’exécution). Pour plus d’informations, consultez Création d’une RFC dans un système SAP.

    Voici un exemple de code source sur le système SAP pour une RFC qui ajoute deux entiers et retourne leur résultat. Le code appelle simplement le RFC via une destination spécifiée. L’implémentation de la fonction est effectuée par le code client de l’adaptateur SAP.

    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.  
    

Exemple basé sur cette rubrique

Un exemple, RFCServer, basé sur cette rubrique, est également fourni avec le pack d’adaptateurs BizTalk. Pour plus d’informations, consultez Exemples pour l’adaptateur SAP.

Génération du schéma

Dans cette rubrique, pour montrer comment recevoir un appel RFC entrant à partir du système SAP, nous générons le schéma pour Z_RFC_ADD RFC. Vous avez créé cette RFC à l’étape précédente. Cette RFC prend deux valeurs entières comme paramètres d’entrée.

Consultez Parcourir, rechercher et obtenir des métadonnées pour les opérations RFC dans SAP pour obtenir des instructions sur la façon de générer un schéma pour un RFC particulier.

Important

Étant donné que vous générez le schéma pour un appel RFC entrant, veillez à sélectionner Service (opération entrante) dans la liste déroulante Sélectionner le type de contrat dans le complément de projet BizTalk du service d’adaptateur.

Définition des messages et des types de messages

Le schéma que vous avez généré précédemment décrit les « types » requis pour les messages dans l’orchestration. Un message est généralement une variable, dont le type est défini par le schéma correspondant. Vous devez lier le schéma que vous avez généré à la première étape aux messages de la vue Orchestration du projet BizTalk.

Pour cette rubrique, vous devez créer deux messages : un pour recevoir des messages du système SAP et l’autre pour envoyer une réponse au système SAP.

Procédez comme suit pour créer des messages et les lier au schéma :

  1. Ajoutez une nouvelle orchestration au projet BizTalk.

  2. Ouvrez l’affichage orchestration du projet BizTalk, s’il n’est pas déjà ouvert. Cliquez sur Affichage, pointez sur Autres fenêtres, puis cliquez sur Mode Orchestration.

  3. Dans l’affichage Orchestration, cliquez avec le bouton droit sur Messages, puis cliquez sur Nouveau message.

  4. Cliquez avec le bouton droit sur le message nouvellement créé et sélectionnez Fenêtre Propriétés.

  5. Dans le volet Propriétés de Message_1, procédez comme suit.

    Utiliser cette option Pour ce faire
    Identificateur Tapez Demande.
    Type de message Dans la liste déroulante, développez Schémas et sélectionnez RFCServer.SAPBindingSchema.Z_RFC_ADD, où RFCServer est le nom de votre projet BizTalk. SAPBindingSchema est le schéma généré pour la Z_RFC_ADD RFC.
  6. Répétez l’étape 2 pour créer un message. Dans le volet Propriétés du nouveau message, procédez comme suit.

    Utiliser cette option Pour ce faire
    Identificateur Tapez Réponse.
    Type de message Dans la liste déroulante, développez Schémas, puis sélectionnez RFCServer.SAPBindingSchema.Z_RFC_ADDResponse.

Configuration de l’orchestration

Vous devez créer une orchestration BizTalk pour utiliser BizTalk Server pour recevoir des appels de serveur RFC à partir du système SAP. Pour cet exemple, envisagez un scénario dans lequel un client RFC envoie une demande au système SAP pour ajouter deux entiers. Le système SAP accepte la demande, avec les paramètres d’entrée et le transmet au serveur RFC externe hébergé par l’adaptateur SAP. L’adaptateur SAP reçoit la demande du système SAP, traite la demande pour ajouter deux entiers et génère une réponse. L’adaptateur SAP transmet la réponse au système SAP, qui, à son tour, est transmis au client RFC.

Pour ce faire dans le cadre d’une orchestration, l’orchestration doit contenir :

  • Port de réception bidirectionnel pour recevoir la demande de serveur RFC du système SAP et envoyer la réponse.

  • Envoyer et recevoir des formes.

  • Créez une forme Message et, dans celle-ci, une forme Message Assignment pour traiter la demande du serveur RFC provenant du système SAP.

    Un exemple d’orchestration pour un appel de serveur RFC ressemble à ce qui suit.

    Orchestration pour appeler le serveur RFC

Ajout de formes de message

Veillez à spécifier les propriétés suivantes pour chacune des formes de message. Les noms répertoriés dans la colonne Forme sont les noms des formes de message comme indiqué dans l’orchestration précédente.

Forme Type de forme Propriétés
ListenToSAP Recevoir - Définir Nom sur ListenToSAP
- Définir Activer sur True
SendResponse Envoyer - Définir Nom sur SendResponse

Ajout d’une forme de message de construction

Pour traiter l’appel RFC entrant pour ajouter deux nombres entiers, vous devez ajouter un élément Construire un message, et à l'intérieur de celui-ci, un élément Affectation de message à votre orchestration, entre les deux éléments d’envoi. Pour cet exemple, la forme d'affectation de message ajoute deux entiers. Le modèle d'Affectation de Message définit également l’action de manière à ce que la réponse soit envoyée au système SAP.

Pour la forme Construire un message, définissez la propriété Message construit sur Réponse.

Le code permettant de traiter la requête RFC peut faire partie de la même solution Visual Studio que votre projet BizTalk. Un exemple de code pour l’ajout de deux entiers ressemble à ceci.

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;  
        }  
    }  
}  

Remarque

Une fois que vous aurez construit le projet, RFCServerResponseCreator.dll sera créé dans le répertoire du projet. Vous devez ajouter cette DLL au Global Assembly Cache (GAC).

Ajoutez l’expression suivante pour invoquer ce code à partir de la forme 'Affectation de message' et définir l'action pour la réponse envoyée au système SAP. Pour ajouter une expression, double-cliquez sur la forme Affectation de message pour ouvrir l’Éditeur d’expression.

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

Important

Vous devez définir explicitement l’action sur le message de réponse. Si vous ne définissez pas l’action, l'adaptateur WCF-Custom détermine le message d'action en ajoutant « Réponse » à l'action de demande. Par conséquent, l’action du message de réponse devient http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADDResponse. Toutefois, sapBinding attend l’action de réponse en ajoutant « /response » à l’action de requête, par exemple http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADD/response.

Ajout de ports

Veillez à spécifier les propriétés suivantes pour le port logique. Le nom répertorié dans la colonne Port est le nom du port tel qu’il est affiché dans l’orchestration.

Port Propriétés
RFCServerPort - Attribuez Identifiant à RFCServerPort
- Définir le typesur RFCServerPortType
- Définir le modèle de communication sur Demande-Réponse
- Définir la direction de communication pour recevoir-envoyer

Spécifier des messages pour les formes d’action et se connecter aux ports

Le tableau suivant spécifie les propriétés et leurs valeurs à définir pour spécifier des messages pour les formes d’action et les lier aux ports. Les noms répertoriés dans la colonne Forme sont les noms des formes de message comme indiqué dans l’orchestration précédente.

Forme Propriétés
ListenToSAP - Définir Message sur Requête
- Définir l’opération sur RFCServerPort.Add.Request
SendResponse - Définir Message sur FuncResponse
- Définir l’opération sur RFCServerPort.Add.Response

Une fois que vous avez spécifié ces propriétés, les formes de message et les ports sont connectés et votre orchestration est terminée.

Vous devez maintenant générer la solution BizTalk, puis la déployer sur un serveur BizTalk. Pour plus d’informations, consultez Génération et exécution d’orchestrations.

Configuration de l’application BizTalk

Une fois que vous avez déployé le projet BizTalk, l’orchestration que vous avez créée précédemment est répertoriée sous le volet Orchestrations dans la console Administration de BizTalk Server. Vous devez utiliser la console Administration de BizTalk Server pour configurer l’application. Pour plus d’informations sur la configuration d’une application, consultez Comment configurer une application.

La configuration d’une application implique :

  • Sélection d’un hôte pour l’application.

  • Associez les ports que vous avez créés dans votre orchestration aux ports physiques dans la console d'administration de BizTalk Server. Pour cette orchestration, vous devez :

    • Définissez un port de réception WCF-Custom ou WCF-SAP. Ce port reçoit des appels RFC entrants du système SAP et renvoie la réponse au système SAP. Pour plus d’informations sur la création de ports, consultez Configurer manuellement une liaison de port physique sur l’adaptateur SAP.

      Remarque

      La génération du schéma à l'aide du module complémentaire de projet BizTalk "Service d'adaptateur Consume" crée également un fichier de liaison contenant des informations sur les ports et les actions à définir pour ces ports. Vous pouvez importer ce fichier de liaison à partir de la console d’administration BizTalk pour créer des ports d’envoi (pour les appels sortants) ou recevoir des ports (pour les appels entrants). Pour plus d’informations, consultez Configurer une liaison de port physique à l’aide d’un fichier de liaison de port vers SAP.

    Vous devez également ajouter l’assembly pour le projet RFCServerResponseCreator à votre application BizTalk. Vous avez créé ce projet pour traiter l’appel RFC reçu du système SAP. Pour ce faire :

  1. Dans l’arborescence de la console située à gauche de la console Administration de BizTalk Server, sous l’application BizTalk où vous avez importé les liaisons, cliquez avec le bouton droit sur Ressources, pointez sur Ajouter, puis cliquez sur Assemblys BizTalk.

  2. Dans la boîte de dialogue Ajouter des ressources , cliquez sur Ajouter, puis accédez au dossier contenant RFCServerResponseCreator.dll. Sélectionnez le fichier, puis cliquez sur Ouvrir.

  3. Dans la boîte de dialogue Ajouter des ressources , cliquez sur OK.

Démarrage de l’application

Vous devez démarrer l’application BizTalk pour recevoir des appels RFC entrants à partir d’un système SAP. Pour obtenir des instructions sur le démarrage d’une application BizTalk, consultez Comment démarrer une orchestration et Comment démarrer une application.

À ce stade, assurez-vous que :

  • Le port de réception WCF-Custom ou WCF-SAP pour recevoir des appels RFC du système SAP est en cours d’exécution.

  • L’orchestration de BizTalk pour l’opération est en cours.

Exécution de l’opération

Après avoir exécuté l’application, vous devez envoyer une RFC à l’adaptateur SAP. Pour ce faire, exécutez la transaction SE37 sur le système SAP. Vous devez également spécifier les paramètres d’entrée pour l’appel RFC. L’adaptateur reçoit l’appel avec les paramètres, le traite et renvoie la réponse au système SAP. Vous serez en mesure de voir la réponse sur la même transaction à partir de laquelle vous avez envoyé le RFC.

Exceptions possibles

Pour plus d’informations sur les exceptions que vous pouvez rencontrer lors de la réception d’un appel de serveur RFC à partir d’un système SAP à l’aide de BizTalk Server, consultez Exceptions et Gestion des erreurs avec l’adaptateur SAP.

Meilleures pratiques

Une fois que vous avez déployé et configuré le projet BizTalk, vous pouvez exporter les paramètres de configuration vers un fichier XML appelé fichier de liaisons. Une fois que vous avez généré un fichier de liaisons, vous pouvez importer les paramètres de configuration à partir du fichier afin que vous n’ayez pas besoin de créer les ports d’envoi, les ports de réception, etc. pour la même orchestration. Pour plus d’informations sur les fichiers de liaison, consultez Réutiliser les liaisons d’adaptateur SAP.

Voir aussi

Développer des applications BizTalk