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.

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.
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.
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.
Passo 4) Para criar o método, selecione Sim na próxima caixa de diálogo.
Passo 5) Após o programa ter sido gerado e executado, verifique o programa no método recém-criado. Assim, um BAPI é criado.
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.





