Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El adaptador de SAP permite a los clientes del adaptador realizar transacciones en un sistema SAP mediante BizTalk Server. Antes de crear una orquestación para una transacción, primero debe comprender un escenario básico en el que se realizarán las transacciones. En un escenario de transacción típico, se envía un mensaje de solicitud con varias operaciones (como invocar un BAPI) al sistema SAP. Esto se denominará "mensaje de operación". La orquestación debe extraer cada mensaje de operación del mensaje de solicitud y enviar los mensajes de operación individuales al sistema SAP. La orquestación los envía uno después del otro mediante la misma conexión. La orquestación extrae los mensajes individuales del "mensaje de operación" mediante una transformación XML a través de un mapa de BizTalk.
Una vez realizadas las operaciones, la orquestación debe confirmar o anular la transacción enviando mensajes para BAPI_TRANSACTION_COMMIT o BAPI_TRANSACTION_ROLLBACK, respectivamente. Estos se denominarán "mensajes de transacción".
¿Cómo habilita el adaptador transacciones a través de BizTalk Server?
Para habilitar transacciones en un sistema SAP mediante BizTalk Server, el adaptador de SAP:
Proporciona propiedades de contexto de mensaje OPEN, REUSE, CLOSE y ABORT.
Usa BAPI_TRANSACTION_COMMIT y BAPI_TRANSACTION_ROLLBACK para confirmar o anular las operaciones. Estos se exponen mediante el sistema SAP.
En la tabla siguiente se enumeran algunas directrices sobre el uso de las propiedades con BAPI_TRANSACTION_COMMIT o BAPI_TRANSACTION_ROLLBACK:
Mensaje | ABIERTO | REUTILIZACIÓN | Cerrar | ABORTAR |
---|---|---|---|---|
Primer mensaje (mensaje de operación) | Sí | No | No | No |
Mensajes posteriores (mensajes de operación) | No | Sí | No | No |
BAPI_TRANSACTION_COMMIT (mensaje de transacción) | No | No | Sí | No |
BAPI_TRANSACTION_ROLLBACK (mensaje de transacción) | No | No | Sí | Sí |
En la tabla, un "Sí" denota la propiedad de contexto del mensaje que se va a usar para un mensaje. Del mismo modo, un "No" denota la propiedad de contexto del mensaje que no se va a usar con un mensaje.
Para resumir la tabla:
El primer mensaje siempre debe ser un mensaje de operación y solo debe usar la propiedad OPEN.
Los mensajes de operación posteriores deben usar la propiedad REUSE.
El mensaje de transacción correspondiente a BAPI_TRANSACTION_COMMIT para confirmar la transacción debe usar la propiedad CLOSE.
El mensaje de transacción correspondiente a BAPI_TRANSACTION_ROLLBACK para anular la transacción puede usar las propiedades CLOSE o ABORT. Si usa ABORT, idealmente el mensaje debe estar en el bloque de excepción de orquestación.
Consideraciones clave relacionadas con las transacciones mediante BizTalk Server
Si hay más de un puerto de envío en una orquestación, el adaptador separa automáticamente la transacción de los mensajes recibidos de cada puerto. Es decir, una transacción no puede abarcar puertos.
Los reintentos de mensajes no se admiten para los mensajes de una transacción de SAP. Por lo tanto, los usuarios deben establecer el reintento del mensaje en cero.
El adaptador puede producir resultados no deseados para las combinaciones marcadas como "No" en la tabla anterior. Debe usar combinaciones marcadas como "Sí".
Los mensajes enviados al adaptador que no tienen una propiedad de contexto de mensaje se ejecutarán normalmente sin enlazarse al contexto de transacción actual.
Idealmente, BAPI_TRANSACTION_COMMIT o BAPI_TRANSACTION_ROLLBACK serán los últimos mensajes del contexto de transacción actual en la orquestación.
En las secciones siguientes se proporcionan instrucciones sobre cómo realizar transacciones en SAP mediante el adaptador de SAP.
¿Cómo realizar una transacción en un sistema SAP?
La realización de una operación en un sistema SAP mediante el adaptador de SAP con BizTalk Server implica tareas de procedimientos descritas en Bloques de creación para crear aplicaciones SAP. Para realizar transacciones en un sistema SAP, estas tareas son:
Cree un proyecto de BizTalk y genere el esquema para la RFC en la que desea realizar la transacción. Además, debe generar los esquemas para los RFC BAPI_TRANSACTION_COMMIT y BAPI_TRANSACTION_ROLLBACK.
Cree mensajes en el proyecto de BizTalk para enviar y recibir mensajes desde el sistema SAP.
Cree una orquestación que extraiga mensajes de operación individuales del mensaje de solicitud y lo envíe al sistema SAP. En función del mensaje de solicitud, la orquestación también decide si confirma o revierte la transacción.
Compile e implemente el proyecto de BizTalk.
Configure la aplicación de BizTalk mediante la creación de puertos de envío y recepción físicos.
Inicie la aplicación de BizTalk.
En este tema se proporcionan instrucciones para realizar estas tareas.
Ejemplo basado en este tema
Se proporciona un ejemplo de SAPTransaction basado 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
Para demostrar cómo realizar transacciones en un sistema SAP, necesita los siguientes esquemas:
Para que el "mensaje de operación" realice operaciones en un sistema SAP. El mensaje de solicitud enviado al adaptador debe ajustarse a este esquema. Puede ser cualquier esquema específico del usuario que contenga cualquier número de nodos de operación. En este tema, se usa el esquema MultipleOrders.xsd. El esquema también se proporciona como parte del ejemplo de transacción enviado con los ejemplos del paquete de adaptador de BizTalk. Para obtener más información, vea Ejemplos de esquema.
Para realizar las operaciones en un sistema SAP, como invocar una RFC. El mensaje de solicitud para realizar una operación debe ajustarse a este esquema. Este esquema debe generarse mediante el complemento de BizTalk Project Consume Adapter Service. En este tema, se invoca el BAPI_SALESORDER_CREATEFROMDAT2 RFC. Para obtener información sobre cómo generar esquema para RFC, consulte Examinar, buscar y obtener metadatos para operaciones rfC en SAP.
Para anular o confirmar una transacción. La solicitud para confirmar o anular una transacción debe cumplir este esquema. El adaptador de SAP usa el BAPI_TRANSACTION_COMMIT y BAPI_TRANSACTION_ROLLBACK RFC para confirmar y revertir las operaciones, respectivamente. Debe generar el esquema para estas RFC mediante el complemento Consumir servicio de adaptador.
Nota:
Debe asegurarse de que se agregan todos los esquemas necesarios al proyecto de BizTalk.
Importante
Debe agregar una referencia al esquema de propiedades de BizTalk para el adaptador de SAP al proyecto de BizTalk. El archivo de esquema, Microsoft.Adapters.SAP.BiztalkPropertySchema.dll, se instala mediante la configuración del paquete de adaptador de BizTalk, normalmente en <la unidad> de instalación:\Archivos de programa\Microsoft BizTalk Adapter Pack\bin.
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 desde la ventana Vista de orquestación del proyecto de BizTalk.
Antes de crear mensajes, debe determinar el número de nodos "operation" que tiene el mensaje de solicitud (de tipo MultipleOrders.xsd). En este ejemplo, supongamos que el mensaje de solicitud tiene dos mensajes de operación para invocar el BAPI_SALESORDER_CREATEFROMDAT2 RFC. Por lo tanto, debe crear un conjunto de mensajes de solicitud-respuesta que se asigne al esquema generado para esta RFC.
Debe crear los siguientes mensajes en el proyecto de BizTalk.
Un mensaje, SendtoAdapter, para el mensaje de solicitud que se enviará a la orquestación. Este mensaje debe asignarse al esquema del mensaje de entrada, MultipleOrders.xsd.
Mensaje BAPIMessage para la primera operación enviada al sistema SAP. También debe crear un mensaje de respuesta, BAPIResponse, para la respuesta de la primera operación. Los mensajes de solicitud y respuesta deben asignarse al esquema generado para el BAPI_SALESORDER_CREATEFROMDAT2 RFC.
Un mensaje, BAPICommitMessage, para la operación de confirmación. También debe crear un mensaje de respuesta, BAPICommitResponse, para el mensaje de respuesta correspondiente. Los mensajes de solicitud y respuesta deben asignarse al esquema de BAPI_TRANSACTION_COMMIT RFC.
Un mensaje, BAPIRollbackMessage, para la operación de reversión. También debe crear un mensaje de respuesta, BAPIRollbackResponse, para el mensaje de respuesta correspondiente. Los mensajes de solicitud y respuesta deben asignarse al esquema de BAPI_TRANSACTION_ROLLBACK RFC.
Realice los pasos siguientes para crear mensajes y vincularlos al esquema.
Para crear mensajes y vincular al esquema
Abra la vista de orquestación del proyecto de BizTalk, si no está ya abierto. Haga clic en Ver, seleccione Otras ventanas y haga clic en Vista de orquestación.
En la vista Orquestación, haga clic con el botón derecho en Mensajes y, a continuación, haga clic en Nuevo mensaje.
Haga clic con el botón derecho en el mensaje recién creado y, a continuación, seleccione Ventana Propiedades.
En el panel Propiedades de Message_1, haga lo siguiente.
Usa esto Para Identificador Escriba SendToAdapter. Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione SAPTransaction.MultipleOrders, donde SAPTransaction es el nombre del proyecto de BizTalk. MultipleOrders es el esquema del mensaje de solicitud. Repita el paso anterior para crear seis mensajes más. En el panel Propiedades de los nuevos mensajes, haga lo siguiente.
Establece el identificador en Establecer el tipo de mensaje en BAPIMessage SAPTransaction.SAPBindingSchema.BAPI_SALESORDER_CREATEFROMDAT2 BAPIResponse SAPTransaction.SAPBindingSchema.BAPI_SALESORDER_CREATEFROMDAT2Response BAPICommitMessage SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_COMMIT BAPICommitResponse SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_COMMITResponse BAPIRollbackMessage SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_ROLLBACK BAPIRollbackResponse SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_ROLLBACKResponse
Configuración de la orquestación
Debe crear una orquestación de BizTalk para usar BizTalk Server para realizar transacciones en un sistema SAP. En esta orquestación, se deja un mensaje de solicitud en una ubicación de recepción definida. El adaptador de SAP consume el mensaje y lo pasa al sistema SAP. La respuesta del sistema SAP se guarda en otra ubicación.
Otra consideración que se debe tener en cuenta al crear una orquestación es:
Asigne el esquema del mensaje de solicitud al del BAPI_SALESORDER_CREATEFROMDAT2 RFC.
Asigne el esquema del mensaje de solicitud al del BAPI_TRANSACTION_COMMIT y BAPI_TRANSACTION_ROLLBACK RFC.
Puede asignar los esquemas utilizando una transformación XML mediante un mapa de BizTalk. Para lograrlo, incluya formas de transformación en la orquestación.
Por último, en función de si el mensaje de solicitud tiene información para confirmar o anular la transacción, la orquestación debe decidir el mensaje adecuado que se enviará al sistema SAP. Para lograrlo, incluya una forma de decisión en la orquestación.
Para obtener más información sobre las distintas formas incluidas en la orquestación, consulte la interfaz de usuario del Diseñador de orquestaciones en la guía de interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores.
Una orquestación de ejemplo para una transacción de SAP es similar a la siguiente.
Agregar formas de mensaje
Asegúrese de especificar las siguientes propiedades para cada una de las formas de mensaje. Los nombres que aparecen en la columna Shape son los nombres de las formas de mensaje tal y como se muestran en la orquestación anterior.
Forma | Tipo de forma | Propiedades |
---|---|---|
ReceiveInputXML | Recibir | - Establecer Name en ReceiveInputXML - Establecer Activar en True |
SendToLOB | Enviar | - Establecer Nombre en SendToLOB |
RecibirRespuesta | Recibir | - Establecer Name en ReceiveResponse - Establecer Activar en False |
SendResponse | Enviar | - Establecer nombre en SendResponse |
Dado que el mensaje de solicitud tiene dos mensajes de inserción, debe crear otro conjunto de formas de envío y recepción para enviar mensajes a SAP y recibir una respuesta. Sin embargo, dado que los mensajes de inserción pueden confirmarse o revertirse, se debe crear el segundo conjunto de formas dentro de un bloque de decisión. Debe crear un conjunto de formas para confirmar y otro conjunto de formas para la reversión.
Nota:
Puede agregar un bloque de decisión arrastrando y soltando la forma Decidir del cuadro de herramientas Orquestaciones de BizTalk.
Formas de mensaje para confirmación
En la siguiente tabla se muestran las figuras para la "ruta de confirmación" de la orquestación. Aquí no es necesario crear un mensaje de recepción para un mensaje de solicitud. El mensaje de solicitud se pasará desde la estructura del mensaje anterior.
Forma | Tipo de forma | Propiedades |
---|---|---|
SendBAPICommit | Enviar | - Establecer nombre en SendBAPICommit |
RespuestaRecibirCometido | Recibir | - Establecer Nombre en ReceiveCommitResponse - Establecer Activar en False |
SendResponse2 | Enviar | - Establecer nombre en SendResponse2 |
Formatos de mensaje para abortar
En la tabla siguiente se enumeran las formas de la "ruta de reversión" de la orquestación.
Forma | Tipo de forma | Propiedades |
---|---|---|
SendBAPIRollback | Enviar | - Establecer nombre en SendBAPIRollback |
RecibirRespuestaDeReversión | Recibir | - Establecer nombre en ReceiveRollbackResponse - Establecer Activar en False |
SendResponse3 | Enviar | - Establecer nombre en SendResponse3 |
Establecimiento de la expresión de regla
Ha incluido las formas de mensaje para las operaciones de confirmación y anulación dentro de un bloque de decisión agregando una forma Decidir. Para especificar la condición en la que la orquestación tomará una decisión, debe especificar una expresión en la forma de Regla basada en la cual la transacción se confirmará o revertirá. Por ejemplo, debe especificar la siguiente expresión para la forma Regla:
SendToAdapter.isCommit == true
Donde, SendToAdapter es el mensaje que creó para el esquema del mensaje de solicitud. Por lo tanto, en el mensaje de solicitud, si la isCommit
etiqueta está establecida en True, la orquestación toma la ruta de "confirmación". De lo contrario, la orquestación toma la ruta de "retroceso".
Para poder especificar esta condición en el editor de expresiones, debe haber promocionado la isCommit
propiedad en el esquema de mensaje para el mensaje de solicitud enviado al adaptador. Para este tema, el esquema de entrada que se va a usar es MultipleOrders.xsd. Debe promover la isCommit
propiedad en este esquema. Para obtener más información sobre la promoción de una propiedad, vea Promoción de propiedades.
Añadir formas de mensajes estructurados
Como se explicó anteriormente, el mensaje de solicitud enviado al adaptador contiene dos mensajes de inserción y, a continuación, un mensaje de confirmación o anulación. Debe agregar un elemento Construct Message y dentro de este un componente Transform para extraer mensajes individuales de operación que se enviarán al sistema SAP. También debe añadir una estructura de asignación de mensajes para definir las propiedades de contexto del mensaje a fin de habilitar las transacciones.
La primera forma de mensaje de construcción
Supongamos que la primera forma Construct Message se denomina "ReceiveXML". Para esta forma, especifique la propiedad Mensajes Construidos como "BAPIMessage". Haga doble clic en la forma Transformar para abrir el cuadro de diálogo Configuración de Transformación. En el cuadro de diálogo:
Elija crear un nuevo mapa.
En el panel izquierdo, seleccione Origen y, en la lista desplegable Nombre de variable, seleccione SendToAdapter.
En el panel izquierdo, seleccione Destino y, en la lista desplegable Nombre de variable, seleccione BAPIMessage.
Haga clic en Aceptar para iniciar el mapeador. Asigne el esquema del mensaje de solicitud al esquema del BAPI_SALESORDER_CREATEFROMDAT2. Puede usar el functoid Índice para crear un mapa entre los esquemas de origen y de destino. Un functoid Index permite seleccionar información para un registro específico en una serie de registros.
En la figura siguiente se muestran los esquemas asignados mediante un functoid Index.
Para obtener más información sobre el uso del cuadro de diálogo Configuración de Transformación, vea el Cuadro de diálogo de Configuración de Transformación en la guía de la interfaz de usuario y la referencia del espacio de nombres de API de desarrolladores.
Para obtener más información sobre el uso del functoid Index, consulte Index Functoid.
Después de asignar los esquemas, puede probar la asignación mediante la página de propiedades del archivo de mapeo. Para obtener más información, vea el cuadro de diálogo de la página de propiedades 'Archivo de mapa', pestaña 'Probar mapa' en la guía de la interfaz de usuario y referencia del espacio de nombres de la API para desarrolladores.
En el elemento de Asignación de Mensajes, especifique la propiedad de contexto del mensaje para iniciar la transacción. Por ejemplo, la propiedad de contexto del mensaje para el primer mensaje podría ser:
BAPIMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "OPEN";
La estructura del mensaje de Commit Construct
Supongamos que la forma Construct Message para la operación Commit se denomina "CommitMessage". Para esta forma, especifique la propiedad Messages Constructed como "BAPICommitMessage". Haga doble clic en la forma Transformar para abrir el cuadro de diálogo Configuración de Transformación. En el cuadro de diálogo:
Elija crear un nuevo mapa.
En el panel izquierdo, seleccione Origen y, en la lista desplegable Nombre de variable, seleccione SendToAdapter.
En el panel izquierdo, seleccione Destino y, en la lista desplegable Nombre de variable, seleccione BAPICommitMessage.
Haga clic en Aceptar para iniciar el mapeador. Asigne el esquema del mensaje de solicitud al esquema de BAPI_TRANSACTION_COMMIT. No es necesario incluir un functoid de índice para esta asignación porque el nodo BAPI_TRANSACTION_COMMIT no contiene una jerarquía de registros.
En el elemento de Asignación de mensajes, especifique la propiedad de contexto del mensaje para confirmar la transacción. Por ejemplo, la propiedad de contexto del mensaje para el primer mensaje podría ser:
BAPICommitMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "CLOSE";
Estructura del mensaje de reversión
Supongamos que la forma de Construir Mensaje para la operación de reversión se denomina "RollbackMessage". Para esta forma, especifique la propiedad de Mensajes Construidos como "BAPIRollbackMessage". Haga doble clic en la forma Transformar para abrir el cuadro de diálogo Configuración de transformación. En el cuadro de diálogo:
Elija crear un nuevo mapa.
En el panel izquierdo, seleccione Origen y, en la lista desplegable Nombre de variable, seleccione SendToAdapter.
En el panel izquierdo, seleccione Destino y, en la lista desplegable Nombre de variable, seleccione BAPIRollbackMessage.
Haga clic en Aceptar para iniciar el mapeador. Asigne el esquema del mensaje de solicitud al esquema de BAPI_TRANSACTION_ROLLBACK. No es necesario incluir un functoid de Índice para este mapeo porque el nodo BAPI_TRANSACTION_ROLLBACK no contiene una jerarquía de registros.
En el elemento Asignación de mensajes, especifique la propiedad de contexto del mensaje para retroceder la transacción. Por ejemplo, la propiedad de contexto del mensaje para el primer mensaje podría ser:
BAPIRollbackMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "ABORT";
Importante
En escenarios típicos, el mensaje correspondiente a BAPI_TRANSACTION_ROLLBACK con la propiedad de contexto ABORT debe usarse en un bloque de excepciones.
Agregar puertos
Asegúrese de especificar las siguientes propiedades para cada uno de los puertos lógicos. Los nombres enumerados en la columna Puerto son los nombres de los puertos tal como se muestran en la orquestación.
Para esta orquestación, se crean tres puertos. El primer puerto selecciona el mensaje de solicitud de una carpeta especificada. El segundo puerto envía los mensajes al sistema SAP y recibe una respuesta. El tercer puerto guardará la respuesta en otra carpeta. Por lo tanto:
El primer puerto solo recibe mensajes para un único esquema, es decir, MultipleOrders.xsd.
El segundo puerto envía y recibe mensajes para el esquema de BAPI_SALESORDER_CREATEFROMDAT2 RFC. Además, se usará el mismo puerto para confirmar o revertir la transacción. Por lo tanto, este puerto también recibe mensajes de los esquemas de RFC para BAPI_TRANSACTION_COMMIT y BAPI_TRANSACTION_ROLLBACK. Para habilitar esto, se crean tres operaciones diferentes en este puerto, cada una de ellas correspondiente a un esquema de mensaje específico.
De forma similar al segundo puerto, este puerto también recibirá mensajes con tres esquemas diferentes. Por lo tanto, es necesario crear tres operaciones diferentes en este puerto.
Puerto | Propiedades |
---|---|
FileIn | - Establecer identificador en FileIn - Configura Tipo como FileInType - Establecer el patrón de comunicación en unidireccional - Establecer la dirección de comunicación para recibir |
LOBPort | - Establecer identificador en LOBPort - Establecer el tipo en LOBPortType - Establecer el patrón de comunicación en Request-Response - Establecer la dirección de comunicación en enviar y recibir - Crear una operación BAPIMessage. - Crear una operación CommitMessage. Esta operación se usará para enviar el mensaje de confirmación. - Crear una operación RollbackMessage. Esta operación se usará para enviar el mensaje de reversión. |
GuardarRespuesta | - Establecer identificador en SaveResponse - Establecer Tipo en SaveResponseType - Establecer el patrón de comunicación en unidireccional - Establezca Dirección de comunicación en Enviar. - Crear una operación BAPIMessage. - Crear una operación CommitMessage. Esta operación se usará para guardar las respuestas del mensaje de confirmación. - Crear una operación RollbackMessage. Esta operación se usará para guardar las respuestas del mensaje de reversión. |
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 vincularlos a los puertos. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje tal como se muestran en la orquestación anterior.
Forma | Propiedades |
---|---|
ReceiveInputXML | - Establecer Mensaje en SendToAdapter - Establecer la operación en FileIn.Transaction.Request |
SendToLOB | - Establecer mensaje en BAPIMessage - Configurar Operacion en LOBPort.BAPIMessage.Request |
RecibirRespuesta | - Establecer mensaje en BAPIResponse - Establecer operación en LOBPort.BAPIMessage.Response |
SendResponse | - Establecer mensaje en BAPIResponse - Establecer Operación en SaveResponse.BAPIMessage.Request |
SendBAPICommit | - Establecer mensaje en BAPICommitMessage - Establecer Operación en LOBPort.CommitMessage.Request |
RespuestaRecibirCometido | - Establecer mensaje en BAPICommitResponse - Configura Operación en LOBPort.CommitMessage.Response |
SendResponse2 | - Establecer mensaje en BAPICommitResponse - Establecer operación en SaveResponse.CommitMessage.Request |
SendBAPIRollback | - Establecer Mensaje en BAPIRollbackMessage - Establecer Operación en LOBPort.RollbackMessage.Request |
RecibirRespuestaDeReversión | - Establecer Mensaje en BAPIRollbackResponse - Establecer Operación en LOBPort.RollbackMessage.Response |
SendResponse3 | - Establecer Mensaje en BAPIRollbackResponse - Establecer Operación en SaveResponse.RollbackMessage.Request |
Una vez que haya especificado estas propiedades, las formas de mensaje y los puertos están conectados y se completa la orquestación.
Controlar las excepciones
En orquestaciones complejas como la que se realiza para realizar transacciones de BAPI, es importante realizar un seguimiento del estado de la orquestación, notificar los errores a medida que se producen, de modo que pueda resolver los problemas a medida que se producen. La orquestación de BizTalk proporciona herramientas para controlar errores, mantener el estado de una orquestación y corregir problemas a medida que se producen a través de transacciones, compensación y control de excepciones.
Como marco para transacciones y control de excepciones, el Diseñador de orquestaciones proporciona la forma Ámbito . Un ámbito puede tener un tipo de transacción, una compensación y cualquier número de controladores de excepciones. Un ámbito contiene uno o varios bloques. Tiene un cuerpo y, opcionalmente, puede tener cualquier número de bloques de control de excepciones anexados a él. En el caso de las transacciones de BAPI, toda la orquestación (consulte la figura anterior) se puede incluir en un ámbito.
Para detectar la excepción, debe agregar un bloque Catch Exception a la orquestación. Los bloques de captura de excepciones se adjuntan al final de una forma Ámbito en el Diseñador de orquestaciones. En el caso de las transacciones de BAPI, debe agregar la rutina "ABORT" al bloque Catch Exception ( Es decir, debe agregar lo siguiente a la rutina "ABORT":
Forma de construcción de mensaje que consta de una transformación (para extraer el mensaje de solicitud del mensaje de entrada) y una forma de asignación de mensaje (para establecer la propiedad de contexto)
Enviar y recibir figuras.
El ejemplo de transacción de SAP para BizTalk Server (SAPTransaction) enviado con el paquete de adaptadores de BizTalk también muestra el control de excepciones. Para obtener más información sobre el ejemplo, consulte Ejemplos para el adaptador de SAP.
Para obtener más información sobre cómo controlar excepciones, en general, mediante BizTalk Server, vea Usar transacciones y controlar excepciones.
Agregar el esquema de propiedades de BizTalk a BizTalk
En el proyecto de BizTalk, ha agregado una referencia de ensamblado al esquema de propiedades de BizTalk para el adaptador de SAP. Debe agregar el mismo assembly como un recurso en la aplicación de BizTalk, es decir, la aplicación donde se implementará el proyecto de BizTalk. El archivo de esquema, Microsoft.Adapters.SAP.BiztalkPropertySchema.dll, lo instala el proceso de instalación del paquete de adaptadores de BizTalk normalmente en la <unidad de disco donde se instala>:\archivos de programa\Microsoft BizTalk Adapter Pack\bin. Sin este recurso, no podrá implementar el proyecto.
Para agregar un ensamblado como recurso en BizTalk
Inicie la consola de administración de BizTalk Server.
En el árbol de consola, expanda Grupo de BizTalk, expanda Aplicaciones y, a continuación, la aplicación a la que desea agregar un ensamblado de BizTalk.
Haga clic con el botón derecho en Recursos, seleccione Agregar y, a continuación, haga clic en Ensamblados de BizTalk.
En el cuadro de diálogo Agregar recurso , haga clic en Agregar, vaya a la carpeta que contiene el archivo de ensamblado de BizTalk, seleccione el archivo de ensamblado de BizTalk y, a continuación, haga clic en Abrir.
En Opciones, especifique las opciones para instalar el ensamblado de BizTalk en la GAC y, a continuación, haga clic en Aceptar.
Ahora debe compilar la solución de BizTalk y, a continuación, implementarla en un servidor de 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, consulte How to Configure an Application (Cómo configurar una aplicación).
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, debes:
Defina una ubicación en el disco duro y un puerto de archivo correspondiente donde dejará un mensaje de solicitud. La orquestación de BizTalk consumirá el mensaje de solicitud y lo enviará al sistema SAP.
Defina una ubicación en el disco duro y un puerto de archivos correspondiente donde la orquestación de BizTalk dejará el mensaje de respuesta con la respuesta del sistema SAP.
Defina un puerto de envío físico WCF-Custom o WCF-SAP para enviar mensajes 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. Dado que el puerto de envío envía y recibe mensajes que se ajustan a más de un esquema y realiza dos operaciones, debe establecer una acción dinámica para ambas operaciones. Para obtener más información sobre las acciones, consulte Configuración de la acción SOAP para el sistema SAP. Asegúrese de cumplir las siguientes consideraciones clave al crear una WCF-Custom o WCF-SAP puerto de envío para realizar transacciones.
Establezca lo siguiente: Para este valor Acción El puerto de envío envía y recibe mensajes para más de una operación. Por lo tanto, la acción en el puerto de envío debe establecerse para cada operación.
<BtsActionMapping> <Operation Name="BAPIMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_SALESORDER_CREATEFROMDAT2" /> <Operation Name="CommitMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_TRANSACTION_COMMIT" /> <Operation Name="RollbackMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_TRANSACTION_ROLLBACK" /> </BtsActionMapping>
ActivarModoDeCompatibilidadBizTalk Establezca esta propiedad de enlace en True. EnableConnectionPooling Establezca esta propiedad de enlace en False antes de realizar las transacciones. En escenarios en los que el canal configurado entre el adaptador y BizTalk finaliza inesperadamente, la conexión correspondiente se agrega al grupo de conexiones. Cuando se abre otro canal y el nuevo canal elige el mismo objeto de conexión, las transacciones no confirmadas en el objeto de conexión anterior también se confirmarán cuando las transacciones se confirmen a través del nuevo canal. Para evitar esto, la agrupación de conexiones debe deshabilitarse al realizar transacciones. Nota:
La generación del esquema mediante el complemento del proyecto de BizTalk para consumir servicio de adaptador 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 Server para crear puertos de envío (para llamadas salientes) o puertos de recepción (para llamadas entrantes). Para obtener más información, consulte Configuración de un enlace de puerto físico mediante un archivo de enlace de puertos en SAP.
Importante
Puede configurar un transporte de copia de seguridad en un puerto de envío de WCF-Custom o WCF-SAP que le permite enviar mensajes a otro sistema SAP si el transporte principal no funciona. Sin embargo, para realizar transacciones en un sistema SAP, el adaptador de SAP basado en WCF no admite la especificación de un transporte de copia de seguridad que apunte a otro servidor SAP.
Iniciar la aplicación
Debe iniciar la aplicación de BizTalk que realiza transacciones en un sistema SAP. Para obtener instrucciones sobre cómo iniciar una aplicación de BizTalk, vea Cómo iniciar una orquestación, Cómo iniciar una aplicación.
En esta fase, asegúrese de:
El puerto de recepción FILE para recibir mensajes de solicitud para la orquestación está en funcionamiento.
El puerto de envío "FILE" para recibir los mensajes de respuesta de la orquestación está en funcionamiento.
El puerto de envío WCF-Custom o WCF-SAP para enviar mensajes al sistema SAP está activo.
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 dejar un mensaje de solicitud de la orquestación en una ubicación predefinida. El mensaje de solicitud debe ajustarse a un esquema específico, por ejemplo, esquema MultipleOrders.xsd. Por ejemplo, un mensaje de solicitud para crear pedidos de ventas en un sistema SAP y, a continuación, confirmar la operación es:
<ns0:Orders xmlns:ns0="http://BAPISend.MultipleOrders">
<Order>
<ORDER_HEADER_IN>
<DOC_TYPE>TA</DOC_TYPE>
<SALES_ORG>1000</SALES_ORG>
<DISTR_CHAN>10</DISTR_CHAN>
<DIVISION>00</DIVISION>
<SALES_OFF>1000</SALES_OFF>
<REQ_DATE_H>20060901</REQ_DATE_H>
<PURCH_DATE>20060901</PURCH_DATE>
<PURCH_NO_C>Cust A</PURCH_NO_C>
<CURRENCY>EUR</CURRENCY>
</ORDER_HEADER_IN>
<ORDER_ITEMS_IN>
<MATERIAL>P-109</MATERIAL>
<PLANT>1000</PLANT>
<TARGET_QU>ST</TARGET_QU>
</ORDER_ITEMS_IN>
<ORDER_PARTNERS>
<PARTN_ROLE>AG</PARTN_ROLE>
<PARTN_NUMB>0000000257</PARTN_NUMB>
</ORDER_PARTNERS>
<RETURN></RETURN>
</Order>
<isCommit>true</isCommit>
<BAPI_TRANSACTION_COMMIT>
</BAPI_TRANSACTION_COMMIT>
</ns0:Orders>
La orquestación consume el mensaje y lo envía al sistema SAP. La respuesta del sistema SAP se guarda en otra ubicación de archivo definida como parte de la orquestación. Para el mensaje de solicitud anterior, obtendrá dos mensajes de respuesta: uno para invocar el RFC de BAPI_SALESORDER_CREATEFROMDAT2 y el otro para la operación de confirmación de transacción mediante BAPI_TRANSACTION_COMMIT.
La respuesta de BAPI_SALESORDER_CREATEFROMDAT2 es:
<?xml version="1.0" encoding="utf-8" ?>
<BAPI_SALESORDER_CREATEFROMDAT2Response xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<SALESDOCUMENT />
<ORDER_ITEMS_IN>
<BAPISDITM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<ITM_NUMBER>0</ITM_NUMBER>
<HG_LV_ITEM>0</HG_LV_ITEM>
<PO_ITM_NO />
......
</BAPISDITM>
</ORDER_ITEMS_IN>
<ORDER_PARTNERS>
<BAPIPARNR xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<PARTN_ROLE>AG</PARTN_ROLE>
<PARTN_NUMB>0000000257</PARTN_NUMB>
<ITM_NUMBER>0</ITM_NUMBER>
......
</BAPIPARNR>
</ORDER_PARTNERS>
</BAPI_SALESORDER_CREATEFROMDAT2Response>
La respuesta de BAPI_TRANSACTION_COMMIT es:
<?xml version="1.0" encoding="utf-8" ?>
<BAPI_TRANSACTION_COMMITResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<RETURN>
<TYPE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<ID xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<NUMBER xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</NUMBER>
<MESSAGE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<LOG_NO xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<LOG_MSG_NO xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</LOG_MSG_NO>
<MESSAGE_V1 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<MESSAGE_V2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<MESSAGE_V3 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<MESSAGE_V4 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<PARAMETER xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<ROW xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</ROW>
<FIELD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
<SYSTEM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />
</RETURN>
</BAPI_TRANSACTION_COMMITResponse>
Nota:
Si el mensaje de solicitud invocó el BAPI_TRANSACTION_ROLLBACK RFC, la segunda respuesta será para BAPI_TRANSACTION_ROLLBACK.
Posibles excepciones
Para obtener información sobre las excepciones que puede encontrar al realizar transacciones en un sistema SAP mediante BizTalk Server, consulte Excepciones y control de errores con el adaptador de SAP.
Procedimientos recomendados
Después de implementar y configurar el proyecto de BizTalk, puede exportar opciones 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 y los puertos de recepción, para la misma orquestación. Para obtener más información sobre archivos de vinculación, consulte Reuse SAP adapter bindings.