Compartir a través de


Ejecución de transacciones de BAPI en SAP mediante BizTalk Server

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. Se denominarán "mensajes de transacción".

¿Cómo habilita el adaptador las transacciones a través de BizTalk Server?

Para habilitar transacciones en un sistema SAP mediante el 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 instrucciones sobre el uso de las propiedades con BAPI_TRANSACTION_COMMIT o BAPI_TRANSACTION_ROLLBACK:

Message OPEN REUTILIZACIÓN CLOSE ABORT
Primer mensaje (mensaje de operación) No No No
Mensajes posteriores (mensajes de operación) No No No
BAPI_TRANSACTION_COMMIT (mensaje de transacción) No No No
BAPI_TRANSACTION_ROLLBACK (mensaje de transacción) No No

En la tabla, un valor "Sí" indica 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, lo ideal es que el mensaje esté en el bloque de excepciones de orquestación.

  • 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 entre puertos.

  • Los intentos de reintento 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.

  • BAPI_TRANSACTION_COMMIT o BAPI_TRANSACTION_ROLLBACK debería ser el último mensaje 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:

  1. Cree un proyecto de BizTalk y genere el esquema para la RFC en la que desea realizar la transacción. Además, debe generar esquema para BAPI_TRANSACTION_COMMIT y BAPI_TRANSACTION_ROLLBACK RFC.

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

  3. Cree una orquestación que extraiga los "mensajes de operación" individuales del mensaje de solicitud y los envíe al sistema SAP. En función del mensaje de solicitud, la orquestación también decide si se va a confirmar o revertir la transacción.

  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.

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 cumplir 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 que se incluye con los ejemplos del paquete de adaptadores 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 Consumir servicio de adaptador de BizTalk Project. 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 todos los esquemas necesarios se agreguen 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 instalació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 de la ventana Vista de orquestación del proyecto de BizTalk.

Antes de crear mensajes, debe determinar el número de nodos de "operación" 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 rfC de BAPI_SALESORDER_CREATEFROMDAT2. Por lo tanto, debe crear un conjunto de mensajes de solicitud-respuesta que se asigne al esquema generado para este 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 para el mensaje de entrada, MultipleOrders.xsd.

  • Un 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 RFC de BAPI_SALESORDER_CREATEFROMDAT2.

  • 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.

  1. 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.

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

  3. Haga clic con el botón derecho en el mensaje recién creado y, a continuación, seleccione Ventana Propiedades.

  4. En el panel Propiedades de Message_1, haga lo siguiente.

    Use Para hacer esto
    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.
  5. Repita el paso anterior para crear seis mensajes más. En el panel Propiedades de los nuevos mensajes, haga lo siguiente.

    Establecer 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, quitará 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 mediante una transformación XML a través de un mapa de BizTalk. Para lograrlo, incluya Transformar formas 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 Decidir en la orquestación.

    Para obtener más información sobre las distintas formas incluidas en la orquestación, consulte la interfaz de usuario de orchestration Designer en la guía de interfaz de usuario y la referencia del espacio de nombres de api de desarrolladores.

    Una orquestación de ejemplo para una transacción de SAP es similar a la siguiente.

    Orquestaciones para realizar transacciones en SAP

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
ReceiveInputXML Recepción - Establecer nombre en ReceiveInputXML

- Establecer Activar en True
SendToLOB Envío - Establecer nombre en SendToLOB
ReceiveResponse Recepción - Establecer nombre en ReceiveResponse

- Establecer Activar en False
SendResponse Envío - Establecer el 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 se pueden confirmar o revertir, el segundo conjunto de formas debe crearse 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

Para agregar un bloque de decisión, arrastre y quite la forma Decidir del cuadro de herramientas Orquestaciones de BizTalk.

Formas de mensaje para confirmación

En la tabla siguiente se enumeran las formas de la "ruta de acceso 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 forma del mensaje anterior.

Forma Tipo de forma Propiedades
SendBAPICommit Envío - Establecer nombre en SendBAPICommit
ReceiveCommitResponse Recepción - Establecer nombre en ReceiveCommitResponse

- Establecer Activar en False
SendResponse2 Envío - Establecer nombre en SendResponse2

Formas de mensaje para anular

En la tabla siguiente se enumeran las formas de la "ruta de reversión" de la orquestación.

Forma Tipo de forma Propiedades
SendBAPIRollback Envío - Establecer nombre en SendBAPIRollback
ReceiveRollbackResponse Recepción - Establecer nombre en ReceiveRollbackResponse

- Establecer Activar en False
SendResponse3 Envío - 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 Regla en función de 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 "reversión".

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. En 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 cómo promover una propiedad, vea Promoción de propiedades.

Agregar formas de mensaje de construcción

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 una forma Construir mensaje y dentro de esa forma Transformar para extraer mensajes de operación individuales que se enviarán al sistema SAP. También debe agregar una forma de asignación de mensajes para establecer las propiedades de contexto del mensaje para habilitar las transacciones.

La primera forma de mensaje de construcción

Supongamos que la primera forma Construir mensaje se denomina "ReceiveXML". Para esta forma, especifique la propiedad Messages Constructed como "BAPIMessage". Haga doble clic en la forma Transformar para abrir el cuadro de diálogo Transformar configuración . En el cuadro de diálogo, haga lo siguiente:

  • Elija crear un 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 asignador. Asigne el esquema del mensaje de solicitud al esquema del BAPI_SALESORDER_CREATEFROMDAT2. Puede usar el functoid Índice para crear un mapa entre el origen y los esquemas de destino. Un functoid Índice permite seleccionar información para un registro específico en una serie de registros.

    En la ilustración siguiente se muestran los esquemas asignados mediante un functoid Index .

    Esquemas asignados mediante un functoid de índice

    Para obtener más información sobre cómo usar el cuadro de diálogo Transformar configuración , vea el cuadro de diálogo Transformar configuración en la guía de la interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores.

    Para obtener más información sobre el uso del functoid Index, vea Index Functoid.

    Después de asignar los esquemas, puede probar la asignación mediante la página de propiedades del archivo de mapa. Para obtener más información, vea el <cuadro de diálogo Página de propiedades del archivo> de mapa, pestaña Test Map (Mapa de prueba ) en la guía de interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores.

    En la forma 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";

Forma de mensaje Commit Construct

Supongamos que la forma Construir mensaje para la operación de confirmación 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 Transformar configuración . En el cuadro de diálogo, haga lo siguiente:

  • Elija crear un 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 asignador. 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 la forma 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";

Forma de mensaje de construcción de reversión

Supongamos que la forma Construir mensaje para la operación de reversión se denomina "RollbackMessage". Para esta forma, especifique la propiedad Messages Constructed como "BAPIRollbackMessage". Haga doble clic en la forma Transformar para abrir el cuadro de diálogo Transformar configuración . En el cuadro de diálogo, haga lo siguiente:

  • Elija crear un 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 asignador. Asigne el esquema del mensaje de solicitud al esquema de BAPI_TRANSACTION_ROLLBACK. No es necesario incluir un functoid de índice para esta asignación porque el nodo BAPI_TRANSACTION_ROLLBACK no contiene una jerarquía de registros.

    En la forma Asignación de mensajes, especifique la propiedad de contexto del mensaje para revertir 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.

Adición de 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 que se muestran en la orquestación.

Para esta orquestación, se crean tres puertos. El primer puerto elige 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 esquemas para BAPI_TRANSACTION_COMMIT y BAPI_TRANSACTION_ROLLBACK RFC. Para habilitar esto, se crean tres operaciones diferentes en este puerto, cada una 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.

Port Propiedades
FileIn - Establecer identificador en FileIn

- Establecer tipo en 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 tipo en LOBPortType

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

- 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 un mensaje de confirmación.

- Crear una operación RollbackMessage. Esta operación se usará para enviar el mensaje de reversión.
SaveResponse - 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 vincularlas a los puertos. Los nombres que aparecen en la columna Shape son los nombres de las formas de mensaje que se muestran en la orquestación anterior.

Forma Propiedades
ReceiveInputXML - Establecer mensaje en SendToAdapter

- Establecer operación en FileIn.Transaction.Request
SendToLOB - Establecer mensaje en BAPIMessage

- Establecer operación en LOBPort.BAPIMessage.Request
ReceiveResponse - 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
ReceiveCommitResponse - Establecer mensaje en BAPICommitResponse

- Establecer la operación en LOBPort.CommitMessage.Response
SendResponse2 - Establecer mensaje en BAPICommitResponse

- Establecer la operación en SaveResponse.CommitMessage.Request
SendBAPIRollback - Establecer mensaje en BAPIRollbackMessage

- Establecer operación en LOBPort.RollbackMessage.Request
ReceiveRollbackResponse - Establecer mensaje en BAPIRollbackResponse

- Establecer la operación en LOBPort.RollbackMessage.Response
SendResponse3 - Establecer mensaje en BAPIRollbackResponse

- Establecer operación en SaveResponse.RollbackMessage.Request

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

Controlar las excepciones

En orquestaciones complejas como la que realiza transacciones BAPI, es importante que realice un seguimiento del estado de la orquestación, notifique los errores a medida que se produzcan, de modo que pueda resolver los problemas a medida que se produzcan. La orquestación de BizTalk proporciona herramientas para controlar errores, mantener el estado de una orquestación y solucionar problemas a medida que se producen a través de transacciones, compensación y control de excepciones.

Como marco para las transacciones y el control de excepciones, orchestration Designer proporciona la forma Ámbito. Un ámbito puede tener un tipo de transacción, una compensación y cualquier número de controladores de excepción. Un ámbito contiene uno o más 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 Catch Exception se adjuntan al final de una forma Scope en Orchestration Designer. 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 Construir mensaje que consta de una transformación (para extraer el mensaje de solicitud del mensaje de entrada) y una forma de asignación de mensajes (para establecer la propiedad de contexto)

  • Formas de envío y recepción.

    El ejemplo de transacción de SAP para BizTalk Server (SAPTransaction) incluido 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 Uso de transacciones y control de 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 ensamblado que 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 programa de instalación del paquete de adaptador de BizTalk normalmente en <la unidad> de instalación:\Archivos de programa\Microsoft BizTalk Adapter Pack\bin. Sin este recurso, no podrá implementar el proyecto.

Para agregar un ensamblado como recurso en BizTalk

  1. Inicie la consola de administración de BizTalk Server.

  2. 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.

  3. Haga clic con el botón derecho en Recursos, seleccione Agregar y, a continuación, haga clic en Ensamblados de BizTalk.

  4. 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.

  5. 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 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:

    • Defina una ubicación en el disco duro y un puerto de archivo correspondiente donde quitará 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 archivo correspondiente donde la orquestación de BizTalk quitará el mensaje de respuesta que contiene 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 un puerto de envío de WCF-Custom o WCF-SAP para realizar transacciones.

      Configure las opciones siguientes: A 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>
      EnableBizTalkCompatibilityMode Establezca esta propiedad de enlace en True.
      EnableConnectionPooling Establezca esta propiedad de enlace en False antes de realizar cualquier transacción. 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 en el nuevo canal. Para evitar esto, la agrupación de conexiones debe deshabilitarse mientras se realizan transacciones.

      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 Server 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.

      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 que:

  • El puerto de recepción FILE para recibir mensajes de solicitud para la orquestación se está ejecutando.

  • El puerto de envío FILE para recibir los mensajes de respuesta de la orquestación se está ejecutando.

  • El puerto de envío de WCF-Custom o WCF-SAP para enviar mensajes al 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 quitar un mensaje de solicitud para 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, se obtienen dos mensajes de respuesta: uno para invocar el RFC de BAPI_SALESORDER_CREATEFROMDAT2 y el otro para la operación de confirmació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.

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 y los puertos de recepción, 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