Exécuter des transactions BAPI dans SAP à l’aide de BizTalk Server
L’adaptateur SAP permet aux clients d’adaptateur d’effectuer des transactions sur un système SAP à l’aide de BizTalk Server. Avant de créer une orchestration pour une transaction, vous devez d’abord comprendre un scénario de base dans lequel les transactions seront effectuées. Dans un scénario de transaction classique, un message de demande avec plusieurs opérations (telles que l’appel d’un BAPI) est envoyé au système SAP. Il s’agit d’un « message d’opération ». L’orchestration doit extraire chaque message d’opération du message de demande et envoyer les messages d’opération individuels au système SAP. L’orchestration les envoie les unes après les autres à l’aide de la même connexion. L’orchestration extrait les messages individuels du « message d’opération » à l’aide d’une transformation XML via une carte BizTalk.
Une fois les opérations effectuées, l’orchestration doit valider ou abandonner la transaction en envoyant des messages pour BAPI_TRANSACTION_COMMIT ou BAPI_TRANSACTION_ROLLBACK, respectivement. Ceux-ci seront appelés « messages de transaction ».
Comment l’adaptateur active-t-il les transactions via BizTalk Server ?
Pour activer les transactions sur un système SAP à l’aide du BizTalk Server, l’adaptateur SAP :
Fournit les propriétés de contexte de message OPEN, REUSE, CLOSE et ABORT.
Utilise BAPI_TRANSACTION_COMMIT et BAPI_TRANSACTION_ROLLBACK pour valider ou abandonner les opérations. Ils sont exposés par le système SAP.
Le tableau suivant répertorie certaines instructions relatives à l’utilisation des propriétés avec BAPI_TRANSACTION_COMMIT ou BAPI_TRANSACTION_ROLLBACK :
Message | OPEN | RÉUTILISER | CLOSE | ABORT |
---|---|---|---|---|
Premier message (message d’opération) | Oui | Non | Non | Non |
Messages suivants (messages d’opération) | Non | Oui | Non | Non |
BAPI_TRANSACTION_COMMIT (message de transaction) | Non | Non | Oui | Non |
BAPI_TRANSACTION_ROLLBACK (message de transaction) | Non | Non | Oui | Oui |
Dans le tableau, un « Oui » désigne la propriété de contexte de message à utiliser pour un message. De même, un « Non » désigne la propriété de contexte de message à ne pas utiliser avec un message.
Pour résumer le tableau :
Le premier message doit toujours être un message d’opération et doit uniquement utiliser la propriété OPEN.
Les messages d’opération suivants doivent utiliser la propriété REUSE.
Le message de transaction correspondant à BAPI_TRANSACTION_COMMIT pour la validation de la transaction doit utiliser la propriété CLOSE.
Le message de transaction correspondant à BAPI_TRANSACTION_ROLLBACK d’annuler la transaction peut utiliser les propriétés CLOSE ou ABORT. Si vous utilisez ABORT, idéalement, le message doit se trouver dans le bloc d’exception d’orchestration.
Considérations clés relatives aux transactions à l’aide de BizTalk Server
S’il existe plusieurs ports d’envoi dans une orchestration, l’adaptateur sépare automatiquement la transaction pour les messages reçus de chaque port. Autrement dit, une transaction ne peut pas s’étendre sur plusieurs ports.
Les tentatives de nouvelle tentative de message ne sont pas prises en charge pour les messages dans une transaction SAP. Par conséquent, les utilisateurs doivent définir la tentative de nouvelle tentative de message sur zéro.
L’adaptateur peut produire des résultats indésirables pour les combinaisons marquées comme « Non » dans le tableau précédent. Vous devez utiliser des combinaisons marquées comme « Oui ».
Les messages envoyés à l’adaptateur qui n’ont pas de propriété de contexte de message sont exécutés normalement sans être liés au contexte de transaction actuel.
BAPI_TRANSACTION_COMMIT ou BAPI_TRANSACTION_ROLLBACK doivent idéalement être le dernier message dans le contexte de transaction actuel de l’orchestration.
Les sections suivantes fournissent des instructions sur la façon d’effectuer des transactions dans SAP à l’aide de l’adaptateur SAP.
Comment effectuer une transaction sur un système SAP ?
L’exécution d’une opération sur un système SAP à l’aide de l’adaptateur SAP avec BizTalk Server implique des tâches procédurales décrites dans Blocs de construction pour créer des applications SAP. Pour effectuer des transactions sur un système SAP, ces tâches sont les suivantes :
Créez un projet BizTalk et générez le schéma pour la RFC sur laquelle vous souhaitez effectuer la transaction. En outre, vous devez générer un schéma pour BAPI_TRANSACTION_COMMIT et BAPI_TRANSACTION_ROLLBACK RFC.
Créez des messages dans le projet BizTalk pour envoyer et recevoir des messages à partir du système SAP.
Créez une orchestration qui extrait des « messages d’opération » individuels du message de demande et l’envoie au système SAP. En fonction du message de demande, l’orchestration décide également s’il faut valider ou restaurer la transaction.
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, SAPTransaction, basé sur cette rubrique, est fourni avec le pack d’adaptateurs BizTalk. Pour plus d’informations, consultez Exemples pour l’adaptateur SAP.
Génération d’un schéma
Pour montrer comment effectuer des transactions sur un système SAP, vous avez besoin des schémas suivants :
Pour que le « message d’opération » effectue des opérations sur un système SAP. Le message de demande envoyé à l’adaptateur doit être conforme à ce schéma. Il peut s’agir de n’importe quel schéma spécifique à l’utilisateur contenant un nombre quelconque de nœuds d’opération. Dans cette rubrique, le schéma MultipleOrders.xsd est utilisé. Le schéma est également fourni dans le cadre de l’exemple de transaction fourni avec les exemples BizTalk Adapter Pack. Pour plus d’informations, consultez Exemples de schémas.
Pour effectuer les opérations sur un système SAP, telles que l’appel d’une RFC. Le message de demande d’exécution d’une opération doit être conforme à ce schéma. Ce schéma doit être généré à l’aide du complément de projet BizTalk du service Consume Adapter. Dans cette rubrique, le BAPI_SALESORDER_CREATEFROMDAT2 RFC est appelé. Pour plus d’informations sur la génération de schéma pour RFC, consultez Parcourir, rechercher et obtenir des métadonnées pour les opérations RFC dans SAP.
Pour l’abandon ou la validation d’une transaction. La demande de validation ou d’abandon d’une transaction doit être conforme à ce schéma. L’adaptateur SAP utilise les BAPI_TRANSACTION_COMMIT et BAPI_TRANSACTION_ROLLBACK RFC pour valider et restaurer les opérations respectivement. Vous devez générer le schéma pour ces RFC à l’aide du complément Consumer Adapter Service.
Notes
Vous devez vous assurer que tous les schémas requis sont ajoutés au projet BizTalk.
Important
Vous devez ajouter une référence au schéma de propriété BizTalk pour l’adaptateur SAP à votre projet BizTalk. Le fichier de schéma, Microsoft.Adapters.SAP.BiztalkPropertySchema.dll, est installé par le programme d’installation du pack d’adaptateurs BizTalk, généralement sur le <lecteur> d’installation :\Program Files\Microsoft BizTalk Adapter Pack\bin.
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 fenêtre Vue d’orchestration du projet BizTalk.
Avant de créer des messages, vous devez déterminer le nombre de nœuds « opération » dont dispose le message de demande (de type MultipleOrders.xsd). Pour cet exemple, supposons que le message de demande comporte deux messages d’opération pour appeler le BAPI_SALESORDER_CREATEFROMDAT2 RFC. Par conséquent, vous devez créer un ensemble de messages demande-réponse mappé au schéma généré pour cette RFC.
Vous devez créer les messages suivants dans le projet BizTalk.
Un message, SendtoAdapter, pour le message de demande qui sera envoyé à l’orchestration. Ce message doit être mappé au schéma du message d’entrée, MultipleOrders.xsd.
Un message, BAPIMessage, pour la première opération envoyée au système SAP. Vous devez également créer un message de réponse, BAPIResponse, pour la réponse de la première opération. Les messages de demande et de réponse doivent être mappés au schéma généré pour le BAPI_SALESORDER_CREATEFROMDAT2 RFC.
Un message, BAPICommitMessage, pour l’opération de validation. Vous devez également créer un message de réponse, BAPICommitResponse, pour le message de réponse correspondant. Les messages de demande et de réponse doivent être mappés au schéma de BAPI_TRANSACTION_COMMIT RFC.
Un message, BAPIRollbackMessage, pour l’opération de restauration. Vous devez également créer un message de réponse, BAPIRollbackResponse, pour le message de réponse correspondant. Les messages de demande et de réponse doivent être mappés au schéma de BAPI_TRANSACTION_ROLLBACK RFC.
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 message nouvellement créé, 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 Tapez SendToAdapter. Type de message Dans la liste déroulante, développez Schémas, puis sélectionnez SAPTransaction.MultipleOrders, où SAPTransaction est le nom de votre projet BizTalk. MultipleOrders est le schéma du message de demande. Répétez l’étape précédente pour créer six 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 BAPIMessage SAPTransaction.SAPBindingSchema.BAPI_SALESORDER_CREATEFROMDAT2 BAPIResponse SAPTransaction.SAPBindingSchema.BAPI_SALESORDER_CREATEFROMDAT2Response BAPICommitMessage SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_COMMIT BAPICommitResponse SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_COMMITResponse BAPIRollbackMessage SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_ROLLBACK BAPIRollbackResponse SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_ROLLBACKResponse
Configuration de l’orchestration
Vous devez créer une orchestration BizTalk pour utiliser BizTalk Server pour effectuer des transactions dans un système SAP. Dans cette orchestration, vous supprimez un message de demande à un emplacement de réception défini. L’adaptateur SAP consomme le message et le transmet au système SAP. La réponse du système SAP est enregistrée à un autre emplacement.
Une autre considération à prendre en compte lors de la création d’une orchestration est la suivante :
Mappez le schéma du message de demande à celui du BAPI_SALESORDER_CREATEFROMDAT2 RFC.
Mappez le schéma du message de demande à celui du BAPI_TRANSACTION_COMMIT et BAPI_TRANSACTION_ROLLBACK RFC.
Vous pouvez mapper les schémas à l’aide d’une transformation XML via une carte BizTalk. Pour ce faire, incluez les formes de transformation dans l’orchestration.
Enfin, selon que le message de demande contient des informations permettant de valider ou d’abandonner la transaction, l’orchestration doit décider du message approprié à envoyer au système SAP. Pour ce faire, incluez une forme Décider dans l’orchestration.
Pour plus d’informations sur les différentes formes incluses dans l’orchestration, consultez l’interface utilisateur orchestration Designer dans l’aide de l’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs.
Un exemple d’orchestration pour une transaction SAP 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 |
---|---|---|
ReceiveInputXML | Recevoir | - Définissez Nom sur ReceiveInputXML - 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 |
Étant donné que le message de demande comporte deux messages d’insertion, vous devez créer un autre ensemble de formes d’envoi et de réception pour envoyer des messages à SAP et recevoir une réponse. Toutefois, étant donné que les messages d’insertion peuvent être validées ou restaurées, le deuxième ensemble de formes doit être créé dans un bloc de décision. Vous devez créer un ensemble de formes pour la validation et un autre ensemble de formes pour la restauration.
Notes
Vous pouvez ajouter un bloc de décision en faisant glisser-déplacer la forme Décider à partir de la boîte à outils Orchestrations BizTalk.
Formes de message pour la validation
Le tableau suivant répertorie les formes du « chemin de validation » de l’orchestration. Ici, vous n’avez pas besoin de créer un message de réception pour un message de demande. Le message de demande sera transmis à partir de la forme de message précédente.
Forme | Type de forme | Propriétés |
---|---|---|
SendBAPICommit | Envoyer | - Définissez Nom sur SendBAPICommit |
ReceiveCommitResponse | Recevoir | - Définissez Name sur ReceiveCommitResponse - Définissez Activer sur False |
SendResponse2 | Envoyer | - Définissez Nom sur SendResponse2 |
Formes de message pour l’abandon
Le tableau suivant répertorie les formes du « chemin de restauration » de l’orchestration.
Forme | Type de forme | Propriétés |
---|---|---|
SendBAPIRollback | Envoyer | - Définissez Nom sur SendBAPIRollback |
ReceiveRollbackResponse | Recevoir | - Définissez Nom sur ReceiveRollbackResponse - Définissez Activer sur False |
SendResponse3 | Envoyer | - Définissez Nom sur SendResponse3 |
Définition de l’expression de règle
Vous avez inclus les formes de message pour les opérations de validation et d’abandon dans un bloc de décision en ajoutant une forme Décider. Pour spécifier la condition sur laquelle l’orchestration prendra une décision, vous devez spécifier une expression sur la forme Règle en fonction de laquelle la transaction sera validée ou restaurée. Par exemple, vous devez spécifier l’expression suivante pour la forme Règle :
SendToAdapter.isCommit == true
Où, SendToAdapter est le message que vous avez créé pour le schéma du message de demande. Par conséquent, dans le message de demande, si la isCommit
balise est définie sur True, l’orchestration prend la route « commit ». Sinon, l’orchestration prend la route « restauration ».
Pour que vous puissiez spécifier cette condition dans l’éditeur d’expressions, vous devez avoir promu la propriété dans le isCommit
schéma de message pour le message de demande envoyé à l’adaptateur. Pour cette rubrique, le schéma d’entrée à utiliser est MultipleOrders.xsd. Vous devez promouvoir la isCommit
propriété dans ce schéma. Pour plus d’informations sur la promotion d’une propriété, consultez Promotion des propriétés.
Ajout de formes de message de construction
Comme indiqué précédemment, le message de demande envoyé à l’adaptateur contient deux messages d’insertion, puis un message de validation ou d’abandon. Vous devez ajouter une forme De message de construction et une forme Transformer pour extraire des messages d’opération individuels à envoyer au système SAP. Vous devez également ajouter une forme d’affectation de message pour définir les propriétés de contexte de message pour l’activation des transactions.
Forme de message de première construction
Supposons que la première forme de message de construction s’appelle « ReceiveXML ». Pour cette forme, spécifiez la propriété Messages Constructed comme « BAPIMessage ». Double-cliquez sur la forme Transformer pour ouvrir la boîte de dialogue Transformer la configuration . Dans la boîte de dialogue :
Choisissez de créer une carte.
Dans le volet gauche, sélectionnez Source et, dans la liste déroulante Nom de la variable, sélectionnez SendToAdapter.
Dans le volet gauche, sélectionnez Destination et, dans la liste déroulante Nom de la variable , sélectionnez BAPIMessage.
Cliquez sur OK pour démarrer le mappeur. Mapper le schéma du message de demande au schéma du BAPI_SALESORDER_CREATEFROMDAT2. Vous pouvez utiliser le fonctoid Index pour créer une carte entre les schémas source et de destination. Un fonctoid Index vous permet de sélectionner des informations pour un enregistrement spécifique dans une série d’enregistrements.
La figure suivante montre les schémas mappés à l’aide d’un fonctoid Index .
Pour plus d’informations sur l’utilisation de la boîte de dialogue Transformer la configuration , consultez la boîte de dialogue Transformer la configuration dans les instructions de l’interface utilisateur et les informations de référence sur l’espace de noms d’API des développeurs.
Pour plus d’informations sur l’utilisation du fonctoid d’index, consultez Index Fonctoid.
Une fois que vous avez mappé les schémas, vous pouvez tester le mappage à l’aide de la page de propriétés du fichier de carte. Pour plus d’informations, consultez la <boîte de dialogue Page des propriétés de fichier> de carte, onglet Carte de test dans les instructions de l’interface utilisateur et les informations de référence sur l’espace de noms d’API des développeurs.
Dans la forme Affectation de message, spécifiez la propriété de contexte de message pour démarrer la transaction. Par exemple, la propriété de contexte de message pour le premier message peut être :
BAPIMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "OPEN";
Forme de message Commit Construct
Supposons que la forme Construire un message pour l’opération de validation s’appelle « CommitMessage ». Pour cette forme, spécifiez la propriété Messages Constructed comme « BAPICommitMessage ». Double-cliquez sur la forme Transformer pour ouvrir la boîte de dialogue Transformer la configuration . Dans la boîte de dialogue :
Choisissez de créer une carte.
Dans le volet gauche, sélectionnez Source et, dans la liste déroulante Nom de la variable, sélectionnez SendToAdapter.
Dans le volet gauche, sélectionnez Destination et, dans la liste déroulante Nom de la variable , sélectionnez BAPICommitMessage.
Cliquez sur OK pour lancer le mappeur. Mapper le schéma du message de requête au schéma de BAPI_TRANSACTION_COMMIT. Vous n’avez pas besoin d’inclure un fonctoid d’index pour ce mappage, car le nœud BAPI_TRANSACTION_COMMIT ne contient pas de hiérarchie d’enregistrements.
Dans la forme Affectation de message, spécifiez la propriété de contexte de message pour valider la transaction. Par exemple, la propriété de contexte de message pour le premier message peut être :
BAPICommitMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "CLOSE";
Forme de message de construction de restauration
Supposons que la forme Construire un message pour l’opération de restauration est appelée « RollbackMessage ». Pour cette forme, spécifiez la propriété Messages Constructed comme « BAPIRollbackMessage ». Double-cliquez sur la forme Transformer pour ouvrir la boîte de dialogue Transformer la configuration . Dans la boîte de dialogue :
Choisissez de créer une carte.
Dans le volet gauche, sélectionnez Source et, dans la liste déroulante Nom de la variable, sélectionnez SendToAdapter.
Dans le volet gauche, sélectionnez Destination et, dans la liste déroulante Nom de la variable , sélectionnez BAPIRollbackMessage.
Cliquez sur OK pour lancer le mappeur. Mapper le schéma du message de demande au schéma de BAPI_TRANSACTION_ROLLBACK. Vous n’avez pas besoin d’inclure un fonctoid d’index pour ce mappage, car le nœud BAPI_TRANSACTION_ROLLBACK ne contient pas de hiérarchie d’enregistrements.
Dans la forme Affectation de message, spécifiez la propriété de contexte de message pour restaurer la transaction. Par exemple, la propriété de contexte de message pour le premier message peut être :
BAPIRollbackMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "ABORT";
Important
Dans les scénarios classiques, le message correspondant à BAPI_TRANSACTION_ROLLBACK avec la propriété de contexte ABORT doit être utilisé dans un bloc d’exception.
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.
Pour cette orchestration, trois ports sont créés. Le premier port sélectionne le message de demande à partir d’un dossier spécifié. Le deuxième port envoie les messages au système SAP et reçoit une réponse. Le troisième port enregistre la réponse dans un autre dossier. Par conséquent :
Le premier port ne reçoit que des messages pour un seul schéma, c’est-à-dire MultipleOrders.xsd.
Le deuxième port envoie et reçoit des messages pour le schéma de BAPI_SALESORDER_CREATEFROMDAT2 RFC. En outre, le même port sera utilisé pour valider ou restaurer la transaction. Par conséquent, ce port reçoit également des messages de schémas pour BAPI_TRANSACTION_COMMIT et BAPI_TRANSACTION_ROLLBACK RFC. Pour cela, trois opérations différentes sont créées sur ce port, chacune correspondant à un schéma de message spécifique.
Comme pour le deuxième port, ce port recevra également des messages avec trois schémas différents. Il est donc nécessaire de créer trois opérations différentes sur ce port.
Port | Propriétés |
---|---|
FileIn | - Définissez Identificateur sur FileIn - Définissez Type sur FileInType - Définir le modèle de communication sur Unidirectionnel - Définir le sens de communication sur réception |
LOBPort | - Définissez Identificateur sur LOBPort - Définissez Type sur LOBPortType - Définir le modèle de communication sur Requête-réponse - Définir le sens de communication sur Send-Receive - Créez une opération BAPIMessage. - Créer une opération CommitMessage. Cette opération sera utilisée pour envoyer un message de validation. - Créer une opération RollbackMessage. Cette opération sera utilisée pour envoyer un message de restauration. |
SaveResponse | - Définir l’identificateur sur SaveResponse - Définissez Type sur SaveResponseType - Définir le modèle de communication sur Unidirectionnel - Définissez Le sens de communication sur Envoyer. - Créez une opération BAPIMessage. - Créer une opération CommitMessage. Cette opération sera utilisée pour enregistrer les réponses pour le message de validation. - Créer une opération RollbackMessage. Cette opération sera utilisée pour enregistrer les réponses pour le message de restauration. |
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 |
---|---|
ReceiveInputXML | - Définissez Message sur SendToAdapter - Définissez Opération sur FileIn.Transaction.Request |
SendToLOB | - Définissez Message sur BAPIMessage - Définissez Opération sur LOBPort.BAPIMessage.Request |
ReceiveResponse | - Définissez Message sur BAPIResponse - Définissez Opération sur LOBPort.BAPIMessage.Response |
SendResponse | - Définissez Message sur BAPIResponse - Définissez Opération sur SaveResponse.BAPIMessage.Request |
SendBAPICommit | - Définissez Message sur BAPICommitMessage - Définissez Opération sur LOBPort.CommitMessage.Request |
ReceiveCommitResponse | - Définissez Message sur BAPICommitResponse - Définissez Opération sur LOBPort.CommitMessage.Response |
SendResponse2 | - Définissez Message sur BAPICommitResponse - Définissez Opération sur SaveResponse.CommitMessage.Request |
SendBAPIRollback | - Définissez Message sur BAPIRollbackMessage - Définissez Opération sur LOBPort.RollbackMessage.Request |
ReceiveRollbackResponse | - Définissez Message sur BAPIRollbackResponse - Définissez Opération sur LOBPort.RollbackMessage.Response |
SendResponse3 | - Définissez Message sur BAPIRollbackResponse - Définissez Opération sur SaveResponse.RollbackMessage.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.
Gestion des exceptions
Dans les orchestrations complexes comme celle pour effectuer des transactions BAPI, il est important de suivre l’état de l’orchestration, de signaler les erreurs à mesure qu’elles se produisent, afin de pouvoir résoudre les problèmes au fur et à mesure qu’ils se produisent. L’orchestration BizTalk fournit des outils permettant de gérer les erreurs, de conserver l’état d’une orchestration et de résoudre les problèmes à mesure qu’ils se produisent par le biais de transactions, de compensation et de gestion des exceptions.
En tant que framework pour la gestion des transactions et des exceptions, Orchestration Designer fournit la forme Étendue. Une étendue peut avoir un type de transaction, une compensation et n'importe quel nombre de gestionnaires d'exception. Une étendue contient un ou plusieurs blocs. Il a un corps et peut éventuellement y ajouter un nombre quelconque de blocs de gestion des exceptions. Dans le cas des transactions BAPI, l’orchestration entière (voir la figure précédente) peut être incluse dans une étendue.
Pour intercepter l’exception, vous devez ajouter un bloc Catch Exception à l’orchestration. Les blocs d’exception catch sont attachés à la fin d’une forme d’étendue dans orchestration Designer. Dans le cas des transactions BAPI, vous devez ajouter la routine « ABORT » au bloc Catch Exception , c’est-à-dire ajouter les éléments suivants à la routine « ABORT » :
Forme de message de construction composée d’une transformation (pour extraire le message de demande du message d’entrée) et d’une forme d’affectation de message (pour définir la propriété de contexte)
Envoyer et recevoir des formes.
L’exemple de transaction SAP pour BizTalk Server (SAPTransaction) fourni avec BizTalk Adapter Pack illustre également la gestion des exceptions. Pour plus d’informations sur l’exemple, consultez Exemples pour l’adaptateur SAP.
Pour plus d’informations sur la gestion des exceptions, en général à l’aide de BizTalk Server, consultez Utilisation des transactions et gestion des exceptions.
Ajouter le schéma de propriété BizTalk à BizTalk
Dans votre projet BizTalk, vous avez ajouté une référence d’assembly au schéma de propriété BizTalk pour l’adaptateur SAP. Vous devez ajouter le même assembly qu’une ressource dans l’application BizTalk, c’est-à-dire l’application où le projet BizTalk sera déployé. Le fichier de schéma, Microsoft.Adapters.SAP.BiztalkPropertySchema.dll, est installé par le programme d’installation du pack d’adaptateurs BizTalk généralement sous <le lecteur> d’installation :\Program Files\Microsoft BizTalk Adapter Pack\bin. Sans cette ressource, vous ne pourrez pas déployer votre projet.
Pour ajouter un assembly en tant que ressource dans BizTalk
Démarrez la console Administration BizTalk Server.
Dans l’arborescence de la console, développez BizTalk Group, Applications, puis l’application à laquelle vous souhaitez ajouter un assembly BizTalk.
Cliquez avec le bouton droit sur Ressources, pointez sur Ajouter , puis cliquez sur Assemblys BizTalk.
Dans la boîte de dialogue Ajouter une ressource , cliquez sur Ajouter, accédez au dossier contenant le fichier d’assembly BizTalk, sélectionnez le fichier d’assembly BizTalk, puis cliquez sur Ouvrir.
Dans Options, spécifiez les options d’installation de l’assembly BizTalk sur le GAC, puis cliquez sur OK.
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 requête et l’envoie 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 un WCF-Custom physique ou un port d’envoi WCF-SAP pour envoyer des messages 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. Étant donné que le port d’envoi envoie et reçoit des messages conformes à plusieurs schémas et effectue deux opérations, vous devez définir une action dynamique pour les deux opérations. Pour plus d’informations sur les actions, consultez Configurer l’action SOAP pour le système SAP. Veillez à respecter les considérations clés suivantes lors de la création d’un port d’envoi WCF-Custom ou WCF-SAP pour effectuer des transactions.
Définir ce qui suit À cette valeur Action Le port d’envoi envoie et reçoit des messages pour plusieurs opérations. Par conséquent, l’action sur le port d’envoi doit être définie pour chaque opération.
<BtsActionMapping> <Operation Name="BAPIMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_SALESORDER_CREATEFROMDAT2" /> <Operation Name="CommitMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_TRANSACTION_COMMIT" /> <Operation Name="RollbackMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_TRANSACTION_ROLLBACK" /> </BtsActionMapping>
EnableBizTalkCompatibilityMode Définissez cette propriété de liaison sur True. ActiverConnectionPooling Définissez cette propriété de liaison sur False avant d’effectuer des transactions. Dans les scénarios où le canal configuré entre l’adaptateur et BizTalk est arrêté de manière inattendue, la connexion correspondante est ajoutée au pool de connexions. Lorsqu’un autre canal est ouvert et que le nouveau canal sélectionne le même objet de connexion, les transactions non validées sur l’ancien objet de connexion sont également validées lorsque les transactions sont validées sur le nouveau canal. Pour éviter cela, le regroupement de connexions doit être désactivé lors de l’exécution de transactions. 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.
Important
Vous pouvez configurer un transport de sauvegarde sur un WCF-Custom ou un port d’envoi WCF-SAP qui vous permet d’envoyer des messages à un autre système SAP si le transport principal ne fonctionne pas. Toutefois, pour effectuer des transactions sur un système SAP, l’adaptateur SAP wcf ne prend pas en charge la spécification d’un transport de sauvegarde pointant vers un autre serveur SAP.
Démarrage de l’application
Vous devez démarrer l’application BizTalk en effectuant des transactions sur un système SAP. Pour obtenir des instructions sur le démarrage d’une application BizTalk, consultez Guide pratique pour démarrer une orchestration, Guide pratique pour 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 le port d’envoi WCF-SAP pour envoyer des messages au 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 supprimer un message de demande pour l’orchestration à un emplacement prédéfini. Le message de demande doit être conforme à un schéma spécifique, pour instance, schéma MultipleOrders.xsd. Par exemple, un message de demande de création de commandes client dans un système SAP, puis de validation de l’opération est :
<ns0:Orders xmlns:ns0="http://BAPISend.MultipleOrders">
<Order>
<ORDER_HEADER_IN>
<DOC_TYPE>TA</DOC_TYPE>
<SALES_ORG>1000</SALES_ORG>
<DISTR_CHAN>10</DISTR_CHAN>
<DIVISION>00</DIVISION>
<SALES_OFF>1000</SALES_OFF>
<REQ_DATE_H>20060901</REQ_DATE_H>
<PURCH_DATE>20060901</PURCH_DATE>
<PURCH_NO_C>Cust A</PURCH_NO_C>
<CURRENCY>EUR</CURRENCY>
</ORDER_HEADER_IN>
<ORDER_ITEMS_IN>
<MATERIAL>P-109</MATERIAL>
<PLANT>1000</PLANT>
<TARGET_QU>ST</TARGET_QU>
</ORDER_ITEMS_IN>
<ORDER_PARTNERS>
<PARTN_ROLE>AG</PARTN_ROLE>
<PARTN_NUMB>0000000257</PARTN_NUMB>
</ORDER_PARTNERS>
<RETURN></RETURN>
</Order>
<isCommit>true</isCommit>
<BAPI_TRANSACTION_COMMIT>
</BAPI_TRANSACTION_COMMIT>
</ns0:Orders>
L’orchestration consomme le message et l’envoie au système SAP. La réponse du système SAP est enregistrée à un autre emplacement de fichier défini dans le cadre de l’orchestration. Pour le message de demande ci-dessus, vous obtenez deux messages de réponse : l’un pour appeler le BAPI_SALESORDER_CREATEFROMDAT2 RFC et l’autre pour l’opération de validation à l’aide de BAPI_TRANSACTION_COMMIT.
La réponse pour BAPI_SALESORDER_CREATEFROMDAT2 est la suivante :
<?xml version="1.0" encoding="utf-8" ?>
<BAPI_SALESORDER_CREATEFROMDAT2Response xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<SALESDOCUMENT />
<ORDER_ITEMS_IN>
<BAPISDITM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<ITM_NUMBER>0</ITM_NUMBER>
<HG_LV_ITEM>0</HG_LV_ITEM>
<PO_ITM_NO />
......
</BAPISDITM>
</ORDER_ITEMS_IN>
<ORDER_PARTNERS>
<BAPIPARNR xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<PARTN_ROLE>AG</PARTN_ROLE>
<PARTN_NUMB>0000000257</PARTN_NUMB>
<ITM_NUMBER>0</ITM_NUMBER>
......
</BAPIPARNR>
</ORDER_PARTNERS>
</BAPI_SALESORDER_CREATEFROMDAT2Response>
La réponse pour BAPI_TRANSACTION_COMMIT est la suivante :
<?xml version="1.0" encoding="utf-8" ?>
<BAPI_TRANSACTION_COMMITResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<RETURN>
<TYPE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<ID xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<NUMBER xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</NUMBER>
<MESSAGE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<LOG_NO xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<LOG_MSG_NO xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</LOG_MSG_NO>
<MESSAGE_V1 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<MESSAGE_V2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<MESSAGE_V3 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<MESSAGE_V4 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<PARAMETER xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<ROW xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</ROW>
<FIELD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<SYSTEM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
</RETURN>
</BAPI_TRANSACTION_COMMITResponse>
Notes
Si le message de demande a appelé le BAPI_TRANSACTION_ROLLBACK RFC, la deuxième réponse concerne BAPI_TRANSACTION_ROLLBACK.
Exceptions possibles
Pour plus d’informations sur les exceptions que vous pouvez rencontrer lors de l’exécution de transactions sur 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 que vous n’ayez pas besoin de créer les ports d’envoi et de réception, pour la même orchestration. Pour plus d’informations sur les fichiers de liaison, consultez Réutiliser les liaisons d’adaptateur SAP.