SAP BAPI

O conector SAP BAPI permite integrar seu fluxo com o ERP SAP por meio das Business Application Programming Interfaces (BAPIs), que são funções padronizadas para acessar processos e dados de negócio no sistema SAP.

Em outras palavras, uma BAPI é como uma “porta oficial” que o SAP disponibiliza para que sistemas externos possam consultar ou manipular dados e processos sem precisar acessar diretamente as tabelas internas ou escrever código ABAP.

O que é possível fazer:

  • Consultar dados

    • Obter informações de clientes, fornecedores, materiais, pedidos de venda, estoques etc.

      Exemplo: BAPI_CUSTOMER_GETDETAIL retorna os dados completos de um cliente.

  • Criar registros

    • Inserir novos dados de negócio no SAP.

      Exemplo: BAPI_SALESORDER_CREATEFROMDAT2 cria um pedido de venda.

  • Atualizar registros

    • Alterar dados já existentes.

      Exemplo: BAPI_EMPLOYEE_CHANGE atualiza dados de um funcionário.

  • Executar operações de negócio

    • Acionar processos internos do SAP (liberar documentos, executar cálculos, gerar lançamentos contábeis).

      Exemplo: BAPI_GOODSMVT_CREATE registra uma movimentação de estoque.

  • Testar conexão e disponibilidade

    • Validar se o SAP está respondendo.

      Exemplo: STFC_CONNECTION (retorna informações do sistema, client, usuário etc.).

Estrutura da instrução (sintaxe)

A comunicação com este conector utiliza uma estrutura específica de chave-valor para mapear os parâmetros da BAPI.

  • Comando: inicia sempre com CALL FUNCTION <NOME_DA_BAPI>.

  • Parâmetros: são definidos após o sinal de dois-pontos ":".

  • Agrupamentos

    • Parênteses ( ): envolvem um par chave-valor único ou um objeto.

    • Colchetes [ ]: envolvem listas de itens ou múltiplos parâmetros.

  • Sintaxe

    CALL FUNCTION NOME_BAPI: [ (PARAMETRO_1: VALOR), (TABELA: [ (CAMPO: VALOR) ]) ]

Exemplos

Confira exemplos de instruções para o conector SAP BAPI:

Validação de conectividade

  • Instrução

    Na instrução abaixo, o conector SAP BAPI chama a função STFC_CONNECTION no SAP. Essa função é uma BAPI padrão do SAP, usada para testar conectividade entre o sistema cliente (no caso, o Sensedia Integrations) e o servidor SAP.

    CALL FUNCTION STFC_CONNECTION: []
    Os colchetes [] indicam que não foram passados parâmetros adicionais na chamada.
  • Retorno (log)

    • O trecho do log mostra a execução bem-sucedida do conector SAP BAPI ao chamar a função de teste STFC_CONNECTION.

    • O SAP respondeu a requisição confirmando a conexão com informações sobre sistema, client, usuário e data/hora.

    • O status HTTP 200 garante que não houve erro de integração.

      {
      "message": {
      
         "payload": "{\"STFC_CONNECTION\":{\"INPUT\":{\"REQUTEXT\":\"\"},\"OUTPUT\":{\"ECHOTEXT\":\"\",\"RESPTEXT\":\"SAP R/3 Rel. 740   Sysid: ERQ      Date: 20250912   Time: 130104   Logon_Data: 300/APISENSEDIA/E\"}}}",
      
         "status": 200 }
      }
      Leia sobre detalhes dos logs.

Leitura de tabela

  • Instrução

    A instrução abaixo lê as 5 primeiras linhas da tabela T001 no SAP, retornando apenas os campos BUKRS e BUTXT, separados por ponto e vírgula.

     CALL FUNCTION RFC_READ_TABLE: [
      (IMPORTING: [
        (QUERY_TABLE: T001),
        (DELIMITER: ;),
        (ROWCOUNT: 5)
      ]),
      (TABLES: [
        (FIELDS: [
          (FIELDNAME: BUKRS),
          (FIELDNAME: BUTXT)
        ])
      ])
    ]
  • Partes da instrução

    • FUNCTION RFC_READ_TABLE: define que será executada a função de leitura de tabelas.

    • IMPORTING: contém os parâmetros de entrada simples que configuram a chamada da função.

      • QUERY_TABLE: T001: indica a tabela que será consultada (T001, que contém informações sobre Company Codes).

      • DELIMITER: ;:define que os campos retornados serão separados por ponto e vírgula.

      • ROWCOUNT: 5: limita o retorno às 5 primeiras linhas da tabela.

    • TABLES: define os parâmetros em formato de tabela, usados para enviar ou receber listas de registros.

      • FIELDS: especifica os campos da tabela que devem ser retornados (se omitido, retorna todas as colunas, o que pode causar lentidão ou estouro de memória).

        • BUKRS`: código da empresa (Company Code).

        • BUTXT: descrição da empresa (Company Name).

  • Retorno (log)

    Confira dois trechos do payload de resposta registrado nos logs:

    • INPUT: mostra os parâmetros de consulta: tabela consultada, número máximo de registros, delimitador e opções adicionais.

      {\"INPUT\":{\"QUERY_TABLE\":\"T001\",\"ROWCOUNT\":5,\"GET_SORTED\":\"\",\"NO_DATA\":\"\",\"USE_ET_DATA_4_RETURN\":\"\",\"ROWSKIPS\":0,\"DELIMITER\":\";\"}
    • DATA (trecho): traz os valores retornados da consulta.

      DATA\":{\"item\":[{\"WA\":\"300;0001;SAP Brazil ;Sao Paolo ;BR ;BRL ;P;INT ;10;K4;2;000001; ; ; ; ; ; ; ;00000000;2; ; ; ; ;0001; ; ; ;X; ; ; ; ; ; ; ; ; ; ; ;0001; ;0001;0001; ; ;0001; ; ; ; ; ;IE;SE;1; ;X;X; ; ;FMRE; ; ;0; ; ; ; ; ; ; ; ; ; ; ; ; ; ;\"}

      Neste exemplo:

      • O campo WA (Work Area) traz os dados concatenados pelo delimitador escolhido

      • 300: MANDT (Cliente SAP)

      • 0001: BUKRS (Código da Empresa)

      • SAP Brazil: BUTXT (Nome da Empresa)

      • Sao Paolo: ORT01 (Cidade)

      • BR: LAND1 (País)

      • BRL: WAERS (Moeda)

Possíveis erros de configuração

Abaixo listamos alguns erros comuns que podem ocorrer ao utilizar o conector SAP BAPI e as soluções recomendadas.

  • Error calling BAPI function in SAP: erro genérico de execução.

    • Verifique se o usuário configurado tem permissão de acesso (objeto S_TABU_DIS) à tabela solicitada ou permissão de execução na BAPI.

    • Verifique se os nomes dos campos em FIELDS existem na tabela.

  • Retorno vazio (DATA: []): nenhum registro corresponde aos critérios definidos em OPTIONS.

    • Verifique se a data está no formato AAAAMMDD.

    • Verifique se os valores estão em letras maiúsculas, pois o SAP diferencia maiúsculas de minúsculas para dados.

  • ROWCOUNT ignorado: o SAP retornou mais linhas do que o solicitado.

    Isso ocorre em certas versões do módulo de função quando não há índice primário no filtro.
    • Aplique um componente de script ou filtro no seu fluxo para eliminar as linhas excedentes.

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]