Recevoir des appels RFC entrants de SAP à l’aide de BizTalk Server
Dans un scénario de serveur RFC, il existe trois entités :
Un 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 que le client SAP appelle. 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 fait office de serveur RFC et héberge la RFC réelle.
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 la RFC est appelée 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 Blocs de construction pour créer des applications SAP. Pour recevoir un appel RFC à partir du système SAP, les tâches suivantes sont les suivantes :
Configurez votre système SAP pour envoyer RFC à une application externe, dans ce cas l’adaptateur SAP.
Créez un projet BizTalk et générez le schéma pour la RFC que l’adaptateur SAP recevra du système SAP.
Créez des messages dans le projet BizTalk pour recevoir des messages du système SAP et envoyer des réponses.
Créez une orchestration pour recevoir une RFC du système SAP, la traiter et envoyer la réponse au système SAP.
Générez et déployez le projet BizTalk.
Configurez l’application BizTalk en créant des ports d’envoi et de réception physiques.
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 à partir 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 à la 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 la 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 une RFC particulière.
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 du 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 : l’un pour recevoir des messages du système SAP et l’autre pour envoyer une réponse au système SAP.
Effectuez les étapes suivantes pour créer des messages et les lier au schéma :
Pour créer des messages et créer un lien vers le schéma
Ajoutez une nouvelle orchestration au projet BizTalk.
Ouvrez la vue d’orchestration du projet BizTalk, s’il n’est pas déjà ouvert. Cliquez sur Affichage, pointez sur Autres fenêtres, puis cliquez sur Vue d’orchestration.
Dans la vue Orchestration, cliquez avec le bouton droit sur Messages, puis cliquez sur Nouveau message.
Cliquez avec le bouton droit sur le nouveau message de création, puis sélectionnez Fenêtre Propriétés.
Dans le volet Propriétés de Message_1, procédez comme suit.
Propriété Pour Identificateur Demande de type. Type de message Dans la liste déroulante, développez Schémas, puis 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 le Z_RFC_ADD RFC. Répétez l’étape 2 pour créer un message. Dans le volet Propriétés du nouveau message, procédez comme suit.
Propriété Pour Identificateur Réponse de type. 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, prenons l’exemple d’un scénario où 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 la 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 y parvenir dans le cadre d’une orchestration, l’orchestration doit contenir :
Port de réception bidirectionnel pour recevoir la demande du serveur RFC du système SAP et envoyer la réponse.
Envoyer et recevoir des formes.
Construisez la forme Message, et dans celle-ci une forme d’affectation de message, pour traiter la requête du serveur RFC provenant du système SAP.
Un exemple d’orchestration pour un appel de serveur RFC ressemble à ce qui suit.
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 affichées dans l’orchestration précédente.
Forme | Type de forme | Propriétés |
---|---|---|
ListenToSAP | Recevoir | - Définissez Name sur ListenToSAP - Définissez Activer sur True |
SendResponse | Envoyer | - Définissez Nom sur SendResponse |
Ajout d’une forme de message de construction
Pour traiter l’appel RFC entrant afin d’ajouter deux valeurs entières, vous devez ajouter une forme De message de construction et une forme d’affectation de message à votre orchestration, entre les deux formes d’envoi. Pour cet exemple, la forme Affectation de message appelle pour ajouter deux entiers. La forme Affectation de message définit également l’action de la réponse à envoyer au système SAP.
Pour la forme Construire un message, définissez la propriété Message construit surRé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;
}
}
}
Notes
Une fois le projet généré, RFCServerResponseCreator.dll est créé dans le répertoire du projet. Vous devez ajouter cette DLL au global assembly cache (GAC).
Ajoutez l’expression suivante pour appeler 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’expressions.
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, WCF-Custom'adaptateur arrive au message d’action en ajoutant « Réponse » à l’action de requête. 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’affiché dans l’orchestration.
Port | Propriétés |
---|---|
RFCServerPort | - Définissez Identificateur sur RFCServerPort - Définissez Type sur RFCServerPortType - Définir le modèle de communication sur Requête-réponse - Définir le sens de communication sur Receive-Send |
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 les messages des 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éfinissez Operation sur RFCServerPort.Add.Request |
SendResponse | - Définir Message sur FuncResponse - Définissez Operation sur RFCServerPort.Add.Response |
Une fois que vous avez spécifié ces propriétés, les formes et les ports de message sont connectés et votre orchestration est terminée.
Vous devez maintenant générer la solution BizTalk, puis la déployer sur un BizTalk Server. 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 BizTalk Server. Vous devez utiliser la console Administration 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.
Mappage des ports que vous avez créés dans votre orchestration aux ports physiques dans la console Administration BizTalk Server. Pour cette orchestration, vous devez :
Définissez un WCF-Custom ou un port de réception WCF-SAP. Ce port reçoit les 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 à l’adaptateur SAP.
Notes
La génération du schéma à l’aide du complément de projet BizTalk du service Consume Adapter 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 de réception (pour les appels entrants). Pour plus d’informations, consultez Configurer une liaison de port physique à l’aide d’un fichier de liaison de port à 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 cela, procédez de la façon suivante :
Dans l’arborescence de la console à gauche de la console d’administration 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.
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.
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 Guide pratique pour démarrer une orchestration et Comment démarrer une application.
À ce stade, assurez-vous que :
Le WCF-Custom ou le port de réception WCF-SAP pour recevoir des appels RFC à partir du système SAP est en cours d’exécution.
L’orchestration BizTalk pour l’opération est en cours d’exécution.
Exécution de l’opération
Après avoir exécuté l’application, vous devez envoyer un 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 ainsi que les paramètres, le traite et renvoie la réponse au système SAP. Vous pourrez 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.
Bonnes 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 de ne pas avoir à 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.