Partilhar via


Criar fluxos de trabalho para cenários comuns de integração SAP em Aplicativos Lógicos do Azure

Aplica-se a: Aplicativos Lógicos do Azure (Consumo + Padrão)

Este guia de instruções mostra como criar fluxos de trabalho de aplicativos lógicos de exemplo para alguns cenários comuns de integração SAP usando os Aplicativos Lógicos do Azure e o conector SAP.

Os fluxos de trabalho do aplicativo lógico Standard e Consumption oferecem o conector gerenciado SAP hospedado e executado no Azure multilocatário. Os fluxos de trabalho padrão também oferecem o conector de provedor de serviços interno SAP que é hospedado e executado em Aplicativos Lógicos do Azure de locatário único. Se você criar e hospedar um fluxo de trabalho de Consumo em um ambiente de serviço de integração (ISE), também poderá usar a versão nativa do ISE do conector SAP. Para obter mais informações, consulte Referência técnica do conector.

Pré-requisitos

Antes de começar, certifique-se de revisar e atender aos requisitos do conector SAP para seu cenário específico.

Receber mensagens do SAP

O exemplo de fluxo de trabalho do aplicativo lógico a seguir é acionado quando o gatilho SAP do fluxo de trabalho recebe uma mensagem de um servidor SAP.

Adicionar um gatilho SAP

Com base no facto de ter um fluxo de trabalho de Consumo em Aplicações Lógicas do Azure multilocatário ou um fluxo de trabalho Padrão em Aplicações Lógicas do Azure de inquilino único, siga os passos correspondentes:

  1. No portal do Azure, abra seu aplicativo lógico de consumo e fluxo de trabalho em branco no designer.

  2. No designer, siga estas etapas gerais para adicionar o gatilho do conector gerenciado SAP chamado Quando uma mensagem é recebida.

  3. Se solicitado, forneça as seguintes informações de conexão para seu servidor SAP local. Quando tiver terminado, selecione Criar. Caso contrário, continue com a próxima etapa para configurar o gatilho SAP.

    Parâmetro Obrigatório Description
    Nome da ligação Sim Introduzir um nome para a ligação.
    Gateway de dados Sim 1. Para Assinatura, selecione a assinatura do Azure para o recurso de gateway de dados que você criou no portal do Azure para sua instalação do gateway de dados.

    2. Para Gateway de Conexão, selecione seu recurso de gateway de dados no Azure.
    Cliente Sim O ID do cliente SAP a ser usado para se conectar ao seu servidor SAP
    Tipo de Autenticação Sim O tipo de autenticação a ser usado para sua conexão, que deve ser Básica (nome de usuário e senha). Para criar uma conexão SNC, consulte Habilitar comunicações de rede seguras (SNC).
    Nome de usuário SAP Sim O nome de usuário do seu servidor SAP
    Senha SAP Sim A senha para o seu servidor SAP
    Tipo de logon Sim Selecione Servidor de Aplicativos ou Grupo (Servidor de Mensagens) e configure os parâmetros necessários correspondentes, mesmo que eles pareçam opcionais:

    Servidor de Aplicativos:
    - AS Host: O nome do host para o seu SAP Application Server
    - Serviço AS: O nome do serviço ou o número da porta para o seu SAP Application Server
    - Número do sistema AS: o número do sistema do seu servidor SAP, que varia de 00 a 99

    Grupo:
    - MS Server Host: O nome do host para o seu SAP Message Server
    - Nome do Serviço MS ou Número da Porta: O nome do serviço ou o número da porta do seu SAP Message Server
    - MS System ID: O ID do sistema para o seu servidor SAP
    - MS Logon Group: O grupo de logon para seu servidor SAP. No servidor SAP, você pode encontrar ou editar o valor Grupo de logon abrindo a caixa de diálogo CCMS: Manter grupos de logon (T-Code SMLG). Para obter mais informações, consulte SAP Note 26317 - Configurar o grupo LOGON para balanceamento automático de carga.
    Digitação segura Não Esta opção está disponível para compatibilidade com versões anteriores e verifica apenas o comprimento da cadeia de caracteres. Por padrão, a digitação forte é usada para verificar valores inválidos executando a validação XML em relação ao esquema. Esse comportamento pode ajudá-lo a detetar problemas mais cedo. Saiba mais sobre a configuração de Digitação segura.
    Usar SNC Não Para criar uma conexão SNC, consulte Habilitar comunicações de rede seguras (SNC).

    Para outros parâmetros de conexão opcionais disponíveis, consulte Informações de conexão padrão.

    Depois que os Aplicativos Lógicos do Azure configurarem e testarem sua conexão, a caixa de informações do gatilho será exibida. Para obter mais informações sobre quaisquer problemas de conexão que possam acontecer, consulte Solucionar problemas de conexões.

  4. Com base na configuração e no cenário do servidor SAP, forneça os valores de parâmetro necessários para o gatilho Quando uma mensagem for recebida e adicione quaisquer outros parâmetros de gatilho disponíveis que você deseja usar em seu cenário.

    Nota

    Esse gatilho SAP é um gatilho baseado em webhook, não um gatilho de sondagem, e não inclui opções para especificar um cronograma de sondagem. Por exemplo, quando você usa o conector SAP gerenciado com o gateway de dados local, o gatilho é chamado do gateway de dados somente quando uma mensagem chega, portanto, nenhuma sondagem é necessária.

    Parâmetro Obrigatório Description
    GatewayHost Sim O host do gateway de registro para o servidor SAP RFC
    GatewayService Sim O serviço de gateway de registro para o servidor SAP RFC
    Id do Programa Sim O ID do programa de gateway de registro para o servidor SAP RFC.

    Nota: Este valor diferencia maiúsculas de minúsculas. Certifique-se de usar consistentemente o mesmo formato de maiúsculas e minúsculas para o valor de ID do programa ao configurar o fluxo de trabalho do aplicativo lógico e o servidor SAP. Caso contrário, quando você tenta enviar um IDoc para o SAP, o monitor tRFC (T-Code SM58) pode mostrar os seguintes erros (links exigem login SAP):

    - Função IDOC_INBOUND_ASYNCHRONOUS não encontrada (2399329)
    - Cliente RFC não-ABAP (tipo de parceiro) não suportado (353597)
    Grau de paralelismo Não O número de chamadas a processar em paralelo. Para adicionar esse parâmetro e alterar o valor, na lista Adicionar novo parâmetro , selecione DegreeOfParallelism e insira o novo valor.
    SapActions Não Filtre as mensagens recebidas do servidor SAP com base em uma lista de ações SAP. Para adicionar esse parâmetro, na lista Adicionar novo parâmetro , selecione SapActions. Na nova seção SapActions, para o parâmetro SapActions - 1, use o seletor de arquivos para selecionar uma ação SAP ou especificar manualmente uma ação. Para obter mais informações sobre a ação SAP, consulte Esquemas de mensagem para operações de IDoc.
    Formato IDoc Não O formato a ser usado para receber IDocs. Para adicionar esse parâmetro, na lista Adicionar novo parâmetro , selecione Formato IDoc.

    - Para receber IDocs como SAP plain XML, na lista IDoc Format , selecione SapPlainXml.

    - Para receber IDocs como um arquivo simples, na lista IDoc Format , selecione FlatFile.

    - Nota: Se você também usar a ação Decodificação de arquivo simples em seu fluxo de trabalho, em seu esquema de arquivo simples, será necessário usar a propriedade early_terminate_optional_fields e definir o valor como true. Esse requisito é necessário porque o registro de dados IDoc de arquivo simples enviado pelo SAP na chamada tRFC nomeada IDOC_INBOUND_ASYNCHRONOUS não é acolchoado ao comprimento total do campo SDATA. Os Aplicativos Lógicos do Azure fornecem os dados originais do IDoc de arquivo simples sem preenchimento conforme recebido do SAP. Além disso, quando você combina esse gatilho SAP com a ação Decodificação de arquivo simples, o esquema fornecido à ação deve corresponder.
    Receba IDOCS com segmentos inéditos Não Receba IDocs com ou sem segmentos não lançados. Para adicionar esse parâmetro e alterar o valor, na lista Adicionar novo parâmetro, selecione Receber IDOCS com segmentos não lançados e selecione Sim ou Não.
    SncPartnerNames Não A lista de parceiros SNC que têm permissões para chamar o gatilho no nível da biblioteca do cliente SAP. Somente os parceiros listados são autorizados pela conexão SNC do servidor SAP. Para adicionar esse parâmetro, na lista Adicionar novo parâmetro , selecione SncPartnerNames. Certifique-se de inserir cada nome separado por uma barra vertical (|).

    O exemplo a seguir mostra um gatilho gerenciado SAP basicamente configurado em um fluxo de trabalho de consumo:

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

    O exemplo a seguir mostra um gatilho gerenciado SAP onde você pode filtrar mensagens selecionando ações SAP:

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

    Ou, especificando manualmente uma ação:

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

    O exemplo a seguir mostra como a ação aparece quando você configura o gatilho para receber mais de uma mensagem:

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

  5. Salve seu fluxo de trabalho para que você possa começar a receber mensagens do seu servidor SAP. Na barra de ferramentas do estruturador, selecione Guardar.

    Seu fluxo de trabalho agora está pronto para receber mensagens do seu servidor SAP.

  6. Depois que o gatilho for acionado e executar seu fluxo de trabalho, revise o histórico de gatilhos do fluxo de trabalho para confirmar se o registro do gatilho foi bem-sucedido.

Receber pacotes IDoc do SAP

Para receber pacotes IDoc, que são lotes ou grupos de IDocs, o gatilho SAP não precisa de configuração extra. No entanto, para processar cada item em um pacote IDoc depois que o gatilho recebe o pacote, você precisa implementar mais algumas etapas para dividir o pacote em IDocs individuais, configurando o SAP para enviar IDocs em pacotes.

O fluxo de trabalho de exemplo a seguir mostra como extrair IDocs individuais de um pacote usando a xpath() função:

  1. Antes de começar, você precisa de um fluxo de trabalho de aplicativo lógico padrão ou de consumo com um gatilho SAP. Se o seu fluxo de trabalho ainda não começar com esse gatilho, siga as etapas anteriores neste guia para adicionar o gatilho SAP que pode receber mensagens ao seu fluxo de trabalho.

  2. Para responder imediatamente ao seu servidor SAP com o status da solicitação SAP, adicione a seguinte ação de resposta, com base no uso de um gatilho gerenciado SAP ou um gatilho integrado SAP:

    • Gatilho gerenciado SAP: para esse gatilho, adicione uma ação Resposta ao seu fluxo de trabalho.

      Na ação Resposta, use um dos seguintes códigos de status (statusCode):

      Código de estado Description
      202 Aceito O pedido foi aceite para processamento, mas o processamento ainda não está concluído.
      204 Sem conteúdo O servidor atendeu à solicitação com êxito e não há conteúdo adicional para enviar no corpo da carga útil de resposta.
      200 OK Esse código de status sempre contém uma carga útil, mesmo que o servidor gere um corpo de carga útil de comprimento zero.
    • Gatilho integrado SAP: Para esse gatilho, adicione a ação Responder ao servidor SAP ao seu fluxo de trabalho.

    Nota

    Como prática recomendada, adicione a ação de resposta imediatamente após o gatilho para liberar o canal de comunicação com seu servidor SAP.

  3. Obtenha o namespace raiz do IDoc XML que seu fluxo de trabalho recebe do SAP.

    1. Para extrair esse namespace do documento XML e armazená-lo em uma variável de cadeia de caracteres local, adicione a ação Inicializar variável .

    2. Renomeie o título da ação para Obter namespace para nó raiz no IDoc recebido.

    3. Forneça um nome para a variável e defina o tipo como String.

    4. No parâmetro Value da ação, selecione dentro da caixa de edição, abra o editor de expressão ou função e crie a seguinte expressão usando a xpath() função:

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

      Fluxo de trabalho de consumo

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

      Fluxo de trabalho padrão

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

      Quando terminar, a expressão será resolvida e aparecerá no seguinte formato:

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

  4. Para extrair um IDoc individual armazenando a coleção IDoc em uma variável de matriz local, execute estas etapas:

    1. Adicione outra ação da variável Inicializar.

    2. Renomeie o título da ação para Obter matriz com elementos de dados IDoc.

    3. Forneça um nome para a variável e defina o tipo como Matriz.

      A variável array disponibiliza cada IDoc para seu fluxo de trabalho processar individualmente, enumerando sobre a coleção.

    4. No parâmetro Value da ação, selecione dentro da caixa de edição, abra o editor de expressão ou função e crie a seguinte xpath() expressão:

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

      Quando terminar, a expressão será resolvida e aparecerá no seguinte formato:

      Fluxo de trabalho de consumo

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

      Neste exemplo, o fluxo de trabalho a seguir transfere cada IDoc para um servidor SFTP usando uma ação Control chamada For each e a ação SFTP-SSH chamada Create file. Cada IDoc deve incluir o namespace raiz, que é o motivo pelo qual o conteúdo do arquivo é encapsulado dentro de um <Receive></Receive> elemento junto com o namespace raiz antes de enviar o IDoc para o aplicativo downstream ou, neste caso, para o servidor SFTP.

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

      Nota

      Para fluxos de trabalho de Consumo, esse padrão está disponível como um modelo de início rápido, que você pode selecionar na galeria de modelos ao criar um recurso de aplicativo lógico de consumo e um fluxo de trabalho em branco. Ou, quando o designer de fluxo de trabalho estiver aberto, na barra de ferramentas do designer, selecione Modelos.

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

      Fluxo de trabalho padrão

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

      Neste exemplo, o fluxo de trabalho a seguir transfere cada IDoc para um servidor SFTP usando uma ação Control chamada For each e a ação SFTP-SSH chamada Create file. Cada IDoc deve incluir o namespace raiz, que é o motivo pelo qual o conteúdo do arquivo é encapsulado dentro de um <Receive></Receive> elemento junto com o namespace raiz antes de enviar o IDoc para o aplicativo downstream ou, neste caso, para o servidor SFTP.

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


Filtrar mensagens recebidas com ações SAP

Se você usar o conector gerenciado SAP ou o conector SAP com versão ISE, sob o gatilho em seu fluxo de trabalho, configure uma maneira de filtrar explicitamente quaisquer ações indesejadas do seu servidor SAP, com base no namespace do nó raiz na carga XML recebida. Você pode fornecer uma lista (matriz) com uma ou várias ações SAP. Por padrão, essa matriz está vazia, o que significa que seu fluxo de trabalho recebe todas as mensagens do servidor SAP sem filtragem. Quando você configura o filtro de matriz, o gatilho recebe mensagens somente dos tipos de ação SAP especificados e rejeita todas as outras mensagens do servidor SAP. No entanto, esse filtro não afeta se a digitação da carga recebida é fraca ou forte. Qualquer filtragem de ação SAP acontece no nível do adaptador SAP para seu gateway de dados local. Para obter mais informações, veja como testar o envio de IDocs para os Aplicativos Lógicos do Azure a partir do SAP.

Configurar padrão assíncrono de solicitação-resposta para gatilhos

O conector gerenciado SAP dá suporte ao padrão assíncrono de solicitação-resposta do Azure para gatilhos de Aplicativos Lógicos do Azure. Você pode usar esse padrão para criar solicitações bem-sucedidas que, de outra forma, falhariam com o padrão de solicitação-resposta síncrono padrão.

Nota

Em fluxos de trabalho com várias ações de Resposta, todas as ações de Resposta devem usar o mesmo padrão de solicitação-resposta. Por exemplo, se seu fluxo de trabalho usa um controle de switch com várias ações de Resposta possíveis, você deve configurar todas as ações de Resposta para usar o mesmo padrão solicitação-resposta, síncrono ou assíncrono.

Se você habilitar uma resposta assíncrona para sua ação de Resposta, seu fluxo de trabalho poderá responder com uma resposta 202 Aceita depois de aceitar uma solicitação de processamento. A resposta contém um cabeçalho de local que você pode usar para recuperar o estado final da sua solicitação.

Para configurar um padrão assíncrono de solicitação-resposta para seu fluxo de trabalho usando o conector SAP, siga estas etapas:

  1. No designer, abra o fluxo de trabalho do aplicativo lógico. Confirme se o fluxo de trabalho começa com um gatilho SAP.

  2. No seu fluxo de trabalho, localize a ação Resposta e abra as Configurações dessa ação.

  3. Com base no fluxo de trabalho Consumo ou Padrão, siga as etapas correspondentes:

    • Consumo: em Resposta assíncrona, ative a configuração de Desativado para Ativado e selecione Concluído.
    • Padrão: expanda Rede e, em Resposta assíncrona, ative a configuração de Desativado para Ativado.
  4. Salve seu fluxo de trabalho.

Enviar IDocs para SAP

Para criar um fluxo de trabalho de aplicativo lógico que envia um IDoc para um servidor SAP e retorna uma resposta, siga estes exemplos:

  1. Crie um fluxo de trabalho de aplicativo lógico acionado por uma solicitação HTTP.
  2. Adicione uma ação SAP ao seu fluxo de trabalho para enviar um IDoc para o SAP.
  3. Adicione uma ação de resposta ao seu fluxo de trabalho.
  4. Crie um padrão de solicitação-resposta de chamada de função remota (RFC), se estiver usando uma RFC para receber respostas do SAP ABAP.
  5. Teste seu fluxo de trabalho.

Adicionar o gatilho de solicitação

Para que seu fluxo de trabalho receba IDocs do SAP sobre XML HTTP, você pode usar o gatilho interno Request. Esse gatilho cria um endpoint com uma URL onde o servidor SAP pode enviar solicitações HTTP POST para seu fluxo de trabalho. Quando o fluxo de trabalho recebe essas solicitações, o gatilho é acionado e executa a próxima etapa do fluxo de trabalho.

Para receber IDocs sobre Common Programming Interface Communication (CPIC) como XML simples ou como um arquivo simples, revise a seção Receber mensagem do SAP.

Com base no facto de ter um fluxo de trabalho de Consumo em Aplicações Lógicas do Azure multilocatário ou um fluxo de trabalho Padrão em Aplicações Lógicas do Azure de inquilino único, siga os passos correspondentes:

  1. No portal do Azure, crie um recurso de aplicativo lógico de consumo e um fluxo de trabalho em branco no designer.

  2. No designer, siga estas etapas gerais para localizar e adicionar o gatilho interno de solicitação chamado Quando uma solicitação HTTP é recebida.

    Screenshot shows the Request trigger for a Consumption workflow.

  3. Salve seu fluxo de trabalho. Na barra de ferramentas do estruturador, selecione Guardar.

    Esta etapa gera uma URL de endpoint onde seu gatilho pode receber solicitações do seu servidor SAP, por exemplo:

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

Adicionar uma ação SAP para enviar um IDoc

Em seguida, crie uma ação para enviar seu IDoc para o SAP quando a solicitação do fluxo de trabalho for acionada. Com base no facto de ter um fluxo de trabalho de Consumo em Aplicações Lógicas do Azure multilocatário ou um fluxo de trabalho Padrão em Aplicações Lógicas do Azure de inquilino único, siga os passos correspondentes:

  1. No designer de fluxo de trabalho, no gatilho Solicitação, selecione Nova etapa.

  2. No designer, siga estas etapas gerais para localizar e adicionar a ação gerenciada do SAP chamada Enviar mensagem para o SAP.

  3. Se solicitado, forneça as seguintes informações de conexão para seu servidor SAP local. Quando tiver terminado, selecione Criar. Caso contrário, continue com a próxima etapa para configurar a ação SAP.

    Parâmetro Obrigatório Description
    Nome da ligação Sim Introduzir um nome para a ligação.
    Gateway de dados Sim 1. Para Assinatura, selecione a assinatura do Azure para o recurso de gateway de dados que você criou no portal do Azure para sua instalação do gateway de dados.

    2. Para Gateway de Conexão, selecione seu recurso de gateway de dados no Azure.
    Cliente Sim O ID do cliente SAP a ser usado para se conectar ao seu servidor SAP
    Tipo de Autenticação Sim O tipo de autenticação a ser usado para sua conexão, que deve ser Básica (nome de usuário e senha). Para criar uma conexão SNC, consulte Habilitar comunicações de rede seguras (SNC).
    Nome de usuário SAP Sim O nome de usuário do seu servidor SAP
    Senha SAP Sim A senha para o seu servidor SAP
    Tipo de logon Sim Selecione Servidor de Aplicativos ou Grupo (Servidor de Mensagens) e configure os parâmetros necessários correspondentes, mesmo que eles pareçam opcionais:

    Servidor de Aplicativos:
    - AS Host: O nome do host para o seu SAP Application Server
    - Serviço AS: O nome do serviço ou o número da porta para o seu SAP Application Server
    - Número do sistema AS: o número do sistema do seu servidor SAP, que varia de 00 a 99

    Grupo:
    - MS Server Host: O nome do host para o seu SAP Message Server
    - Nome do Serviço MS ou Número da Porta: O nome do serviço ou o número da porta do seu SAP Message Server
    - MS System ID: O ID do sistema para o seu servidor SAP
    - MS Logon Group: O grupo de logon para seu servidor SAP. No servidor SAP, você pode encontrar ou editar o valor Grupo de logon abrindo a caixa de diálogo CCMS: Manter grupos de logon (T-Code SMLG). Para obter mais informações, consulte SAP Note 26317 - Configurar o grupo LOGON para balanceamento automático de carga.
    Digitação segura Não Esta opção está disponível para compatibilidade com versões anteriores e verifica apenas o comprimento da cadeia de caracteres. Por padrão, a digitação forte é usada para verificar valores inválidos executando a validação XML em relação ao esquema. Esse comportamento pode ajudá-lo a detetar problemas mais cedo. Saiba mais sobre a configuração de Digitação segura.
    Usar SNC Não Para criar uma conexão SNC, consulte Habilitar comunicações de rede seguras (SNC).

    Para outros parâmetros de conexão opcionais disponíveis, consulte Informações de conexão padrão.

    Depois que os Aplicativos Lógicos do Azure configurarem e testarem sua conexão, a caixa de informações da ação SAP será exibida. Para obter mais informações sobre quaisquer problemas de conexão que possam acontecer, consulte Solucionar problemas de conexões.

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

  4. Na ação Enviar mensagem para o SAP, localize e selecione uma ação SAP disponível no servidor SAP para enviar o IDoc.

    A ação Enviar mensagem para SAP é genérica e pode enviar uma mensagem para BAPI, IDoc, RFC ou tRFC, mas você deve primeiro selecionar o tipo de mensagem e a ação SAP a ser usada.

    1. Na caixa de edição do parâmetro SAP Action , selecione o ícone da pasta. Na lista que se abre, selecione BAPI, IDOC, RFC ou TRFC. Este exemplo seleciona IDOC. Se você selecionar um tipo diferente, as ações SAP disponíveis serão alteradas com base na sua seleção.

      Nota

      Se você receber um erro Bad Gateway (500) ou Bad request (400), consulte 500 Bad Gateway ou 400 Bad Request error.

      Screenshot shows selecting IDOC for a Consumption workflow.

    2. Navegue pelas pastas de tipos de ação SAP usando as setas para localizar e selecionar a ação SAP que deseja usar.

      Este exemplo seleciona ORDERS>ORDERS05>720>Send.

      Screenshot shows finding an Orders action for a Consumption workflow.

      Se não conseguir encontrar a ação desejada, insira manualmente um caminho, por exemplo:

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

      Gorjeta

      Para o parâmetro SAP Action, você pode usar o editor de expressões para fornecer o valor do parâmetro. Dessa forma, você pode usar a mesma ação SAP para diferentes tipos de mensagens.

      Para obter mais informações sobre mensagens IDoc, revise Esquemas de mensagem para operações IDoc.

    3. Na ação Enviar mensagem para o SAP , inclua a saída do corpo do gatilho Solicitação.

      1. No parâmetro Mensagem de entrada, selecione dentro da caixa de edição para abrir a lista de conteúdo dinâmico.

      2. Na lista de conteúdo dinâmico, em Quando uma solicitação HTTP é recebida, selecione Corpo. O campo Corpo contém a saída do corpo do gatilho Solicitação.

        Nota

        Se o campo Corpo não aparecer na lista, ao lado do rótulo Quando uma solicitação HTTP for recebida , selecione Ver mais.

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

      A ação Enviar mensagem para SAP agora inclui o conteúdo do corpo do gatilho Request e envia essa saída para o servidor SAP, por exemplo:

      Screenshot shows completed SAP action for Consumption workflow.

  5. Salve seu fluxo de trabalho.

Enviar IDocs de arquivo simples para o servidor SAP (somente conector gerenciado)

Para enviar um IDoc usando um esquema de arquivo simples ao usar o conector gerenciado SAP, você pode encapsular o IDoc em um envelope XML e seguir as etapas gerais para adicionar uma ação SAP para enviar um IDoc, mas com as seguintes alterações.

Nota

Se você estiver usando o conector integrado SAP, certifique-se de não encapsular um IDoc de arquivo simples em um envelope XML.

Encapsular IDoc com envelope XML

  1. Na ação SAP usada para enviar a mensagem, use o seguinte URI:

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

  2. Formate sua mensagem de entrada com um envelope XML.

O exemplo a seguir mostra uma carga XML de exemplo:

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

Adicionar uma ação de resposta

Agora, configure seu fluxo de trabalho para retornar os resultados do seu servidor SAP para o solicitante original. Para esta tarefa, siga estes passos:

  1. No designer de fluxo de trabalho, na ação SAP, selecione Nova etapa.

  2. No designer, siga estas etapas gerais para localizar e adicionar a ação interna Solicitar chamada Resposta.

  3. Na ação Resposta, para o parâmetro Body, selecione dentro da caixa de edição para abrir a lista de conteúdo dinâmico.

  4. Na lista de conteúdo dinâmico, em Enviar mensagem para o SAP, selecione Corpo. O campo Corpo contém a saída do corpo da ação SAP.

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

  5. Salve seu fluxo de trabalho.

Criar um padrão de solicitação-resposta de chamada de função remota (RFC)

Para os fluxos de trabalho de Consumo que usam o conector gerenciado SAP e o conector SAP com versão ISE, se você precisar receber respostas usando uma chamada de função remota (RFC) para Aplicativos Lógicos do Azure do SAP ABAP, deverá implementar um padrão de solicitação e resposta. Para receber IDocs em seu fluxo de trabalho ao usar o gatilho Solicitação, verifique se a primeira ação do fluxo de trabalho é uma ação Resposta que usa o código de status 200 OK sem qualquer conteúdo. Esta etapa recomendada conclui imediatamente a transferência assíncrona da unidade lógica de trabalho (LUW) do SAP sobre tRFC, o que deixa a conversa SAP CPIC disponível novamente. Em seguida, você pode adicionar mais ações ao seu fluxo de trabalho para processar o IDoc recebido sem bloquear transferências posteriores.

Nota

O gatilho SAP recebe IDocs sobre tRFC, que não tem um parâmetro de resposta, por design.

Para implementar um padrão de solicitação e resposta, você deve primeiro descobrir o esquema RFC usando o generate schema comando. O esquema gerado tem dois nós raiz possíveis:

  • O nó de solicitação, que é a chamada que você recebe do SAP
  • O nó de resposta, que é a sua resposta de volta ao SAP

No exemplo a seguir, o STFC_CONNECTION módulo RFC gera um padrão de solicitação e resposta. O XML da solicitação é analisado para extrair um valor de nó onde as solicitações <ECHOTEXT>SAP . A resposta insere o carimbo de data/hora atual como um valor dinâmico. Você recebe uma resposta semelhante quando envia uma STFC_CONNECTION RFC de um fluxo de trabalho de aplicativo lógico para o 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>

Testar o fluxo de trabalho

  1. Se o recurso do aplicativo lógico de consumo ainda não estiver habilitado, no menu do aplicativo lógico, selecione Visão geral. Na barra de ferramentas, selecione Ativar.

  2. Na barra de ferramentas do designer, selecione Executar execução de gatilho> para iniciar manualmente o fluxo de trabalho.

  3. Para simular uma carga útil de gatilho de webhook, envie uma solicitação HTTP POST para a URL do ponto de extremidade especificada pelo gatilho de solicitação do fluxo de trabalho. Certifique-se de incluir o conteúdo da sua mensagem no seu pedido. Para enviar a solicitação, use uma ferramenta como o cliente Postman API.

    Neste exemplo, a solicitação HTTP POST envia um arquivo IDoc, que deve estar no formato XML e incluir o namespace para a ação SAP selecionada, por exemplo:

    <?xml version="1.0" encoding="UTF-8" ?>
    <Send xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/2/ORDERS05//720/Send">
      <idocData>
        <...>
      </idocData>
    </Send>
    
  4. Depois de enviar sua solicitação HTTP, aguarde a resposta do seu fluxo de trabalho.

    Nota

    Seu fluxo de trabalho pode atingir o tempo limite se todas as etapas necessárias para a resposta não forem concluídas dentro do limite de tempo limite da solicitação. Se essa condição acontecer, as solicitações podem ser bloqueadas. Para ajudá-lo a diagnosticar problemas, saiba como verificar e monitorar os fluxos de trabalho do aplicativo lógico.

Agora você criou um fluxo de trabalho que pode se comunicar com seu servidor SAP. Agora que você configurou uma conexão SAP para seu fluxo de trabalho, você pode tentar experimentar com BAPI e RFC.

Digitação segura

Por padrão, quando você cria uma conexão para a operação gerenciada SAP, a digitação forte é usada para verificar valores inválidos executando a validação XML em relação ao esquema. Esse comportamento pode ajudá-lo a detetar problemas mais cedo. A opção Digitação segura está disponível para compatibilidade com versões anteriores e verifica apenas o comprimento da cadeia de caracteres. Se você escolher Digitação segura, o tipo DATS e o tipo TIMS no SAP serão tratados como cadeias de caracteres em vez de seus equivalentes xs:date XML e xs:time, onde xmlns:xs="http://www.w3.org/2001/XMLSchema". A digitação segura afeta o comportamento de toda a geração de esquema, a mensagem de envio para a carga "foi enviada" e a resposta "foi recebida" e o gatilho.

Quando a digitação forte é usada (a Digitação segura não está habilitada), o esquema mapeia os tipos DATS e TIMS para tipos XML mais diretos:

<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"/>

Quando você envia mensagens usando digitação forte, a resposta DATS e TIMS está em conformidade com o formato de tipo XML correspondente:

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

Quando a Digitação segura está habilitada, o esquema mapeia os tipos DATS e TIMS para campos de cadeia de caracteres XML apenas com restrições de comprimento, por exemplo:

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

Quando as mensagens são enviadas com a Digitação segura habilitada, a resposta DATS e TIMS se parece com este exemplo:

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

Cenários avançados

Alterar cabeçalhos de idioma para enviar dados para o SAP

Quando você se conecta ao SAP a partir dos Aplicativos Lógicos do Azure, o inglês é o idioma padrão usado pela conexão SAP para enviar dados ao seu servidor SAP. No entanto, o conector gerenciado SAP e o conector integrado SAP manipulam a alteração e salvamento da linguagem usada de maneiras diferentes.

  • Quando você cria uma conexão com o conector integrado SAP, os parâmetros de conexão permitem especificar e salvar o valor do parâmetro language como parte dos parâmetros de conexão SAP.

  • Quando você cria uma conexão com o conector gerenciado SAP, os parâmetros de conexão não têm parâmetro de idioma. Portanto, durante esse tempo, você não pode especificar ou o idioma a ser usado para enviar dados para o seu servidor SAP. Em vez disso, em tempo de design do fluxo de trabalho e tempo de execução, o conector usa o idioma local do navegador da Web de cada solicitação enviada ao servidor. Por exemplo, se seu navegador estiver definido como português, os Aplicativos Lógicos do Azure criarão e testarão a conexão SAP com o português, mas não salvarão a conexão com esse idioma.

    No entanto, você pode definir o idioma para sua conexão usando o cabeçalho Accept-Language HTTP padrão com suas solicitações de entrada. A maioria dos navegadores da Web adiciona um Accept-Language cabeçalho com base nas configurações de localidade. O navegador da Web aplica esse cabeçalho quando você cria uma nova conexão SAP no designer de fluxo de trabalho. Portanto, você pode atualizar as configurações do navegador da Web para usar seu idioma preferido ou pode criar sua conexão SAP usando o Azure Resource Manager em vez do designer de fluxo de trabalho.

    Por exemplo, você pode enviar uma solicitação com o cabeçalho para o fluxo de trabalho do aplicativo lógico usando o Accept-Language gatilho de solicitação chamado Quando uma solicitação HTTP é recebida. Todas as ações no seu fluxo de trabalho recebem o cabeçalho. Em seguida, o SAP usa os idiomas especificados em suas mensagens do sistema, como mensagens de erro BAPI. Se você não passar um Accept-Language cabeçalho em tempo de execução, por padrão, o inglês será usado.

    Se utilizar o cabeçalho, poderá obter o Accept-Language seguinte erro: Verifique as informações e/ou permissões da sua conta e tente novamente. Nesse caso, verifique os logs de erros do componente SAP. O erro realmente acontece no componente SAP que usa o cabeçalho, então você pode receber uma destas mensagens de erro:

    • "SAP. Middleware.Connector.RfcLogonException: Selecione um dos idiomas instalados"

    • "SAP. Middleware.Connector.RfcAbapMessageException: Selecione um dos idiomas instalados"

Confirme a transação separadamente e explicitamente

Quando você envia transações para o SAP a partir dos Aplicativos Lógicos do Azure, essa troca acontece em duas etapas, conforme descrito no documento SAP, Programas Transacionais do Servidor RFC.

Por padrão, a ação do conector gerenciado SAP chamada Enviar mensagem para o SAP lida com as etapas para transferir a função e confirmar a transação em uma única chamada. Você também tem a opção de desacoplar essas etapas. A capacidade de dissociar as etapas de transferência e confirmação é útil para cenários em que você não deseja duplicar transações no SAP. Esses cenários incluem falhas que acontecem devido a causas como problemas de rede.

Você pode enviar um IDoc sem confirmar automaticamente a transação usando a ação do conector gerenciado SAP chamada [IDOC] Enviar documento para o SAP. Em seguida, você pode confirmar explicitamente a transação usando a ação do conector gerenciado SAP chamada [IDOC - RFC] Confirmar ID da transação. Quando seu fluxo de trabalho confirma separadamente a transação em uma etapa diferente, o sistema SAP conclui a transação apenas uma vez.

Em fluxos de trabalho padrão, o conector integrado SAP também tem ações que lidam separadamente com as etapas de transferência e confirmação, especificamente, [IDoc] Enviar documento para SAP e [IDOC - RFC] Confirmar ID da transação.

O fluxo de trabalho de exemplo a seguir mostra esse padrão:

  1. Crie e abra um aplicativo lógico Consumo ou Padrão com um fluxo de trabalho em branco no designer. Adicione o gatilho Request.

  2. Para ajudar a evitar o envio de IDocs duplicados para o SAP, siga estas etapas alternativas para criar e usar um ID de transação IDoc em suas ações SAP.

  3. Adicione a ação SAP chamada [IDOC] Enviar documento para SAP ao seu fluxo de trabalho. Forneça as informações para o IDoc que você envia para seu sistema SAP mais os seguintes valores:

    Parâmetro valor Description
    Confirmar TID Não Não confirme automaticamente o ID da transação, o que acontece explicitamente em uma etapa separada.
    GUID de ID de transação <IDoc-transação-ID> Se esse parâmetro não aparecer automaticamente, abra a lista Adicionar novos parâmetros e selecione o parâmetro.

    Você pode especificar manualmente esse valor ou o conector pode gerar automaticamente esse GUID como uma saída da ação [IDOC] Enviar documento para SAP. Este exemplo deixa esse parâmetro vazio para gerar automaticamente o GUID.

    Fluxo de trabalho de consumo

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

    Fluxo de trabalho padrão

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

  4. Na ação SAP denominada [IDOC] Enviar documento para o SAP, abra Configurações para revisar a Política de Repetição.

    A opção Padrão é a política recomendada, mas você pode selecionar uma política personalizada para suas necessidades específicas. Se você optar por usar uma política personalizada, configure pelo menos uma nova tentativa para superar interrupções temporárias da rede.

  5. Agora, adicione a ação SAP chamada [IDOC - RFC] Confirmar ID da transação.

    1. No parâmetro ID da transação, selecione dentro da caixa de edição para abrir a lista de conteúdo dinâmico.

    2. Na lista, em [IDOC] Enviar documento para o SAP, selecione o valor ID da transação, que é a saída da ação anterior do SAP.

      Fluxo de trabalho de consumo

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

      Fluxo de trabalho padrão

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

    Após a execução desta etapa, a transação atual é marcada como concluída em ambas as extremidades, no lado do conector SAP e no lado do sistema SAP.

Evite enviar IDocs duplicados com uma variável de ID de transação

Se você tiver um problema com o fluxo de trabalho enviando IDocs duplicados para o SAP, poderá criar uma variável de cadeia de caracteres que sirva como um identificador de transação IDoc. Em seguida, você pode usar esse identificador para ajudar a evitar transmissões de rede duplicadas em condições como interrupções temporárias, problemas de rede ou perda de confirmações.

  1. No designer, depois de adicionar o gatilho Request e antes de adicionar a ação SAP chamada [IDOC] Send document to SAP, adicione a ação chamada Initialize variable ao seu fluxo de trabalho.

  2. Renomeie a ação para Criar ID de transação IDoc.

  3. Na caixa de informações da ação, forneça os seguintes valores de parâmetro:

    Parâmetro valor Descrição
    Nome <variable-name> Um nome para sua variável, por exemplo, IDocTransactionID
    Tipo Cadeia O tipo de variável
    Valor guid() Selecione dentro da caixa de edição, abra o editor de expressões ou funções e digite guid(). Guardar as suas alterações.

    O parâmetro Value agora está definido como a função guid(), que gera um GUID.

    Fluxo de trabalho de consumo

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

    Fluxo de trabalho padrão

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

    Nota

    Os sistemas SAP esquecem um identificador de transação após um tempo especificado, ou 24 horas por padrão. Como resultado, o SAP nunca falha ao confirmar um identificador de transação se o ID ou GUID for desconhecido. Se a confirmação de um identificador de transação falhar, essa falha indica que a comunicação com o sistema SAP falhou antes que a SAP pudesse confirmar a confirmação.

  4. Adicione a ação SAP chamada [IDOC] Enviar documento para SAP ao seu fluxo de trabalho. Forneça as informações para o IDoc que você envia para seu sistema SAP mais os seguintes valores:

    Parâmetro valor Description
    Confirmar TID Não Não confirme automaticamente o ID da transação, o que acontece explicitamente em uma etapa separada.
    GUID de ID de transação <IDoc-transação-ID> Se esse parâmetro não aparecer automaticamente, abra a lista Adicionar novos parâmetros e selecione o parâmetro. Para selecionar a variável de ID de transação que você criou, siga estas etapas:

    1. No parâmetro Transaction Id GUID , selecione dentro da caixa de edição para abrir a lista de conteúdo dinâmico.

    2. Na lista, em Variáveis, selecione a variável que você criou anteriormente, que é IDocTransactionID neste exemplo.

    Fluxo de trabalho de consumo

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

    Fluxo de trabalho padrão

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

  5. Para a ação gerenciada SAP chamada [IDOC] Enviar documento para o SAP, abra Configurações para revisar a Política de Repetição.

    A opção Padrão é a política recomendada, mas você pode selecionar uma política personalizada para suas necessidades específicas. Se você optar por usar uma política personalizada, configure pelo menos uma nova tentativa para superar interrupções temporárias da rede.

    Nota

    Atualmente, apenas as ações de conector gerenciado têm a configuração Política de Repetição e não conectores internos baseados em provedor de serviços.

  6. Agora, adicione a ação SAP chamada [IDOC - RFC] Confirmar ID da transação.

    1. No parâmetro ID da transação, selecione dentro da caixa de edição para abrir a lista de conteúdo dinâmico.

    2. Na lista, em Variáveis, insira o nome da variável que você criou, que é IDocTransactionID neste exemplo.

      Fluxo de trabalho de consumo

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

      Fluxo de trabalho padrão

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

  7. Opcionalmente, valide a desduplicação em seu ambiente de teste.

    1. Adicione outra ação SAP chamada [IDOC] Enviar documento para o SAP. No parâmetro ID da transação, selecione o GUID da ID da transação que você usou na etapa anterior.

    2. Para validar qual número de IDoc é atribuído após cada chamada à ação chamada [IDOC] Enviar documento para o SAP, adicione a ação chamada [IDOC] Obter lista de IDOC para transação ao seu fluxo de trabalho com o mesmo ID de transação e a direção de recebimento.

      Se o mesmo número de IDoc for retornado para ambas as chamadas, o IDoc foi desduplicado.

Se você enviar o mesmo IDoc duas vezes, poderá validar que o SAP pode identificar a duplicação da chamada tRFC e resolver as duas chamadas para uma única mensagem IDoc de entrada.

Resolução de problemas

Problemas de ligação

Durante a criação da conexão, se você receber o seguinte erro, existe um problema com a instalação da biblioteca de cliente SAP NCo:

Falha na conexão de teste. Erro 'Falha ao processar solicitação. Detalhes do erro: 'não foi possível carregar o arquivo ou assembly 'sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken 50436dca5c7f7d23' ou uma de suas dependências. O sistema não consegue encontrar o ficheiro especificado”.

Certifique-se de instalar a versão necessária da biblioteca do cliente SAP NCo e atender a todos os outros pré-requisitos.

Erro de 500 Bad Gateway ou 400 Bad Request

Se você receber um erro 500 Bad Gateway ou 400 Bad Request com uma mensagem semelhante ao serviço 'sapgw00' unknown, a resolução do nome do serviço de rede para o número da porta está falhando, por exemplo:

{
   "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"
            }
         }
      }
   }
}
  • Opção 1: Na configuração de conexão e gatilho da API, substitua o nome do serviço de gateway pelo número da porta. No erro de exemplo, precisa ser substituído por um número de porta real, por exemplo, sapgw003300. Esta é a única opção disponível para o ISE.

  • Opção 2: Se você estiver usando o gateway de dados local, poderá adicionar o nome do serviço de gateway ao mapeamento de porta e, em seguida, reiniciar o serviço de gateway de %windir%\System32\drivers\etc\services dados local, por exemplo:

    sapgw00  3300/tcp
    

Você pode receber um erro semelhante quando o nome do servidor de aplicativos SAP ou do servidor de mensagens é resolvido para o endereço IP. Para ISE, você deve especificar o endereço IP para seu servidor de aplicativos SAP ou servidor de mensagens. Para o gateway de dados local, você pode adicionar o nome ao mapeamento de endereço IP no , por %windir%\System32\drivers\etc\hostsexemplo:

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

Erros ao enviar pacotes IDoc do SAP para o gatilho

Se não for possível enviar pacotes IDoc do SAP para o gatilho, revise a mensagem de rejeição de chamada RFC transacional (tRFC) na caixa de diálogo SAP tRFC (T-Code SM58). Na interface SAP, você pode receber as seguintes mensagens de erro, que são cortadas devido aos limites de substring no campo Status Text .

A definição de segmento ou grupo E2EDK36001 não foi encontrada no meta IDoc

Esta mensagem de erro significa que as falhas esperadas acontecem com outros erros. Por exemplo, a falha ao gerar uma carga XML IDoc porque seus segmentos não são liberados pelo SAP. Como resultado, os metadados de tipo de segmento necessários para a conversão estão ausentes.

Para ter esses segmentos liberados pela SAP, entre em contato com o engenheiro ABAP do seu sistema SAP.

O RequestContext no IReplyChannel foi fechado sem que uma resposta fosse enviada

Para o conector gerenciado SAP e o conector SAP com versão ISE, essa mensagem de erro significa que falhas inesperadas acontecem quando o manipulador catch-all do canal encerra o canal devido a um erro e reconstrói o canal para processar outras mensagens.

Nota

O gatilho gerenciado SAP e os gatilhos SAP com versão ISE são webhooks que usam o adaptador SAP baseado em SOAP. No entanto, o gatilho interno do SAP é um gatilho baseado no Azure Functions que não usa um adaptador SAP SOAP e não recebe essa mensagem de erro.

  • Para confirmar que seu fluxo de trabalho recebeu o IDoc, adicione uma ação Resposta que retorna um código de status 200 OK . Deixe o corpo vazio e não altere ou adicione aos cabeçalhos. O IDoc é transportado através do tRFC, que não permite uma carga útil de resposta.

  • Para rejeitar o IDoc, responda com qualquer código de status HTTP diferente de 200 OK. Em seguida, o adaptador SAP retorna uma exceção para o SAP em seu nome. Você só deve rejeitar o IDoc para sinalizar erros de transporte de volta para o SAP, como um IDoc roteado incorretamente que seu aplicativo não pode processar. Você não deve rejeitar um IDoc por erros no nível do aplicativo, como problemas com os dados contidos no IDoc. Se você atrasar a aceitação do transporte para validação no nível do aplicativo, poderá ter um desempenho negativo devido ao bloqueio da conexão de transportar outros IDocs.

  • Se você receber essa mensagem de erro e enfrentar falhas sistêmicas chamando os Aplicativos Lógicos do Azure, verifique se você configurou as configurações de rede para seu serviço de gateway de dados local para seu ambiente específico. Por exemplo, se seu ambiente de rede exigir o uso de um proxy para chamar pontos de extremidade do Azure, você precisará configurar seu serviço de gateway de dados local para usar seu proxy. Para obter mais informações, consulte Configuração de proxy.

  • Se você receber essa mensagem de erro e enfrentar falhas intermitentes chamando os Aplicativos Lógicos do Azure, talvez seja necessário aumentar sua contagem de tentativas ou também o intervalo de novas tentativas seguindo estas etapas:

    1. Verifique as configurações do SAP no arquivo de configuração do serviço de gateway de dados local chamado Microsoft.PowerBI.EnterpriseGateway.exe.config.

      1. configuration No nó raiz, adicione um configSections elemento , se não existir.

      2. configSections No nó, adicione um section elemento com os seguintes atributos, se nenhum existir:name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"

        Importante

        Não altere os atributos em elementos existentes section , se esses elementos já existirem.

        Seu configSections elemento se parecerá com a seguinte versão, se nenhuma outra seção ou grupo de seção for declarado na configuração do serviço de gateway:

        <configSections>
          <section name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"/>
        </configSections>
        
      3. configuration No nó raiz, adicione um SapAdapterSection elemento , se não existir.

      4. SapAdapterSection No nó, adicione um Broker elemento com os seguintes atributos, se nenhum existir:WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2"

        Importante

        Altere os atributos do Broker elemento, mesmo que o elemento já exista.

        O SapAdapterSection elemento se parece com a seguinte versão, se nenhum outro elemento ou atributo for declarado na configuração do adaptador SAP:

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

        A configuração de contagem de tentativas é semelhante a WebhookRetryMaximumCount="2". A configuração de intervalo de repetição se parece WebhookRetryDefaultDelay="00:00:00.10" com onde o formato de intervalo de tempo é HH:mm:ss.ff.

      Nota

      Para obter mais informações sobre o arquivo de configuração, consulte Esquema do arquivo de configuração para .NET Framework.

    2. Guardar as suas alterações.

    3. Se você estiver usando o gateway de dados local, reinicie o gateway.

Próximos passos