Вы находитесь на странице: 1из 3

Descobrindo e implementando BADIs

Com as verses mais novas de WAS, a SAP vem utilizando cada vez mais
novas tcnicas de enhancements e modifications. Uma delas a BADI.
BADI significa Business Add-Ins. O conceito parecido com o do plug-ins do
Firefox, ou seja, uma maneira de estender a funcionalidade original do
sistema, sem afetar o funcionamento do mesmo.

Comparando com as user-exits, as BADIs tm uma srie de vantagens, como
por exemplo:
Reutilizao;
Implementaes independentes;
Possibilidade de ativao de desativao;
Fcil localizao;
Maior oferta comparado com as user-exits;
Meu objetivo nesse post focar no mtodo mais fcil de localizao dos
business add-ins.
O que uma BADI? Um Pouco de Teoria
As BADIs so baseadas nas Interfaces. Sabemos que as classes em ABAP so
formadas necessariamente por duas partes, DEFINITION e
IMPLEMENTATION, onde na definition fazemos a declarao (definio) dos
atributos e dos mtodos (nomes e assinaturas). E na implementation,
implementamos (ou codificamos) os mtodos descritos na definition.
As interfaces so como classes que possuem somente a definition, ou seja, ela
define como sero as chamadas dos mtodos, mas no os implementa. No
possivel instanciar (ou criar um objeto) de uma interface.
Para implementar uma interface, temos necessariamente que criar uma classe
que a implementa.
Transaes de BADIs. Aplicando a Teoria
Voltando para as BADIs, estas so formadas por duas partes, a BADI Definition
e a BADI Implementation. Na transao SE18, temos a definio da BADI, ou
seja, como os mtodos da BADI sero chamados. Esta definio nada mais
do que uma interface global, com a nomenclatura IF_<BADI_NAME>.
J na transao SE19, temos a implementao da BADI. Ou seja, nada mais
do que uma classe global que implementa a interface IF_<BADI_NAME>.
Ento, num determinado ponto do cdigo, no nosso caso um cdigo standard, o
programador da SAP coloca uma chamada para um mtodo dessa BADI. A o
runtime vai executar TODAS as implementaes ativas para aquela BADI.
Pulo do Gato! Como achar BADIs
A dica vem agora. Vamos supor que voc precise implementar alguma regra de
negcio na transao MIGO e voc precisa localizar um possvel add-in que
melhor atenda a sua necessidade, como fazer isso de uma maneira rpida e
direta?
Simples. TODAS, eu disse TODAS as chamadas de BADI, so precedidas pela
chamada do seguinte mtodo:
CL_EXITHANDLER=>GET_INSTANCE
EDI TADO: posteriormente foi introduzido o comando GET BADI (que tambm pode
ser pesquisado), que no necessita a chamada do mtodo GET_I NSTANCE
Esse mtodo esttico (veja a forma da chamada usando =>) ir retornar uma
referncia a um objeto que representa a add-in em questo.
No programa da MIGO, voc pede para procurar por
CL_EXITHANDLER=>GET_INSTANCE e a voc ter todas as chamadas de
BADI da MIGO.
Dando o duplo clique nessa varivel de referncia, voc ir para a declarao
da mesma, algo como
DATA: r_ref TYPE REF TO IF_<BADI_NAME>.
Sacaram? O nome da business add-in que voc precisa implementar a que
est em vermelho! Simples, rpido e indolor!

Вам также может понравиться