Appeler des tRFCs dans SAP à l’aide de BizTalk Server
Les appels de fonction distante transactionnelle (tRFC) garantissent une exécution unique et unique d’un RFC sur un système SAP. Vous pouvez appeler l’un des RFC exposés par l’adaptateur SAP en tant que tRFC. L’appel d’une tRFC est similaire à l’appel d’une RFC (voir Appeler des RFC dans SAP à l’aide de BizTalk Server) avec les différences suivantes :
L’adaptateur SAP expose les TRFCs sous un nœud différent (TRFC) de celui des RFC (RFC).
Les opérations tRFC incluent un paramètre GUID mappé à l’ID de transaction SAP pour le tRFC par l’adaptateur SAP.
Après avoir appelé une tRFC, vous devez appeler l’opération RfcConfirmTransID pour confirmer (valider) la tRFC sur le système SAP. Cette opération est exposée directement sous le nœud TRFC dans Le complément De service De consommation de l’adaptateur.
Pour plus d’informations sur la façon dont l’adaptateur SAP prend en charge l’appel d’un tRFC, consultez Opérations sur les TRFC dans SAP. Pour plus d’informations sur la structure des messages SOAP pour appeler un tRFC, consultez Schémas de message pour les opérations tRFC.
Comment appeler un tRFC dans un système SAP à l’aide de BizTalk Server ?
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 appeler un tRFC dans un système SAP, les tâches suivantes sont les suivantes :
Créez un projet BizTalk et générez le schéma pour le tRFC que vous souhaitez appeler dans le système SAP. Vous devez également générer le schéma pour l’opération RfcConfirmTransID afin de valider le TID dans le système SAP.
Créez des messages dans le projet BizTalk pour envoyer et recevoir des messages à partir du système SAP.
Créez une orchestration pour appeler une tRFC dans le système SAP, puis validez le TID créé dans le système SAP en réponse à l’appel tRFC par l’adaptateur 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.
Exemple basé sur cette rubrique
Un exemple, tRFCClient, basé sur cette rubrique, est également fourni avec le pack d’adaptateurs BizTalk. Pour plus d’informations, consultez Exemples de l’adaptateur SAP.
Génération du schéma
Dans cette rubrique, pour montrer comment appeler une tRFC à l’aide de l’adaptateur SAP, nous allons générer le schéma pour :
BAPI_SALESORDER_CREATEFROMDAT2 tRFC.
Opération RfcConfirmTransID. Vous devez utiliser cette opération pour valider le TID créé dans le système SAP. Une fois que le système SAP reçoit cet appel, il supprime le TID du système.
Pour plus d’informations sur la génération du schéma , consultez Parcourir, rechercher et obtenir des métadonnées pour les opérations tRFC dans SAP .
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é aux messages de la vue Orchestration du projet BizTalk.
Pour cette rubrique, vous devez créer quatre messages : un ensemble de messages demande-réponse pour appeler la tRFC et un autre ensemble de messages demande-réponse pour appeler l’opération RfcConfirmTransID.
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
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 le type de message. Par exemple, sélectionnez tRFC_Client.SAPBindingSchema1.BAPI_SALESORDER_CREATEFROMDAT2, où tRFC_Client est le nom de votre projet BizTalk. SAPBindingSchema1 est le schéma généré pour BAPI_SALESORDER_CREATEFROMDAT2. Répétez l’étape précédente pour créer trois messages supplémentaires. Dans le volet Propriétés des nouveaux messages, procédez comme suit.
Définissez Identificateur sur Définissez Type de message sur response tRFC_Client.SAPBindingSchema1.BAPI_SALESORDER_CREATEFROMDAT2Response TIDRequest tRFC_Client.SAPBindingSchema3.RfcConfirmTransID TIDResponse tRFC_Client.SAPBindingSchema3.RfcConfirmTransIDResponse
Configuration de l’orchestration
Vous devez créer une orchestration BizTalk pour utiliser BizTalk Server pour appeler des TRFC dans un système SAP. Dans cette orchestration, vous supprimez un message de demande à un emplacement de réception défini. L’orchestration consomme ce message et le transmet au système SAP. La réponse est reçue de SAP et est enregistrée à un autre emplacement. Le message de réponse contient un GUID. L’orchestration inclut une forme Construire un message pour extraire le GUID de la réponse et construire un message conforme au schéma de l’opération RfcConfirmTransID . Le message pour appeler l’opération RfcConfirmTransID est envoyé au système SAP avec le GUID en tant que paramètre _ Une orchestration classique pour appeler des TRFC dans un système SAP, suivie d’une opération RfcConfirmTransID contient :
Formes d’envoi et de réception pour envoyer des messages au système SAP et recevoir des réponses.
Une forme De construction de message et une forme d’affectation de message pour construire un message pour l’opération RfcConfirmTransID .
Port de réception unidirectionnel pour recevoir les messages de demande à envoyer au système SAP pour appeler le tRFC.
Port d’envoi bidirectionnel permettant d’envoyer des messages pour appeler le tRFC et recevoir la réponse.
Port d’envoi bidirectionnel permettant d’envoyer des messages pour appeler l’opération RfcConfirmTransID et recevoir la réponse.
Deux ports d’envoi unidirectionnel pour envoyer les réponses du système SAP à un dossier.
Un exemple d’orchestration ressemble à ce qui suit :
Ajout de formes de message
Spécifiez 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 |
---|---|---|
ReceiveXml | Recevoir | - Définissez Nom sur ReceiveXml - Définissez Activer sur True |
SendToLOB | Envoyer | - Définissez Nom sur SendToLOB |
ReceiveResponse | Recevoir | - Définissez Nom sur ReceiveResponse - Définissez Activer sur False |
SendResponse | Envoyer | - Définissez Name sur SendResponse |
SendTIDMsg | Envoyer | - Définissez Nom sur SendTIDMsg |
ReceiveTIDRsp | Recevoir | - Définissez Nom sur ReceiveTIDRsp - Définissez Activer sur False |
SendTIDRsp | Envoyer | - Définissez Nom sur SendTIDRsp |
Ajout de la forme de message de construction
La réponse du système SAP pour l’appel tRFC contient un GUID. Pour valider l’appel tRFC, vous devez passer le même GUID à l’opération RfcConfirmTransID. Pour ce faire, vous devez inclure une forme Construire un message et, dans cette forme, une forme d’affectation de message, dans l’orchestration. Ici, l’objectif de la forme Construire un message est :
Pour extraire le GUID de la réponse reçue du système SAP pour l’appel tRFC.
Pour construire un message conforme au schéma de message pour l’opération RfcConfirmTransID.
Pour la forme Construire un message, vous devez définir la propriété Message Construit surTIDRequest.
Vous devez ajouter l’extrait de code suivant à la forme Affectation de message :
XmlDoc = new System.Xml.XmlDocument();
XmlDoc.LoadXml("<RfcConfirmTransID xmlns='http://Microsoft.LobServices.Sap/2007/03/RfcApi/'><TransactionalRfcOperationIdentifier /></RfcConfirmTransID>");
TIDRequest = XmlDoc;
TIDRequest.TransactionalRfcOperationIdentifier = xpath(Response,"string(/*[local-name()='BAPI_SALESORDER_CREATEFROMDAT2Response']/*[local-name()='TransactionalRfcOperationIdentifier']/text())");
Pour utiliser l’extrait de code ci-dessus, vous devez disposer des éléments suivants :
Vous avez créé une variable, XmlDoc, dans votre projet BizTalk et définissez son type sur System.Xml. Xmldocument. Pour plus d’informations sur la création de variables, consultez Utilisation de variables dans les orchestrations.
Promotion de la propriété TransactionalRfcOperationIdentifier dans le schéma de l’opération RfcConfirmTransID. Pour plus d’informations sur la promotion d’une propriété, consultez Promotion des propriétés.
Ajout de ports
Veillez à spécifier les propriétés suivantes pour chacun des ports logiques. Les noms répertoriés dans la colonne Port sont les noms des ports affichés dans l’orchestration.
Port | Propriétés |
---|---|
FileIn | - Définissez Identificateur sur FileIn - Définissez Type sur FileInPortType - Définir le modèle de communication sur Unidirectionnel - Définir le sens de communication sur réception |
tRFC_Port | - Définissez Identificateur sur tRFC_Port - Définissez Type sur tRFC_PortType - Définir le modèle de communication sur Requête-réponse - Définir le sens de communication sur Send-Receive |
SavetRFCResponse | - Définissez l’identificateur sur SavetRFCResponse - Définissez Type sur SavetRFCResponsePortType - Définir le modèle de communication sur Unidirectionnel - Définir le sens de communication sur Envoyer |
TID_Port | - Définissez Identificateur sur TID_Port - Définissez Type sur TIDPortType - Définir le modèle de communication sur Requête-réponse - Définir le sens de communication sur Send-Receive |
SaveTIDResponse | - Définissez l’identificateur sur SaveTIDResponse - Définissez Type sur SaveTIDResponsePortType - Définir le modèle de communication sur Unidirectionnel - Définir le sens de communication sur 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 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 |
---|---|
ReceiveXml | - Définir message sur Requête - Définissez Opération sur FileIn.tRFC.Request |
SendToLOB | - Définir message sur Requête - Définissez Operationsur tRFC_Port.tRFC.Request |
ReceiveResponse | - Définir message sur Réponse - Définissez Operationsur tRFC_Port.tRFC.Response |
SendResponse | - Définir message sur Réponse - Définissez Opération sur SavetRFCResponse.tRFC.Request |
SendTIDMsg | - Définissez Message sur TIDRequest - Définissez Opérationsur TID_Port.TID.Request |
ReceiveTIDRsp | - Définissez Message sur TIDResponse - Définissez Operationsur TID_Port.TID.Response |
SendTIDRsp | - Définissez Message sur TIDResponse - Définissez Opération sur SaveTIDResponse.TID.Request |
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 emplacement sur le disque dur et un port de fichier correspondant où vous allez supprimer un message de demande. L’orchestration BizTalk consomme le message de demande pour l’envoyer au système SAP.
Définissez un emplacement sur le disque dur et un port de fichier correspondant où l’orchestration BizTalk supprime le message de réponse contenant la réponse du système SAP.
Définissez des ports d’envoi WCF-Custom physiques ou WCF-SAP (un pour le message de requête tRFC et le message RfcConfirmTransID) pour envoyer des messages au système SAP. Vous devez également spécifier l’action dans le port d’envoi. 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 Server 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.
Démarrage de l’application
Vous devez démarrer l’application BizTalk pour appeler des CRF dans un système SAP. Pour obtenir des instructions sur le démarrage d’une application BizTalk, consultez Guide pratique pour démarrer une orchestration ou Comment démarrer une application.
À ce stade, assurez-vous que :
Le port de réception FILE pour recevoir les messages de demande pour l’orchestration est en cours d’exécution.
Le port d’envoi FILE pour recevoir les messages de réponse de l’orchestration est en cours d’exécution.
Le WCF-Custom ou les ports d’envoi WCF-SAP pour envoyer des messages au système SAP sont 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 supprimer un message de demande pour l’orchestration. Consultez Schémas de message pour les opérations tRFC pour en savoir plus sur le schéma du message de demande d’appel d’un tRFC dans un système SAP. Par exemple, le message de demande d’appel de BAPI_SALEASORDER_CREATEFROMDAT2 en tant que tRFC est :
<BAPI_SALESORDER_CREATEFROMDAT2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Trfc/">
<ORDER_HEADER_IN>
<DOC_TYPE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">TA</DOC_TYPE>
<SALES_ORG xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">1000</SALES_ORG>
<DISTR_CHAN xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">10</DISTR_CHAN>
<DIVISION xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">00</DIVISION>
<SALES_OFF xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">1000</SALES_OFF>
<REQ_DATE_H xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006-09-01T23:50:00</REQ_DATE_H>
<PURCH_DATE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006-08-25T23:50:00</PURCH_DATE>
<PURCH_NO_C xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">Cust PO</PURCH_NO_C>
<CURRENCY xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">EUR</CURRENCY>
</ORDER_HEADER_IN>
<ORDER_ITEMS_IN>
<BAPISDITM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<MATERIAL>P-109</MATERIAL>
<PLANT>1000</PLANT>
<TARGET_QU>ST</TARGET_QU>
</BAPISDITM>
</ORDER_ITEMS_IN>
<ORDER_PARTNERS>
<BAPIPARNR xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<PARTN_ROLE>AG</PARTN_ROLE>
<PARTN_NUMB>0000001390</PARTN_NUMB>
</BAPIPARNR>
</ORDER_PARTNERS>
<RETURN/>
<TransactionalRfcOperationIdentifier>def689b1-b514-4627-a861-d6d7f51c84e3</TransactionalRfcOperationIdentifier>
</BAPI_SALESORDER_CREATEFROMDAT2>
L’orchestration consomme le message, le transmet au système SAP et reçoit une réponse du système SAP. Le message de réponse est enregistré à l’autre emplacement de fichier spécifié dans le cadre de l’orchestration. La réponse du système SAP contient un GUID. L’orchestration génère ensuite un autre message de requête à partir de la réponse et le transmet au système SAP pour exécuter le RfcConfirmTransID. Une fois la réponse reçue du système SAP pour l’opération RfcConfirmTransID, elle est copiée dans l’emplacement du fichier. Pour résumer, une fois l’opération exécutée avec succès :
Un message de réponse de SAP pour appeler le tRFC est copié dans l’emplacement du fichier. Il contient le même GUID que celui qui a été envoyé au système SAP. Le message de réponse appelant BAPI_SALESORDER_CREATEFROMDAT2 en tant que tRFC est :
<?xml version="1.0" encoding="utf-8"?> <BAPI_SALESORDER_CREATEFROMDAT2Response xmlns="http://Microsoft.LobServices.Sap/2007/03/Trfc/"> <TransactionalRfcOperationIdentifier>def689b1-b514-4627-a861-d6d7f51c84e3</TransactionalRfcOperationIdentifier> </BAPI_SALESORDER_CREATEFROMDAT2Response>
Un message de réponse pour le RfcConfirmTransID est copié au même emplacement. Il s’agit d’une réponse vide. Le message de réponse pour le RfcConfirmTransID est :
<?xml version="1.0" encoding="utf-8"?> <RfcConfirmTransIDResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/RfcApi/"></RfcConfirmTransIDResponse>
Notes
Vous pouvez utiliser la méthode publique ConvertGuidToTid() exposée par l’assembly d’adaptateur SAP pour récupérer le TID dans le système SAP mappé au GUID. Pour plus d’informations, consultez Opérations spéciales.
Exceptions possibles
Pour plus d’informations sur les exceptions que vous pouvez rencontrer lors de l’appel d’un tRFC dans 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.