Scénarios entrants BAPI
Dans SAP, vous pouvez appeler des fonctions dans d'autres applications ou des systèmes SAP qui sont enregistrés auprès de SAP en tant que serveurs RFC (Remote Function Call). Dans IBM® App Connect Enterprise, vous pouvez enregistrer l'adaptateur SAP avec SAP en tant que serveur RFC afin qu'il accepte les appels synchrones et asynchrones provenant de SAP.
Intégration de SAP à un système avec une interface synchrone
Dans SAP, une interface BAPI est un appel de fonction. Si un système est connecté à SAP en tant que serveur RFC, vous pouvez utiliser l'interface BAPI pour définir l'interface dans laquelle un programme exécuté dans SAP peut appeler un système externe. Le système externe est identifié dans SAP par sa valeur RFCDestination, qui est liée à un ID de programme dans l'administration SAP . L'ID programme est spécifié par le système externe lorsqu'il se connecte pour la première fois à SAP.
A l'aide de WebSphere® Adapter for SAP, un flux de messages peut se connecter à SAP en tant que serveur RFC en configurant l'adaptateur avec l'ID de programme approprié et en déployant le flux de messages sur le noeud d'intégration. Après le déploiement, le flux de messages peut recevoir des appels de fonction synchrones à l'aide de l'interface BAPI.
Identificateur de la réponse
Les paramètres d'importation BAPI sont reçus par l'adaptateur et propagés à partir d'un noeud SAPInput en tant que structure d'arborescence de messages. Les paramètres d'exportation BAPI sont propagés à un noeud SAPReply en tant que structure d'arborescence de messages. L'adaptateur renvoie ensuite les paramètres d'exportation au programme SAP appelant. Dans ce cas, le noeud SAPReply se trouve généralement dans le même flux que le noeud SAPInput . Le noeud SAPInput fournit un ID unique (identificateur de réponse) pour chaque appel BAPI. L'identificateur de réponse est propagé au noeud SAPReply (dans l'environnement local) pour indiquer à quel appel BAPI il répond.
S'il n'existe aucun identificateur de réponse dans l'environnement local, le noeud SAPReply utilise automatiquement l'identificateur de réponse du noeud SAPInput qui a déclenché l'exécution en cours du flux de messages. Si le flux est déclenché par un noeud SAPInput quelconque, ou si une rupture se produit dans le flux, une erreur est émise. Une exception non gérée dans le flux de messages entraîne une défaillance du système dans SAP.
Même si l'interface BAPI n'attend aucun paramètre de sortie, le message (vide) doit être propagé au noeud SAPReply .
Vous pouvez traiter deux appels simultanés à partir de SAP en configurant le flux de messages avec une instance supplémentaire.
Scénario 1
Le schéma suivant illustre un flux de messages dans lequel IBM App Connect Enterprise assure la liaison entre SAP et une application cible (dans ce cas, Db2® ). Le programme SAP nécessite des données de réponse; il bloque donc la suite du traitement jusqu’à ce que l’appel soit terminé.

- Le programme « SAP » effectue un appel BAPI vers « IBM App Connect Enterprise ».
- IBM App Connect Enterprise convertit l'appel en une requête SQL.
- IBM App Connect Enterprise transmet l'appel à Db2.
- Db2 traite la requête SQL et renvoie le résultat à IBM App Connect Enterprise.
- IBM App Connect Enterprise convertit le résultat SQL en une réponse BAPI et envoie cette réponse à SAP.
- Le programme SAP traite la ligne de code suivante.
Scénario 2
Le schéma suivant illustre également un flux de messages dans lequel le programme SAP nécessite des données de réponse; toutefois, dans ce scénario, les appels entre IBM App Connect Enterprise et l'application cible (en l'occurrence, IBM MQ ) sont asynchrones. Le système « SAP » bloque tout traitement ultérieur jusqu'à ce que l'appel soit terminé. Si la valeur de la propriété ` Maximum client wait timeSAP ` est insuffisante ou si elle est définie sur 0, une erreur de délai d'attente peut se produire. Pour plus d'informations sur la Maximum client wait time propriété du nœud d'entrée « SAP », consultez la section «Durée d'attente maximale du client (en secondes) ». Lorsque vous utilisez le noeud SAPReply dans un flux différent du noeud SAPInput , déployez le noeud SAPReply sur le même serveur d'intégration que le noeud SAPInput .

- Le programme « SAP » effectue un appel BAPI vers « IBM App Connect Enterprise ».
- IBM App Connect Enterprise convertit les paramètres d'importation dans un format de message compréhensible par l'application cible.
- IBM App Connect Enterprise place ce message dans une file d'attente de requêtes.
- L'application cible extrait le message de demande de la file d'attente, le traite et place un message de réponse dans la file d'attente de réponse.
- IBM App Connect Enterprise récupère le message de réponse dans la file d'attente.
- IBM App Connect Enterprise convertit le message de réponse en paramètres d'exportation BAPI et envoie la réponse à SAP.
Scénario 3
Le schéma suivant illustre un appel asynchrone de SAP vers IBM App Connect Enterprise, ainsi qu'un appel asynchrone de IBM App Connect Enterprise vers une application cible. Ce scénario montre comment combiner le traitement entrant décrit dans cette rubrique avec le traitement sortant pour obtenir le même résultat que dans les scénarios 1 et 2. Pour plus d'informations sur le traitement sortant, voir Traitement sortant pour l'interface BAPI.

- Le programme « SAP » effectue un appel BAPI vers IBM App Connect Enterprise, enregistre les informations pertinentes dans une table de base de données, puis passe à la ligne de code suivante.
- IBM App Connect Enterprise convertit les paramètres d'importation dans un format de message compréhensible par l'application cible.
- IBM App Connect Enterprise place ce message dans une file d'attente de requêtes.
- L'application cible extrait le message de demande de la file d'attente et le traite.
- IBM App Connect Enterprise récupère le message de réponse dans la file d'attente.
- Le noeud SAPRequest envoie le message au programme SAP , demandant une mise à jour dans SAP.
- Le programme SAP fait référence aux informations stockées dans la table de base de données et effectue la mise à jour demandée.
Erreurs et avertissements
- Si un noeud SAPReply est déployé mais qu'aucun noeud SAPInput n'est déployé sur ce serveur d'intégration, un avertissement est consigné dans syslog ou dans l'Afficheur d'événements Windows .
- Si le noeud SAPReply est fourni avec un identificateur de réponse qui ne correspond à aucun appel BAPI dans ce serveur d'intégration, une erreur est émise.
- Si le même identificateur de réponse est envoyé à deux noeuds SAPReply , le deuxième noeud reçoit un message d'erreur.
- Si un programme SAP tente d'appeler une interface BAPI qui utilise la valeur RFCDestination du noeud d'intégration, mais que cette interface BAPI n'a pas été découverte pour cet adaptateur, une erreur est consignée dans syslog ou dans l'afficheur d'événements Windows et un message d'échec est renvoyé au programme SAP appelant.