O que é BADI em SAP ABAP?
⚡ Resumo Inteligente
BADI em SAP ABAP significa Business Add-In, um aprimoramento orientado a objetos que integra lógica personalizada a sistemas padrão. SAP Funcionalidade. Esta página explica o que é um BADI, suas características, os tipos clássicos e novos, o fluxo de trabalho SE18 e SE19 e como ele se compara às exits.

O que é BADI?
BADI significa Business Add IAssim como as saídas de cliente, os BADIs ajudam a integrar melhorias personalizadas a SAP funcionalidade. Exemplo de BADI: Na transação CAT2 – Entrada de folha de ponto, o RH deseja incluir um reconhecimento interativo de que o envio consciente de dados incorretos é motivo para demissão. Isso pode ser alcançado usando BADI
A diferença em relação a uma saída clássica é técnica. Um BADI é construído sobre objetos ABAP, portanto, o programa padrão chama um método de interface e o código personalizado reside em uma classe que implementa esse método. É por isso que um BADI é frequentemente descrito como o sucessor orientado a objetos da saída clássica. saída do cliente.
Diferenciais
- BADIs são orientados a objetos
- Eles podem ser implementados várias vezes
- Não requer SAP Software Alterar registro
- Nenhum efeito na liberação atualizada no funcionamento do BADI
Essas quatro características explicam por quê? SAP Recomenda-se o uso de um BADI em vez de um exit clássico. Como a melhoria reside em uma classe separada, ela permanece inalterada após uma atualização e, como um BADI pode ser definido como de uso múltiplo, várias equipes podem aprimorar o mesmo ponto sem sobrescrever os trabalhos umas das outras.
Tipos de BADI
SAP Oferece duas gerações de Business Add-Ins. O BADI clássico é a versão baseada em aprimoramentos descrita acima, e o novo BADI, introduzido com SAP O NetWeaver faz parte do Enhancement Framework e é mais rápido e flexível.
| Critérios | Clássico BADI | Novo BADI (Kernel) |
|---|---|---|
| Mantido em | SE18 e SE19 | O Construtor de Aprimoramentos dentro de um local de aprimoramento |
| Filtros | Valores de filtro simples | Combinações de filtros com expressões lógicas |
| Cair pra trás | Não disponível | Uma classe de fallback padrão é executada quando nenhuma implementação está ativa. |
| Instanciação | CL_EXITHANDLER=>GET_INSTANCE | As declarações GET BADI e CALL BADI |
| Desempenho | Mais lento, objeto criado a cada chamada | Mais rápido, gerenciado pelo kernel. |
Ambas as gerações são encontradas e implementadas de maneira semelhante, conforme descrito a seguir.
Como definir e implementar um BADI
Isso envolveu três etapas
Passo 1) Criação da definição BADI e sua interface: Transação SE18.
Passo 2) Criar a implementação BADI: Transação SE19
Passo 3) Defina uma classe que implemente a interface: Durante a criação da implementação, também é criada uma classe para implementar a interface do aprimoramento.
Em código, o programa padrão alcança a implementação através do manipulador de saída. O padrão clássico instancia a referência BADI e então chama o método da interface.
* Reference typed with the BADI interface DATA: lo_badi TYPE REF TO zif_ex_badi_demo. * Get the active implementation(s) CALL METHOD cl_exithandler=>get_instance CHANGING instance = lo_badi. * Call the interface method that carries the custom logic CALL METHOD lo_badi->check_data EXPORTING is_input = ls_input.
💡 Dica: Uma nova BADI de kernel é chamada de forma mais simples com GET BADI e CALL BADI, que também lidam com os valores de filtro automaticamente. Use a transação SE18 para verificar se o ponto de extensão é uma BADI clássica ou uma nova BADI antes de escrever a chamada.
⚠️ Aviso: A transação SE18 contém a definição e a interface, enquanto a SE19 contém a implementação. Criar a implementação na SE18 ou a definição na SE19 é um erro comum que deixa o BADI inativo.
BADI vs Saída do Cliente vs Saída do Usuário
Todas as três técnicas melhoram o padrão. SAPmas diferem em tecnologia e flexibilidade. A tabela abaixo coloca o BADI ao lado dos dois mais antigos. técnicas de saída.
| Critérios | Saída do usuário | Saída do cliente | BADI |
|---|---|---|---|
| Inovadora | Sub-rotina (FORM) | Módulo de função, tela ou menu | Interface e classe orientadas a objetos |
| Objetivo | Somente o módulo SD | Todos os módulos | Todos os módulos |
| Número de implementações | completa | completa | Múltiplo, quando definido como uso múltiplo. |
| Mantido com | Edição direta do include | SMOD e CMOD | SE18 e SE19 |
| Upgrade segura | Verificado com SPAU | Sim | Sim |
A regra prática é usar um BADI sempre que existir um, pois ele é orientado a objetos, seguro para atualizações e pode ser implementado mais de uma vez.



