Compartir vía


Esquemas de mensaje para operaciones de IDOC

Los documentos intermedios (IDOCS) son documentos estandarizados similares a EDI compatibles con SAP para comunicarse de forma asincrónica con sistemas SAP y no SAP. IDOCS se usan para enviar y recibir documentos empresariales como pedidos de ventas hacia o desde el sistema SAP de un socio comercial o un programa externo.

Aunque el sistema SAP admite una serie de tipos de puerto para enviar y recibir IDOCS (por ejemplo, un puerto de archivo o un puerto CPIC), el adaptador de Microsoft BizTalk para mySAP Business Suite admite el envío y recepción de IDOCS mediante un puerto tRFC.

  • Para un IDOC de salida, el adaptador de SAP actúa como un cliente tRFC e invoca un RFC para enviar el IDOC a SAP.

  • En el caso de un IDOC de entrada, el adaptador de SAP actúa como un servidor tRFC y acepta una llamada de cliente tRFC de SAP para recibir el IDOC.

    El adaptador de SAP muestra cuatro operaciones en el nodo IDOC que puede usar para enviar y recibir IDOCS con un sistema SAP.

  • SendIdoc. Envía un IDOC al adaptador como datos de cadena. Esta operación se muestra directamente en el nodo raíz del IDOC. La misma operación se usa para todos los IDOC.

  • Enviar. Envía un IDOC al adaptador como datos fuertemente tipados. Esta operación aparece bajo un nodo específico de cada IDOC.

  • ReceiveIdoc. Recibe un IDOC del adaptador como datos de cadena. Esta operación se muestra directamente en el nodo raíz del IDOC. La misma operación se usa para todos los IDOC.

  • Recibir. Recibe un IDOC del adaptador como datos fuertemente tipados. Esta operación aparece bajo un nodo específico de cada IDOC.

Nota

Estas cuatro operaciones proporcionan diferentes formas de intercambiar IDOC entre el programa y el adaptador de SAP. El adaptador siempre usa un RFC (como se describe en la sección siguiente) para enviar o recibir IDOC con el sistema SAP.

Además de usar una de las cuatro operaciones IDOC, también puede enviar o recibir un IDOC mediante uno de los RFC que el adaptador de SAP usa internamente para intercambiar IDOC con el sistema SAP. Para obtener información general sobre cómo el adaptador de SAP admite iDOC, consulte Operaciones en IDOC en SAP.

Este tema contiene información sobre los esquemas de mensaje y las acciones de mensaje usadas para las operaciones IDOC.

RFC usados por el adaptador de SAP para enviar y recibir IDOC

El adaptador de SAP usa las siguientes llamadas de función remota (RFC) internamente para intercambiar IDOCS con el sistema SAP. En el lado saliente (adaptador al sistema SAP), el adaptador actúa como un cliente tRFC para invocar la RFC. En el lado entrante (SAP to adapter), SAP invoca la RFC en el adaptador, que actúa como un servidor tRFC.

RFC Descripción
IDOC_INBOUND_ASYNCHRONOUS Este módulo de función se usa de la versión 4.0 y posteriores. Procesa IDOCS en tipos de registro que son válidos para las versiones 4.x. Esto garantiza que se admiten nombres de segmento de IDOC más largos.

Los parámetros de esta RFC incluyen:

- idoc_control_rec_40 (la estructura de SAP es EDI_DC40)

- idoc_data_rec_40 (la estructura de SAP es EDI_DD40)

El registro de control IDOC consta de los siguientes campos:

- Mestyp. Tipo de mensaje lógico. Transmite el significado empresarial del mensaje. Este campo es obligatorio.

- Idoctyp. Estructura básica del IDOC. Este campo identifica el conjunto de diseño que usa este mensaje. Este campo es obligatorio.

- Cimtyp. Estructura de la extensión del cliente. Si se extiende una estructura básica de SAP, el cliente debe asignar un nombre a la estructura de la extensión. Se trata de un campo obligatorio si un cliente ha realizado una mejora; de lo contrario, inicial.

- Campos del asociado. Se trata de parámetros de asociados de envío y recepción, como el tipo de asociado, el número de asociado, la función de asociado.

El registro de datos IDOC consta de los siguientes campos:

- Campos de encabezado. Campos de encabezado de segmento como el nombre de tabla, el número de segmento y el tipo de segmento. Estos son campos obligatorios.

- Sdata. Campo de caracteres de 1000 bytes para los datos utilizados por el IDOC . Se trata de un campo obligatorio.
INBOUND_IDOC_PROCESS Este módulo de función se usa para versiones de hasta 4.0. Procesa IDOCS en tipos de registro que son válidos para las versiones 3.x. También es posible usar este módulo de función en 4.x.

Los parámetros de esta RFC incluyen:

- idoc_control (la estructura de SAP es EDI_DC)

- idoc_data (la estructura de SAP es EDI_DD)

Operaciones para enviar IDOC

El adaptador de SAP expone las operaciones Send y SendIdoc para que los clientes envíen IDOC a un sistema SAP. Para la operación de envío, el IDOC se representa como datos fuertemente tipados; para la operación SendIdoc, el IDOC se representa como datos de cadena. Estas operaciones determinan cómo se representan los datos del IDOC entre el adaptador y la aplicación. El adaptador siempre envía IDOC a SAP mediante el IDOC_INBOUND_ASYNCHRONOUS o el IDOC_INBOUND_PROCESS (t)RFC. Para enviar un IDOC al sistema SAP, puede usar la operación Send o SendIdoc, o bien puede invocar directamente el RFC adecuado.

Estructuras de mensajes para operaciones de cliente IDOC

En la tabla siguiente se muestran las estructuras de mensajes para las operaciones Send y SendIdoc.

Operación Estructura XML Descripción
Envío <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> Envía un IDOC fuertemente tipado a SAP

- El esquema IDOC está fuertemente tipado.

- Expone los campos de registro de control.

- Expone campos de registro de datos, incluidos los encabezados de segmento y los campos de segmento.

El adaptador de SAP asocia un GUID con el identificador de transacción (TID) de SAP que usa para enviar el IDOC. Puede elegir si desea especificar un GUID en el mensaje de solicitud. Si no se incluye un GUID en el mensaje de solicitud, el adaptador de SAP genera uno. El GUID se devuelve en el mensaje de respuesta.
Enviar respuesta <SendResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/ [IDOCTYP]/[CIMTYP]/[RELNO]/Send"> <guid>guid</guid> </SendResponse> Indica que el IDOC se ha enviado al sistema SAP.

Si la propiedad de enlace AutoConfirmSentIdocs es true, el adaptador de SAP confirma automáticamente la transacción en el sistema SAP y puede omitir el GUID devuelto en la respuesta. Si la propiedad de enlace AutoConfirmSentIdocs es false, debe invocar la operación RfcConfirmTransID con el GUID devuelto por el adaptador de SAP para completar la transacción en el sistema SAP.

Puede invocar el método SapAdapterUtilities.ConvertGuidToTid para obtener el TID asociado a la unidad lógica de trabajo (LUW).
SendIdoc <SendIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> <guid>guid</guid> </SendIdoc> Envía un IDOC débilmente tipado a SAP.

- El esquema IDOC está débilmente tipado.

: expone el IDOC como un único campo de cadena que consta del registro de control y del registro de datos.

El adaptador de SAP asocia un GUID con el TID de SAP que usa para enviar el IDOC. Puede elegir si se debe especificar un GUID en el mensaje de solicitud. Si no se incluye un GUID en el mensaje de solicitud, el adaptador de SAP generará uno. El GUID se devuelve en el mensaje de respuesta.
Respuesta SendIdoc <SendIdocResponse xmlns="[MSG_VERSION]/Idoc"> <guid>guid</guid> </SendIdocResponse> Indica que el IDOC se ha enviado al sistema SAP.

Si la propiedad de enlace AutoConfirmSentIdocs es true, el adaptador de SAP confirma automáticamente la transacción en el sistema SAP y puede omitir el GUID devuelto en la respuesta. Si la propiedad de enlace AutoConfirmSentIdocs es false, debe invocar la operación RfcConfirmTransID con el GUID devuelto por el adaptador de SAP para completar la transacción en el sistema SAP.

Puede invocar el método SapAdapterUtilities.ConvertGuidToTid para obtener el TID asociado con el LUW.

[MSG_VERSION] = La cadena de versión del mensaje; por ejemplo, http://Microsoft.LobServices.Sap/2007/03.

[VERSION] = versión de la versión de IDOC (2 o 3).

[IDOCTYP] = tipo IDOC; por ejemplo, ORDERS05.

[CIMTYP] = Cimtype del IDOC personalizado.

[RELNO] = Número de versión; por ejemplo, 620.

[EDI_DC40/EDI_DC] = EDI_DC40 para las IDOC de la versión 3 de la versión 3 y EDI_DC para ICO de versión 2.

[EDIDC_FIELD] = Campo que constituye la estructura de registros de control EDI_DC40/EDI_DC.

[SEGMENT_DEFN] = Nombre de definición de segmento (nombre del tipo de segmento NOT); por ejemplo, E2EDK01005. Tenga en cuenta que el nodo de definición de segmento también podría aparecer bajo un nodo de grupo de segmentos, en función de la estructura del IDOC.

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = Cada segmento tiene un encabezado de segmento que consta de un conjunto estándar de campos de encabezado seguidos de los datos de segmento. Los datos de segmento constan de todos los campos y datos de segmento. Este nodo representa los campos de encabezado de segmento; por ejemplo, DATAHEADERCOLUMN_SEGNAM.

[SEG_FIELD] = Nombre de campo de segmento que constituye una definición de segmento determinada [SEGMENT_DEFN].

[guid] = parámetro GUID.

Acciones de mensaje para las operaciones de cliente de IDOC

En la tabla siguiente se muestran las acciones de mensaje para las operaciones Send y SendIdoc.

Operación Acción Ejemplo
Envío [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Send http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send
Enviar respuesta [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
Respuesta SendIdoc [MESSAGE_VERSION]/Idoc/SendIdoc/response http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc/response

[MESSAGE_VERSION] = La cadena de versión del mensaje; por ejemplo, http://Microsoft.LobServices.Sap/2007/03.

[VERSION] = versión de la versión de IDOC (2 o 3).

[IDOCTYP] = tipo IDOC; por ejemplo, ORDERS05.

[CIMTYP] = Cimtype del IDOC personalizado.

[RELNO] = Número de versión; por ejemplo, 620.

Operaciones para recibir IDOC

El adaptador de SAP expone las operaciones Receive y ReceiveIdoc para que las aplicaciones reciban IOC de un sistema SAP. Para la operación Receive, el IDOC se representa como datos fuertemente tipados; para la operación ReceiveIdoc, el IDOC se representa como datos de cadena.

Estas operaciones determinan cómo emite el adaptador a la aplicación los datos del IDOC. El adaptador siempre recibe IFC del sistema SAP como un IDOC_INBOUND_ASYNCHRONOUS o IDOC_INBOUND_PROCESS tRFC. Puede usar la operación Receive o ReceiveIdoc, o bien puede recibir datos de IDOC en formato RFC. Establezca la propiedad de enlace ReceiveIdocFormat para especificar el formato en el que el adaptador emite los datos del IDOC a la aplicación. Para obtener más información sobre las propiedades de enlace del adaptador de SAP, vea Leer sobre el adaptador de BizTalk para las propiedades de enlace de mySAP Business Suite.

Estructuras de mensajes para operaciones de recepción de IDOC

En la tabla siguiente se muestran las estructuras de mensajes para las operaciones Receive y ReceiveIdoc.

Operación Estructura XML Descripción
Recepción <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> Recibe un IDOC fuertemente tipado de SAP

- El esquema IDOC está fuertemente tipado.

- Expone campos de registro de control.

- Expone campos de registro de datos, incluidos los encabezados de segmento y los campos de segmento.
Respuesta de recepción <ReceiveResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Receive"> </ReceiveResponse> Indica que el IDOC se ha recibido del sistema SAP.
ReceiveIdoc <ReceiveIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> </ReceiveIdoc> Recibe un IDOC de tipo débil de SAP.

- El esquema IDOC está débilmente tipado.

- Expone el IDOC como un único campo de cadena que consta del registro de control y del registro de datos.
Respuesta ReceiveIdoc <ReceiveIdocResponse xmlns="[MSG_VERSION]/Idoc"> </ReceiveIdocResponse> Indica que el IDOC se ha recibido del sistema SAP.

[MSG_VERSION] = La cadena de versión del mensaje; por ejemplo, http://Microsoft.LobServices.Sap/2007/03.

[VERSION] = versión de la versión de IDOC (2 o 3).

[IDOCTYP] = tipo IDOC; por ejemplo, ORDERS05.

[CIMTYP] = Cimtype del IDOC personalizado.

[RELNO] = Número de versión; por ejemplo, 620.

[EDI_DC40/EDI_DC] = EDI_DC40 para las ICO de la versión 3 y EDI_DC para las ICO de la versión 2.

[EDIDC_FIELD] = Campo que constituye la estructura de registros de control EDI_DC40/EDI_DC.

[SEGMENT_DEFN] = Nombre de definición de segmento (nombre del tipo de segmento NOT); por ejemplo, E2EDK01005. El nodo de definición de segmento también puede aparecer en un nodo de grupo de segmentos, en función de la estructura del IDOC.

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = Cada segmento tiene un encabezado de segmento que consta de un conjunto estándar de campos de encabezado seguidos de los datos de segmento. Los datos de segmento constan de todos los campos y datos de segmento. Este nodo representa los campos de encabezado de segmento; por ejemplo, DATAHEADERCOLUMN_SEGNAM.

[SEG_FIELD] = Nombre de campo de segmento que constituye una definición de segmento determinada [SEGMENT_DEFN].

Recepción de un IDOC en formato RFC

También puede recibir IDoc en formato RFC. Las RFC que se usan para recibir IDC de SAP son:

  • IDOC_INBOUND_ASYNCHRONOUS para IDOC de la versión 3.

  • INBOUND_IDOC_PROCESS para las IDOC de la versión 2.

    En el código siguiente se muestra la estructura de un IDOC recibido como una operación de 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] = Campo que constituye la estructura de registros de control EDI_DC40/EDI_DC

[SEG_HEADER_FIELD] = Cada segmento tiene un encabezado de segmento que consta de un conjunto estándar de campos de encabezado seguidos de los datos del segmento. Los datos de segmento constan de todos los campos y datos de segmento. Este nodo representa los campos de encabezado de segmento; por ejemplo, SEGNAM, MANDT y DOCNUM.

Para obtener más información sobre el formato de las operaciones tRFC, vea Esquemas de mensaje para las operaciones de tRFC.

Acciones de mensaje para operaciones de recepción de IDOC

En la tabla siguiente se muestran las acciones de mensaje para las operaciones Receive y ReceiveIdoc.

Operación Acción Ejemplo
Recepción [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Receive http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Receive
Respuesta de recepción [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
Respuesta ReceiveIdoc [MESSAGE_VERSION]/Idoc/ReceiveIdoc/response http://Microsoft.LobServices.Sap/2007/03/Idoc/ReceiveIdoc/response