SAP Tutorial de BAPI – Como criar uma BAPI em ABAP

⚡ Resumo Inteligente

BAPI em SAP ABAP é um método padronizado e habilitado para RFC de um objeto de negócios que permite que aplicativos externos acessem processos e dados do R/3. Esta página explica as BAPIs padronizadas, como criar uma no SWO1, testá-la, liberá-la e como chamar uma BAPI a partir do ABAP.

  • ???? Definição Essencial: Uma Interface de Programação de Aplicativos de Negócios (API) é um método estável que fornece a sistemas externos acesso padronizado a SAP processos de negócios e dados.
  • 🗃️ Repositório de Objetos de Negócio: As BAPIs são definidas no BOR como métodos de tipos de objetos de negócios e implementadas como módulos de função habilitados para RFC.
  • 📚 BAPIs padronizadas: GetList, GetDetail, Create, Change, Delete e suas variantes oferecem métodos reutilizáveis ​​de leitura, gravação e processamento em massa.
  • 🛠️ Criação: Uma BAPI é criada na transação SWO1 adicionando um método de API que aponta para um módulo de função habilitado para RFC.
  • Teste e lançamento: O método é testado no Business Object Builder ou SWUD e, em seguida, liberado através da liberação do módulo de função e da definição do status do método.
  • 📞 Chamando uma BAPI: Um programa ABAP chama o módulo de função e, em seguida, realiza o commit com BAPI_TRANSACTION_COMMIT, pois um BAPI não realiza o commit por si só.

Como criar uma BAPI em SAP ABAP

O que é BAPI?

Business Application Programming Interface (BAPI) são interfaces de programação padronizadas (métodos) que permitem que aplicativos externos acessem processos de negócios e dados no sistema R/3.

Eles fornecer métodos estáveis ​​e padronizados para obter integração perfeita entre o sistema R/3 e aplicativos externos, sistemas legados e complementos.

BAPIs são definidos no BOR (repositório de objetos de negócios) como métodos de SAP Tipos de objetos de negócios que executam funções de negócios específicas. Eles são implementados como Função habilitada para RFC módulos e são criados no Function Builder do ABAP Workbench.

Alguns BAPIs e métodos fornecem funções básicas e podem ser usados ​​para a maioria SAP Objetos de negócios. Eles são chamados BAPI PADRONIZADOS.

Lista de BAPIs padronizados:

  • BAPIs para leitura de dados – GetList() , GetDetail() , GetStatus() , ExistenceCheck()
  • BAPIs para criar ou alterar dados - Create() ,Change(),Delete() e Undelete() ,
  • BAPIs para processamento em massa -ChangeMultiple(), CreateMultiple(), DeleteMultiple().

Vantagens do BAPI

Uma BAPI é preferível às técnicas baseadas em tela porque é uma interface documentada e disponibilizada que SAP Mantém-se estável entre as versões. Isso traz diversos benefícios práticos.

  • Interface estável: A assinatura de uma BAPI lançada não muda em uma atualização, portanto o programa que a chama continua funcionando.
  • Reutilização da lógica de negócios: Uma BAPI executa as mesmas validações que a transação, portanto os dados adicionados por meio dela permanecem consistentes.
  • Acesso remoto habilitado: Como uma BAPI é um módulo de função habilitado para RFC, ela pode ser chamada a partir de outra. SAP sistema, um Java ou um programa .NET, ou um serviço web.
  • Sem dependência de tela: Diferentemente da gravação de entrada em lote, uma BAPI não é interrompida quando o layout da tela muda.

Com o conceito e seus benefícios claros, a próxima seção constrói uma BAPI passo a passo.

Como criar um BAPI

Passo 1) Vá para a transação swo1 (Ferramentas->Business Framework -> BAPI Development ->Business Object Builder). Selecione o objeto de negócio, de acordo com o requisito funcional para o qual o BAPI está sendo criado.

Crie uma BAPI em ABAP

Passo 2) Abra o objeto de negócios no modo de mudança. Em seguida, selecione Utilitários -> Métodos API -> Adicionar método. Em seguida, insira o nome do módulo de função e selecione Continuar.

Crie uma BAPI em ABAP

Passo 3) Na próxima caixa de diálogo, as seguintes informações precisam ser especificadas:

  • Método: Sugira um nome apropriado para o método,
  • Textos: Insira a descrição do BAPI,
  • Botões de opção: Diálogo, Synchrônomo, independente de instância. BAPIs geralmente são implementados de forma síncrona.

Crie uma BAPI em ABAP

Passo 4) Para criar o método, selecione Sim na próxima caixa de diálogo.

Crie uma BAPI em ABAP

Passo 5) Após o programa ter sido gerado e executado, verifique o programa no método recém-criado. Assim, um BAPI é criado.

Crie uma BAPI em ABAP

Testando o BAPI

Você pode testar o BAPI por Testes o método individual do Business Object no Business Object Builder. (ou pode-se usar a transação 'SWUD' para testar o método).

Liberando e congelando o BAPI

  • Para liberar o BAPI, primeiro libere o módulo de função (usando a transação se37).
  • Defina o status do método como 'liberado' no Business Object Builder (usando a transação SWo1 – Editar-> alterar status-> liberado.)

Você também pode usar o BAPI Explorer (código de transação BAPI) para visualização 360 ′ no BAPI

Como chamar uma BAPI em ABAP

Uma BAPI é chamada como qualquer módulo de função habilitado para RFC. A regra importante é que uma BAPI nunca emite seu próprio COMMIT WORK, portanto, o chamador deve confirmar a alteração com BAPI_TRANSACTION_COMMIT ou descartá-la com BAPI_TRANSACTION_ROLLBACK. O exemplo abaixo cria um pedido de vendas com uma BAPI padrão.

DATA: ls_header  TYPE bapisdhd1,
      lt_items   TYPE STANDARD TABLE OF bapisditm,
      lt_return  TYPE STANDARD TABLE OF bapiret2,
      lv_order   TYPE vbeln.

* Fill the header and item structures, then call the BAPI
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
  EXPORTING
    order_header_in = ls_header
  IMPORTING
    salesdocument   = lv_order
  TABLES
    order_items_in  = lt_items
    return          = lt_return.

* A BAPI does not commit on its own - decide based on the return table
READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.
ENDIF.

⚠️ Aviso: Sempre verifique a tabela RETURN em busca de mensagens do tipo E ou A antes de confirmar a transação. Chamar a BAPI_TRANSACTION_COMMIT após um erro salva um documento incompleto, o que é um dos erros mais comuns em BAPIs.

BAPI vs BDC vs RFC

Uma BAPI, uma BDC, e um RFC simples, ambos movem dados para SAP, mas diferem em estabilidade e no que reutilizam. A tabela abaixo compara-os.

Critérios BAPI BDC RFC (personalizado)
Interface Método liberado de um objeto de negócios Sequência de telas de uma transação Qualquer módulo de função personalizado
Estabilidade na atualização Garantido para BAPIs lançadas O programa para de funcionar se a tela mudar. Depende do desenvolvedor.
Habilitado remotamente Sim Não Sim
Validação de negócios Completo, igual à transação. Completo, executa as telas reais. Somente o que o desenvolvedor codifica
Melhor para Integração e interfaces estáveis Carrega onde não existe uma BAPI. Serviços personalizados ponto a ponto

A regra geral é usar uma BAPI já disponível sempre que houver uma, recorrer a uma BDC quando não houver e reservar RFCs personalizadas para serviços sob medida.

Perguntas Frequentes

Uma BAPI executa a atualização, mas deixa o COMMIT WORK para o chamador, permitindo que várias BAPIs sejam combinadas em uma única unidade lógica de trabalho. A função BAPI_TRANSACTION_COMMIT então as salva juntas, mantendo o WORK.ping Os dados são consistentes.

A tabela RETURN do tipo BAPIRET2 contém as mensagens da chamada. Uma linha do tipo S indica sucesso, E indica erro, W indica aviso e A indica aborto. O chamador lê essa tabela para decidir se deve confirmar a chamada.

A transação BAPI abre o BAPI Explorer, que lista todos os objetos de negócios e seus métodos, com documentação e ferramentas de teste. A transação SE37 também exibe uma BAPI, pois cada uma delas é um módulo de função habilitado para RFC.

Sim. Os assistentes de IA nas ferramentas de desenvolvimento ABAP sugerem a BAPI padrão para um objeto de negócios e elaboram o mapeamento de parâmetros.pinge adiciona o commit e o tratamento de erros. O desenvolvedor confirma os campos e testa a chamada.

Sim. Muitos serviços OData e integrações de IA chamam uma BAPI internamente, porque ela já contém a lógica de negócios. As camadas mais recentes adicionam acesso REST e linguagem natural à interface BAPI estável.

Resuma esta postagem com: