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.

  • 🧩 Definição Essencial: Um Business Add-In é um recurso adicional, semelhante a uma saída de cliente, que adiciona funcionalidades personalizadas a recursos padrão. SAP sem modificá-lo.
  • 🧱 Orientação a objetos: Uma BADI define uma interface, e o aprimoramento reside em uma classe que a implementa, em vez de em um include reservado.
  • 🔁 Implementações múltiplas: Ao contrário de uma saída de cliente, um BADI pode ser implementado diversas vezes, o que se adapta a soluções setoriais e versões para cada país.
  • 🔓 Upgrade Seguro: Um BADI não precisa de nada SAP O Registro de Alterações de Software não é afetado por uma atualização de versão.
  • 🛠️ Definição e implementação: A definição e a interface são criadas no SE18, e a implementação com sua classe é criada no SE19.
  • 🆕 Clássicos e Novos: O BADI clássico é baseado em aprimoramentos, e o novo BADI do kernel introduzido no NetWeaver adiciona filtros, classes de fallback e melhor desempenho.

O que é BADI em SAP ABAP

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

Exemplo de um 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.

Definir e implementar um BADI

Passo 2) Criar a implementação BADI: Transação SE19

Definir e implementar um BADI

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.

Perguntas Frequentes

SE18 é o Construtor de BADI, onde a definição e sua interface são criadas. SE19 é o Construtor de Implementação, onde uma classe de implementação é associada a essa definição. Um define o gancho, o outro o implementa.

Uma BADI de uso múltiplo permite mais de uma implementação ativa simultaneamente, e todas elas são executadas quando o método é chamado. Uma BADI de uso único permite apenas uma implementação ativa.

Defina um ponto de interrupção em CL_EXITHANDLER=>GET_INSTANCE, execute a transação e leia o nome do BADI a partir do parâmetro EXIT_NAME. Para novos BADIs, pesquise os pontos de extensão do programa no Sistema de Informações do Repositório.

Sim. Os assistentes de IA nas ferramentas de desenvolvimento ABAP elaboram a classe de implementação, o corpo do método e a lógica de filtro a partir de uma descrição do requisito. O desenvolvedor ainda ativa a implementação no SE19 e a testa.

Os consultores de IA examinam o programa padrão e relatam quais opções de aprimoramento existem, recomendando então o novo BADI em um ponto de aprimoramento para novo trabalho, keeping O BADI clássico, onde apenas essa opção é oferecida.

Resuma esta postagem com: