Recevoir des IDOC de SAP à l’aide de BizTalk Server
La réception d’un IDOC implique que l’adaptateur SAP agisse en tant que serveur RFC pour recevoir un appel RFC spécial de SAP. L’adaptateur SAP peut recevoir des AIDO agissant en tant que serveur RFC ou serveur tRFC. Pour plus d’informations sur la réception d’un IDOC avec l’adaptateur se comportant comme un serveur tRFC, consultez Recevoir des IDOC de SAP dans un contexte transactionnel à l’aide de BizTalk Server.
L’adaptateur SAP expose deux opérations différentes pour recevoir des IDOC :
L’opération de réception permet à l’adaptateur de recevoir des AIDO ayant un schéma fortement typé.
L’opération ReceiveIdoc permet à l’adaptateur de recevoir des AIDO ayant un schéma faiblement typé. Cette opération reçoit des IDOCs sous la forme d’une chaîne dans un message XML sous la <balise idocData> .
Côté adaptateur, vous pouvez spécifier une valeur pour la propriété de liaison ReceiveIDocFormat afin de spécifier le format d’IDOC que l’adaptateur reçoit.
Typd spécifie que l’adaptateur recevra des AIDO avec un schéma fortement typé. Cela génère un IDOC XML.
String spécifie que l’adaptateur recevra des IDOC avec un schéma faiblement typé. Cela génère un message XML avec la <balise idocData> .
Rfc spécifie que l’adaptateur recevra des IDOC dans n’importe quel format.
Pour recevoir des IDOC, l’adaptateur SAP prend également en charge un ensemble de propriétés de contexte de message que les clients de l’adaptateur peuvent utiliser dans les orchestrations. Pour obtenir la liste des propriétés, consultez Propriétés du contexte de message pour la réception d’IDOC.
Pour plus d’informations sur la façon dont l’adaptateur SAP prend en charge la réception d’IDOC à partir d’un système SAP, consultez Opérations sur les IDOC dans SAP. Pour plus d’informations sur la structure des messages SOAP pour la réception d’un IDOC, consultez Schémas de message pour les opérations IDOC.
Scénarios BizTalk pour la réception d’AIDO à partir d’un système SAP
Le tableau suivant fournit des scénarios BizTalk clés pour la réception d’AIDO à partir d’un système SAP :
Entrée dans l’adaptateur à partir de SAP | Traitement BizTalk | Output |
---|---|---|
IDOC (via l’interface tRFC) | Temps de conception des métadonnées 1. Définissez la propriété de liaison GenerateFlatFileCompatibleIdocSchema sur True. 2. Générez le schéma de l’opération Receive pour un IDOC spécifique à l’aide du complément Consume Adapter Service. 3. Définissez la propriété de liaison ReceiveIdocFormat sur Typed. Heure de conception de l’orchestration 1. Recevoir un IDOC XML. 2. Utilisez l’assembleur de fichiers plats pour convertir l’IDOC XML en fichier plat. |
IDOC de fichier plat |
IDOC (via l’interface tRFC) | Temps de conception des métadonnées 1. Définissez la propriété de liaison GenerateFlatFileCompatibleIdocSchema sur True. 2. Générez le schéma de l’opération Receive pour un IDOC spécifique à l’aide du complément Consume Adapter Service. 3. Définissez la propriété de liaison ReceiveIdocFormat sur Typed. Temps de conception de l’orchestration - Recevoir un IDOC XML. |
XML IDOC |
IDOC (via l’interface tRFC) | Temps de conception des métadonnées 1. Définissez la propriété de liaison GenerateFlatFileCompatibleIdocSchema sur True. 2. Générez le schéma de l’opération Receive pour un IDOC spécifique à l’aide du complément Consume Adapter Service. 3. Définissez la propriété de liaison ReceiveIdocFormat sur String. Heure de conception de l’orchestration 1. Recevoir un message XML avec un IDOC à fichier plat dans la <balise idocData> . 2. Utilisez la prise en charge XPath de l’adaptateur WCF dans la configuration du port de réception pour extraire l’IDoc de fichier plat du message XML. Par exemple : /*[local-name()='ReceiveIdoc']/*[local-name()='idocData'] 3. Utilisez le désassembleur de fichiers plats pour convertir un IDOC de fichier plat en IDOC XML. Important Cette approche peut être utilisée pour recevoir des IDOC à l’aide de la nouvelle carte SAP basée sur WCF et les appliquer directement dans un projet BizTalk existant écrit pour recevoir des AIDO de l’adaptateur SAP BizTalk existant. Il s’agit également de l’approche recommandée pour recevoir des CIDO dont le numéro de version est inférieur au numéro de version (SYSREL). |
XML IDOC |
IDOC (via l’interface tRFC) | Temps de conception des métadonnées 1. Générez le schéma de l’opération ReceiveIdoc à partir du nœud IDOC à l’aide du complément Consume Adapter Service. 2. Définissez la propriété de liaison ReceiveIdocFormat sur String. Heure de conception de l’orchestration - Recevoir un message XML avec l’IDOC représenté sous la forme d’une chaîne dans la <balise idocData> . |
IDOC de fichier plat dans un message XML |
Comment recevoir un IDOC d’un 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 IDOC à partir d’un système SAP, les tâches suivantes sont les suivantes :
Créez un projet BizTalk et générez le schéma pour l’IDOC que vous souhaitez appeler dans le système SAP. Lors de la génération du schéma, veillez à définir les propriétés de liaison requises, comme indiqué dans le tableau précédent. Pour obtenir des instructions sur la définition des propriétés de liaison, consultez Configurer les propriétés de liaison pour l’adaptateur 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 recevoir un IDOC à partir d’un 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.
Exemples basés sur cette rubrique
Des exemples, ReceiveIDOC et ReceiveIDOC_SYSREL, basés sur cette rubrique, sont également fournis avec le pack d’adaptateurs BizTalk. Pour plus d’informations, consultez Exemples pour l’adaptateur SAP.
Génération du schéma
Vous devez générer le schéma pour l’opération Receive du ORDERS03. V3.620 IDOC sous le nœud /IDOC/ORDERS/ORDERS03 . Consultez Parcourir, rechercher et obtenir des métadonnées pour les opérations IDOC dans SAP pour obtenir des instructions sur la façon de générer un schéma pour un IDOC particulier. Lors de la génération du schéma, vous pouvez également définir les propriétés suivantes :
GenerateFlatFileCompatibleIDoc : génère des <balises appinfo> afin que l’analyseur de fichiers plats BizTalk puisse être utilisé dans les scénarios BizTalk pour prendre en charge les AIDO de fichiers plats.
FlatFileSegmentIndicator : indique si les balises appinfo> du schéma <IDOC doivent contenir des noms de définition de segment ou des noms de type de segment. Cela s’applique lorsqu’un utilisateur souhaite envoyer/recevoir un IDOC de fichier plat vers/depuis SAP. Si GenerateFlatFileCompatibleIDoc a la valeur false, la propriété de liaison FlatFileSegmentIndicator est ignorée.
Important
Étant donné que vous générez le schéma pour un appel IDOC 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 un IDOC du système SAP et l’autre pour envoyer une réponse.
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 ReceiveIDOC.SAPBindingSchema2, où ReceiveIDOC est le nom de votre projet BizTalk. SAPBindingSchema2 est le schéma généré pour l’opération Receive. 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 ReceiveIDOC.SAPBindingSchema3.
Configuration de l’orchestration
Vous devez créer une orchestration BizTalk pour utiliser BizTalk Server pour recevoir des IDOC à partir du système SAP. Dans un scénario classique, l’adaptateur SAP reçoit un appel IDOC du système SAP, traite la demande et transmet la réponse au système SAP. Pour y parvenir dans le cadre d’une orchestration, l’orchestration doit contenir :
Un port de réception bidirectionnel pour recevoir des IDOCs 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 générer une réponse à envoyer au système SAP.
Notes
Si l’orchestration inclut un port de réception bidirectionnel (demande-réponse) pour recevoir des IDOC du système SAP, l’orchestration doit renvoyer une réponse au système SAP. Si ce n’est pas le cas, le système SAP n’envoie pas l’IDOC suivant. Toutefois, s’il s’agit d’un port de réception unidirectionnel, l’orchestration n’a pas besoin d’envoyer une réponse au système SAP.
Port d’envoi unidirectionnel pour envoyer les CIDO reçus du système SAP vers un dossier.
Voici un exemple d’orchestration pour la réception d’un IDOC à partir d’un système SAP :
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 ci-dessus.
Forme | Type de forme | Propriétés |
---|---|---|
ListenToSAP | Recevoir | - Définissez Name sur ListenToSAP - Définissez Activer sur True |
SaveIDOC | Envoyer | - Définissez Nom sur SaveIDOC |
SendResponse | Envoyer | - Définissez Name sur SendResponse |
Ajout d’une forme de message de construction
Dans l’orchestration, vous devez générer une réponse et l’envoyer au système SAP. Pour ce faire, vous devez ajouter une forme Construire un message et une forme d’affectation de message à votre orchestration. La forme Affectation de message appelle le code qui génère un message de réponse envoyé au système SAP. La forme Affectation de message définit également l’action de la réponse à envoyer au système SAP.
Important
Si l’orchestration inclut un port de réception bidirectionnel (demande-réponse) pour recevoir des IDOC du système SAP, l’orchestration doit renvoyer une réponse au système SAP. Si ce n’est pas le cas, le système SAP n’envoie pas l’IDOC suivant. Toutefois, s’il s’agit d’un port de réception unidirectionnel, l’orchestration n’a pas besoin d’envoyer une réponse au système SAP.
Pour la forme de message de construction, définissez la propriété Message construit surRéponse.
Le code permettant de générer la réponse peut faire partie de la même solution Visual Studio que votre projet BizTalk. Un exemple de code pour générer un message de réponse ressemble à ceci.
namespace IdocReceiveResponseMessageCreator
{
public class IdocReceiveResponseMessageCreator
{
private static XmlDocument Message;
private static string XmlFileLocation;
private static string ResponseDoc;
public static XmlDocument XMLMessageCreator()
{
XmlFileLocation = "C:\\test\\in";
try
{
ResponseDoc = (Directory.GetFiles(XmlFileLocation, "*.xml", SearchOption.TopDirectoryOnly))[0];
}
catch (Exception ex)
{
Console.WriteLine("Trying to get XML from: " + XmlFileLocation);
Console.WriteLine("EXCEPTION: " + ex.ToString());
throw ex;
}
//Create Message From XML
Message = new XmlDocument();
Message.PreserveWhitespace = true;
Message.Load(ResponseDoc);
return Message;
}
}
}
Notes
Une fois le projet généré, IdocReceiveResponseMessageCreator.dll sont créés 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 = IdocReceiveResponseMessageCreator.IdocReceiveResponseMessageCreator.XMLMessageCreator();
Response(WCF.Action)= "http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/Receive/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. Ainsi, l’action du message de réponse devient http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/ReceiveResponse
. Toutefois, sapBinding attend l’action de réponse en ajoutant « /response » à l’action de demande, par exemple http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/Receive/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 |
---|---|
ReceiveIDOCPort | - Définissez Identifier sur ReceiveIDOCPort - Définissez Type sur ReceiveIDOCPortType - Définir le modèle de communication sur Requête-réponse - Définir le sens de la communication sur Réception-Envoi |
GetIDOCPort | - Définissez Identifier sur GetIDOCPort - Définissez Type sur GetIDOCPortType - Définir le modèle de communication sur Unidirectionnel - Définir le sens de la communication sur Envoyer |
Important
Si l’orchestration inclut un port de réception bidirectionnel (demande-réponse) pour recevoir des IDOC du système SAP, l’orchestration doit renvoyer une réponse au système SAP. Si ce n’est pas le cas, le système SAP n’envoie pas l’IDOC suivant.
Ajout d’un assembleur de fichiers plats
Vous devez ajouter un assembleur pour convertir le message IDOC entrant en fichier plat.
Pour ajouter un assembleur de fichiers plats
Cliquez avec le bouton droit sur le projet BizTalk, pointez sur Ajouter, puis sélectionnez Nouvel élément.
Dans la boîte de dialogue, procédez comme suit :
Propriété Pour Catégories Fichiers de pipeline Modèles installés de Visual Studio Pipeline d'envoi Nom SendIDOC Le pipeline Designer s’ouvre. À partir de la boîte à outils Composants de pipeline BizTalk , faites glisser le composant de pipeline assembleur de fichiers plats dans la phase d’assemblage du pipeline d’envoi.
Dans la vue Propriétés du composant de pipeline , spécifiez une valeur pour la propriété Schéma de document . Dans la liste déroulante, veillez à sélectionner le schéma correspondant à l’opération de réception IDOC.
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 ci-dessus.
Forme | Propriétés |
---|---|
ListenToSAP | - Définir message sur Demande - Définissez Opération sur ReceiveIDOCPort.ReceiveIDOC.Request |
SaveIDOC | - Définir message sur Demande - Définissez Opération sur GetIDOCPort.ReceiveIDOC.Request |
SendResponse | - Définir Message sur Réponse - Définissez Opération sur ReceiveIDOCPort.ReceiveIDOC.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 et 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 de la console d’administration BizTalk Server. Vous devez utiliser la console d’administration BizTalk Server pour configurer l’application. Pour plus d’informations sur la configuration d’une application, consultez Guide pratique pour 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 à des ports physiques dans la console d’administration BizTalk Server. Pour cette orchestration, vous devez :
Définissez les emplacements d’envoi et le port d’envoi physique. Cet emplacement contiendra les AIDO provenant du système SAP.
Important
Pour le pipeline XMLTransmit, veillez à sélectionner SendIDOC. Vous avez créé ce pipeline dans le cadre du projet BizTalk.
Définissez un port de réception WCF-Custom ou WCF-SAP. Ce port reçoit un IDOC entrant du système SAP et le transmet à l’orchestration. Ce port envoie également 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.
Important
Vérifiez que la propriété de liaison ReceiveIDocFormat est définie sur Typed.
Important
Si la propriété de liaison EnableBizTalkCompatibilityMode a la valeur true, veillez à ajouter la DLL de schéma de propriété BizTalk pour l’adaptateur SAP en tant que ressource dans votre application BizTalk, c’est-à-dire l’application dans laquelle votre projet est déployé. Pour obtenir des instructions sur l’ajout de ressources, consultez Résoudre les problèmes opérationnels liés à l’adaptateur SAP.
Notes
La génération du schéma à l’aide du complément de projet BizTalk du service d’adaptateur de consommation 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 des ports 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 IdocReceiveResponseMessageCreator à votre application BizTalk. Vous avez créé ce projet pour générer la réponse à envoyer au système SAP. Pour cela, procédez de la façon suivante :
Dans l’arborescence de la console sur le côté gauche de la console 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 et accédez au dossier contenant IdocReceiveResponseMessageCreator.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 un IDOC à partir du système SAP. Pour obtenir des instructions sur le démarrage d’une application BizTalk, consultez Guide pratique pour démarrer une orchestration ou Démarrer une application.
À ce stade, assurez-vous que :
Le port d’envoi FILE pour enregistrer l’IDOC entrant dans un emplacement de fichier est en cours d’exécution
Le port de réception WCF-Custom ou WCF-SAP pour recevoir des IDOC 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 accéder au système SAP et envoyer un IDOC dans l’adaptateur. L’adaptateur reçoit l’IDOC et l’enregistre dans un emplacement de fichier spécifié dans le cadre de l’orchestration.
Exceptions possibles
Pour plus d’informations sur les exceptions que vous pouvez rencontrer lors de la réception d’un IDOC à partir d’un système SAP à l’aide de BizTalk Server, consultez Gestion des exceptions et 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.