Partager via


Créer des workflows pour des scénarios d’intégration SAP courants dans Azure Logic Apps

S’applique à : Azure Logic Apps (Consommation + Standard)

Ce guide pratique montre comment créer des exemples de workflows d’application logique pour certains scénarios d’intégration SAP courants à l’aide d’Azure Logic Apps et du connecteur SAP.

Les workflows d’application logique Standard et Consommation proposent le connecteur managé SAP qui est hébergé et exécuté dans un environnement Azure multilocataire. Les flux de travail standard offrent également le connecteur de fournisseur de services intégré SAP qui est hébergé et exécuté dans Azure Logic Apps monolocataire. Si vous créez et hébergez un workflow Consommation dans un environnement de service d’intégration (ISE), vous pouvez également utiliser la version native ISE du connecteur SAP. Pour plus d’informations, consultez la référence technique du connecteur.

Prérequis

Avant de commencer, veillez à passer en revue et respecter les exigences relatives au connecteur SAP correspondant à votre scénario spécifique.

Recevoir des messages de SAP

L’exemple de workflow d’application logique suivant se déclenche quand le déclencheur SAP du workflow reçoit un message d’un serveur SAP.

Ajouter un déclencheur SAP

Selon que vous disposez d’un workflow Consommation dans Azure Logic Apps multilocataire ou d’un workflow Standard dans Azure Logic Apps monolocataire, suivez la procédure correspondante :

  1. Sur le portail Azure, ouvrez votre workflow d’application logique Consommation et un workflow vide dans le concepteur.

  2. Dans le concepteur, suivez cette procédure générale pour ajouter le déclencheur de connecteur managé SAP nommé When a message is received (Quand un message est reçu).

  3. Si vous y êtes invité, fournissez les informations de connexion pour votre serveur SAP local. Sélectionnez Créer lorsque vous avez terminé. Sinon, passez à l’étape suivante pour configurer votre déclencheur SAP.

    Paramètre Obligatoire Description
    Nom de connexion Oui Attribuez un nom à cette connexion.
    Passerelle de données Oui 1. Pour l’option Abonnement, sélectionnez l’abonnement Azure pour la ressource de passerelle de données que vous avez créée dans le portail Azure pour l’installation de votre passerelle de données.

    2. Pour l’option Passerelle de connexion, sélectionnez votre ressource de passerelle de données dans Azure.
    Client Oui ID client SAP à utiliser pour la connexion à votre serveur SAP.
    Type d'authentification Oui Type d’authentification à utiliser pour votre connexion, qui doit être De base (nom d’utilisateur et mot de passe). Pour créer une connexion SNC, consultez la section Activer SNC (Secure Network Communications).
    Nom d’utilisateur SAP Oui Nom d’utilisateur de votre serveur SAP.
    Mot de passe SAP Oui Mot de passe de votre serveur SAP.
    Type d’ouverture de session Oui Sélectionnez le serveur d’applications ou le groupe (serveur de messages), puis configurez les paramètres requis correspondants, même s’ils apparaissent facultatifs :

    Serveur d’applications :
    - Hôte AS : nom d’hôte de votre serveur d’applications SAP
    - Service AS : nom du service ou numéro de port de votre serveur d’applications SAP
    - Numéro système AS : numéro système de votre serveur SAP, compris entre 00 et 99

    Groupe :
    - Hôte MS Server : nom d’hôte de votre serveur de messages SAP
    - Nom du service MS ou numéro de port : nom du service ou numéro de port de votre serveur de messages SAP
    - ID système MS : ID système de votre serveur SAP
    - Groupe d’ouverture de session MS : groupe d’ouverture de session de votre serveur SAP. Sur votre serveur SAP, vous pouvez retrouver ou modifier la valeur Logon Group (Groupe d’ouverture de session) en ouvrant la boîte de dialogue CCMS: Maintain Logon Groups (CCMS : Maintenir les groupes d’ouverture de session) (T-Code SMLG). Pour plus d’informations, consultez la note SAP 26317 : Configurer le groupe d’ouverture de session pour l’équilibrage de charge automatique.
    Types sécurisés Non Cette option est disponible à des fins de compatibilité descendante et ne vérifie que la longueur de chaîne. Par défaut, le typage fort est utilisé pour rechercher des valeurs non valides en effectuant une validation XML par rapport au schéma. Ce comportement peut vous aider à détecter les problèmes plus tôt. Apprenez-en davantage sur le paramètre Types sécurisés.
    Utiliser SNC Non Pour créer une connexion SNC, consultez la section Activer SNC (Secure Network Communications).

    Pour les autres paramètres de connexion disponibles facultatifs, consultez la section Informations de connexion par défaut.

    Une fois qu’Azure Logic Apps a configuré et testé votre connexion, la zone d’informations sur le déclencheur s’affiche. Pour plus d’informations sur les problèmes de connexion qui peuvent se produire, consultez la section Résoudre les problèmes de connexion.

  4. En fonction de la configuration et du scénario de votre serveur SAP, fournissez les valeurs de paramètre nécessaires pour le déclencheur When a message is received (Quand un message est reçu) et ajoutez tous les autres paramètres de déclencheur disponibles que vous souhaitez utiliser dans votre scénario.

    Notes

    Ce déclencheur SAP est un déclencheur basé sur un webhook, et non un déclencheur d’interrogation, et n’inclut pas d’options permettant de spécifier une planification d’interrogation. Par exemple, quand vous utilisez le connecteur SAP managé avec la passerelle de données locale, le déclencheur est appelé à partir de la passerelle de données uniquement quand un message arrive, de sorte qu’aucune interrogation n’est nécessaire.

    Paramètre Obligatoire Description
    GatewayHost Oui Hôte de passerelle d’inscription pour le serveur SAP RFC.
    GatewayService Oui Service de passerelle d’inscription pour le serveur SAP RFC.
    ProgramId Oui ID de programme de passerelle d’inscription pour le serveur SAP RFC.

    Remarque : cette valeur respecte la casse. Veillez à utiliser systématiquement le même format de casse pour la valeur ID de programme quand vous configurez votre workflow d’application logique et votre serveur SAP. Sinon, lorsque vous tentez d’envoyer un IDoc à SAP, le moniteur tRFC (T-Code SM58) peut afficher les erreurs suivantes (les liens nécessitent une connexion SAP) :

    - Fonction IDOC_INBOUND_ASYNCHRONOUS introuvable (2399329)
    - Client RFC non ABAP (type de partenaire) non pris en charge (353597)
    DegreeOfParallelism Non Nombre d’appels à traiter en parallèle. Pour ajouter ce paramètre et modifier la valeur, dans la liste Ajouter un nouveau paramètre, sélectionnez DegreeOfParallelism, puis entrez la nouvelle valeur.
    SapActions Non Filtrez les messages que vous recevez de votre serveur SAP en fonction d’une liste d’actions SAP. Pour ajouter ce paramètre, dans la liste Ajouter un nouveau paramètre, sélectionnez SapActions. Dans la nouvelle section SapActions, pour le paramètre SapActions - 1, utilisez le sélecteur de fichiers pour sélectionner une action SAP ou spécifiez manuellement une action. Pour plus d’informations sur l’action SAP, consultez Schémas de message pour les opérations IDoc.
    IDoc Format (Format IDoc) Non Format à utiliser pour recevoir des IDocs. Pour ajouter ce paramètre, dans la liste Ajouter un nouveau paramètre, sélectionnez IDoc Format.

    - Pour recevoir les IDocs au format XML brut SAP, dans la liste IDoc Format (Format IDoc), sélectionnez SapPlainXml.

    - Pour recevoir les IDocs en tant que fichier plat, dans la liste IDoc Format (Format IDoc), sélectionnez FlatFile.

    - Remarque : si vous utilisez également l’action Flat File Decode dans votre workflow, dans votre schéma de fichier plat, vous devez utiliser la propriété early_terminate_optional_fields et définir la valeur sur true. Cette condition est nécessaire, car l’enregistrement de données IDoc de fichier plat envoyé par SAP sur l’appel tRFC nommé IDOC_INBOUND_ASYNCHRONOUS n’est pas rempli à la longueur de champ SDATA complète. Azure Logic Apps fournit les données d’origine IDoc du fichier plat sans remplissage à partir de SAP. Par ailleurs, lorsque vous combinez ce déclencheur SAP avec l’action de décodage de fichier plat, le schéma fourni à l’action doit correspondre.
    Receive IDOCS with unreleased segments (Recevoir les IDocs avec des segments non mis en ligne) Non Recevez les IDocs avec ou sans segments non mis en ligne. Pour ajouter ce paramètre et modifier la valeur, dans la liste Ajouter un nouveau paramètre, sélectionnez Receive IDOCS with unreleased segments (Recevoir les IDocs avec des segments non mis en ligne), puis sélectionnez Yes (Oui) ou No (Non).
    SncPartnerNames Non Liste des partenaires SNC qui sont autorisés à appeler le déclencheur au niveau de la bibliothèque de client SAP. Seuls les partenaires répertoriés sont autorisés par la connexion SNC du serveur SAP. Pour ajouter ce paramètre, dans la liste Ajouter un nouveau paramètre, sélectionnez SncPartnerNames. Veillez à entrer chaque nom séparé par une barre verticale (|).

    L’exemple suivant montre un déclencheur managé SAP configuré de base dans un workflow Consommation :

    Screenshot shows basically configured SAP managed connector trigger in Consumption workflow.

    L’exemple suivant montre un déclencheur managé SAP dans lequel vous pouvez filtrer les messages en sélectionnant les actions SAP :

    Screenshot shows selecting an SAP action to filter messages in a Consumption workflow.

    Ou en spécifiant manuellement une action :

    Screenshot shows manually entering the SAP action to filter messages in a Consumption workflow.

    L’exemple ci-dessous montre comment l’action apparaît quand vous configurez le déclencheur pour recevoir plusieurs messages :

    Screenshot shows example trigger that receives multiple messages in a Consumption workflow.

  5. Enregistrez votre workflow pour commencer à recevoir des messages de votre serveur SAP. Dans la barre d’outils du Concepteur, sélectionnez Enregistrer.

    Votre workflow est à présent prêt à recevoir des messages de votre serveur SAP.

  6. Une fois que le déclencheur s’active et exécute votre workflow, examinez l’historique des déclencheurs du workflow pour vérifier que l’inscription du déclencheur a réussi.

Recevoir des paquets d’IDocs de SAP

Pour recevoir des paquets IDoc, qui sont des lots ou des groupes d’IDocs, le déclencheur SAP n’a pas besoin d’une configuration supplémentaire. Toutefois, pour traiter chaque élément d’un paquet IDoc après que le déclencheur a reçu le paquet, vous devez implémenter quelques étapes supplémentaires pour fractionner le paquet en IDocs individuels en configurant SAP pour envoyer des IDocs dans des paquets.

L’exemple ci-dessous montre comment extraire des IDocs individuels d’un paquet à l’aide de la fonction xpath() :

  1. Avant de commencer, vous devez disposer d’un workflow d’application logique Consommation ou Standard avec un déclencheur SAP. Si votre workflow ne commence pas déjà avec ce déclencheur, suivez les étapes précédentes de ce guide pour ajouter à votre workflow le déclencheur SAP qui peut recevoir les messages.

  2. Pour répondre immédiatement à votre serveur SAP avec l’état de requête SAP, ajoutez l’action de réponse suivante, selon que vous utilisez un déclencheur managé SAP ou un déclencheur intégré SAP :

    • Déclencheur managé SAP : pour ce déclencheur, ajoutez une action de réponse à votre workflow.

      Dans l’action de réponse, utilisez l’un des codes d’état suivants (statusCode) :

      Code d’état Description
      202 Accepté La requête a été acceptée pour être traitée, mais le traitement n’est pas encore terminé.
      204 Pas de contenu Le serveur a bien répondu à la requête et il n’y a pas de contenu supplémentaire à envoyer dans le corps de la charge utile de la réponse.
      200 OK Ce code de statut contient toujours une charge utile, même si le serveur génère un corps de charge utile de longueur nulle.
    • Déclencheur intégré SAP : pour ce déclencheur, ajoutez l’action Respond to SAP server (Répondre au serveur SAP) à votre workflow.

    Notes

    En guise de meilleure pratique, ajoutez l’action de réponse juste après le déclencheur pour libérer le canal de communication avec votre serveur SAP.

  3. Récupérez l’espace de noms racine à partir de l’IDoc XML que votre workflow reçoit de SAP.

    1. Pour extraire cet espace de noms du document XML et stocker l’espace de noms dans une variable de chaîne locale, ajoutez l’action Initialiser la variable.

    2. Renommez l’action Obtenir l’espace de noms pour le nœud racine dans l’IDoc reçu.

    3. Fournissez un nom pour la variable, puis définissez le type sur Chaîne.

    4. Dans le paramètre Valeur de l’action, cliquez dans la zone de modification, ouvrez l’éditeur d’expression ou de fonction, puis créez l’expression suivante à l’aide de la fonction xpath() :

      xpath(xml(triggerBody()?['Content']), 'namespace-uri(/*)')

      Workflow Consommation

      Screenshot shows the expression to get the root node namespace from received IDoc for a Consumption workflow.

      Workflow Standard

      Screenshot shows the expression to get the root node namespace from received IDoc for a Standard workflow.

      Quand vous avez terminé, l’expression est résolue et apparaît à présent au format suivant :

      Screenshot shows the resolved expression that gets the root node namespace from received IDoc.

  4. Pour extraire un IDoc individuel en stockant la collection IDoc dans une variable de tableau locale, procédez comme suit :

    1. Ajoutez une autre action Initialiser la variable.

    2. Renommez l’action Obtenir un tableau avec des éléments de données IDoc.

    3. Fournissez un nom pour la variable, puis définissez le type sur Tableau.

      La variable de tableau rend chaque IDoc disponible pour que votre workflow puisse les traiter individuellement en procédant à une énumération sur la collection.

    4. Dans le paramètre Valeur de l’action, cliquez dans la zone de modification, ouvrez l’éditeur d’expression ou de fonction, puis créez l’expression xpath() suivante :

      xpath(xml(triggerBody()?['Content']), '/*[local-name()="Receive"]/*[local-name()="idocData"]')

      Quand vous avez terminé, l’expression est résolue et apparaît à présent au format suivant :

      Workflow Consommation

      Screenshot shows the expression to get an array of IDocs for a Consumption workflow.

      Dans cet exemple, le workflow suivant transfère chaque IDoc à un serveur SFTP à l’aide d’une action Contrôle nommée For each (Pour chaque) et de l’action SFTP-SSH nommée Créer un fichier. Chaque IDoc doit inclure l’espace de noms racine, ce qui explique pourquoi le contenu du fichier est enveloppé dans un élément <Receive></Receive> avec l’espace de noms racine avant l’envoi de l’IDoc à l’application située en aval ou, dans ce cas, au serveur SFTP.

      Screenshot shows sending an IDoc to an SFTP server from a Consumption workflow.

      Remarque

      Pour les workflows Consommation, ce modèle est disponible en tant que modèle de démarrage rapide, que vous pouvez sélectionner dans la galerie de modèles quand vous créez une ressource d’application logique Consommation et un workflow vide. Sinon, quand le concepteur de workflow est ouvert, dans la barre d’outils du concepteur, sélectionnez Modèles.

      Screenshot that shows selecting the template for getting an IDoc batch.

      Workflow Standard

      Screenshot shows the expression to get an array of IDocs for a Standard workflow.

      Dans cet exemple, le workflow suivant transfère chaque IDoc à un serveur SFTP à l’aide d’une action Contrôle nommée For each (Pour chaque) et de l’action SFTP-SSH nommée Créer un fichier. Chaque IDoc doit inclure l’espace de noms racine, ce qui explique pourquoi le contenu du fichier est enveloppé dans un élément <Receive></Receive> avec l’espace de noms racine avant l’envoi de l’IDoc à l’application située en aval ou, dans ce cas, au serveur SFTP.

      Screenshot shows sending an IDoc to an SFTP server from a Standard workflow.


Filtrer les messages reçus avec des actions SAP

Si vous utilisez le connecteur managé SAP ou le connecteur SAP avec version ISE, sous le déclencheur de votre workflow, configurez un moyen de filtrer explicitement toutes les actions indésirables de votre serveur SAP, en fonction de l’espace de noms du nœud racine dans la charge utile XML reçue. Vous pouvez fournir une liste (tableau) avec une ou plusieurs actions SAP. Par défaut, ce tableau est vide, ce qui signifie que votre workflow reçoit tous les messages de votre serveur SAP sans filtrage. Quand vous configurez le filtre du tableau, le déclencheur reçoit uniquement les messages des types d’action SAP spécifiés et rejette tous les autres messages de votre serveur SAP. Toutefois, ce filtre n’a aucune incidence sur le fait que la saisie de la charge utile reçue soit faible ou forte. Tout filtrage avec actions SAP se produit au niveau de l’adaptateur SAP pour votre passerelle de données locale. Pour plus d’informations, consultez la procédure de test de l’envoi des IDocs à Azure Logic Apps à partir de SAP.

Configurer le modèle de requête-réponse asynchrone pour les déclencheurs

Le connecteur managé SAP prend en charge le modèle de requête-réponse asynchrone d’Azure pour les déclencheurs Azure Logic Apps. Vous pouvez utiliser ce modèle pour créer des requêtes réussies qui échoueraient avec le modèle de requête-réponse synchrone par défaut.

Notes

Dans les workflows avec plusieurs actions de réponse, toutes les actions de réponse doivent utiliser le même modèle de requête-réponse. Par exemple, si votre workflow utilise un contrôle commutateur avec plusieurs actions de réponse possibles, vous devez configurer toutes les actions de réponse pour qu’elles utilisent le même modèle de requête-réponse, qu’il soit synchrone ou asynchrone.

Si vous activez la réponse asynchrone pour votre action de réponse, votre workflow peut répondre avec une réponse 202 Accepté après avoir accepté une requête de traitement. La réponse contient un en-tête d’emplacement que vous pouvez utiliser pour récupérer l’état final de votre requête.

Pour configurer un modèle de requête-réponse asynchrone pour votre workflow à l’aide du connecteur SAP, procédez comme suit :

  1. Dans le concepteur, ouvrez votre workflow d’application logique. Vérifiez que votre workflow commence par un déclencheur SAP.

  2. Dans votre workflow, recherchez l’action Réponse, puis ouvrez les paramètres de cette action.

  3. En fonction du workflow dont vous disposez (Consommation ou Standard), suivez la procédure correspondante :

    • Consommation : sous Réponse asynchrone, remplacez la valeur Désactivé par Activé, puis sélectionnez Terminé.
    • Standard : développez Mise en réseau, puis, sous Réponse asynchrone, remplacez la valeur Désactivé par Activé.
  4. Enregistrez votre flux de travail.

Envoyer des IDocs à SAP

Pour créer un workflow d’application logique qui envoie un IDoc à un serveur SAP et retourne une réponse, suivez les exemples ci-dessous :

  1. Créez un workflow d’application logique déclenché par une requête HTTP.
  2. Ajoutez une action SAP à votre workflow pour envoyer un IDoc à SAP.
  3. Ajoutez une action de réponse à votre workflow.
  4. Créez un modèle requête-réponse d’appel de fonction distant (RFC), si vous utilisez un appel RFC pour recevoir des réponses de SAP ABAP.
  5. Testez votre workflow.

Ajout du déclencheur Request

Pour que votre workflow reçoive des IDocs de SAP sur XML HTTP, vous pouvez utiliser le déclencheur intégré de requête. Ce déclencheur crée un point de terminaison avec une URL qui permet à votre serveur SAP d’envoyer des requêtes HTTP POST à votre workflow. Quand votre workflow reçoit ces requêtes, le déclencheur est activé et passe à l’étape suivante de votre workflow.

Pour recevoir des IDocs via CPIC (Common Programming Interface Communication) en tant que XML brut ou en tant que fichier plat, consultez la section Réception d’un message de SAP.

Selon que vous disposez d’un workflow Consommation dans Azure Logic Apps multilocataire ou d’un workflow Standard dans Azure Logic Apps monolocataire, suivez la procédure correspondante :

  1. Dans le portail Azure, créez une ressource d’application logique Consommation et un workflow vide dans le concepteur.

  2. Dans le concepteur, suivez cette procédure générale pour rechercher et ajouter le déclencheur intégré Requête nommé Lors de la réception d’une requête HTTP.

    Screenshot shows the Request trigger for a Consumption workflow.

  3. Enregistrez votre flux de travail. Dans la barre d’outils du Concepteur, sélectionnez Enregistrer.

    Cette étape génère une URL de point de terminaison qui permet à votre déclencheur de recevoir les requêtes de votre serveur SAP. Par exemple :

    Screenshot shows the Request trigger's generated endpoint URL for receiving requests in a Consumption workflow.

Ajouter une action SAP pour envoyer un IDoc

Ensuite, créez une action pour envoyer votre IDoc à SAP quand le déclencheur de requête du workflow s’active. Selon que vous disposez d’un workflow Consommation dans Azure Logic Apps multilocataire ou d’un workflow Standard dans Azure Logic Apps monolocataire, suivez la procédure correspondante :

  1. Dans le concepteur de workflow, sous le déclencheur de requête, sélectionnez Nouvelle étape.

  2. Dans le concepteur, suivez cette procédure générale pour rechercher et ajouter l’action managée SAP nommée Envoyer un message à SAP.

  3. Si vous y êtes invité, fournissez les informations de connexion pour votre serveur SAP local. Sélectionnez Créer lorsque vous avez terminé. Sinon, passez à l’étape suivante pour configurer l’action SAP.

    Paramètre Obligatoire Description
    Nom de connexion Oui Attribuez un nom à cette connexion.
    Passerelle de données Oui 1. Pour l’option Abonnement, sélectionnez l’abonnement Azure pour la ressource de passerelle de données que vous avez créée dans le portail Azure pour l’installation de votre passerelle de données.

    2. Pour l’option Passerelle de connexion, sélectionnez votre ressource de passerelle de données dans Azure.
    Client Oui ID client SAP à utiliser pour la connexion à votre serveur SAP.
    Type d'authentification Oui Type d’authentification à utiliser pour votre connexion, qui doit être De base (nom d’utilisateur et mot de passe). Pour créer une connexion SNC, consultez la section Activer SNC (Secure Network Communications).
    Nom d’utilisateur SAP Oui Nom d’utilisateur de votre serveur SAP.
    Mot de passe SAP Oui Mot de passe de votre serveur SAP.
    Type d’ouverture de session Oui Sélectionnez le serveur d’applications ou le groupe (serveur de messages), puis configurez les paramètres requis correspondants, même s’ils apparaissent facultatifs :

    Serveur d’applications :
    - Hôte AS : nom d’hôte de votre serveur d’applications SAP
    - Service AS : nom du service ou numéro de port de votre serveur d’applications SAP
    - Numéro système AS : numéro système de votre serveur SAP, compris entre 00 et 99

    Groupe :
    - Hôte MS Server : nom d’hôte de votre serveur de messages SAP
    - Nom du service MS ou numéro de port : nom du service ou numéro de port de votre serveur de messages SAP
    - ID système MS : ID système de votre serveur SAP
    - Groupe d’ouverture de session MS : groupe d’ouverture de session de votre serveur SAP. Sur votre serveur SAP, vous pouvez retrouver ou modifier la valeur Logon Group (Groupe d’ouverture de session) en ouvrant la boîte de dialogue CCMS: Maintain Logon Groups (CCMS : Maintenir les groupes d’ouverture de session) (T-Code SMLG). Pour plus d’informations, consultez la note SAP 26317 : Configurer le groupe d’ouverture de session pour l’équilibrage de charge automatique.
    Types sécurisés Non Cette option est disponible à des fins de compatibilité descendante et ne vérifie que la longueur de chaîne. Par défaut, le typage fort est utilisé pour rechercher des valeurs non valides en effectuant une validation XML par rapport au schéma. Ce comportement peut vous aider à détecter les problèmes plus tôt. Apprenez-en davantage sur le paramètre Types sécurisés.
    Utiliser SNC Non Pour créer une connexion SNC, consultez la section Activer SNC (Secure Network Communications).

    Pour les autres paramètres de connexion disponibles facultatifs, consultez la section Informations de connexion par défaut.

    Une fois qu’Azure Logic Apps a configuré et testé votre connexion, la zone d’informations sur l’action SAP s’affiche. Pour plus d’informations sur les problèmes de connexion qui peuvent se produire, consultez la section Résoudre les problèmes de connexion.

    Screenshot shows a Consumption workflow with the SAP managed action named Send message to SAP.

  4. Dans l’action Envoyer un message à SAP, recherchez et sélectionnez une action SAP disponible sur votre serveur SAP pour envoyer l’IDoc.

    L’action Envoyer un message à SAP est générique et peut envoyer un message pour BAPI, IDoc, RFC ou tRFC. Toutefois, vous devez d’abord sélectionner le type de message et l’action SAP à utiliser.

    1. Dans la zone de modification du paramètre Action SAP, sélectionnez l’icône de dossier. Dans la liste qui s’ouvre, sélectionnez BAPI, IDOC, RFC ou TRFC. Cet exemple sélectionne IDOC. Si vous sélectionnez un autre type, les actions SAP disponibles changent en fonction de votre sélection.

      Notes

      Si vous obtenez une erreur Passerelle incorrecte (500) ou Requête incorrecte (400), consultez la section Erreur 500 Passerelle incorrecte ou 400 Requête incorrecte.

      Screenshot shows selecting IDOC for a Consumption workflow.

    2. Parcourez les dossiers de types d’actions SAP à l’aide des flèches pour rechercher et sélectionner l’action SAP à utiliser.

      Cet exemple sélectionne ORDERS>ORDERS05>720>Envoyer.

      Screenshot shows finding an Orders action for a Consumption workflow.

      Si vous ne trouvez pas l’action que vous souhaitez, vous pouvez entrer un chemin d’accès manuellement, par exemple :

      Screenshot shows manually entering a path to an Orders action type for a Consumption workflow.

      Conseil

      Pour le paramètre Action SAP, vous pouvez utiliser l’éditeur d’expression pour fournir la valeur du paramètre. De cette façon, vous pouvez utiliser la même action SAP pour différents types de messages.

      Pour plus d’informations sur les messages IDoc, consultez l’article Schémas de message pour les opérations IDoc.

    3. Dans l’action Envoyer un message à SAP, incluez la sortie du corps du déclencheur de requête.

      1. Dans le paramètre Message d’entrée, cliquez dans la zone de modification pour ouvrir la liste de contenu dynamique.

      2. Dans la liste de contenu dynamique, sous Lors de la réception d’une requête HTTP, sélectionnez Corps. Le champ Corps contient la sortie du corps du déclencheur de requête.

        Notes

        Si le champ Corps n’apparaît pas dans la liste, en regard du libellé Lors de la réception d’une requête HTTP, sélectionnez En savoir plus.

      Screenshot shows selecting the Request trigger's output named Body for Consumption workflow.

      L’action Envoyer un message à SAP inclut à présent le contenu du corps du déclencheur de requête et envoie cette sortie à votre serveur SAP. Par exemple :

      Screenshot shows completed SAP action for Consumption workflow.

  5. Enregistrez votre flux de travail.

Envoyer un fichier plat IDocs vers un serveur SAP (connecteur managé uniquement)

Pour envoyer un IDoc à l’aide d’un schéma de fichier plat, lorsque vous utilisez un connecteur managé SAP, vous pouvez encapsuler l’IDoc dans une enveloppe XML et suivre la procédure générale pour ajouter une action SAP afin d’envoyer un IDoc, moyennant les modifications suivantes.

Notes

Si vous utilisez le connecteur intégré SAP, évitez d’encapsuler un IDoc de fichier plat dans une enveloppe XML.

Encapsuler un IDoc avec une enveloppe XML

  1. Dans l’action SAP que vous utilisez pour envoyer le message, utilisez l’URI suivant :

    http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc

  2. Mettez en forme votre message d’entrée avec une enveloppe XML.

L’exemple suivant montre un exemple de charge utile XXML :

<SendIdoc xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/">
  <idocData>EDI_DC 3000000001017945375750 30INVOIC011BTSVLINV30KUABCABCFPPC LDCA X004010810 4 SAPMSX LSEDI ABCABCFPPC 000d3ae4-723e-1edb-9ca4-cc017365c9fd 20210217054521INVOICINVOIC01ZINVOIC2RE 20210217054520
E2EDK010013000000001017945375000001E2EDK01001000000010 ABCABC1.00000 0060 INVO9988298128 298.000 298.000 LB Z4LR EN 0005065828 L
E2EDKA1 3000000001017945375000002E2EDKA1 000000020 RS ABCABCFPPC 0005065828 ABCABCABC ABCABC Inc. Limited Risk Distributor ABCABC 1950 ABCABCABCA Blvd ABCABAABCAB L5N8L9 CA ABCABC E ON V-ABCABC LDCA
E2EDKA1 3000000001017945375000003E2EDKA1 000000020 AG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000004E2EDKA1 000000020 RE 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000005E2EDKA1 000000020 RG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000006E2EDKA1 000000020 WE 0005001847 41 ABCABC ABCABC INC (ABCABC) DC A. ABCABCAB 88 ABCABC CRESCENT ABCABAABCAB L5R 4A2 CA ABCABC 111-111-1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000007E2EDKA1 000000020 Z3 0005533050 ABCABCABC ABCABC Inc. ABCA Bank Swift Code -ABCABCABCAB Sort Code - 1950 ABCABCABCA Blvd. Acc No -1111111111 ABCABAABCAB L5N8L9 CA ABCABC E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000008E2EDKA1 000000020 BK 1075 ABCABCABC ABCABC Inc 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDKA1 3000000001017945375000009E2EDKA1 000000020 CR 1075 CONTACT ABCABCABC 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDK02 3000000001017945375000010E2EDK02 000000020 0099988298128 20210217
E2EDK02 3000000001017945375000011E2EDK02 000000020 00140-N6260-S 20210205
E2EDK02 3000000001017945375000012E2EDK02 000000020 0026336270425 20210217
E2EDK02 3000000001017945375000013E2EDK02 000000020 0128026580537 20210224
E2EDK02 3000000001017945375000014E2EDK02 000000020 01740-N6260-S
E2EDK02 3000000001017945375000015E2EDK02 000000020 900IAC
E2EDK02 3000000001017945375000016E2EDK02 000000020 901ZSH
E2EDK02 3000000001017945375000017E2EDK02 000000020 9078026580537 20210217
E2EDK03 3000000001017945375000018E2EDK03 000000020 02620210217
E2EDK03 3000000001017945375000019E2EDK03 000000020 00120210224
E2EDK03 3000000001017945375000020E2EDK03 000000020 02220210205
E2EDK03 3000000001017945375000021E2EDK03 000000020 01220210217
E2EDK03 3000000001017945375000022E2EDK03 000000020 01120210217
E2EDK03 3000000001017945375000023E2EDK03 000000020 02420210217
E2EDK03 3000000001017945375000024E2EDK03 000000020 02820210418
E2EDK03 3000000001017945375000025E2EDK03 000000020 04820210217
E2EDK17 3000000001017945375000026E2EDK17 000000020 001DDPDelivered Duty Paid
E2EDK17 3000000001017945375000027E2EDK17 000000020 002DDPdestination
E2EDK18 3000000001017945375000028E2EDK18 000000020 00160 0 Up to 04/18/2021 without deduction
E2EDK28 3000000001017945375000029E2EDK28 000000020 CA BOFACATT Bank of ABCABAB ABCABC ABCABAB 50127217 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000030E2EDK28 000000020 CA 026000082 ABCAbank ABCABC ABCABAB 201456700OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000031E2EDK28 000000020 GB ABCAGB2L ABCAbank N.A ABCABA E14, 5LB GB63ABCA18500803115593 ABCABCABC ABCABC Inc. GB63ABCA18500803115593
E2EDK28 3000000001017945375000032E2EDK28 000000020 CA 020012328 ABCABANK ABCABC ABCABAB ON M5J 2M3 2014567007 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000033E2EDK28 000000020 CA 03722010 ABCABABC ABCABABC Bank of Commerce ABCABAABCAB 64-04812 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000034E2EDK28 000000020 IE IHCC In-House Cash Center IHCC1075 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000035E2EDK28 000000020 CA 000300002 ABCAB Bank of ABCABC ABCABAB 0021520584OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000036E2EDK28 000000020 US USCC US Cash Center (IHC) city USCC1075 ABCABCABC ABCABC Inc.
E2EDK29 3000000001017945375000037E2EDK29 000000020 0064848944US A CAD CA ABCABC CA United States US CA A Air Air
E2EDKT1 3000000001017945375000038E2EDKT1 000000020 ZJ32E EN
E2EDKT2 3000000001017945375000039E2EDKT2 000038030 GST/HST877845941RT0001 *
E2EDKT2 3000000001017945375000040E2EDKT2 000038030 QST1021036966TQ0001 *
E2EDKT1 3000000001017945375000041E2EDKT1 000000020 Z4VL
E2EDKT2 3000000001017945375000042E2EDKT2 000041030 0.000 *
E2EDKT1 3000000001017945375000043E2EDKT1 000000020 Z4VH
E2EDKT2 3000000001017945375000044E2EDKT2 000043030 *
E2EDK14 3000000001017945375000045E2EDK14 000000020 008LDCA
E2EDK14 3000000001017945375000046E2EDK14 000000020 00710
E2EDK14 3000000001017945375000047E2EDK14 000000020 00610
E2EDK14 3000000001017945375000048E2EDK14 000000020 015Z4F2
E2EDK14 3000000001017945375000049E2EDK14 000000020 0031075
E2EDK14 3000000001017945375000050E2EDK14 000000020 021M
E2EDK14 3000000001017945375000051E2EDK14 000000020 0161075
E2EDK14 3000000001017945375000052E2EDK14 000000020 962M
E2EDP010013000000001017945375000053E2EDP01001000000020 000011 2980.000 EA 298.000 LB MOUSE 298.000 Z4TN 4260
E2EDP02 3000000001017945375000054E2EDP02 000053030 00140-N6260-S 00000120210205 DFUE
E2EDP02 3000000001017945375000055E2EDP02 000053030 0026336270425 00001120210217
E2EDP02 3000000001017945375000056E2EDP02 000053030 0168026580537 00001020210224
E2EDP02 3000000001017945375000057E2EDP02 000053030 9100000 00000120210205 DFUE
E2EDP02 3000000001017945375000058E2EDP02 000053030 911A 00000120210205 DFUE
E2EDP02 3000000001017945375000059E2EDP02 000053030 912PP 00000120210205 DFUE
E2EDP02 3000000001017945375000060E2EDP02 000053030 91300 00000120210205 DFUE
E2EDP02 3000000001017945375000061E2EDP02 000053030 914CONTACT ABCABCABC 00000120210205 DFUE
E2EDP02 3000000001017945375000062E2EDP02 000053030 963 00000120210205 DFUE
E2EDP02 3000000001017945375000063E2EDP02 000053030 965 00000120210205 DFUE
E2EDP02 3000000001017945375000064E2EDP02 000053030 9666336270425 00000120210205 DFUE
E2EDP02 3000000001017945375000065E2EDP02 000053030 9078026580537 00001020210205 DFUE
E2EDP03 3000000001017945375000066E2EDP03 000053030 02920210217
E2EDP03 3000000001017945375000067E2EDP03 000053030 00120210224
E2EDP03 3000000001017945375000068E2EDP03 000053030 01120210217
E2EDP03 3000000001017945375000069E2EDP03 000053030 02520210217
E2EDP03 3000000001017945375000070E2EDP03 000053030 02720210217
E2EDP03 3000000001017945375000071E2EDP03 000053030 02320210217
E2EDP03 3000000001017945375000072E2EDP03 000053030 02220210205
E2EDP19 3000000001017945375000073E2EDP19 000053030 001418VVZ
E2EDP19 3000000001017945375000074E2EDP19 000053030 002RJR-00001 AB ABCABCABC Mouse FORBUS BLUETOOTH
E2EDP19 3000000001017945375000075E2EDP19 000053030 0078471609000
E2EDP19 3000000001017945375000076E2EDP19 000053030 003889842532685
E2EDP19 3000000001017945375000077E2EDP19 000053030 011CN
E2EDP26 3000000001017945375000078E2EDP26 000053030 00459064.20
E2EDP26 3000000001017945375000079E2EDP26 000053030 00352269.20
E2EDP26 3000000001017945375000080E2EDP26 000053030 01052269.20
E2EDP26 3000000001017945375000081E2EDP26 000053030 01152269.20
E2EDP26 3000000001017945375000082E2EDP26 000053030 0126795.00
E2EDP26 3000000001017945375000083E2EDP26 000053030 01552269.20
E2EDP26 3000000001017945375000084E2EDP26 000053030 00117.54
E2EDP26 3000000001017945375000085E2EDP26 000053030 00252269.20
E2EDP26 3000000001017945375000086E2EDP26 000053030 940 2980.000
E2EDP26 3000000001017945375000087E2EDP26 000053030 939 2980.000
E2EDP05 3000000001017945375000088E2EDP05 000053030 + Z400MS List Price 52269.20 17.54 1 EA CAD 2980
E2EDP05 3000000001017945375000089E2EDP05 000053030 + XR1 Tax Jur Code Level 6795.00 13.000 52269.20
E2EDP05 3000000001017945375000090E2EDP05 000053030 + Tax Subtotal1 6795.00 2.28 1 EA CAD 2980
E2EDP05 3000000001017945375000091E2EDP05 000053030 + Taxable Amount + TaxSubtotal1 59064.20 19.82 1 EA CAD 2980
E2EDP04 3000000001017945375000092E2EDP04 000053030 CX 13.000 6795.00 7000000000
E2EDP04 3000000001017945375000093E2EDP04 000053030 CX 0 0 7001500000
E2EDP04 3000000001017945375000094E2EDP04 000053030 CX 0 0 7001505690
E2EDP28 3000000001017945375000095E2EDP28 000053030 00648489440000108471609000 CN CN ABCAB ZZ 298.000 298.000 LB US 400 United Stat KY
E2EDPT1 3000000001017945375000096E2EDPT1 000053030 0001E EN
E2EDPT2 3000000001017945375000097E2EDPT2 000096040 AB ABCABCABC Mouse forBus Bluetooth EN/XC/XD/XX Hdwr Black For Bsnss *
E2EDS01 3000000001017945375000098E2EDS01 000000020 0011
E2EDS01 3000000001017945375000099E2EDS01 000000020 01259064.20 CAD
E2EDS01 3000000001017945375000100E2EDS01 000000020 0056795.00 CAD
E2EDS01 3000000001017945375000101E2EDS01 000000020 01159064.20 CAD
E2EDS01 3000000001017945375000102E2EDS01 000000020 01052269.20 CAD
E2EDS01 3000000001017945375000103E2EDS01 000000020 94200000 CAD
E2EDS01 3000000001017945375000104E2EDS01 000000020 9440.00 CAD
E2EDS01 3000000001017945375000105E2EDS01 000000020 9450.00 CAD
E2EDS01 3000000001017945375000106E2EDS01 000000020 94659064.20 CAD
E2EDS01 3000000001017945375000107E2EDS01 000000020 94752269.20 CAD
E2EDS01 3000000001017945375000108E2EDS01 000000020 EXT
Z2XSK010003000000001017945375000109Z2XSK01000000108030 Z400 52269.20
Z2XSK010003000000001017945375000110Z2XSK01000000108030 XR1 13.000 6795.00 CX
</idocData>
</SendIdoc>

Ajouter une action de réponse

À présent, configurez votre workflow pour retourner les résultats de votre serveur SAP au demandeur d’origine. Pour accomplir cette tâche, effectuez les étapes suivantes :

  1. Dans le concepteur de workflow, sous l’action SAP, sélectionnez Nouvelle étape.

  2. Dans le concepteur, suivez cette procédure générale pour rechercher et ajouter l’action intégrée de requête nommée Réponse.

  3. Dans l’action Réponse, pour le paramètre Corps, cliquez dans la zone de modification pour ouvrir la liste de contenu dynamique.

  4. Dans la liste de contenu dynamique, sous Envoyer un message à SAP, sélectionnez Corps. Le champ Corps contient la sortie du corps de l’action SAP.

    Screenshot shows selecting SAP action output named Body for Consumption workflow.

  5. Enregistrez votre flux de travail.

Créer un modèle de requête-réponse RFC (Remote Function Call)

Pour les workflows Consommation qui utilisent le connecteur managé SAP et le connecteur SAP avec version ISE, si vous devez recevoir des réponses à l’aide d’un appel de fonction distant (RFC) à Azure Logic Apps à partir de SAP ABAP, vous devez implémenter un modèle de requête-réponse. Pour recevoir des IDocs dans votre workflow quand vous utilisez le déclencheur de requête, assurez-vous que la première action du workflow est une action Réponse qui utilise le code d’état 200 OK sans contenu. Cette étape recommandée termine immédiatement le transfert asynchrone SAP LUW sur tRFC, ce qui rend la conversation SAP CPIC à nouveau disponible. Vous pouvez ensuite ajouter d’autres actions à votre workflow pour traiter l’IDoc reçu sans bloquer les transferts ultérieurs.

Notes

Le déclencheur SAP reçoit des IDocs via tRFC, qui n’a pas de paramètre de réponse par définition.

Pour implémenter un modèle de requête et de réponse, vous devez d’abord découvrir le schéma RFC à l’aide de la commande generate schema. Le schéma généré comporte deux nœuds racines possibles :

  • Le nœud de requête, qui est l’appel que vous recevez de SAP.
  • Le nœud de réponse, qui est votre réponse à SAP.

Dans l’exemple suivant, le module RFC STFC_CONNECTION génère un modèle de requête-réponse. Le code XML de la requête est analysé pour extraire une valeur de nœud dans laquelle SAP demande <ECHOTEXT>. La réponse insère l’horodatage actuel sous la forme d’une valeur dynamique. Vous recevez une réponse similaire lorsque vous envoyez un RFC STFC_CONNECTION à SAP depuis un workflow d’application logique.

<STFC_CONNECTIONResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
  <ECHOTEXT>@{first(xpath(xml(triggerBody()?['Content']), '/*[local-name()="STFC_CONNECTION"]/*[local-name()="REQUTEXT"]/text()'))}</ECHOTEXT>
  <RESPTEXT>Azure Logic Apps @{utcNow()}</RESPTEXT>
</STFC_CONNECTIONResponse>

Tester votre workflow

  1. Si votre ressource d’application logique Consommation n’est pas déjà activée, dans le menu associé, sélectionnez Vue d’ensemble. Dans la barre d’outils, sélectionnez Activer.

  2. Dans la barre d’outils du concepteur, sélectionnez Exécuter le déclencheur>Exécuter pour démarrer manuellement votre workflow.

  3. Pour simuler une charge utile de déclencheur de webhook, envoyez une requête HTTP POST à l’URL de point de terminaison spécifiée par le déclencheur de requête de votre workflow. Veillez à inclure le contenu du message avec votre requête. Pour envoyer la requête, utilisez un outil tel que le client de l’API Postman.

    Pour cet exemple, la requête HTTP POST envoie un fichier IDoc, qui doit être au format XML et inclure l’espace de noms de l’action SAP sélectionnée. Par exemple :

    <?xml version="1.0" encoding="UTF-8" ?>
    <Send xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/2/ORDERS05//720/Send">
      <idocData>
        <...>
      </idocData>
    </Send>
    
  4. Une fois votre requête HTTP envoyée, attendez la réponse de votre workflow.

    Notes

    Votre workflow peut expirer si toutes les étapes nécessaires pour la réponse ne se terminent pas dans la limite de délai d’attente de la requête. Si cette situation se produit, les requêtes peuvent être bloquées. Pour vous aider à diagnostiquer les problèmes, découvrez comment vous pouvez vérifier et surveiller vos workflows d’application logique.

Vous venez de créer un workflow qui peut communiquer avec votre serveur SAP. Après avoir configuré une connexion SAP pour votre workflow, vous pouvez essayer de l’expérimenter avec BAPI et RFC.

Types sécurisés

Par défaut, quand vous créez une connexion pour l’opération managée SAP, le typage fort est utilisé pour rechercher des valeurs non valides en effectuant une validation XML par rapport au schéma. Ce comportement peut vous aider à détecter les problèmes plus tôt. L’option Types sécurisés est disponible pour la compatibilité descendante et ne vérifie que la longueur de chaîne. Si vous choisissez Types sécurisés, les types DATS et TIMS dans SAP sont traités en tant que chaînes plutôt que comme leurs équivalents XML, xs:date et xs:time, où xmlns:xs="http://www.w3.org/2001/XMLSchema". Les types sécurisés affectent le comportement pour la génération de schémas dans sa globalité, le message d’envoi pour à la fois la charge utile « envoyé » et la réponse « reçu » ainsi que le déclencheur.

Quand le typage fort est utilisé (l’optionTypes sécurisés n’est pas activée), le schéma mappe les types DATS and TIMS à des types XML plus simples :

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true" type="xs:date"/>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true" type="xs:time"/>

Lorsque vous envoyez des messages en utilisant un typage fort, la réponse DATS et TIMS est conforme au format de type XML correspondant :

<DATE>9999-12-31</DATE>
<TIME>23:59:59</TIME>

Quand l’optionTypes sécurisés est activée, le schéma mappe les types DATS and TIMS aux champs de chaîne XML avec des restrictions de longueur uniquement, par exemple :

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="8" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="6" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Lorsque les messages sont envoyés avec l’optionTypes sécurisés activée, la réponse DATS et TIMS ressemble à cet exemple :

<DATE>99991231</DATE>
<TIME>235959</TIME>

Scénarios avancés

Modifier les en-têtes de langue pour l’envoi de données à SAP

Quand vous vous connectez à SAP à partir d’Azure Logic Apps, l’anglais est la langue par défaut utilisée par la connexion SAP pour envoyer les données à votre serveur SAP. Toutefois, le connecteur managé SAP et le connecteur intégré SAP gèrent de différentes manières la modification et l’enregistrement de la langue utilisée.

  • Quand vous créez une connexion avec le connecteur intégré SAP, les paramètres de connexion vous permettent de spécifier et d’enregistrer la valeur du paramètre de langue dans le cadre des paramètres de connexion SAP.

  • Quand vous créez une connexion avec le connecteur managé SAP, les paramètres de connexion n’ont pas de paramètre de langue. Par conséquent, vous ne pouvez pas spécifier la langue à utiliser pour envoyer les données à votre serveur SAP. En lieu et place, au moment de la conception et de l’exécution du workflow, le connecteur utilise la langue locale de votre navigateur web à partir de chaque requête envoyée à votre serveur. Par exemple, si votre navigateur est défini sur le portugais, Azure Logic Apps crée et teste la connexion SAP avec le portugais, mais n’enregistre pas la connexion avec cette langue.

    Vous pouvez toutefois définir la langue de votre connexion au moyen de l’en-tête HTTP standard Accept-Language avec vos requêtes entrantes. La plupart des navigateurs web ajoutent un en-tête Accept-Language en fonction des paramètres régionaux. Le navigateur web applique cet en-tête quand vous créez une connexion SAP dans le concepteur de workflow. Vous pouvez dès lors mettre à jour les paramètres de votre navigateur web pour utiliser votre langue de préférence ou créer votre connexion SAP à l’aide d’Azure Resource Manager au lieu du concepteur de workflow.

    Par exemple, vous pouvez envoyer une requête avec l’en-tête Accept-Language à votre workflow d’application logique à l’aide du déclencheur de requête nommé Lors de la réception d’une requête HTTP. Toutes les actions de votre workflow reçoivent l’en-tête. Ensuite, SAP utilise les langues spécifiées dans ses messages système, tels que les messages d’erreur BAPI. Si vous ne passez pas d’en-tête Accept-Language au moment de l’exécution, par défaut, l’anglais est utilisé.

    Si vous utilisez l’en-tête Accept-Language, vous pouvez obtenir l’erreur suivante : Veuillez vérifier les informations et/ou autorisations de votre compte, puis réessayer. Dans ce cas, consultez plutôt les journaux d’erreurs du composant SAP. L’erreur se produit réellement dans le composant SAP qui utilise l’en-tête. Vous pouvez donc obtenir l’un des messages d’erreur suivants :

    • « SAP.Middleware.Connector.RfcLogonException : Sélectionnez l’une des langues installées »

    • « SAP.Middleware.Connector.RfcAbapMessageException : Sélectionnez l’une des langues installées »

Confirmer la transaction séparément et explicitement

Quand vous envoyez des transactions à SAP depuis Azure Logic Apps, cet échange se fait en deux étapes, comme décrit dans le document SAP, Programmes du serveur RFC transactionnels.

Par défaut, l’action du connecteur managé SAP nommée Envoyer un message à SAP gère les deux étapes de transfert de la fonction et de confirmation de la transaction en un seul appel. Vous avez également la possibilité de dissocier ces étapes. La dissociation des étapes de transfert et de confirmation est utile dans le cas où vous ne souhaitez pas dupliquer des transactions dans SAP. Ces scénarios incluent les échecs qui se produisent pour des raisons telles que des problèmes réseau.

Vous pouvez envoyer un IDoc sans confirmer automatiquement la transaction à l’aide de l’action de connecteur managé SAP nommée [IDOC] Send document to SAP ([IDOC] Envoyer un document à SAP). Vous pouvez ensuite confirmer explicitement la transaction à l’aide de l’action de connecteur managé SAP nommée [IDOC - RFC] Confirmer l’ID de transaction. Quand votre workflow confirme séparément la transaction dans une autre étape, le système SAP ne termine la transaction qu’une seule fois.

Dans les workflows Standard, le connecteur intégré SAP comporte également des actions qui gèrent séparément les étapes de transfert et de confirmation, en particulier [IDoc] Envoyer un document à SAP et [IDOC - RFC] Confirmer l’ID de transaction.

L’exemple de workflow ci-dessous illustre ce modèle :

  1. Créez et ouvrez une application logique Consommation ou Standard avec un workflow vide dans le concepteur. Ajoutez le déclencheur de requête.

  2. Pour éviter d’envoyer des IDocs en double à SAP, suivez ces autres étapes pour créer et utiliser un ID de transaction IDoc dans vos actions SAP.

  3. Ajoutez l’action SAP nommée [IDOC] Envoyer un document à SAP à votre workflow. Fournissez les informations relatives à l’IDoc que vous envoyez à votre système SAP, ainsi que les valeurs suivantes :

    Paramètre active Description
    Confirm TID (Confirmer le TID) Non Ne pas confirmer automatiquement l’ID de transaction, ce qui se produit explicitement dans une étape distincte.
    Transaction Id GUID (GUID d’ID de transaction) <IDoc-transaction-ID> Si ce paramètre n’apparaît pas automatiquement, ouvrez la liste Ajouter de nouveaux paramètres, puis sélectionnez le paramètre.

    Vous pouvez spécifier manuellement cette valeur ou le connecteur peut générer automatiquement ce GUID en tant que sortie de l’action [IDOC] Envoyer un document à SAP. Cet exemple laisse ce paramètre vide pour générer automatiquement le GUID.

    Workflow Consommation

    Screenshot shows Consumption workflow with the action named IDOC Send document to SAP.

    Workflow Standard

    Screenshot shows Standard workflow with the action named IDOC Send document to SAP.

  4. Dans l’action SAP nommée [IDOC] Envoyer un document à SAP, ouvrez Paramètres pour examiner la stratégie de nouvelles tentatives.

    L’option Par défaut est la stratégie recommandée, mais vous pouvez sélectionner une stratégie personnalisée en fonction de vos besoins. Si vous choisissez d’utiliser une stratégie personnalisée, configurez au moins une nouvelle tentative pour surmonter les pannes réseau temporaires.

  5. Ajoutez à présent l’action SAP nommée [IDOC - RFC] Confirm transaction Id ([IDOC - RFC] Confirmer l’ID de transaction).

    1. Dans le paramètre Transaction ID (ID de transaction), cliquez dans la zone de modification pour ouvrir la liste de contenu dynamique.

    2. Dans la liste, sous [IDOC] Envoyer un document à SAP, sélectionnez la valeur Transaction Id (ID de transaction), qui correspond à la sortie de l’action SAP précédente.

      Workflow Consommation

      Screenshot shows Consumption workflow with action named Confirm transaction ID, which includes GUID output from previous action.

      Workflow Standard

      Screenshot shows Standard workflow with action named Confirm transaction ID, which includes GUID output from previous action.

    Après l’exécution de cette étape, la transaction actuelle est marquée comme terminée aux deux extrémités, sur le côté connecteur SAP et sur le côté système SAP.

Éviter d’envoyer des IDocs en double avec une variable d’ID de transaction

Si vous rencontrez un problème lié à votre workflow qui envoie des IDocs en double à SAP, vous pouvez créer une variable de chaîne qui sert d’identificateur de transaction IDoc. Vous pouvez ensuite utiliser cet identificateur pour empêcher les transmissions réseau en double dans des conditions telles que des pannes temporaires, des problèmes réseau ou des accusés de réception perdus.

  1. Dans le concepteur, après avoir ajouté le déclencheur de requête et avant d’ajouter l’action SAP nommée [IDOC] Envoyer un document à SAP, ajoutez l’action nommée Initialiser la variable à votre workflow.

  2. Renommez l’action Créer un ID de transaction IDoc.

  3. Dans la zone d’informations sur l’action, fournissez les valeurs de paramètres suivantes :

    Paramètre active Description
    Nom <variable-name> Nom de votre variable. Par exemple, IDocTransactionID.
    Type Chaîne Type de variable.
    Valeur guid() Cliquez dans la zone de modification, ouvrez l’éditeur d’expression ou de fonction, puis entrez guid(). Enregistrez vos modifications.

    Le paramètre Valeur est à présent défini sur la fonction guid(), qui génère un GUID.

    Workflow Consommation

    Screenshot shows Consumption workflow with the action named Create transaction ID.

    Workflow Standard

    Screenshot shows Standard workflow with the action named Create transaction ID.

    Remarque

    Les systèmes SAP oublient un identificateur de transaction après une durée spécifiée, ou 24 heures par défaut. Par conséquent, SAP ne manque jamais de confirmer un identificateur de transaction si l’ID ou le GUID est inconnu. Si la confirmation d’un identificateur de transaction échoue, cet échec indique que la communication avec le système SAP a échoué avant que SAP ait pu accuser réception de la confirmation.

  4. Ajoutez l’action SAP nommée [IDOC] Envoyer un document à SAP à votre workflow. Fournissez les informations relatives à l’IDoc que vous envoyez à votre système SAP, ainsi que les valeurs suivantes :

    Paramètre active Description
    Confirm TID (Confirmer le TID) Non Ne pas confirmer automatiquement l’ID de transaction, ce qui se produit explicitement dans une étape distincte.
    Transaction Id GUID (GUID d’ID de transaction) <IDoc-transaction-ID> Si ce paramètre n’apparaît pas automatiquement, ouvrez la liste Ajouter de nouveaux paramètres, puis sélectionnez le paramètre. Pour sélectionner la variable d’ID de transaction que vous avez créée, procédez comme suit :

    1. Dans le paramètre Transaction Id GUID (GUID d’ID de transaction), cliquez dans la zone de modification pour ouvrir la liste de contenu dynamique.

    2. Dans la liste, sous Variables, sélectionnez la variable que vous avez créée précédemment, qui correspond à IDocTransactionID dans cet exemple.

    Workflow Consommation

    Screenshot shows Consumption workflow with action named IDOC Send document to SAP.

    Workflow Standard

    Screenshot shows Standard workflow with action named IDOC Send document to SAP.

  5. Pour l’action managée SAP nommée [IDOC] Envoyer un document à SAP, ouvrez Paramètres pour examiner la stratégie de nouvelles tentatives.

    L’option Par défaut est la stratégie recommandée, mais vous pouvez sélectionner une stratégie personnalisée en fonction de vos besoins. Si vous choisissez d’utiliser une stratégie personnalisée, configurez au moins une nouvelle tentative pour surmonter les pannes réseau temporaires.

    Notes

    Seules les actions des connecteurs managés disposent actuellement du paramètre de stratégie de nouvelles tentatives, et non les connecteurs intégrés basés sur le fournisseur de services.

  6. Ajoutez à présent l’action SAP nommée [IDOC - RFC] Confirm transaction Id ([IDOC - RFC] Confirmer l’ID de transaction).

    1. Dans le paramètre Transaction ID (ID de transaction), cliquez dans la zone de modification pour ouvrir la liste de contenu dynamique.

    2. Dans la liste, sous Variables, entrez le nom de la variable que vous avez créée, qui correspond à IDocTransactionID dans cet exemple.

      Workflow Consommation

      Screenshot shows Consumption workflow with action named Confirm transaction ID using a variable.

      Workflow Standard

      Screenshot shows Standard workflow with action named Confirm transaction ID using a variable.

  7. Si vous le souhaitez, validez la déduplication dans votre environnement de test.

    1. Ajoutez une autre action SAP nommée [IDOC] Envoyer un document à SAP. Dans le paramètre ID de transaction , sélectionnez le GUID ID de transaction que vous avez utilisé à l’étape précédente.

    2. Pour valider le numéro d’IDoc attribué après chaque appel de l’action nommée [IDOC] Envoyer un document à SAP, ajoutez l’action nommée [IDOC] Obtenir une liste d’IDOC pour la transaction à votre workflow en spécifiant le même ID de transaction et la direction de réception.

      Si le même numéro d’IDoc est retourné pour les deux appels, l’IDoc a été dédupliqué.

Si vous envoyez le même IDoc à deux reprises, vous pouvez vérifier que SAP peut identifier la duplication de l’appel tRFC et résoudre les deux appels dans un seul message IDoc entrant.

Résoudre les problèmes

Problèmes de connexion

Lors de la création de la connexion, si vous recevez l’erreur suivante, il y a un problème lié à votre installation de la bibliothèque de client SAP NCo :

Le test de connexion a échoué. Erreur 'Échec du traitement de la requête. Détails de l’erreur : 'impossible de charger le fichier ou l’assembly 'sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken 50436dca5c7f7d23' ou une de ses dépendances. Le système ne peut pas localiser le fichier spécifié.’.’

Veillez à installer la version requise de la bibliothèque de client NCo SAP et à respecter tous les autres prérequis.

Erreur 500 Passerelle incorrecte ou 400 Requête incorrecte

Si vous recevez une erreur 500 Passerelle incorrecte ou 400 Demande incorrecte avec un message similaire à Service 'sapgw00' inconnu, la résolution de noms du service réseau en numéro de port échoue, par exemple :

{
   "body": {
      "error": {
         "code": 500,
         "source": "EXAMPLE-FLOW-NAME.eastus.environments.microsoftazurelogicapps.net",
         "clientRequestId": "00000000-0000-0000-0000-000000000000",
         "message": "BadGateway",
         "innerError": {
            "error": {
               "code": "UnhandledException",
               "message": "\nERROR service 'sapgw00' unknown\nTIME Wed Nov 11 19:37:50 2020\nRELEASE 721\nCOMPONENT NI (network interface)\nVERSION 40\nRC -3\nMODULE ninti.c\nLINE 933\nDETAIL NiPGetServByName: 'sapgw00' not found\nSYSTEM CALL getaddrinfo\nCOUNTER 1\n\nRETURN CODE: 20"
            }
         }
      }
   }
}
  • Option 1 : dans votre connexion d’API et la configuration du déclencheur, remplacez le nom de votre service de passerelle par son numéro de port. Dans l’exemple d’erreur, sapgw00 doit être remplacé par un numéro de port réel, par exemple 3300. Il s’agit de la seule option disponible pour l’environnement ISE.

  • Option 2 : si vous utilisez la passerelle de données locale, vous pouvez ajouter le nom du service de passerelle au mappage de port dans %windir%\System32\drivers\etc\services puis redémarrer le service de passerelle de données locale, par exemple :

    sapgw00  3300/tcp
    

Vous pouvez obtenir une erreur similaire lorsque le nom du serveur d’applications ou du serveur de messages SAP correspond à l’adresse IP. Pour l’environnement ISE, vous devez spécifier l’adresse IP du serveur d’applications ou du serveur de messages SAP. Pour la passerelle de données locale, vous pouvez ajouter le nom au mappage d’adresses IP dans %windir%\System32\drivers\etc\hosts, par exemple :

10.0.1.9 SAPDBSERVER01 # SAP System Server VPN IP by computer name
10.0.1.9 SAPDBSERVER01.someguid.xx.xxxxxxx.cloudapp.net # SAP System Server VPN IP by fully qualified computer name

Erreurs lors de l’envoi de paquets IDoc de SAP à votre déclencheur

Si vous ne pouvez pas envoyer de paquets IDoc de SAP vers votre déclencheur, consultez le message de rejet d’appel du RFC transactionnel (tRFC) dans la boîte de dialogue SAP tRFC (T-Code SM58). Dans l’interface SAP, vous pouvez recevoir les messages d’erreur suivants, qui sont découpés en raison des limites de sous-chaîne dans le champ Texte d’état.

Le segment ou la définition de groupe E2EDK36001 est introuvable dans le métavolume IDoc

Ce message d’erreur signifie que les échecs attendus se produisent avec d’autres erreurs. Par exemple, l’échec de génération d’une charge utile XML IDoc, car ses segments ne sont pas libérés par SAP. Par conséquent, les métadonnées de type de segment requises pour la conversion sont manquantes.

Pour que ces segments soient diffusés par SAP, contactez l’ingénieur ABAP pour votre système SAP.

Le RequestContext sur le IReplyChannel a été fermé sans qu’une réponse ne soit envoyée

Pour le connecteur managé SAP et le connecteur SAP avec version ISE, ce message d’erreur signifie que des échecs inattendus se produisent quand le gestionnaire catch-all du canal arrête le canal en raison d’une erreur, puis reconstruit le canal pour traiter d’autres messages.

Notes

Le déclencheur managé SAP et les déclencheurs SAP avec version ISE sont des webhooks qui utilisent l’adaptateur SAP basé sur SOAP. Toutefois, le déclencheur intégré SAP est un déclencheur basé sur Azure Functions qui n’utilise pas d’adaptateur SAP SOAP et n’obtient pas ce message d’erreur.

  • Pour confirmer que votre workflow a reçu l’IDoc, ajoutez une action de réponse qui renvoie un code d’état 200 OK. Laissez le corps vide et ne modifiez pas ou n’ajoutez pas les en-têtes. L’Idoc est transporté via tRFC, ce qui ne permet pas une charge utile de réponse.

  • Pour rejeter le IDoc à la place, répondez avec n’importe quel code d’état HTTP autre que 200 OK. L’adaptateur SAP renvoie ensuite une exception à SAP en votre nom. Vous devez uniquement rejeter le IDoc pour signaler les erreurs de transport à SAP, par exemple un IDoc non routé que votre application ne peut pas traiter. Vous ne devez pas rejeter un IDoc pour les erreurs au niveau de l’application, telles que les problèmes liés aux données contenues dans l’IDoc. Si vous retardez l’acceptation du transport pour la validation au niveau de l’application, vous pouvez constater des performances négatives en raison du blocage de votre connexion du transport d’autres IDoc.

  • Si vous recevez ce message d’erreur et que vous rencontrez des défaillances système en appelant Azure Logic Apps, vérifiez que vous avez configuré les paramètres réseau pour votre service de passerelle de données locale pour votre environnement spécifique. Par exemple, si votre environnement réseau requiert l’utilisation d’un proxy pour appeler des points de terminaison Azure, vous devez configurer votre service de passerelle de données locale pour qu’il utilise votre proxy. Pour plus d’informations, consultez Configuration du proxy.

  • Si vous recevez ce message d’erreur et que vous rencontrez des défaillances intermittentes en appelant Azure Logic Apps, vous devrez peut-être augmenter le nombre de tentatives ou l’intervalle avant nouvelle tentative en procédant comme suit :

    1. Vérifiez les paramètres SAP dans le fichier de configuration du service de passerelle de données locale nommé Microsoft.PowerBI.EnterpriseGateway.exe.config.

      1. Sous le nœud racine configuration, ajoutez un élément configSections, s’il n’en existe aucun.

      2. Sous le configSections nœud, ajoutez un section élément avec les attributs suivants, s’il n’existe aucun : name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"

        Important

        Ne modifiez pas les attributs dans les éléments existants section, si de tels éléments existent déjà.

        Votre élément configSections ressemble à la version suivante, si aucune autre section ou aucun autre groupe de sections n’est déclaré(e) dans la configuration du service de passerelle :

        <configSections>
          <section name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"/>
        </configSections>
        
      3. Sous le nœud racine configuration, ajoutez un élément SapAdapterSection, s’il n’en existe aucun.

      4. Sous le SapAdapterSection nœud, ajoutez un Broker élément avec les attributs suivants, s’il n’existe aucun : WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2"

        Important

        Modifiez les attributs de l’élément Broker, même si l’élément existe déjà.

        L’élément SapAdapterSection ressemble à la version suivante, si aucun autre élément ou attribut n’est déclaré dans la configuration de l’adaptateur SAP :

        <SapAdapterSection>
          <Broker WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2" />
        </SapAdapterSection>
        

        Le paramètre nombre de nouvelles tentatives ressemble à WebhookRetryMaximumCount="2". Le paramètre d’intervalle avant nouvelle tentative ressemble à WebhookRetryDefaultDelay="00:00:00.10" et le format d’intervalle de temps est HH:mm:ss.ff.

      Notes

      Pour plus d’informations sur le fichier de configuration, consultez Schéma du fichier de configuration pour .NET Framework.

    2. Enregistrez vos modifications.

    3. Si vous utilisez la passerelle de données locale, redémarrez votre passerelle.

Étapes suivantes