Compartir a través de


Creación de flujos de trabajo para escenarios comunes de integración de SAP en Azure Logic Apps

Se aplica a: Azure Logic Apps (consumo + estándar)

En esta guía paso a paso se muestra cómo crear flujos de trabajo de aplicación lógica de ejemplo para algunos escenarios comunes de integración de SAP mediante Azure Logic Apps y el conector de SAP.

Los flujos de trabajo de la aplicación lógica estándar y de consumo ofrecen el conector administrado de SAP hospedado y ejecutado en instancias multiinquilino de Azure. Los flujos de trabajo estándar también ofrecen el conector del proveedor de servicios integrado de SAP hospedado y ejecutado en Azure Logic Apps de un solo inquilino. Si crea y hospeda un flujo de trabajo de consumo en un entorno de servicio de integración (ISE), también puede usar la versión nativa de ISE del conector de SAP. Para más información, consulte la referencia técnica del conector.

Requisitos previos

Antes de empezar, asegúrese de revisar y cumplir los requisitos del conector de SAP para su escenario específico.

Recepción de mensajes de SAP

El siguiente flujo de trabajo de aplicación lógica de ejemplo se desencadena cuando el desencadenador SAP del flujo de trabajo recibe un mensaje de un servidor SAP.

Adición de un desencadenador de SAP

En función de si tiene un flujo de trabajo de consumo en Azure Logic Apps multiinquilino o un flujo de trabajo estándar en Azure Logic Apps de un único inquilino, siga los pasos correspondientes:

  1. En Azure Portal, abra su aplicación lógica de consumo y el flujo de trabajo en blanco en el diseñador.

  2. En el diseñador, siga estos pasos generales para agregar el desencadenador del conector administrado de SAP denominado Cuando se recibe un mensaje.

  3. Si se le solicita, proporcione la información de conexión siguiente para el servidor SAP local. Seleccione Crear cuando haya terminado. De lo contrario, continúe con el siguiente paso para establecer su desencadenador de SAP.

    Parámetro Obligatorio Descripción
    Nombre de la conexión Escriba un nombre para la conexión.
    Puerta de enlace de datos 1. Para Suscripción, primero seleccione la suscripción de Azure para el recurso de puerta de enlace de datos que creó en el Azure Portal para la instalación de su puerta de enlace de datos.

    2. Para Puerta de enlace de conexión, seleccione su recurso de puerta de enlace de datos en Azure.
    Cliente Id. de cliente de SAP que se va a usar para conectarse al servidor SAP
    Tipo de autenticación Yes Tipo de autenticación que se va a usar para la conexión, que debe ser Básico (nombre de usuario y contraseña). Para crear una conexión SNC, consulte Habilitación de comunicaciones de red seguras (SNC).
    Nombre de usuario de SAP El nombre de usuario del servidor SAP
    Contraseña de SAP La contraseña del servidor SAP
    Tipo de inicio de sesión Seleccione Servidor de aplicaciones o Grupo (Servidor de mensajes) y, a continuación, configure los parámetros necesarios correspondientes, aunque aparezcan opcionales:

    Servidor de aplicaciones:
    - Host de AS: el nombre de host del servidor de aplicaciones de SAP
    - Servicio AS: el nombre del servicio o el número de puerto del servidor de aplicaciones de SAP
    - Número de sistema as: el número de sistema del servidor SAP, que oscila entre 00 y 99

    Grupo:
    - Host de SERVIDOR DE MS: el nombre de host del servidor de mensajes de SAP
    - Nombre del servicio ms o número de puerto: el nombre del servicio o el número de puerto del servidor de mensajes de SAP
    - Id. de sistema de MS: el identificador del sistema para el servidor SAP
    - Grupo de inicio de sesión de MS: el grupo de inicio de sesión del servidor SAP. En el servidor SAP, puede encontrar o editar el valor Grupo de inicio de sesión abriendo el cuadro de diálogo CCMS: mantener grupos de inicio de sesión (código T SMLG). Para obtener más información, consulte SAP Note 26317 - Set up for LOGON group for automatic load balancing (Nota de SAP 26317: configuración del grupo LOGON para el equilibrio de carga automático).
    Escritura segura No Esta opción está disponible para la compatibilidad con versiones anteriores y solo comprueba la longitud de cadena. De forma predeterminada, se usa el establecimiento inflexible de tipos para comprobar si hay valores no válidos, para lo cual se realiza la validación de XML con respecto al esquema. Este comportamiento puede ayudarlo a detectar problemas con antelación. Obtenga más información sobre la Configuración de tipado seguro.
    Utilice SNC No Para crear una conexión SNC, consulte Habilitación de comunicaciones de red seguras (SNC).

    Para ver otros parámetros de conexión disponibles opcionales, consulte Información de conexión predeterminada.

    Después de que Azure Logic Apps configure y pruebe la conexión, aparece el cuadro de información de desencadenador. Para más información sobre los problemas de conexión que puedan producirse, consulte Solución de problemas de conexiones.

  4. En función de la configuración y el escenario del servidor SAP, proporcione los valores de parámetro necesarios para el desencadenador Cuando se recibe un mensaje y agregue cualquier otro parámetro de desencadenador disponible que desee usar en su escenario.

    Nota

    Este desencadenador de SAP es un desencadenador basado en webhook, no un desencadenador de sondeo y no incluye opciones para especificar una programación de sondeo. Por ejemplo, cuando se usa el conector SAP administrado con la puerta de enlace de datos local, solo se llama al desencadenador desde la puerta de enlace de datos cuando llega un mensaje, por lo que no es necesario realizar sondeos.

    Parámetro Obligatorio Descripción
    GatewayHost Host de puerta de enlace de registro para el servidor RFC de SAP
    GatewayService El servicio de puerta de enlace de registro para el servidor RFC de SAP
    ProgramId Identificador del programa de puerta de enlace de registro para el servidor RFC de SAP.

    Nota: Este valor distingue mayúsculas de minúsculas. Asegúrese de usar siempre el mismo formato para el valor Id. de programa cuando configure el flujo de trabajo de su aplicación lógica y el servidor SAP. De lo contrario, al intentar enviar un IDoc a SAP, el monitor tRFC (T-Code SM58) podría mostrar los siguientes errores (los vínculos requieren inicio de sesión de SAP):

    - No se encontró la función IDOC_INBOUND_ASYNCHRONOUS (2399329)
    - No se admite el cliente RFC que no sea ABAP (tipo de socio) (353597)
    DegreeOfParallelism No Número de llamadas que se van a procesar en paralelo. Para agregar este parámetro y cambiar el valor, en la lista Agregar nuevo parámetro, seleccione DegreeOfParallelism y escriba el nuevo valor.
    SapActions No Filtre los mensajes que recibe de su servidor SAP basándose en una lista de acciones SAP. Para agregar este parámetro, en la lista Agregar nuevo parámetro, seleccione SapActions. En la nueva sección SapActions, para el parámetro SapActions - 1, use el selector de archivos para seleccionar una acción de SAP o especificar manualmente una acción. Para más información sobre la acción de SAP, vea Esquemas de mensaje para operaciones de IDoc.
    Formato de IDoc No Formato que se va a usar para recibir IDoc. Para agregar este parámetro, en la lista Agregar nuevo parámetro, seleccione Formato de IDoc.

    - Para recibir IDoc como XML sin formato de SAP, en la lista Formato de IDoc, seleccione SapPlainXml.

    - Para recibir los IDoc como un archivo sin formato, en la lista Formato de IDoc, seleccione FlatFile.

    - Nota: Si también usa la acción Descodificar archivo sin formato en su flujo de trabajo, en su esquema de archivo sin formato, tiene que usar la propiedad early_terminate_optional_fields y establecer el valor en true. Este requisito es necesario porque el registro de datos IDoc de archivo plano que envía SAP en la llamada a tRFC denominada IDOC_INBOUND_ASYNCHRONOUS no se agrega a la longitud completa del campo SDATA. Azure Logic Apps proporciona los datos originales de IDoc de archivo plano sin relleno tal y como se reciben de SAP. Además, al combinar este desencadenador de SAP con la acción Descodificación de archivos planos, el esquema que se proporciona a la acción debe coincidir.
    Recepción de IDOC con segmentos no publicados No Recibir IDoc con o sin segmentos no publicados. Para agregar este parámetro y cambiar el valor, en la lista Agregar nuevo parámetro, seleccione Recibir IDOC con segmentos no publicados) y seleccione o No.
    SncPartnerNames No La lista de asociados de SNC que tienen permisos para llamar al desencadenador en el nivel de biblioteca cliente de SAP. Solo los asociados enumerados están autorizados por la conexión SNC del servidor SAP. Para agregar este parámetro, en la lista Agregar nuevo parámetro, seleccione SncPartnerNames. Asegúrese de escribir cada nombre separado por una barra vertical (|).

    En el ejemplo siguiente se muestra un desencadenador administrado de SAP configurado básicamente en un flujo de trabajo de consumo:

    Screenshot shows basically configured SAP managed connector trigger in Consumption workflow.

    En el ejemplo siguiente se muestra un desencadenador administrado por SAP en el que puede filtrar los mensajes seleccionando acciones de SAP:

    Screenshot shows selecting an SAP action to filter messages in a Consumption workflow.

    O bien, especificando manualmente una acción:

    Screenshot shows manually entering the SAP action to filter messages in a Consumption workflow.

    El siguiente ejemplo muestra cómo aparece la acción cuando se establece el desencadenador para recibir más de un mensaje:

    Screenshot shows example trigger that receives multiple messages in a Consumption workflow.

  5. Guarde su flujo de trabajo para poder empezar a recibir mensajes de su servidor SAP. En la barra de herramientas del diseñador, seleccione Save (Guardar).

    El flujo de trabajo ya está listo para recibir mensajes de su servidor SAP.

  6. Después de que el desencadenador se active y ejecute el flujo de trabajo, revise el historial de desencadenadores del flujo de trabajo para confirmar que el registro del desencadenador se realizó correctamente.

Recepción de paquetes IDoc de SAP

Para recibir paquetes IDoc, que son lotes o grupos de IDoc, el desencadenador de SAP no necesita configuración adicional. Sin embargo, para procesar cada elemento de un paquete IDoc después de que el desencadenador reciba el paquete, debe implementar algunos pasos más para dividir el paquete en IDoc individuales mediante la configuración de SAP para enviar IDoc en paquetes.

El siguiente ejemplo de flujo de trabajo muestra cómo extraer IDoc individuales de un paquete usando la función xpath():

  1. Antes de empezar, necesita un flujo de trabajo de aplicación lógica de Consumo o Estándar con un desencadenador SAP. Si su flujo de trabajo aún no comienza con este desencadenador, siga los pasos anteriores de esta guía para añadir el desencadenador SAP que puede recibir mensajes a su flujo de trabajo.

  2. Para responder inmediatamente al servidor SAP con el estado de la solicitud de SAP, agregue la siguiente acción de respuesta, en función de si usa un desencadenador administrado de SAP o un desencadenador integrado de SAP:

    • Desencadenador administrado por SAP: para este desencadenador, agregue una acción de respuesta a su flujo de trabajo.

      En la acción Respuesta, use uno de los siguientes códigos de estado (statusCode):

      status code Descripción
      202 - Aceptado La solicitud se aceptó para su procesamiento, pero el procesamiento aún no se ha completado.
      204 No Content El servidor ha cumplido satisfactoriamente la solicitud y no hay contenido adicional que enviar en el cuerpo de la carga útil de respuesta.
      200 OK Este código de estado siempre contiene una carga útil, aunque el servidor genere un cuerpo de carga de longitud cero.
    • Desencadenador integrado de SAP: para este desencadenador, agregue la acción Responder al servidor SAP al flujo de trabajo.

    Nota

    Como procedimiento recomendado, agregue la acción de respuesta inmediatamente después del desencadenador para liberar el canal de comunicación con su servidor SAP.

  3. Obtenga el espacio de nombres raíz de IDoc XML que el flujo de trabajo recibe de SAP.

    1. Para extraer este espacio de nombres del documento XML y almacenar el espacio de nombres en una variable de cadena local, agregue la acción Inicializar variable .

    2. Cambie el nombre del título de la acción a Obtener espacio de nombres para el nodo raíz en el IDoc recibido.

    3. Proporcione un nombre para la variable y establezca el tipo en Cadena.

    4. En el parámetro Valor de la acción, seleccione dentro del cuadro de edición, abra el editor de expresiones o funciones y cree la siguiente expresión usando la función xpath():

      xpath(xml(triggerBody()?['Content']), 'namespace-uri(/*)')

      Flujo de trabajo de consumo

      Screenshot shows the expression to get the root node namespace from received IDoc for a Consumption workflow.

      Flujo de trabajo Estándar

      Screenshot shows the expression to get the root node namespace from received IDoc for a Standard workflow.

      Cuando haya terminado, la expresión se resuelve y ahora aparece como el formato siguiente:

      Screenshot shows the resolved expression that gets the root node namespace from received IDoc.

  4. Para extraer un IDoc individual almacenando la colección IDoc en una variable de matriz local, siga estos pasos:

    1. Agregue otra acción Inicializar variable .

    2. Cambie el nombre del título de la acción a Obtener matriz con elementos de datos de IDoc.

    3. Proporcione un nombre para la variable y establezca el tipo en Matriz.

      La variable de matriz hace que cada IDoc esté disponible para que el flujo de trabajo lo procese individualmente mediante la enumeración de la colección.

    4. En el parámetro Valor de la acción, seleccione dentro del cuadro de edición, abra el editor de expresiones o funciones y cree la siguiente expresión xpath():

      xpath(xml(triggerBody()?['Content']), '/*[local-name()="Receive"]/*[local-name()="idocData"]')

      Cuando haya terminado, la expresión se resuelve y ahora aparece como el formato siguiente:

      Flujo de trabajo de consumo

      Screenshot shows the expression to get an array of IDocs for a Consumption workflow.

      En este ejemplo, el siguiente flujo de trabajo transfiere cada IDoc a un servidor SFTP mediante una acción de Control denominada Para cada uno y la acción SFTP-SSH denominada Crear archivo. Cada IDoc debe incluir el espacio de nombres raíz, que es el motivo por el que el contenido del archivo se ajusta dentro de un elemento <Receive></Receive> junto con el espacio de nombres raíz antes de enviar el IDoc a la aplicación de nivel inferior o servidor SFTP en este caso.

      Screenshot shows sending an IDoc to an SFTP server from a Consumption workflow.

      Nota:

      En el caso de los flujos de trabajo de consumo, este patrón está disponible como plantilla de inicio rápido, que puede seleccionar en la galería de plantillas al crear un recurso de aplicación lógica de consumo y un flujo de trabajo en blanco. O bien, cuando el diseñador de flujo de trabajo esté abierto, en la barra de herramientas del diseñador, seleccione Plantillas.

      Screenshot that shows selecting the template for getting an IDoc batch.

      Flujo de trabajo Estándar

      Screenshot shows the expression to get an array of IDocs for a Standard workflow.

      En este ejemplo, el siguiente flujo de trabajo transfiere cada IDoc a un servidor SFTP mediante una acción de Control denominada Para cada uno y la acción SFTP-SSH denominada Crear archivo. Cada IDoc debe incluir el espacio de nombres raíz, que es el motivo por el que el contenido del archivo se ajusta dentro de un elemento <Receive></Receive> junto con el espacio de nombres raíz antes de enviar el IDoc a la aplicación de nivel inferior o servidor SFTP en este caso.

      Screenshot shows sending an IDoc to an SFTP server from a Standard workflow.


Filtrado de mensajes recibidos con acciones de SAP

Si usa el conector administrado de SAP o el conector SAP con versiones ISE, en el desencadenador del flujo de trabajo, configure una manera de filtrar explícitamente las acciones no deseadas del servidor SAP, en función del espacio de nombres del nodo raíz en la carga XML recibida. Puede proporcionar una lista (matriz) con una o varias acciones de SAP. De manera predeterminada, esta matriz está vacía, lo que significa que su flujo de trabajo recibe todos los mensajes de su servidor SAP sin filtrar. Al configurar el filtro de matriz, el desencadenador solo recibe mensajes de los tipos de acción de SAP especificados y rechaza todos los demás mensajes del servidor SAP. Sin embargo, este filtro no afecta al establecimiento de tipos de la carga recibida, que puede ser flexible o inflexible. Cualquier filtrado de acciones de SAP se produce en el nivel del adaptador de SAP para la puerta de enlace de datos local. Para obtener más información, consulte Envío de IDoc de prueba a Azure Logic Apps desde SAP.

Configuración del patrón asincrónico de solicitud-respuesta para desencadenadores

El conector de SAP administrado es compatible con el patrón de solicitud-respuesta asincrónico de Azure para los desencadenadores de Azure Logic Apps. Puede usar este patrón para crear solicitudes correctas que podrían fallar con el patrón de solicitud-respuesta sincrónico predeterminado.

Nota

En los flujos de trabajo con varias acciones Respuesta, todas las acciones Respuesta deben usar el mismo patrón de solicitud-respuesta. Por ejemplo, si su flujo de trabajo usa un control de conmutador con múltiples acciones Respuesta posibles, debe establecer que todas las acciones Respuesta usen el mismo patrón de solicitud-respuesta, ya sea sincrónico o asincrónico.

Si habilita una respuesta asincrónica para su acción Respuesta, su flujo de trabajo puede responder con una respuesta 202 Aceptada tras aceptar una solicitud para su procesamiento. La respuesta contiene un encabezado de ubicación que puede usar para recuperar el estado final de la solicitud.

Para configurar un patrón de solicitud-respuesta asincrónico para el flujo de trabajo mediante el conector de SAP, siga estos pasos:

  1. En el diseñador, abra el flujo de trabajo de la aplicación lógica. Confirme que el flujo de trabajo comienza con un desencadenador de SAP.

  2. En el flujo de trabajo, busque la acción Respuesta y abra la Configuración de esa acción.

  3. En función de si tiene un flujo de trabajo de Consumo o Estándar, siga los pasos correspondientes:

    • Consumo: En Respuesta asincrónica, cambie la configuración de Desactivado a Activado, y seleccione Listo.
    • Estándar: Expanda Redes, y en Respuesta asincrónica, cambie la configuración de Desactivado a Activado.
  4. Guarde el flujo de trabajo.

Enviar IDoc a SAP

Para crear un flujo de trabajo de aplicación lógica que envíe un IDoc a un servidor SAP y devuelva una respuesta, siga estos ejemplos:

  1. Cree un flujo de trabajo de aplicación lógica desencadenado por una solicitud HTTP.
  2. Agregue una acción de SAP al flujo de trabajo para enviar un IDoc a SAP.
  3. Agregue una acción de respuesta a su flujo de trabajo.
  4. Cree un patrón de solicitud-respuesta de llamada de función remota (RFC) si usa un RFC para recibir respuestas de SAP ABAP.
  5. Pruebe el flujo de trabajo.

Adición del desencadenador Request

Para que el flujo de trabajo reciba IDoc de SAP a través de HTTP XML, puede usar el desencadenador integrado de solicitud. Este desencadenador crea un punto de conexión con una dirección URL en la que el servidor SAP puede enviar solicitudes HTTP POST al flujo de trabajo. Cuando el flujo de trabajo recibe estas solicitudes, el desencadenador se activa y ejecuta el paso siguiente en el flujo de trabajo.

Para recibir IDoc a través de Common Programming Interface Communication (CPIC) como XML sin formato o como un archivo plano, consulte la sección Recibir un mensaje de SAP.

En función de si tiene un flujo de trabajo de consumo en Azure Logic Apps multiinquilino o un flujo de trabajo estándar en Azure Logic Apps de un único inquilino, siga los pasos correspondientes:

  1. En Azure Portal, cree un recurso de aplicación lógica de consumo y un flujo de trabajo en blanco en el diseñador.

  2. En el diseñador, siga estos pasos generales para buscar y agregar el Desencadenador de solicitudes integrado denominado Cuando se recibe una solicitud HTTP.

    Screenshot shows the Request trigger for a Consumption workflow.

  3. Guarde el flujo de trabajo. En la barra de herramientas del diseñador, seleccione Save (Guardar).

    Este paso genera una dirección URL de punto de conexión en la que el desencadenador puede recibir solicitudes del servidor SAP, por ejemplo:

    Screenshot shows the Request trigger's generated endpoint URL for receiving requests in a Consumption workflow.

Adición de una acción de SAP para enviar un IDoc

A continuación, cree una acción para enviar su IDoc a SAP cuando se active el desencadenador de solicitud del flujo de trabajo. En función de si tiene un flujo de trabajo de consumo en Azure Logic Apps multiinquilino o un flujo de trabajo estándar en Azure Logic Apps de un único inquilino, siga los pasos correspondientes:

  1. En el diseñador de flujo de trabajo, en el Desencadenador de solicitudes, seleccione Nuevo paso.

  2. En el diseñador, siga estos pasos generales para encontrar y agregar la acción administrada por SAP denominada Enviar mensaje a SAP.

  3. Si se le solicita, proporcione la información de conexión siguiente para el servidor SAP local. Seleccione Crear cuando haya terminado. De lo contrario, continúe con el paso siguiente para configurar la acción de SAP.

    Parámetro Obligatorio Descripción
    Nombre de la conexión Escriba un nombre para la conexión.
    Puerta de enlace de datos 1. Para Suscripción, primero seleccione la suscripción de Azure para el recurso de puerta de enlace de datos que creó en el Azure Portal para la instalación de su puerta de enlace de datos.

    2. Para Puerta de enlace de conexión, seleccione su recurso de puerta de enlace de datos en Azure.
    Cliente Id. de cliente de SAP que se va a usar para conectarse al servidor SAP
    Tipo de autenticación Yes Tipo de autenticación que se va a usar para la conexión, que debe ser Básico (nombre de usuario y contraseña). Para crear una conexión SNC, consulte Habilitación de comunicaciones de red seguras (SNC).
    Nombre de usuario de SAP El nombre de usuario del servidor SAP
    Contraseña de SAP La contraseña del servidor SAP
    Tipo de inicio de sesión Seleccione Servidor de aplicaciones o Grupo (Servidor de mensajes) y, a continuación, configure los parámetros necesarios correspondientes, aunque aparezcan opcionales:

    Servidor de aplicaciones:
    - Host de AS: el nombre de host del servidor de aplicaciones de SAP
    - Servicio AS: el nombre del servicio o el número de puerto del servidor de aplicaciones de SAP
    - Número de sistema as: el número de sistema del servidor SAP, que oscila entre 00 y 99

    Grupo:
    - Host de SERVIDOR DE MS: el nombre de host del servidor de mensajes de SAP
    - Nombre del servicio ms o número de puerto: el nombre del servicio o el número de puerto del servidor de mensajes de SAP
    - Id. de sistema de MS: el identificador del sistema para el servidor SAP
    - Grupo de inicio de sesión de MS: el grupo de inicio de sesión del servidor SAP. En el servidor SAP, puede encontrar o editar el valor Grupo de inicio de sesión abriendo el cuadro de diálogo CCMS: mantener grupos de inicio de sesión (código T SMLG). Para obtener más información, consulte SAP Note 26317 - Set up for LOGON group for automatic load balancing (Nota de SAP 26317: configuración del grupo LOGON para el equilibrio de carga automático).
    Escritura segura No Esta opción está disponible para la compatibilidad con versiones anteriores y solo comprueba la longitud de cadena. De forma predeterminada, se usa el establecimiento inflexible de tipos para comprobar si hay valores no válidos, para lo cual se realiza la validación de XML con respecto al esquema. Este comportamiento puede ayudarlo a detectar problemas con antelación. Obtenga más información sobre la Configuración de tipado seguro.
    Utilice SNC No Para crear una conexión SNC, consulte Habilitación de comunicaciones de red seguras (SNC).

    Para ver otros parámetros de conexión disponibles opcionales, consulte Información de conexión predeterminada.

    Después de que Azure Logic Apps configure y pruebe la conexión, aparece el cuadro de información de acción SAP. Para más información sobre los problemas de conexión que puedan producirse, consulte Solución de problemas de conexiones.

    Screenshot shows a Consumption workflow with the SAP managed action named Send message to SAP.

  4. En la acción Enviar mensaje a SAP , busque y seleccione una acción de SAP disponible en el servidor SAP para enviar el IDoc.

    La acción Enviar mensaje a SAP es genérica y puede enviar un mensaje para BAPI, IDoc, RFC o tRFC, pero primero debe seleccionar el tipo de mensaje y la acción de SAP que se va a usar.

    1. En el cuadro de edición del parámetro Acción SAP, seleccione el icono de la carpeta. En la lista que se abre, seleccione BAPI, IDOC, RFC o TRFC. En este ejemplo se selecciona IDOC. Si selecciona otro tipo, las acciones de SAP disponibles cambian en función de la selección.

      Nota

      Si recibe un error de Puerta de enlace incorrecta (500) o un error de Solicitud incorrecta (400), consulte 500 Puerta de enlace incorrecta o 400 Error de solicitud incorrecta.

      Screenshot shows selecting IDOC for a Consumption workflow.

    2. Examine las carpetas de tipos de acciones de SAP mediante las flechas para buscar y seleccionar la acción de SAP que desea usar.

      En este ejemplo se selecciona ORDERS>ORDERS05>720>Send.

      Screenshot shows finding an Orders action for a Consumption workflow.

      Si no encuentra la acción que quiere, puede escribir manualmente una ruta de acceso, por ejemplo:

      Screenshot shows manually entering a path to an Orders action type for a Consumption workflow.

      Sugerencia

      Para el parámetro Acción SAP, puede usar el editor de expresiones para proporcionar el valor del parámetro. De este modo, puede usar la misma acción de SAP para diferentes tipos de mensajes.

      Para más información sobre los mensajes de IDoc, revise Esquemas de mensajes para operaciones de IDoc.

    3. En la acción Enviar mensaje a SAP , incluya la salida del cuerpo del desencadenador Solicitud.

      1. En el parámetro Mensaje de entrada, seleccione dentro del cuadro de edición para abrir la lista de contenido dinámico.

      2. En la lista de contenido dinámico, en Cuando se recibe una petición HTTP, seleccione Cuerpo. El campo Cuerpo contiene la salida del cuerpo del desencadenador de solicitud.

        Nota

        Si el campo Cuerpo no aparece en la lista, junto a la etiqueta Cuando se recibe una solicitud HTTP, seleccione Ver más.

      Screenshot shows selecting the Request trigger's output named Body for Consumption workflow.

      La acción Enviar mensaje a SAP ahora incluye el contenido del cuerpo del desencadenador Solicitud y envía esa salida al servidor SAP, por ejemplo:

      Screenshot shows completed SAP action for Consumption workflow.

  5. Guarde el flujo de trabajo.

Enviar un archivo plano de IDocs al servidor de SAP (solo el conector administrado)

Para enviar un IDoc mediante un esquema de archivo plano, al usar el conector administrado, puede encapsular el IDoc en un sobre XML y seguir los pasos generales para agregar una acción de SAP para enviar un IDoc, pero con los siguientes cambios.

Nota:

Si usa el conector integrado de SAP, asegúrese de no encapsular un archivo plano de IDoc en un sobre XML.

Encapsular IDoc con sobre XML

  1. En la acción de SAP que usa para enviar el mensaje, use el siguiente URI:

    http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc

  2. Dé formato a un mensaje de entrada con un sobre XML.

El siguiente ejemplo muestra una carga útil XML de muestra:

<SendIdoc xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/">
  <idocData>EDI_DC 3000000001017945375750 30INVOIC011BTSVLINV30KUABCABCFPPC LDCA X004010810 4 SAPMSX LSEDI ABCABCFPPC 000d3ae4-723e-1edb-9ca4-cc017365c9fd 20210217054521INVOICINVOIC01ZINVOIC2RE 20210217054520
E2EDK010013000000001017945375000001E2EDK01001000000010 ABCABC1.00000 0060 INVO9988298128 298.000 298.000 LB Z4LR EN 0005065828 L
E2EDKA1 3000000001017945375000002E2EDKA1 000000020 RS ABCABCFPPC 0005065828 ABCABCABC ABCABC Inc. Limited Risk Distributor ABCABC 1950 ABCABCABCA Blvd ABCABAABCAB L5N8L9 CA ABCABC E ON V-ABCABC LDCA
E2EDKA1 3000000001017945375000003E2EDKA1 000000020 AG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000004E2EDKA1 000000020 RE 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000005E2EDKA1 000000020 RG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000006E2EDKA1 000000020 WE 0005001847 41 ABCABC ABCABC INC (ABCABC) DC A. ABCABCAB 88 ABCABC CRESCENT ABCABAABCAB L5R 4A2 CA ABCABC 111-111-1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000007E2EDKA1 000000020 Z3 0005533050 ABCABCABC ABCABC Inc. ABCA Bank Swift Code -ABCABCABCAB Sort Code - 1950 ABCABCABCA Blvd. Acc No -1111111111 ABCABAABCAB L5N8L9 CA ABCABC E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000008E2EDKA1 000000020 BK 1075 ABCABCABC ABCABC Inc 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDKA1 3000000001017945375000009E2EDKA1 000000020 CR 1075 CONTACT ABCABCABC 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDK02 3000000001017945375000010E2EDK02 000000020 0099988298128 20210217
E2EDK02 3000000001017945375000011E2EDK02 000000020 00140-N6260-S 20210205
E2EDK02 3000000001017945375000012E2EDK02 000000020 0026336270425 20210217
E2EDK02 3000000001017945375000013E2EDK02 000000020 0128026580537 20210224
E2EDK02 3000000001017945375000014E2EDK02 000000020 01740-N6260-S
E2EDK02 3000000001017945375000015E2EDK02 000000020 900IAC
E2EDK02 3000000001017945375000016E2EDK02 000000020 901ZSH
E2EDK02 3000000001017945375000017E2EDK02 000000020 9078026580537 20210217
E2EDK03 3000000001017945375000018E2EDK03 000000020 02620210217
E2EDK03 3000000001017945375000019E2EDK03 000000020 00120210224
E2EDK03 3000000001017945375000020E2EDK03 000000020 02220210205
E2EDK03 3000000001017945375000021E2EDK03 000000020 01220210217
E2EDK03 3000000001017945375000022E2EDK03 000000020 01120210217
E2EDK03 3000000001017945375000023E2EDK03 000000020 02420210217
E2EDK03 3000000001017945375000024E2EDK03 000000020 02820210418
E2EDK03 3000000001017945375000025E2EDK03 000000020 04820210217
E2EDK17 3000000001017945375000026E2EDK17 000000020 001DDPDelivered Duty Paid
E2EDK17 3000000001017945375000027E2EDK17 000000020 002DDPdestination
E2EDK18 3000000001017945375000028E2EDK18 000000020 00160 0 Up to 04/18/2021 without deduction
E2EDK28 3000000001017945375000029E2EDK28 000000020 CA BOFACATT Bank of ABCABAB ABCABC ABCABAB 50127217 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000030E2EDK28 000000020 CA 026000082 ABCAbank ABCABC ABCABAB 201456700OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000031E2EDK28 000000020 GB ABCAGB2L ABCAbank N.A ABCABA E14, 5LB GB63ABCA18500803115593 ABCABCABC ABCABC Inc. GB63ABCA18500803115593
E2EDK28 3000000001017945375000032E2EDK28 000000020 CA 020012328 ABCABANK ABCABC ABCABAB ON M5J 2M3 2014567007 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000033E2EDK28 000000020 CA 03722010 ABCABABC ABCABABC Bank of Commerce ABCABAABCAB 64-04812 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000034E2EDK28 000000020 IE IHCC In-House Cash Center IHCC1075 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000035E2EDK28 000000020 CA 000300002 ABCAB Bank of ABCABC ABCABAB 0021520584OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000036E2EDK28 000000020 US USCC US Cash Center (IHC) city USCC1075 ABCABCABC ABCABC Inc.
E2EDK29 3000000001017945375000037E2EDK29 000000020 0064848944US A CAD CA ABCABC CA United States US CA A Air Air
E2EDKT1 3000000001017945375000038E2EDKT1 000000020 ZJ32E EN
E2EDKT2 3000000001017945375000039E2EDKT2 000038030 GST/HST877845941RT0001 *
E2EDKT2 3000000001017945375000040E2EDKT2 000038030 QST1021036966TQ0001 *
E2EDKT1 3000000001017945375000041E2EDKT1 000000020 Z4VL
E2EDKT2 3000000001017945375000042E2EDKT2 000041030 0.000 *
E2EDKT1 3000000001017945375000043E2EDKT1 000000020 Z4VH
E2EDKT2 3000000001017945375000044E2EDKT2 000043030 *
E2EDK14 3000000001017945375000045E2EDK14 000000020 008LDCA
E2EDK14 3000000001017945375000046E2EDK14 000000020 00710
E2EDK14 3000000001017945375000047E2EDK14 000000020 00610
E2EDK14 3000000001017945375000048E2EDK14 000000020 015Z4F2
E2EDK14 3000000001017945375000049E2EDK14 000000020 0031075
E2EDK14 3000000001017945375000050E2EDK14 000000020 021M
E2EDK14 3000000001017945375000051E2EDK14 000000020 0161075
E2EDK14 3000000001017945375000052E2EDK14 000000020 962M
E2EDP010013000000001017945375000053E2EDP01001000000020 000011 2980.000 EA 298.000 LB MOUSE 298.000 Z4TN 4260
E2EDP02 3000000001017945375000054E2EDP02 000053030 00140-N6260-S 00000120210205 DFUE
E2EDP02 3000000001017945375000055E2EDP02 000053030 0026336270425 00001120210217
E2EDP02 3000000001017945375000056E2EDP02 000053030 0168026580537 00001020210224
E2EDP02 3000000001017945375000057E2EDP02 000053030 9100000 00000120210205 DFUE
E2EDP02 3000000001017945375000058E2EDP02 000053030 911A 00000120210205 DFUE
E2EDP02 3000000001017945375000059E2EDP02 000053030 912PP 00000120210205 DFUE
E2EDP02 3000000001017945375000060E2EDP02 000053030 91300 00000120210205 DFUE
E2EDP02 3000000001017945375000061E2EDP02 000053030 914CONTACT ABCABCABC 00000120210205 DFUE
E2EDP02 3000000001017945375000062E2EDP02 000053030 963 00000120210205 DFUE
E2EDP02 3000000001017945375000063E2EDP02 000053030 965 00000120210205 DFUE
E2EDP02 3000000001017945375000064E2EDP02 000053030 9666336270425 00000120210205 DFUE
E2EDP02 3000000001017945375000065E2EDP02 000053030 9078026580537 00001020210205 DFUE
E2EDP03 3000000001017945375000066E2EDP03 000053030 02920210217
E2EDP03 3000000001017945375000067E2EDP03 000053030 00120210224
E2EDP03 3000000001017945375000068E2EDP03 000053030 01120210217
E2EDP03 3000000001017945375000069E2EDP03 000053030 02520210217
E2EDP03 3000000001017945375000070E2EDP03 000053030 02720210217
E2EDP03 3000000001017945375000071E2EDP03 000053030 02320210217
E2EDP03 3000000001017945375000072E2EDP03 000053030 02220210205
E2EDP19 3000000001017945375000073E2EDP19 000053030 001418VVZ
E2EDP19 3000000001017945375000074E2EDP19 000053030 002RJR-00001 AB ABCABCABC Mouse FORBUS BLUETOOTH
E2EDP19 3000000001017945375000075E2EDP19 000053030 0078471609000
E2EDP19 3000000001017945375000076E2EDP19 000053030 003889842532685
E2EDP19 3000000001017945375000077E2EDP19 000053030 011CN
E2EDP26 3000000001017945375000078E2EDP26 000053030 00459064.20
E2EDP26 3000000001017945375000079E2EDP26 000053030 00352269.20
E2EDP26 3000000001017945375000080E2EDP26 000053030 01052269.20
E2EDP26 3000000001017945375000081E2EDP26 000053030 01152269.20
E2EDP26 3000000001017945375000082E2EDP26 000053030 0126795.00
E2EDP26 3000000001017945375000083E2EDP26 000053030 01552269.20
E2EDP26 3000000001017945375000084E2EDP26 000053030 00117.54
E2EDP26 3000000001017945375000085E2EDP26 000053030 00252269.20
E2EDP26 3000000001017945375000086E2EDP26 000053030 940 2980.000
E2EDP26 3000000001017945375000087E2EDP26 000053030 939 2980.000
E2EDP05 3000000001017945375000088E2EDP05 000053030 + Z400MS List Price 52269.20 17.54 1 EA CAD 2980
E2EDP05 3000000001017945375000089E2EDP05 000053030 + XR1 Tax Jur Code Level 6795.00 13.000 52269.20
E2EDP05 3000000001017945375000090E2EDP05 000053030 + Tax Subtotal1 6795.00 2.28 1 EA CAD 2980
E2EDP05 3000000001017945375000091E2EDP05 000053030 + Taxable Amount + TaxSubtotal1 59064.20 19.82 1 EA CAD 2980
E2EDP04 3000000001017945375000092E2EDP04 000053030 CX 13.000 6795.00 7000000000
E2EDP04 3000000001017945375000093E2EDP04 000053030 CX 0 0 7001500000
E2EDP04 3000000001017945375000094E2EDP04 000053030 CX 0 0 7001505690
E2EDP28 3000000001017945375000095E2EDP28 000053030 00648489440000108471609000 CN CN ABCAB ZZ 298.000 298.000 LB US 400 United Stat KY
E2EDPT1 3000000001017945375000096E2EDPT1 000053030 0001E EN
E2EDPT2 3000000001017945375000097E2EDPT2 000096040 AB ABCABCABC Mouse forBus Bluetooth EN/XC/XD/XX Hdwr Black For Bsnss *
E2EDS01 3000000001017945375000098E2EDS01 000000020 0011
E2EDS01 3000000001017945375000099E2EDS01 000000020 01259064.20 CAD
E2EDS01 3000000001017945375000100E2EDS01 000000020 0056795.00 CAD
E2EDS01 3000000001017945375000101E2EDS01 000000020 01159064.20 CAD
E2EDS01 3000000001017945375000102E2EDS01 000000020 01052269.20 CAD
E2EDS01 3000000001017945375000103E2EDS01 000000020 94200000 CAD
E2EDS01 3000000001017945375000104E2EDS01 000000020 9440.00 CAD
E2EDS01 3000000001017945375000105E2EDS01 000000020 9450.00 CAD
E2EDS01 3000000001017945375000106E2EDS01 000000020 94659064.20 CAD
E2EDS01 3000000001017945375000107E2EDS01 000000020 94752269.20 CAD
E2EDS01 3000000001017945375000108E2EDS01 000000020 EXT
Z2XSK010003000000001017945375000109Z2XSK01000000108030 Z400 52269.20
Z2XSK010003000000001017945375000110Z2XSK01000000108030 XR1 13.000 6795.00 CX
</idocData>
</SendIdoc>

Adición de una acción de respuesta

Ahora, configure el flujo de trabajo para devolver los resultados del servidor SAP al solicitante original. Para esta tarea, siga estos pasos:

  1. En el diseñador de flujo de trabajo, en la acción de SAP, seleccione Nuevo paso.

  2. En el diseñador, siga estos pasos generales para buscar y agregar la acción integrada de Solicitud llamada Respuesta.

  3. En la acción Respuesta , para el parámetro Cuerpo , seleccione dentro del cuadro de edición para abrir la lista de contenido dinámico.

  4. En la lista de contenido dinámico, en Enviar mensaje a SAP, seleccione Cuerpo. El campo Cuerpo contiene la salida del cuerpo de la acción de SAP.

    Screenshot shows selecting SAP action output named Body for Consumption workflow.

  5. Guarde el flujo de trabajo.

Cree un patrón de solicitud-respuesta de llamada de función remota (RFC)

Para los flujos de trabajo de consumo que usan el conector administrado de SAP y el conector SAP con versiones ISE, si tiene que recibir respuestas mediante una llamada de función remota (RFC) a Azure Logic Apps desde SAP ABAP, debe implementar un patrón de solicitud y respuesta. Para recibir IDoc en el flujo de trabajo cuando use el desencadenador Solicitud, asegúrese de que la primera acción del flujo de trabajo es una acción de Respuesta que usa el código de estado 200 OK sin contenido. Este paso recomendado completa la transferencia asincrónica de la Unidad lógica de trabajo (LUW) para SAP a través de tRFC inmediatamente, lo que deja la conversación de CPIC para SAP de nuevo disponible. A continuación, puede agregar más acciones al flujo de trabajo para procesar el IDoc recibido sin bloquear las transferencias posteriores.

Nota

El desencadenador de SAP recibe IDoc a través de tRFC, que no tiene un parámetro de respuesta por diseño.

Para implementar un patrón de solicitud y respuesta, primero debe detectar el esquema RFC mediante el comando generate schema. El esquema generado tiene dos posibles nodos raíz:

  • El nodo de solicitud, que es la llamada que recibe de SAP
  • El nodo de respuesta, que es la respuesta a SAP

En el ejemplo siguiente, se genera un patrón de solicitud y respuesta desde el módulo RFC STFC_CONNECTION. Se analiza el código XML de la solicitud para extraer un valor de nodo en el que SAP solicita <ECHOTEXT>. La respuesta inserta la marca de tiempo actual como un valor dinámico. Se recibirá una respuesta similar cuando envíe un RFC STFC_CONNECTION desde un flujo de trabajo de la aplicación lógica a SAP.

<STFC_CONNECTIONResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
  <ECHOTEXT>@{first(xpath(xml(triggerBody()?['Content']), '/*[local-name()="STFC_CONNECTION"]/*[local-name()="REQUTEXT"]/text()'))}</ECHOTEXT>
  <RESPTEXT>Azure Logic Apps @{utcNow()}</RESPTEXT>
</STFC_CONNECTIONResponse>

Prueba del flujo de trabajo

  1. Si el recurso de la aplicación lógica de consumo no está ya habilitado, en el menú de la aplicación lógica, seleccione Información general. En la barra de herramientas, seleccione Enable (Habilitar).

  2. En la barra de herramientas del diseñador, seleccione Ejecutar desencadenador>Ejecutar para iniciar manualmente el flujo de trabajo.

  3. Para simular una carga de desencadenador de webhook, envíe una solicitud HTTP POST a la dirección URL del punto de conexión especificada por el Desencadenador de solicitudes del flujo de trabajo. Asegúrese de incluir el contenido de su mensaje con la solicitud. Para enviar la solicitud, use una herramienta como el cliente de API de Postman.

    En este ejemplo, la solicitud HTTP POST envía un archivo de IDoc, que debe estar en formato XML e debe incluir el espacio de nombres de la acción de SAP que ha seleccionado, por ejemplo:

    <?xml version="1.0" encoding="UTF-8" ?>
    <Send xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/2/ORDERS05//720/Send">
      <idocData>
        <...>
      </idocData>
    </Send>
    
  4. Después de enviar la solicitud HTTP, espere la respuesta del flujo de trabajo.

    Nota

    El flujo de trabajo puede agotar el tiempo de espera si todos los pasos necesarios para la respuesta no finalizan dentro del límite de tiempo de espera de la solicitud. Si se produce esta situación, es posible que se bloqueen las solicitudes. Para ayudar a diagnosticar problemas, obtenga información sobre cómo puede comprobar y supervisar el flujo de trabajo de las aplicaciones lógicas.

Ahora ha creado un flujo de trabajo que puede comunicarse con el servidor SAP. Ahora que ha establecido una conexión SAP para su flujo de trabajo, puede probar a experimentar con BAPI y RFC.

Escritura segura

De manera predeterminada, al crear una conexión para la operación administrada de SAP, se usa el tipado fuerte para comprobar si hay valores no válidos; para ello, se realiza la validación de XML con respecto al esquema. Este comportamiento puede ayudarlo a detectar problemas con antelación. La opción Escritura segura está disponible para la compatibilidad con versiones anteriores y solo comprueba la longitud de cadena. Si elige Escritura segura, los tipos DATS y TIMS en SAP se tratan como cadenas en lugar de como sus equivalentes XML, xs:date y xs:time, donde xmlns:xs="http://www.w3.org/2001/XMLSchema". La escritura segura afecta al comportamiento de generación de todos los esquemas, al mensaje de envío de "se ha enviado" la carga y de "se ha recibido" la respuesta y al desencadenador.

Cuando se usa el establecimiento inflexible de tipos (la opción Escritura segura no está habilitada), el esquema asigna los tipos DATS y TIMS a tipos XML más sencillos:

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true" type="xs:date"/>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true" type="xs:time"/>

Cuando se envían mensajes con establecimiento inflexible de tipos, la respuesta DATS y TIMS se adapta al formato del tipo XML coincidente:

<DATE>9999-12-31</DATE>
<TIME>23:59:59</TIME>

Cuando la opción Escritura segura está habilitada, el esquema solo asigna los tipos DATS y TIMS a campos de cadena XML con restricciones de longitud, por ejemplo:

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="8" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="6" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Cuando se envían mensajes con Escritura segura habilitada, la respuesta DATS y TIMS se parece a la de este ejemplo:

<DATE>99991231</DATE>
<TIME>235959</TIME>

Escenarios avanzados

Cambio de encabezados de lenguaje para enviar datos a SAP

Cuando se conecta a SAP desde Azure Logic Apps, el inglés es el idioma predeterminado que usa la conexión de SAP para enviar datos al servidor SAP. Sin embargo, el conector administrado de SAP y el conector integrado de SAP controlan el cambio y el almacenamiento del lenguaje que se usa de maneras diferentes.

  • Al crear una conexión con el conector integrado de SAP, los parámetros de conexión permiten especificar y guardar el valor del parámetro de lenguaje como parte de los parámetros de conexión de SAP.

  • Al crear una conexión con el conector administrado de SAP, los parámetros de conexión no tienen parámetros de lenguaje. Por lo tanto, durante este tiempo, no puede especificar ni el idioma que se va a usar para enviar datos al servidor SAP. En su lugar, tanto en tiempo de diseño de flujo de trabajo como en tiempo de ejecución, el conector usa el idioma local del explorador web de cada solicitud que se envía al servidor. Por ejemplo, si el explorador está establecido en portugués, Azure Logic Apps crea y prueba la conexión de SAP con portugués, pero no guarda la conexión con ese idioma.

    Sin embargo, puede establecer el idioma de la conexión mediante el encabezado HTTP estándar Accept-Language con las solicitudes entrantes. La mayoría de los exploradores web agregan un encabezado Accept-Language basado en su configuración regional. El explorador web aplica este encabezado cuando se crea una nueva conexión SAP en el diseñador de flujos de trabajo. Por lo tanto, puede actualizar la configuración del explorador web para usar el lenguaje que prefiera o se crea la conexión de SAP mediante Azure Resource Manager en lugar del diseñador de flujo de trabajo.

    Por ejemplo, puede enviar una solicitud con el encabezado Accept-Language al flujo de trabajo de su aplicación lógica usando el desencadenador de solicitud denominado Cuando se recibe una solicitud HTTP. Todas las acciones del flujo de trabajo reciben el encabezado. A continuación, SAP usa los idiomas especificados en sus mensajes del sistema, como los mensajes de error de BAPI. Si no pasa un encabezado Accept-Language en tiempo de ejecución, se usa inglés de forma predeterminada.

    Si usa el encabezado Accept-Language, podría obtener un error que le pide que compruebe la información de la cuenta o los permisos y pruebe otra vez. En este caso, compruebe en su lugar los registros de errores del componente de SAP. En realidad, el error se produce en el componente de SAP que usa el encabezado, por lo que podría obtener uno de estos mensajes de error:

    • "SAP. Middleware.Connector.RfcLogonException: seleccione uno de los idiomas instalados"

    • "SAP. Middleware.Connector.RfcAbapMessageException: seleccione uno de los idiomas instalados"

Confirmar la transacción por separado y explícitamente

Cuando se envían transacciones a SAP desde Logic Apps, este intercambio se produce en dos pasos, tal como se describe en el documento de SAP Programas del servidor RFC transaccional.

De forma predeterminada, la acción del conector administrado de SAP denominada Enviar mensaje a SAP controla los pasos para transferir la función y confirmar la transacción en una sola llamada. También tiene la opción de desacoplar estos pasos. La capacidad de desacoplar los pasos de transferencia y confirmación es útil para escenarios en los que no desea duplicar transacciones en SAP. Estos escenarios incluyen errores que se producen debido a causas como problemas de red.

Puede enviar un IDoc sin confirmar automáticamente la transacción mediante la acción del conector administrado de SAP denominada [IDOC] Enviar documento a SAP. A continuación, puede confirmar explícitamente la transacción mediante la acción del conector administrado de SAP denominada [IDOC - RFC] Confirmar el identificador de transacción. Cuando el flujo de trabajo confirma por separado la transacción en un paso diferente, el sistema SAP completa la transacción solo una vez.

En los flujos de trabajo estándar, el conector integrado de SAP también tiene acciones que controlan por separado los pasos de transferencia y confirmación, en concreto, [IDoc] Enviar documento a SAP y [IDOC - RFC] Confirmar el identificador de transacción.

El siguiente ejemplo de flujo de trabajo muestra este patrón:

  1. Cree y abra una aplicación lógica Estándar o de Consumo con un flujo de trabajo en blanco en el diseñador. Agregue el desencadenador de Solicitud.

  2. Para evitar el envío de IDoc duplicados a SAP, siga estos pasos alternativos para crear y usar un identificador de transacción de IDoc en las acciones de SAP.

  3. Agregue la acción de SAP denominada [IDOC] Enviar documento a SAP al flujo de trabajo. Proporcione la información del IDoc que envía al sistema SAP más los siguientes valores:

    Parámetro valor Descripción
    Confirmar TID No No confirme automáticamente el identificador de transacción, que se produce explícitamente en un paso independiente.
    GUID del id. de transacción <IDoc-transaction-ID> Si este parámetro no aparece automáticamente, abra la lista Agregar nuevos parámetros y seleccione el parámetro .

    Puede especificar manualmente este valor o el conector puede generar automáticamente este GUID como salida de la acción [IDOC] Enviar documento a SAP . En este ejemplo se deja este parámetro vacío para generar automáticamente el GUID.

    Flujo de trabajo de consumo

    Screenshot shows Consumption workflow with the action named IDOC Send document to SAP.

    Flujo de trabajo Estándar

    Screenshot shows Standard workflow with the action named IDOC Send document to SAP.

  4. En la acción de SAP denominada [IDOC] Enviar documento a SAP, abra Configuración para revisar la Directiva de reintento.

    La opción Predeterminada es la directiva recomendada, pero puede seleccionar una directiva personalizada para sus necesidades específicas. Si decide usar una directiva personalizada, configure al menos un reintento para superar las interrupciones de red temporales.

  5. Ahora, agregue la acción de SAP denominada [IDOC - RFC] Confirmar identificador de transacción.

    1. En el parámetro Transaction ID (Id . de transacción), seleccione dentro del cuadro de edición para abrir la lista de contenido dinámico.

    2. En la lista, en [IDOC] Enviar documento a SAP, seleccione el valor Id. de transacción, que es la salida de la acción de SAP anterior.

      Flujo de trabajo de consumo

      Screenshot shows Consumption workflow with action named Confirm transaction ID, which includes GUID output from previous action.

      Flujo de trabajo Estándar

      Screenshot shows Standard workflow with action named Confirm transaction ID, which includes GUID output from previous action.

    Después de ejecutar este paso, la transacción actual se marca como completa en ambos extremos, en el lado del conector de SAP y en el lado del sistema SAP.

Evite enviar IDoc duplicados con una variable de id. de transacción

Si experimenta un problema con el flujo de trabajo que envía IDoc duplicados a SAP, puede crear una variable de cadena que actúe como identificador de transacción IDoc. A continuación, puede usar este identificador para ayudar a evitar transmisiones de red duplicadas en condiciones como interrupciones temporales, problemas de red o confirmaciones perdidas.

  1. En el diseñador, después de agregar el desencadenador Solicitud y antes de agregar la acción de SAP denominada [IDOC] Enviar documento a SAP, agregue la acción denominada Inicializar variable al flujo de trabajo.

  2. Cambie el nombre de la acción a Crear identificador de transacción de IDoc).

  3. En el cuadro de información de la acción, proporcione los siguientes valores de parámetro:

    Parámetro valor Descripción
    Nombre <variable-name> Un nombre para la variable, por ejemplo, IDocTransactionID.
    Tipo String El tipo de variable
    Valor guid() Seleccione dentro del cuadro de edición, abra la expresión o el editor de funciones y escriba guid(). Guarde los cambios.

    El parámetro Valor se establece ahora en la función guid(), que genera un GUID.

    Flujo de trabajo de consumo

    Screenshot shows Consumption workflow with the action named Create transaction ID.

    Flujo de trabajo Estándar

    Screenshot shows Standard workflow with the action named Create transaction ID.

    Nota:

    Los sistemas SAP olvidan un identificador de transacción después de un tiempo especificado, o 24 horas de forma predeterminada. Por consiguiente, SAP nunca no puede confirmar un identificador de transacción si se desconoce el id. o el GUID. Si se produce un error en la confirmación de un identificador de transacción, este error indica que hubo un problema en la comunicación con el sistema SAP antes de que SAP pudiera reconocer la confirmación.

  4. Agregue la acción de SAP denominada [IDOC] Enviar documento a SAP al flujo de trabajo. Proporcione la información del IDoc que envía al sistema SAP más los siguientes valores:

    Parámetro valor Descripción
    Confirmar TID No No confirme automáticamente el identificador de transacción, que se produce explícitamente en un paso independiente.
    GUID del id. de transacción <IDoc-transaction-ID> Si este parámetro no aparece automáticamente, abra la lista Agregar nuevos parámetros y seleccione el parámetro . Para seleccionar la variable de identificador de transacción que creó, siga estos pasos:

    1. En el parámetro GUID del identificador de transacción, seleccione dentro del cuadro de edición para abrir la lista de contenido dinámico.

    2. En la lista, en Variables, seleccione la variable que creó anteriormente, que es IDocTransactionID en este ejemplo.

    Flujo de trabajo de consumo

    Screenshot shows Consumption workflow with action named IDOC Send document to SAP.

    Flujo de trabajo Estándar

    Screenshot shows Standard workflow with action named IDOC Send document to SAP.

  5. Para la acción de SAP administrada denominada [IDOC] Enviar documento a SAP, abra Configuración para revisar la Directiva de reintento.

    La opción Predeterminada es la directiva recomendada, pero puede seleccionar una directiva personalizada para sus necesidades específicas. Si decide usar una directiva personalizada, configure al menos un reintento para superar las interrupciones de red temporales.

    Nota

    Actualmente, solo las acciones del conector administrado tienen la configuración de directiva de reintento, no conectores integrados basados en el proveedor de servicios.

  6. Ahora, agregue la acción de SAP denominada [IDOC - RFC] Confirmar identificador de transacción.

    1. En el parámetro Transaction ID (Id . de transacción), seleccione dentro del cuadro de edición para abrir la lista de contenido dinámico.

    2. En la lista, en Variables, escriba el nombre de la variable que ha creado, que en este ejemplo es IDocTransactionID.

      Flujo de trabajo de consumo

      Screenshot shows Consumption workflow with action named Confirm transaction ID using a variable.

      Flujo de trabajo Estándar

      Screenshot shows Standard workflow with action named Confirm transaction ID using a variable.

  7. Opcionalmente, valide la desduplicación en el entorno de prueba.

    1. Agregue otra acción de SAP denominada [IDOC] Enviar documento a SAP. En el parámetro Transaction ID (Id . de transacción), seleccione el GUID de id. de transacción que usó en el paso anterior.

    2. Para validar qué número de IDoc se asigna después de cada llamada a la acción denominada [IDOC] Enviar documento a SAP, agregue la acción denominada [IDOC] Obtener lista de IDOC para la transacción a su flujo de trabajo con el mismo Id. de transacción y la dirección Recibir.

      Si se devuelve el mismo número de IDoc de ambas llamadas, se ha desduplicado el IDoc.

Si envía el mismo IDoc dos veces, puede validar que SAP pueda identificar la duplicación de la llamada tRFC y resolver las dos llamadas a un solo mensaje entrante de IDoc.

Solucionar problemas

Problemas de conexión

Durante la creación de la conexión, si recibe el siguiente error, existe un problema con su instalación de la biblioteca de clientes SAP NCo:

Error al realizar la conexión de prueba. Error: "Error al procesar la solicitud". Detalles del error: "No se puede cargar el archivo o ensamblado "sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken 50436dca5c7f7d23" o una de sus dependencias. El sistema no encuentra el archivo especificado".

Asegúrese de instalar la versión necesaria de la biblioteca cliente de SAP NCo y cumplir todos los demás requisitos previos.

Error 500 Puerta de enlace incorrecta o 400 Solicitud incorrecta 400

Si recibe un error 500 Puerta de enlace incorrecta o 400 Solicitud incorrecta con un mensaje similar a servicio "sapgw00" desconocido, se ha producido un error en la resolución del nombre del servicio de red en el número de puerto, por ejemplo:

{
   "body": {
      "error": {
         "code": 500,
         "source": "EXAMPLE-FLOW-NAME.eastus.environments.microsoftazurelogicapps.net",
         "clientRequestId": "00000000-0000-0000-0000-000000000000",
         "message": "BadGateway",
         "innerError": {
            "error": {
               "code": "UnhandledException",
               "message": "\nERROR service 'sapgw00' unknown\nTIME Wed Nov 11 19:37:50 2020\nRELEASE 721\nCOMPONENT NI (network interface)\nVERSION 40\nRC -3\nMODULE ninti.c\nLINE 933\nDETAIL NiPGetServByName: 'sapgw00' not found\nSYSTEM CALL getaddrinfo\nCOUNTER 1\n\nRETURN CODE: 20"
            }
         }
      }
   }
}
  • Opción 1: en la configuración del desencadenador y la conexión de API, reemplace el nombre del servicio de puerta de enlace por su número de puerto. En el error de ejemplo, sapgw00 debe reemplazarse por un número de puerto real, por ejemplo, 3300. Esta es la única opción disponible para ISE.

  • Opción 2: si usa la puerta de enlace de datos local, puede agregar el nombre del servicio de puerta de enlace a la asignación de puertos en %windir%\System32\drivers\etc\services y, después, reiniciar el servicio de puerta de enlace de datos local, por ejemplo:

    sapgw00  3300/tcp
    

Es posible que reciba un error similar cuando el nombre del servidor de aplicaciones o del servidor de mensajes de SAP se resuelve en la dirección IP. En el caso de ISE, debe especificar la dirección IP para el servidor de aplicaciones o el servidor de mensajes de SAP. En el caso de la puerta de enlace de datos local, puede agregar el nombre a la asignación de direcciones IP en %windir%\System32\drivers\etc\hosts, por ejemplo:

10.0.1.9 SAPDBSERVER01 # SAP System Server VPN IP by computer name
10.0.1.9 SAPDBSERVER01.someguid.xx.xxxxxxx.cloudapp.net # SAP System Server VPN IP by fully qualified computer name

Errores al enviar paquetes IDoc desde SAP al desencadenador

Si no puede enviar paquetes de IDoc desde SAP al desencadenador, consulte el mensaje de rechazo de llamada de RFC transaccional (tRFC) en el cuadro de diálogo tRFC de SAP (código T SM58). En la interfaz de SAP, puede recibir los siguientes mensajes de error, que se recortan debido a los límites de subcadena del campo Status Text (Texto de estado).

No se encontró el segmento o la definición de grupo E2EDK36001 en los metadatos del IDoc

Este mensaje de error indica que se produjeron errores esperados con otros errores. Por ejemplo, el error de generación de una carga XML de IDoc porque SAP no lanza sus segmentos. Como resultado, faltan los metadatos de tipo de segmento necesarios para la conversión.

Para que SAP publique estos segmentos, póngase en contacto con el ingeniero de ABAP para su sistema SAP.

Se cerró el elemento RequestContext en la interfaz IReplyChannel sin que se enviara una respuesta

Para el conector SAP administrado y el conector SAP con versión ISE, este mensaje de error significa que se producen fallos inesperados cuando el administrador del canal finaliza el canal debido a un error y lo reconstruye para procesar otros mensajes.

Nota

El desencadenador administrado de SAP y los desencadenadores SAP con versiones de ISE son webhooks que usan el adaptador de SAP basado en SOAP. Sin embargo, el desencadenador integrado de SAP es un desencadenador basado en Azure Functions que no usa un adaptador de SAP SOAP y no recibe este mensaje de error.

  • Para confirmar que su flujo de trabajo ha recibido el IDoc, agregue una acción de respuesta que devuelva un código de estado 200 OK. Deje el cuerpo vacío y no realice modificaciones ni realice adiciones a los encabezados. El IDoc se transporta a través de tRFC, que no permite una carga de respuesta.

  • Para rechazar el IDoc en su lugar, responda con cualquier código de estado HTTP distinto de 200 OK. A continuación, el adaptador de SAP devuelve una excepción a SAP en su nombre. Solo debe rechazar el IDoc para señalar los errores de transporte a SAP, como un IDoc mal enrutado que la aplicación no puede procesar. No debe rechazar un IDoc para los errores de nivel de aplicación, como los problemas con los datos contenidos en el IDoc. Si retrasa la aceptación del transporte para la validación en el nivel de la aplicación, es posible que experimente un rendimiento negativo debido al bloqueo de la conexión a raíz del transporte de otros IDOC.

  • Si recibe este mensaje de error y experimenta errores sistémicos al llamar a Azure Logic Apps, compruebe que ha configurado la configuración de red para el servicio de puerta de enlace de datos local de su entorno específico. Por ejemplo, si su entorno de red requiere el uso de un proxy para llamar a los puntos de conexión de Azure, debe configurar el servicio de puerta de enlace de datos local para usar el proxy. Para obtener más información, consulte Configuración de proxy.

  • Si recibe este mensaje de error y experimenta errores intermitentes al llamar a Azure Logic Apps, puede que tenga que aumentar el número de reintentos o el intervalo de reintento siguiendo estos pasos:

    1. Compruebe la configuración de SAP en su archivo de configuración del servicio de puerta de enlace de datos local denominado Microsoft.PowerBI.EnterpriseGateway.exe.config.

      1. En el nodo raíz configuration, agregue un elemento configSections, si no existe ninguno.

      2. En el configSections nodo , agregue un section elemento con los atributos siguientes, si no existe ninguno: name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"

        Importante

        No cambie los atributos de los elementos existentes section, si estos elementos ya existen.

        El elemento configSections es similar a la siguiente versión, si no se declara ningún otro grupo de secciones o secciones en la configuración del servicio de puerta de enlace:

        <configSections>
          <section name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"/>
        </configSections>
        
      3. En el nodo raíz configuration, agregue un elemento SapAdapterSection, si no existe ninguno.

      4. En el SapAdapterSection nodo , agregue un Broker elemento con los atributos siguientes, si no existe ninguno: WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2"

        Importante

        Cambie los atributos del elemento Broker, incluso si el elemento ya existe.

        El elemento SapAdapterSection es similar a la versión siguiente, si no se declara ningún otro elemento o atributo en la configuración del adaptador de SAP:

        <SapAdapterSection>
          <Broker WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2" />
        </SapAdapterSection>
        

        La configuración del número de reintentos es similar a WebhookRetryMaximumCount="2". La configuración del intervalo de reintento es similar a WebhookRetryDefaultDelay="00:00:00.10" donde el formato del intervalo de tiempo es HH:mm:ss.ff.

      Nota:

      Para obtener más información acerca de los archivos de configuración, revise Esquema de los archivos de configuración de .NET Framework.

    2. Guarde los cambios.

    3. Si usa la puerta de enlace de datos local, reinicie la puerta de enlace.

Pasos siguientes