Operaciones en IFC en SAP
Los IDOC son documentos similares a EDI estandarizados que SAP admite para comunicarse de forma asincrónica con sistemas SAP y no SAP. Las IDOC se usan para enviar y recibir documentos de "negocio", como pedidos de venta, por ejemplo, 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 IOC (como el puerto de archivo, el puerto CPIC), el adaptador de SAP admite el envío y la recepción de IOC a través del puerto tRFC.
Operaciones para enviar un IDOC
Todas las llamadas IDOC a SAP se tratan internamente como llamadas tRFC en las que el adaptador actúa como un cliente tRFC y llama a un RFC en SAP para enviar un IDOC. Al igual que cualquier otra llamada de cliente tRFC, el cliente del adaptador pasa opcionalmente un GUID al adaptador, que a su vez lo asocia con el identificador de transacción (TID) que usa para la llamada en el sistema SAP. (Si el cliente del adaptador no pasa un GUID, el adaptador genera su propio GUID). El GUID se devuelve al cliente del adaptador en el mensaje de respuesta. El cliente del adaptador puede usar este GUID para confirmar el TID en el sistema SAP. El TID de SAP real que usa el adaptador para la llamada tRFC se puede obtener invocando un método estático especial en el enlace sap ConvertGuidToTid. Tener el TID real puede ser útil para solucionar problemas en el sistema SAP.
Una vez completada la llamada para enviar el IDOC, el TID debe confirmarse en el sistema SAP. Esto permite al sistema SAP eliminar el TID de su base de datos. El cliente del adaptador puede confirmar el TID en el sistema SAP.
De forma explícita, invocando la operación RfcConfirmTransID en el adaptador. Esta operación toma un GUID (devuelto en el mensaje de respuesta anterior) y hace que el adaptador confirme el TID asociado en el sistema SAP.
Implícitamente, estableciendo la propiedad de enlace AutoConfirmSentIdocs . Si esta propiedad de enlace es true, el adaptador confirma automáticamente el TID después de enviar el IDOC al sistema SAP. Vea Leer sobre el adaptador de BizTalk para propiedades de enlace de mySAP Business Suite para obtener más información.
El adaptador de SAP usa las siguientes RFC para enviar un IDOC:
INBOUND_IDOC_PROCESS. Este módulo de función se usa para las versiones de SAP anteriores a la versión 4.0.
IDOC_INBOUND_ASYNCHRONOUS. Este módulo de función se usa para la versión 4.0 de SAP y versiones posteriores.
Envío de IDOC con datos de segmento entre varias líneas
Las IDOC están formadas por segmentos. Cada entrada de segmento de un archivo plano IDOC contiene la información de encabezado del segmento (que contiene el campo DOCNUM) y los datos del segmento. En algunos IDOC, los datos del segmento se pueden dividir entre varias líneas. Por ejemplo:
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
El adaptador de SAP basado en WCF admite el envío de estos IDC al sistema SAP. Para admitir el envío de estos IDC, el adaptador de SAP determina si cada dato de segmento es una continuación del anterior o si es un nuevo segmento de datos. El adaptador de SAP decide esto mediante el análisis de cada encabezado de segmento y la búsqueda del campo DOCNUM. Si los datos del segmento se dividen entre dos líneas, la segunda línea no tiene un encabezado de segmento y, como resultado, el adaptador de SAP no encuentra el campo DOCNUM. Por lo tanto, el adaptador de SAP puede determinar que es una continuación de los datos de segmento anteriores.
Por ejemplo, en la representación de un IDOC mostrado anteriormente, el adaptador de SAP no encuentra ningún campo DOCNUM en "Segment data wrapped from the previous line
" y puede decidir que la línea es una continuación de los datos de segmento anteriores. Teniendo en cuenta el tamaño de los archivos planos de IDOC en entornos de producción, realizar estas comprobaciones para cada dato de segmento puede dar lugar a un mayor tiempo de procesamiento.
Nota
El adaptador usa el campo DOCNUM en lugar de una fuente de línea de retorno de carro (CRLF) para identificar y extraer cada registro de segmento de los datos de IDOC. Si los campos DOCNUM del control y los registros de datos no son válidos o parcialmente en blanco, el adaptador no puede analizar el IDOC. Por lo tanto, el IDOC no se envía al sistema SAP.
Operaciones para enviar un IDOC
Se admiten las siguientes operaciones para enviar IDOC a un sistema SAP:
Enviar. Use esta operación para enviar un IDOC al sistema SAP mediante un esquema fuertemente tipado. El esquema de esta operación expone campos de registro de control y campos de registro de datos, incluidos los encabezados de segmento y los campos de segmento. La operación Send es específica de una combinación IDocType + CimType + ReleaseNumber + Version.
Esta operación se muestra para cada IDOC y está disponible en un nodo IDOC específico en el complemento Agregar referencia del servicio adaptador o consumir complemento de servicio de adaptador.
Nota
Para poder realizar correctamente una operación de envío , debe tener la autorización pertinente en el sistema SAP. Para obtener más información,
SendIdoc. Use esta operación para enviar un IDOC al sistema SAP mediante un esquema débilmente tipado. El esquema de esta operación expone los IDC como un único campo de cadena que consta del registro de control y del registro de datos. La operación SendIdoc toma una cadena IDOC y un GUID como parámetro.
Se trata de una sola operación expuesta para todas las IDOC expuestas por el sistema SAP y está disponible en el nodo IDOC raíz en el complemento Agregar referencia del servicio adaptador o Consumir complemento de servicio adaptador.
Para más información acerca de:
Envío de un IDOC a un sistema SAP mediante BizTalk Server, consulte Envío de IDOC a SAP mediante BizTalk Server.
Envío de un IDOC a un sistema SAP mediante el modelo de servicio WCF, consulte Envío de IDOC a SAP mediante el modelo de servicio WCF.
Estructuras de mensajes y acción SOAP para enviar un IDOC, consulte Esquemas de mensajes para operaciones de IDOC.
Operaciones para recibir un IDOC
Para recibir un IDOC, el adaptador de SAP puede comportarse como un servidor tRFC o un servidor RFC:
Para que el adaptador se comporte como un servidor tRFC, la propiedad de enlace TidDatabaseConnectionString debe establecerse en el cadena de conexión de la base de datos TID del equipo. Para un escenario de servidor tRFC, el adaptador acepta una llamada de cliente tRFC desde el sistema SAP para recibir el IDOC.
Para que el adaptador se comporte como un servidor RFC, TidDatabaseConnectionString debe ser null (valor predeterminado). Para un escenario de servidor RFC, el adaptador acepta una llamada de cliente RFC desde el sistema SAP para recibir el IDOC.
Las siguientes RFC se usan para enviar y recibir IDOC; al enviar IDOC, el adaptador usa estas RFC, mientras que al recibir IDOCS, el sistema SAP los usa.
INBOUND_IDOC_PROCESS. Este módulo de función se usa para las versiones de SAP anteriores a la versión 4.0.
IDOC_INBOUND_ASYNCHRONOUS. Este módulo de función se usa para la versión 4.0 de SAP y versiones posteriores.
Se admiten las siguientes operaciones para recibir IDOC desde un sistema SAP:
Recibir. Use esta operación para recibir un IDOC del sistema SAP mediante un esquema fuertemente tipado. El esquema de esta operación expone los campos de registro de control y los campos de registro de datos, incluidos los encabezados de segmento y los campos de segmento.
Esta operación se muestra para cada IDOC y está disponible en un nodo IDOC específico en el complemento Agregar referencia del servicio adaptador o consumir complemento de servicio de adaptador.
Nota
Para poder realizar correctamente una operación de recepción , debe tener la autorización pertinente en el sistema SAP. Para obtener más información,
Nota
Con la operación De recepción, también puede recibir varias IDOC.
ReceiveIdoc. Use esta operación para recibir un IDOC del sistema SAP mediante un esquema con un tipo débil. El esquema de esta operación expone iDOC como un único campo de cadena que consta del registro de control y del registro de datos. Esta operación recibe IDOC como una cadena en un mensaje XML bajo la <etiqueta idocData> .
Se trata de una sola operación expuesta para todas las IDOC expuestas por el sistema SAP y está disponible en el nodo IDOC raíz en el complemento Agregar referencia del servicio adaptador o Consumir complemento de servicio adaptador.
Al recibir IDC, el adaptador de SAP admite distintos formatos de mensaje, que se pueden especificar como un valor para la propiedad de enlace, ReceiveIDocFormat expuesto por el adaptador de SAP.
Si se establece en "Typed", el esquema XML está fuertemente tipado en el IDOC específico que se recibe. (El esquema de este mensaje se puede ver desde las operaciones de recepción. Tenga en cuenta que el esquema es diferente para diferentes IDOC). Esto produce un IDOC XML.
Si se establece en "String", los datos de IDOC entrantes se devuelven como un valor string. (El esquema de este mensaje se puede ver desde la operación ReceiveIdoc). Esto produce un mensaje XML con la <etiqueta idocData> .
Si se establece en "Rfc", el esquema de mensaje coincide con el esquema RFC (o tRFC) para las operaciones rfC IDOC_INBOUND_ASYNCHRONOUS o INBOUND_IDOC_PROCESS, en función de la versión de IDOC entrante. Si especifica esta propiedad de enlace, debe usar el IDOC_INBOUND_ASYNCHRONOUS o INBOUND_IDOC_PROCESS RFC para recibir el IDOC. En las dos primeras opciones, el adaptador usa internamente este RFC. En esta opción, usará explícitamente esta RFC para recibir un IDOC.
La operación que se usa para recibir un IDOC debe coincidir con el formato de los datos IDOC emitidos por el adaptador. En la tabla siguiente se proporciona un resumen de las diferentes combinaciones en las que puede recibir un IDOC de SAP.
Para recibir un IDOC mediante | Establezca la propiedad de enlace ReceiveIDOCFormat en |
---|---|
Operación de recepción | Con tipo |
Operación ReciveIdoc | String |
IDOC_INBOUND_ASYNCHRONOUS RFC | Rfc |
INBOUND_IDOC_PROCESS RFC | Rfc |
Otra propiedad de enlace PadReceivedIdocsWithSpaces rellena el IDOC recibido con espacios en blanco para campos opcionales cuando se espera que el formato de recepción sea "String". Esto permite la compatibilidad con el formato de datos IDOC recibido mediante la versión anterior del adaptador.
Para obtener más información sobre las propiedades de enlace, vea Leer sobre el adaptador de BizTalk para mySAP Business Suite Binding Properties.
Para más información acerca de:
Recibir un IDOC desde un sistema SAP mediante BizTalk Server, consulte Recepción de IDOC de SAP mediante BizTalk Server.
Recibir un IDOC de un sistema SAP en un contexto transaccional mediante BizTalk Server, consulte Recepción de IDOC de SAP en un contexto transaccional mediante BizTalk Server.
Estructuras de mensajes y acción SOAP para recibir un IDOC, consulte Esquemas de mensaje para operaciones IDOC.
Autorización de SAP para usar operaciones de envío o recepción
Cuando se usan las operaciones de envío o recepción para enviar o recibir IDOC mediante un esquema fuertemente tipado, el adaptador de SAP invoca internamente el IDOCTYPE_READ_COMPLETE RFC para recuperar los metadatos del IDOC. La invocación de este RFC requiere la siguiente autorización en SAP:
Authorisation object S_IDOCDEFT, Fields:
EDI_TCD, value 'WE30'
ACTVT, value - 03 (display)
EDI_DOC, value *
EDI_CIM, value *
Puede usar la transacción SU01 en SAP para agregar un objeto de autorización. Para más información sobre la transacción, póngase en contacto con el administrador de SAP o consulte la documentación de SAP.