Partager via


Opérations sur les IDC dans SAP

Les IDOCs sont des documents de type EDI standardisés que SAP prend en charge pour la communication asynchrone avec les systèmes SAP et non SAP. LesIDOC sont utilisés pour l’envoi et la réception de documents « métier », tels que des commandes client, par exemple, vers ou à partir du système SAP d’un partenaire commercial ou d’un programme externe.

Bien que le système SAP prenne en charge un certain nombre de types de ports pour envoyer et recevoir des IDOCs (tels que le port de fichier, le port CPIC), l’adaptateur SAP prend en charge l’envoi et la réception d’IDOCs via le port tRFC.

Opérations d’envoi d’un IDOC

Tous les appels IDOC à SAP sont traités en interne comme des appels tRFC dans lesquels l’adaptateur agit comme un client tRFC et appelle un RFC dans SAP pour envoyer un IDOC. Comme tout autre appel client tRFC, le client d’adaptateur transmet éventuellement un GUID à l’adaptateur, qui à son tour l’associe à l’ID de transaction (TID) qu’il utilise pour l’appel sur le système SAP. (Si le client de l’adaptateur ne passe pas de GUID, l’adaptateur génère son propre GUID.) Le GUID est retourné au client d’adaptateur dans le message de réponse. Le client d’adaptateur peut utiliser ce GUID pour confirmer le TID sur le système SAP. Le TID SAP réel utilisé par l’adaptateur pour l’appel tRFC peut être obtenu en appelant une méthode statique spéciale dans la liaison SAP, ConvertGuidToTid. Avoir le TID réel peut être utile pour résoudre les problèmes sur le système SAP.

Une fois l’appel d’envoi de l’IDOC terminé, le TID doit être confirmé sur le système SAP. Cela permet au système SAP de supprimer le TID de sa base de données. Le client d’adaptateur peut confirmer le TID sur le système SAP.

  • Explicitement, en appelant l’opération RfcConfirmTransID sur l’adaptateur. Cette opération prend un GUID (retourné dans le message de réponse ci-dessus) et entraîne la confirmation de la valeur TID associée sur le système SAP.

  • Implicitement, en définissant la propriété de liaison AutoConfirmSentIdocs . Si cette propriété de liaison a la valeur true, l’adaptateur valide automatiquement le TID après avoir envoyé l’IDOC au système SAP. Pour plus d’informations, consultez En savoir plus sur les propriétés de liaison de l’adaptateur BizTalk pour mySAP Business Suite .

    L’adaptateur SAP utilise les RFC suivants pour envoyer un IDOC :

  • INBOUND_IDOC_PROCESS. Ce module de fonction est utilisé pour les versions SAP antérieures à la version 4.0.

  • IDOC_INBOUND_ASYNCHRONOUS. Ce module de fonction est utilisé pour SAP version 4.0 et ultérieure.

Envoi d’IDOCs avec des données segmentées sur plusieurs lignes

Les IDOCs sont constitués de segments. Chaque entrée de segment dans un fichier plat IDOC contient les informations d’en-tête de segment (contenant le champ DOCNUM) et les données de segment. Dans certains IDOCs, les données de segment peuvent être fractionnées sur plusieurs lignes. Par exemple :

Segment header (DOCNUM is one of the fields here)  |  Segment data  
Segment header (DOCNUM is one of the fields here)  |  Segment data  
Segment data wrapped from the previous line  
Segment header (DOCNUM is one of the fields here)  |  Segment data  

L’adaptateur SAP basé sur WCF prend en charge l’envoi de cesidoCs au système SAP. Pour prendre en charge l’envoi de tels AIDOC, l’adaptateur SAP détermine si chaque données de segment est une continuation de la précédente ou s’il s’agit d’une nouvelle donnée de segment. L’adaptateur SAP le décide en analysant chaque en-tête de segment et en recherchant le champ DOCNUM. Si les données de segment sont réparties sur deux lignes, la deuxième ligne n’a pas d’en-tête de segment et, par conséquent, l’adaptateur SAP ne trouve pas le champ DOCNUM. Par conséquent, l’adaptateur SAP peut déterminer qu’il s’agit d’une continuation des données de segment précédentes.

Par exemple, dans la représentation d’un IDOC illustrée ci-dessus, l’adaptateur SAP ne trouve aucun champ DOCNUM dans «Segment data wrapped from the previous line » et peut décider que la ligne est une continuation des données de segment précédentes. Compte tenu de la taille des fichiers plats IDOC dans les environnements de production, l’exécution de telles vérifications pour chaque données de segment peut entraîner une augmentation du temps de traitement.

Notes

L’adaptateur utilise le champ DOCNUM au lieu d’un flux de ligne de retour chariot (CRLF) pour identifier et extraire chaque enregistrement de segment des données IDOC. Si les champs DOCNUM dans le contrôle et les enregistrements de données ne sont pas valides ou partiellement vides, l’adaptateur ne parvient pas à analyser l’IDOC. Par conséquent, l’IDOC n’est pas envoyé au système SAP.

Opérations d’envoi d’un IDOC

Les opérations suivantes sont prises en charge pour l’envoi d’IDOCs à un système SAP :

  • Envoyer. Utilisez cette opération pour envoyer un IDOC au système SAP à l’aide d’un schéma fortement typé. Le schéma de cette opération expose les champs d’enregistrement de contrôle et les champs d’enregistrement de données, y compris les en-têtes de segment et les champs de segment. L’opération Send est spécifique à une combinaison IDocType + CimType + ReleaseNumber + Version.

    Cette opération est mise en évidence pour chaque IDOC et est disponible sous un nœud IDOC spécifique dans le plug-in Add Adapter Service Reference Plug-in ou Consume Adapter Service Add.

    Notes

    Pour pouvoir effectuer correctement une opération d’envoi , vous devez disposer d’une autorisation appropriée dans le système SAP. Pour plus d’informations, consultez

  • SendIdoc. Utilisez cette opération pour envoyer un IDOC au système SAP à l’aide d’un schéma faiblement typé. Le schéma de cette opération expose les IDOCs sous la forme d’un champ de chaîne unique composé de l’enregistrement de contrôle et de l’enregistrement de données. L’opération SendIdoc prend une chaîne IDOC et un GUID comme paramètre.

    Il s’agit d’une opération unique exposée pour tous les IDC exposés par le système SAP et disponible sous le nœud IDOC racine dans le plug-in Add Adapter Service Reference Plug-in ou Consume Adapter Service Add.

    Le cas échéant, consultez les références suivantes :

  • Envoi d’un IDOC à un système SAP à l’aide de BizTalk Server, consultez Envoyer des IDOC à SAP à l’aide de BizTalk Server.

  • Envoi d’un IDOC à un système SAP à l’aide d’un modèle de service WCF, consultez Envoyer des IDOCs à SAP à l’aide du modèle de service WCF.

  • Structures de message et action SOAP pour l’envoi d’un IDOC, consultez Schémas de message pour les opérations IDOC.

Opérations de réception d’un IDOC

Pour recevoir un IDOC, l’adaptateur SAP peut se comporter comme un serveur tRFC ou un serveur RFC :

  • Pour que l’adaptateur se comporte comme un serveur tRFC, la propriété de liaison TidDatabaseConnectionString doit être définie sur le chaîne de connexion de la base de données TID sur votre ordinateur. Pour un scénario de serveur tRFC, l’adaptateur accepte un appel client tRFC à partir du système SAP pour recevoir l’IDOC.

  • Pour que l’adaptateur se comporte comme un serveur RFC, tidDatabaseConnectionString doit être null (par défaut). Pour un scénario de serveur RFC, l’adaptateur accepte un appel client RFC à partir du système SAP pour recevoir l’IDOC.

    Les RFC suivants sont utilisés pour envoyer et recevoir des AIDOC ; lors de l’envoi d’IDOCs, l’adaptateur utilise ces RFC, tandis que lors de la réception d’IDOCS, le système SAP les utilise.

  • INBOUND_IDOC_PROCESS. Ce module de fonction est utilisé pour les versions SAP antérieures à la version 4.0.

  • IDOC_INBOUND_ASYNCHRONOUS. Ce module de fonction est utilisé pour SAP version 4.0 et ultérieure.

    Les opérations suivantes sont prises en charge pour la réception d’IDOCs à partir d’un système SAP :

  • Recevoir. Utilisez cette opération pour recevoir un IDOC du système SAP à l’aide d’un schéma fortement typé. Le schéma de cette opération expose les champs d’enregistrement de contrôle et les champs d’enregistrement de données, y compris les en-têtes de segment et les champs de segment.

    Cette opération est mise en évidence pour chaque IDOC et est disponible sous un nœud IDOC spécifique dans le plug-in Add Adapter Service Reference Plug-in ou Consume Adapter Service Add.

    Notes

    Pour pouvoir effectuer correctement une opération de réception , vous devez disposer de l’autorisation appropriée dans le système SAP. Pour plus d’informations, consultez

    Notes

    À l’aide de l’opération De réception , vous pouvez également recevoir plusieurs AIDOC.

  • ReceiveIdoc. Utilisez cette opération pour recevoir un IDOC du système SAP à l’aide d’un schéma faiblement typé. Le schéma de cette opération expose les IDOCs sous la forme d’un champ de chaîne unique composé de l’enregistrement de contrôle et de l’enregistrement de données. Cette opération reçoit des IDOCs sous la forme d’une chaîne dans un message XML sous la <balise idocData> .

    Il s’agit d’une opération unique exposée pour tous les IDC exposés par le système SAP et disponible sous le nœud IDOC racine dans le plug-in Add Adapter Service Reference Plug-in ou Consume Adapter Service Add.

    Lors de la réception d’IDOCs, l’adaptateur SAP prend en charge différents formats de message, qui peuvent être spécifiés comme valeur pour la propriété de liaison ReceiveIDocFormat exposée par l’adaptateur SAP.

  • S’il est défini sur « Typé », le schéma XML est fortement typé pour l’IDOC spécifique reçu. (Le schéma de ce message est visible à partir des opérations de réception. Notez que le schéma est différent pour les différents IDOCs). Cela génère un IDOC XML.

  • Si la valeur est « String », les données IDOC entrantes sont retournées sous la forme d’une valeur String. (Le schéma de ce message est visible à partir de l’opération ReceiveIdoc). Cela génère un message XML avec la <balise idocData> .

  • S’il est défini sur « Rfc », le schéma de message correspond au schéma RFC (ou tRFC) pour les opérations RFC IDOC_INBOUND_ASYNCHRONOUS ou INBOUND_IDOC_PROCESS, en fonction de la version IDOC entrante. Si vous spécifiez cette propriété de liaison, vous devez utiliser le IDOC_INBOUND_ASYNCHRONOUS ou INBOUND_IDOC_PROCESS RFC pour recevoir l’IDOC. Dans les deux premières options, l’adaptateur utilise en interne cette RFC. Dans cette option, vous utilisez explicitement cette RFC pour recevoir un IDOC.

    L’opération que vous utilisez pour recevoir un IDOC doit correspondre au format des données IDOC émises par l’adaptateur. Le tableau suivant fournit un résumé des différentes combinaisons dans lesquelles vous pouvez recevoir un IDOC de SAP.

Pour recevoir un IDOC à l’aide de Définissez la propriété de liaison ReceiveIDOCFormat sur
Opération de réception Typé
Opération ReciveIdoc String
IDOC_INBOUND_ASYNCHRONOUS RFC Rfc
INBOUND_IDOC_PROCESS RFC Rfc

Une autre propriété de liaison PadReceivedIdocsWithSpaces padpe l’IDOC reçu avec des espaces blancs pour les champs facultatifs lorsque le format de réception attendu est « String ». Cela permet la compatibilité avec le format de données IDOC reçu à l’aide de la version précédente de l’adaptateur.

Pour plus d’informations sur les propriétés de liaison, consultez En savoir plus sur l’adaptateur BizTalk pour mySAP Business Suite Binding Properties.

Le cas échéant, consultez les références suivantes :

Autorisation SAP pour l’utilisation des opérations d’envoi ou de réception

Lorsque vous utilisez les opérations d’envoi ou de réception pour envoyer ou recevoir des IDOCs à l’aide d’un schéma fortement typé, l’adaptateur SAP appelle en interne le IDOCTYPE_READ_COMPLETE RFC pour récupérer les métadonnées de l’IDOC. L’appel de cette RFC nécessite l’autorisation suivante dans SAP :

Authorisation object S_IDOCDEFT, Fields:  
EDI_TCD, value 'WE30'  
ACTVT, value - 03 (display)  
EDI_DOC, value  *  
EDI_CIM, value *  

Vous pouvez utiliser la transaction SU01 dans SAP pour ajouter un objet d’autorisation. Pour plus d’informations sur la transaction, contactez votre administrateur SAP ou consultez la documentation SAP.

Voir aussi

Quelles opérations peut-on effectuer à l’aide de l’adaptateur ?