Schémas de message pour les opérations IDOC

Les documents intermédiaires (IDOCS) sont des documents de type EDI standardisés pris en charge par SAP pour communiquer de manière asynchrone avec les systèmes SAP et non-SAP. Les IDOCS sont utilisés pour envoyer et recevoir des documents commerciaux, tels que des commandes client, vers ou depuis le système SAP d’un partenaire commercial ou 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 (par exemple, un port de fichier ou un port CPIC), l’adaptateur Microsoft BizTalk pour mySAP Business Suite prend en charge l’envoi et la réception d’IDOCS à l’aide d’un port tRFC.

  • Pour un IDOC sortant, l’adaptateur SAP agit comme un client tRFC et appelle une RFC pour envoyer l’IDOC à SAP.

  • Pour un IDOC entrant, l’adaptateur SAP agit comme un serveur tRFC et accepte un appel client tRFC de SAP pour recevoir l’IDOC.

    L’adaptateur SAP effectue quatre opérations sous le nœud IDOC que vous pouvez utiliser pour envoyer et recevoir des IDOCS avec un système SAP.

  • SendIdoc. Envoie un IDOC à l’adaptateur en tant que données de chaîne. Cette opération est exposée directement sous le nœud racine IDOC. La même opération est utilisée pour tous les IDOC.

  • Envoyer. Envoie un IDOC à l’adaptateur en tant que données fortement typées. Cette opération est exposée sous un nœud spécifique à chaque IDOC.

  • ReceiveIdoc. Reçoit un IDOC de l’adaptateur en tant que données de chaîne. Cette opération est exposée directement sous le nœud racine IDOC. La même opération est utilisée pour tous les IDOC.

  • Recevoir. Reçoit un IDOC de l’adaptateur sous forme de données fortement typées. Cette opération est exposée sous un nœud spécifique à chaque IDOC.

Notes

Ces quatre opérations fournissent différentes façons d’échanger des IDOC entre votre programme et l’adaptateur SAP. L’adaptateur utilise toujours une RFC (comme indiqué dans la section suivante) pour envoyer ou recevoir des AIDO avec le système SAP.

En plus d’utiliser l’une des quatre opérations IDOC, vous pouvez également envoyer ou recevoir un IDOC à l’aide de l’une des RFC utilisées en interne par l’adaptateur SAP pour échanger des IDOC avec le système SAP. Pour obtenir une vue d’ensemble de la façon dont l’adaptateur SAP prend en charge les IIDOC, consultez Opérations sur les IIDOC dans SAP.

Cette rubrique contient des informations sur les schémas de message et les actions de message utilisés pour les opérations IDOC.

RFC utilisés par l’adaptateur SAP pour envoyer et recevoir des IDOC

L’adaptateur SAP utilise les appels de fonction à distance (RFC) suivants en interne pour échanger des IDOCS avec le système SAP. Du côté sortant (adaptateur vers le système SAP), l’adaptateur agit comme un client tRFC pour appeler la RFC. Du côté entrant (SAP vers adaptateur), SAP appelle la RFC sur l’adaptateur, qui agit comme un serveur tRFC.

RFC Description
IDOC_INBOUND_ASYNCHRONOUS Ce module de fonction est utilisé à partir de la version 4.0 et des versions ultérieures. Il traite les IDOCS dans les types d’enregistrements valides pour les versions 4.x. Cela garantit que les noms de segments IDOC plus longs sont pris en charge.

Les paramètres de cette RFC sont les suivants :

- idoc_control_rec_40 (la structure SAP est EDI_DC40)

- idoc_data_rec_40 (la structure SAP est EDI_DD40)

L’enregistrement de contrôle IDOC se compose des champs suivants :

- Mestyp. Type de message logique. Transmet le sens métier du message. Ce champ est obligatoire.

- Idoctyp. Structure de base de l’IDOC. Ce champ identifie le jeu de dispositions qui utilise ce message. Ce champ est obligatoire.

- Cimtyp. Structure de l’extension client. Si une structure de base SAP est étendue, le client doit donner un nom à la structure de l’extension. Il s’agit d’un champ obligatoire si un client a apporté une amélioration ; sinon initial.

- Champs partenaires. Il s’agit de paramètres de partenaire côté envoi et réception, tels que le type de partenaire, le numéro de partenaire, la fonction partenaire.

L’enregistrement de données IDOC se compose des champs suivants :

- Champs d’en-tête. Champs d’en-tête de segment comme le nom de la table, le numéro de segment, le type de segment. Ce sont des champs obligatoires.

- Sdata. Champ de caractères de 1 000 octets pour les données utilisées par l’IDOC . Il s’agit d’un champ obligatoire.
INBOUND_IDOC_PROCESS Ce module de fonction est utilisé pour les versions jusqu’à la version 4.0. Il traite les IDOCS dans les types d’enregistrements valides pour les versions 3.x. Il est également possible d’utiliser ce module de fonction dans la version 4.x.

Les paramètres de cette RFC sont les suivants :

- idoc_control (la structure SAP est EDI_DC)

- idoc_data (la structure SAP est EDI_DD)

Opérations d’envoi d’IDOCs

L’adaptateur SAP expose les opérations Send et SendIdoc pour permettre aux clients d’envoyer des IDOC à un système SAP. Pour l’opération d’envoi, l’IDOC est représenté sous forme de données fortement typées ; pour l’opération SendIdoc, l’IDOC est représenté sous forme de données de chaîne. Ces opérations déterminent comment les données IDOC sont représentées entre l’adaptateur et votre application. L’adaptateur envoie toujours des IDOC à SAP à l’aide du IDOC_INBOUND_ASYNCHRONOUS ou du IDOC_INBOUND_PROCESS (t)RFC. Pour envoyer un IDOC à votre système SAP, vous pouvez utiliser l’opération Send ou SendIdoc, ou appeler directement la RFC appropriée.

Structures de message pour les opérations clientes IDOC

Le tableau suivant présente les structures de message pour les opérations Send et SendIdoc.

Opération XML Structure Description
Envoyer <Send xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Send"> <idocData> <[EDI_DC40/EDI_DC] xmlns="/Types/Idoc/ [VERSION]/[IDOCTYP]/[CIMTYP]/[RELNO]"> <EDIDC_FIELD1>value1</ EDIDC_FIELD1> <EDIDC_FIELD2>value2</ EDIDC_FIELD2> … </EDI_DC40> <[SEGMENT_DEFN]_1> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_1> <[SEGMENT_DEFN]_2> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_2> … </[EDI_DC40/EDI_DC]> </idocData> <guid>guid</guid> </Send> Envoie un IDOC fortement typé à SAP

- Le schéma IDOC est fortement typé.

- Expose les champs d’enregistrement de contrôle.

- Expose les champs d’enregistrement de données, y compris les en-têtes de segment et les champs de segment.

L’adaptateur SAP associe un GUID à l’ID de transaction SAP (TID) qu’il utilise pour envoyer l’IDOC. Vous pouvez choisir de spécifier un GUID dans le message de demande. Si aucun GUID n’est inclus dans le message de demande, l’adaptateur SAP en génère un. Le GUID est retourné dans le message de réponse.
Envoyer une réponse <SendResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/ [IDOCTYP]/[CIMTYP]/[RELNO]/Send"> <guid>guid</guid> </SendResponse> Indique que l’IDOC a été envoyé au système SAP.

Si la propriété de liaison AutoConfirmSentIdocs a la valeur true, l’adaptateur SAP confirme automatiquement la transaction sur le système SAP et vous pouvez ignorer le GUID retourné dans la réponse. Si la propriété de liaison AutoConfirmSentIdocs a la valeur false, vous devez appeler l’opération RfcConfirmTransID avec le GUID retourné par l’adaptateur SAP pour terminer la transaction sur le système SAP.

Vous pouvez appeler la méthode SapAdapterUtilities.ConvertGuidToTid pour obtenir le TID associé à l’unité logique de travail (LUW).
SendIdoc <SendIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> <guid>guid</guid> </SendIdoc> Envoie un IDOC faiblement typé à SAP.

- Le schéma IDOC est faiblement typé.

- Expose l’IDOC sous la forme d’un champ de chaîne unique qui se compose de l’enregistrement de contrôle et de l’enregistrement de données.

L’adaptateur SAP associe un GUID au TID SAP qu’il utilise pour envoyer l’IDOC. Vous pouvez choisir de spécifier un GUID dans le message de demande. Si un GUID n’est pas inclus dans le message de demande, l’adaptateur SAP en génère un. Le GUID est retourné dans le message de réponse
SendIdoc Response <SendIdocResponse xmlns="[MSG_VERSION]/Idoc"> <guid>guid</guid> </SendIdocResponse> Indique que l’IDOC a été envoyé au système SAP.

Si la propriété de liaison AutoConfirmSentIdocs a la valeur true, l’adaptateur SAP confirme automatiquement la transaction sur le système SAP et vous pouvez ignorer le GUID retourné dans la réponse. Si la propriété de liaison AutoConfirmSentIdocs a la valeur false, vous devez appeler l’opération RfcConfirmTransID avec le GUID retourné par l’adaptateur SAP pour terminer la transaction sur le système SAP.

Vous pouvez appeler la méthode SapAdapterUtilities.ConvertGuidToTid pour obtenir le TID associé au LUW.

[MSG_VERSION] = Chaîne de version du message ; par exemple, http://Microsoft.LobServices.Sap/2007/03.

[VERSION] = version IDOC (2 ou 3).

[IDOCTYP] = type IDOC ; par exemple, ORDERS05.

[CIMTYP] = Cimtype de l’IDOC personnalisé.

[RELNO] = numéro de mise en production ; par exemple, 620.

[EDI_DC40/EDI_DC] = EDI_DC40 pour les AIDO de version 3 et EDI_DC pour les AIDO de version 2.

[EDIDC_FIELD] = Champ constituant la structure d’enregistrement de contrôle EDI_DC40/EDI_DC.

[SEGMENT_DEFN] = Nom de la définition de segment (pas le nom du type de segment) ; par exemple, E2EDK01005. Notez que le nœud de définition de segment peut également apparaître sous un nœud de groupe de segments, en fonction de la structure de l’IDOC.

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = Chaque segment a un en-tête de segment qui se compose d’un ensemble standard de champs d’en-tête suivis des données de segment. Les données de segment se composent de tous les champs et données de segment. Ce nœud représente les champs d’en-tête de segment ; par exemple, DATAHEADERCOLUMN_SEGNAM.

[SEG_FIELD] = Nom de champ de segment constituant une définition de segment particulière [SEGMENT_DEFN].

[guid] = paramètre GUID.

Actions de message pour les opérations clientes IDOC

Le tableau suivant montre les actions de message pour les opérations Send et SendIdoc.

Opération Action Exemple
Envoyer [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Send http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send
Envoyer une réponse [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Send/response http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send/response
SendIdoc [MESSAGE_VERSION]/Idoc/SendIdoc http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc
SendIdoc Response [MESSAGE_VERSION]/Idoc/SendIdoc/response http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc/response

[MESSAGE_VERSION] = Chaîne de version du message ; par exemple, http://Microsoft.LobServices.Sap/2007/03.

[VERSION] = version IDOC (2 ou 3).

[IDOCTYP] = type IDOC ; par exemple, ORDERS05.

[CIMTYP] = Cimtype de l’IDOC personnalisé.

[RELNO] = numéro de mise en production ; par exemple, 620.

Opérations de réception d’IDOCs

L’adaptateur SAP expose les opérations Receive et ReceiveIdoc pour que les applications reçoivent des IDOCs à partir d’un système SAP. Pour l’opération De réception, l’IDOC est représenté sous forme de données fortement typées ; pour l’opération ReceiveIdoc, l’IDOC est représenté sous forme de données de chaîne.

Ces opérations déterminent la façon dont les données IDOC sont émises par l’adaptateur à votre application. L’adaptateur reçoit toujours des IDOCs du système SAP en tant que IDOC_INBOUND_ASYNCHRONOUS ou IDOC_INBOUND_PROCESS tRFC. Vous pouvez utiliser l’opération Receive ou ReceiveIdoc, ou vous pouvez recevoir des données IDOC au format RFC. Vous définissez la propriété de liaison ReceiveIdocFormat pour spécifier le format dans lequel l’adaptateur émet les données IDOC à votre application. Pour plus d’informations sur les propriétés de liaison de l’adaptateur SAP, consultez En savoir plus sur les propriétés de liaison de l’adaptateur BizTalk pour mySAP Business Suite.

Structures de message pour les opérations de réception IDOC

Le tableau suivant montre les structures de message pour les opérations Receive et ReceiveIdoc.

Opération XML Structure Description
Recevoir <Receive xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Receive"> <idocData> <[EDI_DC40/EDI_DC] xmlns="/Types/Idoc/ [VERSION]/[IDOCTYP]/[CIMTYP]/[RELNO]"> <EDIDC_FIELD1>value1</ EDIDC_FIELD1> <EDIDC_FIELD2>value2</ EDIDC_FIELD2> … </EDI_DC40> <[SEGMENT_DEFN]_1> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_1> <[SEGMENT_DEFN]_2> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_2> … </[EDI_DC40/EDI_DC]> </idocData> </Receive> Reçoit un IDOC fortement typé de SAP

- Le schéma IDOC est fortement typé.

- Expose les champs d’enregistrement de contrôle.

- Expose les champs d’enregistrement de données, y compris les en-têtes de segment et les champs de segment.
Réponse de réception <ReceiveResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Receive"> </ReceiveResponse> Indique que l’IDOC a été reçu du système SAP.
ReceiveIdoc <ReceiveIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> </ReceiveIdoc> Reçoit un IDOC faiblement typé de SAP.

- Le schéma IDOC est faiblement typé.

- Expose l’IDOC sous la forme d’un champ de chaîne unique qui se compose de l’enregistrement de contrôle et de l’enregistrement de données.
Réponse ReceiveIdoc <ReceiveIdocResponse xmlns="[MSG_VERSION]/Idoc"> </ReceiveIdocResponse> Indique que l’IDOC a été reçu du système SAP.

[MSG_VERSION] = Chaîne de version du message ; par exemple, http://Microsoft.LobServices.Sap/2007/03.

[VERSION] = version IDOC (2 ou 3).

[IDOCTYP] = type IDOC ; par exemple, ORDERS05.

[CIMTYP] = Cimtype de l’IDOC personnalisé.

[RELNO] = numéro de mise en production ; par exemple, 620.

[EDI_DC40/EDI_DC] = EDI_DC40 pour les AIDO de version 3 et EDI_DC pour les AIDO de version 2.

[EDIDC_FIELD] = Champ constituant la structure d’enregistrement de contrôle EDI_DC40/EDI_DC.

[SEGMENT_DEFN] = Nom de la définition de segment (pas le nom du type de segment) ; par exemple, E2EDK01005. Le nœud de définition de segment peut également apparaître sous un nœud de groupe de segments, en fonction de la structure de l’IDOC.

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = Chaque segment a un en-tête de segment qui se compose d’un ensemble standard de champs d’en-tête suivis des données de segment. Les données de segment se composent de tous les champs et données de segment. Ce nœud représente les champs d’en-tête de segment ; par exemple, DATAHEADERCOLUMN_SEGNAM.

[SEG_FIELD] = Nom de champ de segment constituant une définition de segment particulière [SEGMENT_DEFN].

Réception d’un IDOC au format RFC

Vous pouvez également recevoir des IDocs au format RFC. Les RFC utilisés pour recevoir des IDOCs de SAP sont les suivants :

  • IDOC_INBOUND_ASYNCHRONOUS pour les AIDO version 3.

  • INBOUND_IDOC_PROCESS pour les AIDO de version 2.

    Le code suivant montre la structure d’un IDOC reçu en tant qu’opération IDOC_INBOUND_ASYNCHRONOUS.

<IDOC_INBOUND_ASYNCHRONOUS xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">  
  <IDOC_CONTROL_REC_40>  
    <EDI_DC40 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <EDIDC_FIELD1>field1</EDIDC_FIELD1>  
      <EDIDC_FIELD2>field2</EDIDC_FIELD2>  
      …  
    </EDI_DC40>  
  <IDOC_DATA_REC_40>  
    <EDI_DD40 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <[SEG_HEADER_FIELD1]>value1</[SEG_HEADER_FIELD1]>  
      <[SEG_HEADER_FIELD2]>value2</[SEG_HEADER_FIELD2]>  
      …  
      <SDATA>segment value</SDATA>  
    </EDI_DD40>  
    …  
  </IDOC_DATA_REC_40>  
</IDOC_INBOUND_ASYNCHRONOUS>  

[EDIDC_FIELD] = Champ constituant la structure d’enregistrement de contrôle EDI_DC40/EDI_DC

[SEG_HEADER_FIELD] = Chaque segment a un en-tête de segment qui se compose d’un ensemble standard de champs d’en-tête suivis des données de segment. Les données de segment se composent de tous les champs et données de segment. Ce nœud représente les champs d’en-tête de segment ; par exemple, SEGNAM, MANDT et DOCNUM.

Pour plus d’informations sur le format des opérations tRFC, consultez Schémas de message pour les opérations tRFC.

Actions de message pour les opérations de réception IDOC

Le tableau suivant montre les actions de message pour les opérations Receive et ReceiveIdoc.

Opération Action Exemple
Recevoir [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Receive http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Receive
Réponse de réception [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Receive/response http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Receive/response
ReceiveIdoc [MESSAGE_VERSION]/Idoc/ReceiveIdoc http://Microsoft.LobServices.Sap/2007/03/Idoc/ReceiveIdoc
Réponse ReceiveIdoc [MESSAGE_VERSION]/Idoc/ReceiveIdoc/response http://Microsoft.LobServices.Sap/2007/03/Idoc/ReceiveIdoc/response