Compartir a través de


Recepción de IDOC de SAP mediante BizTalk Server

La recepción de un IDOC implica que el adaptador de SAP actúe como un servidor RFC para recibir una llamada RFC especial desde SAP. El adaptador de SAP puede recibir IDOC que actúan como un servidor RFC o un servidor tRFC. Para obtener más información sobre cómo recibir un IDOC con el adaptador que se comporta como un servidor tRFC, consulte Recepción de IDOC de SAP en un contexto transaccional mediante BizTalk Server.

El adaptador de SAP muestra dos operaciones diferentes para recibir IDOC:

  • La operación de recepción permite al adaptador recibir IDOC con un esquema fuertemente tipado.

  • La operación ReceiveIdoc permite al adaptador recibir IDOC con un esquema débilmente tipado. Esta operación recibe IDOC como una cadena en un mensaje XML bajo la <etiqueta idocData> .

    En el lado del adaptador, puede especificar un valor para la propiedad de enlace ReceiveIDocFormat para especificar el formato de IDOC que recibiría el adaptador.

  • Typed especifica que el adaptador recibirá IDOC con esquema fuertemente tipado. Esto produce un IDOC XML.

  • String especifica que el adaptador recibirá IDOC con un esquema débilmente tipado. Esto produce un mensaje XML con la <etiqueta idocData> .

  • Rfc especifica que el adaptador recibirá IDOC en cualquier formato.

    Para recibir IDOC, el adaptador de SAP también admite un conjunto de propiedades de contexto de mensaje que los clientes adaptadores pueden usar en las orquestaciones. Para obtener la lista de propiedades, vea Propiedades de contexto de mensaje para recibir IDOC.

    Para obtener más información sobre cómo el adaptador de SAP admite la recepción de IDOC desde un sistema SAP, consulte Operaciones en IDOC en SAP. Para obtener más información sobre la estructura de los mensajes SOAP para recibir un IDOC, vea Esquemas de mensajes para operaciones IDOC.

Escenarios de BizTalk para recibir IDOC desde un sistema SAP

En la tabla siguiente se proporcionan escenarios clave de BizTalk para recibir IDOC desde un sistema SAP:

Entrada al adaptador desde SAP Procesamiento de BizTalk Resultados
IDOC (a través de la interfaz tRFC) Tiempo de diseño de metadatos

1. Establezca la propiedad de enlace GenerateFlatFileCompatibleIdocSchema en True.
2. Genere el esquema para la operación de recepción para un IDOC específico mediante el complemento Consumir servicio de adaptador.
3. Establezca la propiedad de enlace ReceiveIdocFormat en Typed.

Tiempo de diseño de orquestación

1. Recibir IDOC XML.
2. Use el ensamblador de archivos planos para convertir IDOC XML en archivo plano.
IDOC de archivo plano
IDOC (a través de la interfaz tRFC) Tiempo de diseño de metadatos

1. Establezca la propiedad de enlace GenerateFlatFileCompatibleIdocSchema en True.
2. Genere el esquema para la operación de recepción para un IDOC específico mediante el complemento Consumir servicio de adaptador.
3. Establezca la propiedad de enlace ReceiveIdocFormat en Typed.

Tiempo de diseño de orquestación

- Recibir IDOC XML.
XML IDOC
IDOC (a través de la interfaz tRFC) Tiempo de diseño de metadatos

1. Establezca la propiedad de enlace GenerateFlatFileCompatibleIdocSchema en True.
2. Genere el esquema para la operación de recepción para un IDOC específico mediante el complemento Consumir servicio de adaptador.
3. Establezca la propiedad de enlace ReceiveIdocFormat en String.

Tiempo de diseño de orquestación

1. Recibir mensaje XML con IDOC de archivo plano en <la etiqueta idocData> .
2. Use la compatibilidad con XPath del adaptador wcF en la configuración del puerto de recepción para extraer el IDoc de archivo plano del mensaje XML. Por ejemplo:
/*[local-name()='ReceiveIdoc']/*[local-name()='idocData']
3. Use desensamblador de archivos planos para convertir IDOC de archivo plano en IDOC XML.

Importante Este enfoque se puede usar para recibir IDOC mediante el nuevo adaptador de SAP basado en WCF y aplicarlos directamente en un proyecto de BizTalk existente escrito para recibir IDOC del adaptador de SAP de BizTalk existente. Este es también el enfoque recomendado para recibir IDOC con un número de versión menor que el número de versión (SYSREL).
XML IDOC
IDOC (a través de la interfaz tRFC) Tiempo de diseño de metadatos

1. Genere el esquema para la operación ReceiveIdoc desde el nodo IDOC mediante el complemento consumir servicio adaptador.
2. Establezca la propiedad de enlace ReceiveIdocFormat en String.

Tiempo de diseño de orquestación

: recibe un mensaje XML con el IDOC representado como una cadena en la <etiqueta idocData> .
IDOC de archivo plano en el mensaje XML

¿Cómo recibir un IDOC de un sistema SAP?

La realización de una operación en un sistema SAP mediante BizTalk Server implica tareas de procedimientos descritas en Bloques de creación para crear aplicaciones SAP. Para recibir un IDOC desde un sistema SAP, estas tareas son:

  1. Cree un proyecto de BizTalk y genere el esquema para el IDOC que desea invocar en el sistema SAP. Al generar el esquema, asegúrese de establecer las propiedades de enlace necesarias, como se muestra en la tabla anterior. Para obtener instrucciones sobre cómo establecer las propiedades de enlace, consulte Configuración de las propiedades de enlace para el adaptador de SAP.

  2. Cree mensajes en el proyecto de BizTalk para enviar y recibir mensajes desde el sistema SAP.

  3. Cree una orquestación para recibir un IDOC de un sistema SAP.

  4. Compile e implemente el proyecto de BizTalk.

  5. Configure la aplicación de BizTalk mediante la creación de puertos físicos de envío y recepción.

  6. Inicie la aplicación de BizTalk.

    En este tema se proporcionan instrucciones para realizar estas tareas.

Ejemplos basados en este tema

También se proporcionan ejemplos, ReceiveIDOC y ReceiveIDOC_SYSREL basados en este tema con el paquete de adaptadores de BizTalk. Para obtener más información, consulte Ejemplos para el adaptador de SAP.

Generar esquema

Debe generar el esquema para la operación Receive de la ORDERS03. IDOC V3.620 en el nodo /IDOC/ORDERS/ORDERS03 . Consulte Examinar, buscar y obtener metadatos para operaciones de IDOC en SAP para obtener instrucciones sobre cómo generar el esquema para un IDOC determinado. Al generar el esquema, es posible que también desee establecer las siguientes propiedades:

  • GenerateFlatFileCompatibleIDoc : genera <etiquetas appinfo> para que el analizador de archivos planos de BizTalk se pueda usar en escenarios de BizTalk para admitir IDOC de archivo plano.

  • FlatFileSegmentIndicator: indica si las etiquetas appinfo> del esquema <IDOC deben contener nombres de definición de segmento o nombres de tipo de segmento. Esto es aplicable cuando un objeto usado desea enviar o recibir un IDOC de archivo plano hacia o desde SAP. Si GenerateFlatFileCompatibleIDoc se establece en false, se omite la propiedad de enlace FlatFileSegmentIndicator .

Importante

Dado que está generando el esquema para una llamada IDOC entrante, asegúrese de seleccionar Servicio (operación de entrada) en la lista desplegable Seleccionar tipo de contrato en el Complemento de proyecto Consumir servicio de adaptador de BizTalk.

Definición de mensajes y tipos de mensajes

El esquema que generó anteriormente describe los "tipos" necesarios para los mensajes de la orquestación. Normalmente, un mensaje es una variable, el tipo para el que se define mediante el esquema correspondiente. Debe vincular el esquema que generó en el primer paso a los mensajes de la vista Orquestación del proyecto de BizTalk.

Para este tema, debe crear dos mensajes: uno para recibir un IDOC del sistema SAP y el otro para enviar una respuesta.

Realice los pasos siguientes para crear mensajes y vincularlos al esquema:

  1. Agregue una nueva orquestación al proyecto de BizTalk.

  2. Abra la vista de orquestación del proyecto de BizTalk, si aún no está abierto. Haga clic en Ver, seleccione Otras ventanas y haga clic en Vista de orquestación.

  3. En la vista Orquestación, haga clic con el botón derecho en Mensajes y, a continuación, haga clic en Nuevo mensaje.

  4. Haga clic con el botón derecho en el mensaje recién creado y seleccione Ventana Propiedades.

  5. En el panel Propiedades de Message_1, haga lo siguiente:

    Use Para hacer esto
    Identificador Escriba Solicitud.
    Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione ReceiveIDOC.SAPBindingSchema2, donde ReceiveIDOC es el nombre del proyecto de BizTalk. SAPBindingSchema2 es el esquema generado para la operación Receive.
  6. Repita el paso 2 para crear un mensaje. En el panel Propiedades del nuevo mensaje, haga lo siguiente:

    Use Para hacer esto
    Identificador Respuesta de tipo.
    Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione ReceiveIDOC.SAPBindingSchema3.

Configuración de la orquestación

Debe crear una orquestación de BizTalk para usar BizTalk Server para recibir IDOC desde el sistema SAP. En un escenario típico, el adaptador de SAP recibe una llamada IDOC desde el sistema SAP, procesa la solicitud y pasa la respuesta al sistema SAP. Para lograrlo como parte de una orquestación, la orquestación debe contener:

  • Un puerto de recepción bidireccional para recibir IDC desde el sistema SAP y enviar la respuesta.

  • Enviar y recibir formas.

  • Construya la forma Mensaje y dentro de esa forma de asignación de mensajes para generar una respuesta que se enviará al sistema SAP.

    Nota

    Si la orquestación incluye un puerto de recepción bidireccional (solicitud-respuesta) para recibir IDOC del sistema SAP, la orquestación debe devolver una respuesta al sistema SAP. Si no es así, el sistema SAP no envía el siguiente IDOC. Sin embargo, si un puerto de recepción unidireccional, la orquestación no tiene que enviar una respuesta al sistema SAP.

  • Un puerto de envío unidireccional para enviar las IDOC recibidas del sistema SAP a una carpeta.

    Una orquestación de ejemplo para recibir un IDOC desde un sistema SAP tiene el siguiente aspecto:

    Orquestación para recibir IDOCs

Agregar formas de mensaje

Asegúrese de especificar las siguientes propiedades para cada una de las formas de mensaje. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje que se muestran en la orquestación anterior.

Forma Tipo de forma Propiedades
ListenToSAP Recepción - Establecer el nombre en ListenToSAP

- Establecer Activar en True
SaveIDOC Envío - Establecer nombre en SaveIDOC
SendResponse Envío - Establecer el nombre en SendResponse

Agregar forma de mensaje de construcción

Dentro de la orquestación, debe generar una respuesta y enviarla al sistema SAP. Para ello, debe agregar una forma Construir mensaje y dentro de esa forma de asignación de mensajes a la orquestación. La forma Asignación de mensajes invoca código que genera un mensaje de respuesta que se envía al sistema SAP. La forma Asignación de mensajes también establece la acción para que la respuesta se envíe al sistema SAP.

Importante

Si la orquestación incluye un puerto de recepción bidireccional (solicitud-respuesta) para recibir IDOC del sistema SAP, la orquestación debe devolver una respuesta al sistema SAP. Si no es así, el sistema SAP no envía el siguiente IDOC. Sin embargo, si un puerto de recepción unidireccional, la orquestación no tiene que enviar una respuesta al sistema SAP.

Para la forma del mensaje de construcción, establezca la propiedad Message Construido en Response.

El código para generar la respuesta podría formar parte de la misma solución de Visual Studio que el proyecto de BizTalk. Un código de ejemplo para generar un mensaje de respuesta tiene este aspecto.

namespace IdocReceiveResponseMessageCreator  
{  
    public class IdocReceiveResponseMessageCreator  
    {  
        private static XmlDocument Message;  
        private static string XmlFileLocation;  
        private static string ResponseDoc;  

        public static XmlDocument XMLMessageCreator()  
        {  
            XmlFileLocation = "C:\\test\\in";  
            try  
            {  
                ResponseDoc = (Directory.GetFiles(XmlFileLocation, "*.xml", SearchOption.TopDirectoryOnly))[0];  
            }  
            catch (Exception ex)  
            {  
                Console.WriteLine("Trying to get XML from: " + XmlFileLocation);  
                Console.WriteLine("EXCEPTION: " + ex.ToString());  
                throw ex;  
            }  
            //Create Message From XML  
            Message = new XmlDocument();  
            Message.PreserveWhitespace = true;  
            Message.Load(ResponseDoc);  
            return Message;  
        }   
    }  
}  

Nota

Después de compilar el proyecto, IdocReceiveResponseMessageCreator.dll se creará en el directorio del proyecto. Debe agregar este archivo DLL a la caché global de ensamblados (GAC).

Agregue la siguiente expresión para invocar este código desde la forma Asignación de mensajes y establecer la acción para la respuesta enviada al sistema SAP. Para agregar una expresión, haga doble clic en la forma Asignación de mensajes para abrir el Editor de expresiones.

Response = IdocReceiveResponseMessageCreator.IdocReceiveResponseMessageCreator.XMLMessageCreator();  
Response(WCF.Action)= "http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/Receive/response";  

Importante

Debe establecer explícitamente la acción en el mensaje de respuesta. Si no establece la acción, WCF-Custom adaptador llega al mensaje de acción anexando "Respuesta" a la acción de solicitud. Por lo tanto, la acción del mensaje de respuesta se convierte en http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/ReceiveResponse. Sin embargo, sapBinding espera la acción de respuesta anexando "/response" a la acción de solicitud, por ejemplo http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/Receive/response.

Adición de puertos

Asegúrese de especificar las siguientes propiedades para el puerto lógico. El nombre que aparece en la columna Puerto es el nombre del puerto tal y como se muestra en la orquestación.

Port Propiedades
ReceiveIDOCPort - Establecer identificador en ReceiveIDOCPort

- Establecer tipo en ReceiveIDOCPortType

- Establecer el patrón de comunicación en Solicitud-respuesta

- Establecer la dirección de comunicación en Envío de recepción
GetIDOCPort - Establecer identificador en GetIDOCPort

- Establecer tipo en GetIDOCPortType

- Establecer el patrón de comunicación en unidireccional

- Establecer la dirección de comunicación en enviar

Importante

Si la orquestación incluye un puerto de recepción bidireccional (solicitud-respuesta) para recibir IDOC del sistema SAP, la orquestación debe devolver una respuesta al sistema SAP. Si no es así, el sistema SAP no envía el siguiente IDOC.

Agregar un ensamblador de archivos planos

Debe agregar un ensamblador para convertir el mensaje IDOC entrante en un archivo plano.

Para agregar un ensamblador de archivos planos
  1. Haga clic con el botón derecho en el proyecto de BizTalk, seleccione Agregar y seleccione Nuevo elemento.

  2. En el cuadro de diálogo, haga lo siguiente:

    Use Para hacer esto
    Categorías Archivos de canalización
    Plantillas instaladas de Visual Studio Canalización de envío
    Nombre SendIDOC
  3. Se abrirá el Designer de canalización. En el cuadro de herramientas Componentes de canalización de BizTalk , arrastre el componente de canalización del ensamblador de archivos planos a la fase Ensamblador de la canalización de envío.

  4. En la vista Propiedades del componente de canalización , especifique un valor para la propiedad Esquema de documento . En la lista desplegable, asegúrese de seleccionar el esquema correspondiente a la operación de recepción del IDOC.

Especificar mensajes para formas de acción y conectarse a puertos

En la tabla siguiente se especifican las propiedades y sus valores que se van a establecer para especificar mensajes para las formas de acción y vincularlas a los puertos. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje que se muestran en la orquestación anterior.

Forma Propiedades
ListenToSAP - Establecer mensaje en solicitud

- Establecer la operación en ReceiveIDOCPort.ReceiveIDOC.Request
SaveIDOC - Establecer mensaje en solicitud

- Establecer operación en GetIDOCPort.ReceiveIDOC.Request
SendResponse - Establecer mensaje en respuesta

- Establecer la operación en ReceiveIDOCPort.ReceiveIDOC.Response

Después de especificar estas propiedades, las formas y los puertos de mensaje están conectados y se completa la orquestación.

Ahora debe compilar la solución de BizTalk e implementarla en un BizTalk Server. Para obtener más información, vea Compilar y ejecutar orquestaciones.

Configuración de la aplicación de BizTalk

Después de implementar el proyecto de BizTalk, la orquestación que creó anteriormente aparece en el panel Orquestaciones de la consola de administración de BizTalk Server. Debe usar la consola de administración de BizTalk Server para configurar la aplicación. Para obtener más información sobre cómo configurar una aplicación, vea How to Configure an Application.

La configuración de una aplicación implica:

  • Selección de un host para la aplicación.

  • Asignación de los puertos que creó en la orquestación a puertos físicos en la consola de administración de BizTalk Server. Para esta orquestación, debe:

    • Definir ubicaciones de envío y puerto de envío físico. Esta ubicación contendrá los IDOC procedentes del sistema SAP.

      Importante

      Para la canalización XMLTransmit, asegúrese de seleccionar SendIDOC. Ha creado esta canalización como parte del proyecto de BizTalk.

    • Defina un puerto de recepción WCF-Custom o WCF-SAP. Este puerto recibirá un IDOC de entrada del sistema SAP y lo pasará a la orquestación. Este puerto también envía la respuesta al sistema SAP. Para obtener información sobre cómo crear puertos, consulte Configuración manual de un enlace de puerto físico al adaptador de SAP.

      Importante

      Asegúrese de que la propiedad de enlace ReceiveIDocFormat está establecida en Typed.

      Importante

      Si la propiedad de enlace EnableBizTalkCompatibilityMode está establecida en true, asegúrese de agregar el archivo DLL de esquema de propiedades de BizTalk para el adaptador de SAP como un recurso en la aplicación de BizTalk, es decir, la aplicación en la que se implementa el proyecto. Para obtener instrucciones sobre cómo agregar recursos, consulte Solución de problemas operativos con el adaptador de SAP.

      Nota

      La generación del esquema mediante el Complemento de proyecto consumir servicio de adaptador de BizTalk también crea un archivo de enlace que contiene información sobre los puertos y las acciones que se van a establecer para esos puertos. Puede importar este archivo de enlace desde la Consola de administración de BizTalk para crear puertos de envío (para llamadas salientes) o puertos de recepción (para llamadas entrantes). Para más información, consulte Configuración de un enlace de puerto físico mediante un archivo de enlace de puerto a SAP.

    También debe agregar el ensamblado para el proyecto IdocReceiveResponseMessageCreator a la aplicación de BizTalk. Ha creado este proyecto para generar la respuesta que se enviará al sistema SAP. Para ello:

  1. En el árbol de consola del lado izquierdo de la consola de administración de BizTalk Server, en la aplicación de BizTalk donde importó los enlaces, haga clic con el botón derecho en Recursos, seleccione Agregar y, a continuación, haga clic en Ensamblados de BizTalk.

  2. En el cuadro de diálogo Agregar recursos , haga clic en Agregar y vaya a la carpeta que contiene IdocReceiveResponseMessageCreator.dll. Selecciona el archivo y haz clic en Abrir.

  3. En el cuadro de diálogo Agregar recursos , haga clic en Aceptar.

Iniciar la aplicación

Debe iniciar la aplicación de BizTalk para recibir un IDOC desde el sistema SAP. Para obtener instrucciones sobre cómo iniciar una aplicación de BizTalk, vea Cómo iniciar una orquestación o Cómo iniciar una aplicación.

En esta fase, asegúrese de que:

  • El puerto de envío FILE para guardar el IDOC entrante en una ubicación de archivo se está ejecutando.

  • El puerto de recepción de WCF-Custom o WCF-SAP para recibir IDOC del sistema SAP se está ejecutando.

  • La orquestación de BizTalk para la operación se está ejecutando.

Ejecución de la operación

Después de ejecutar la aplicación, debe ir al sistema SAP y enviar un IDOC al adaptador. El adaptador recibe el IDOC y lo guarda en una ubicación de archivo especificada como parte de la orquestación.

Posibles excepciones

Para obtener información sobre las excepciones que puede encontrar al recibir un IDOC desde un sistema SAP mediante BizTalk Server, consulte Excepciones y control de errores con el adaptador de SAP.

Prácticas recomendadas

Después de implementar y configurar el proyecto de BizTalk, puede exportar los valores de configuración a un archivo XML denominado archivo de enlaces. Una vez que genere un archivo de enlaces, puede importar los valores de configuración del archivo para que no sea necesario crear los puertos de envío, los puertos de recepción, etc. para la misma orquestación. Para obtener más información sobre los archivos de enlace, consulte Reutilización de enlaces de adaptador de SAP.

Consulte también

Desarrollo de aplicaciones de BizTalk