Vous êtes sur la page 1sur 8

Implementando BADI

Um dos novos recursos disponibilizados pela SAP para substituir as user_exits (exits em geral),
e que tem tipo boa aceitação ultimamente são as BADIs. Bussiness Additions ou adições de
código ao negócio se transformou na sensação do momento para customização de código ABAP
aos códigos standard disponibilizados pela SAP.

Uma das BADIs mais conhecidas é a do XML é a CL_NFE_PRINT. Não há empresa que utilize
nota fiscal eletrônica que não tenha feito algum ajuste dentro desta BADI para customizar ao
seu negócio.
Porque usar BADI?

No Brasil existem diversas regras de negócios sendo criadas a todo instante principalmente
pela area fiscal e que não são ajustadas no mesmo ritmo pela SAP em seus programas. Para
isso, a SAP disponibiliza em seus programas meios para que o cliente SAP possa incluir suas
customizações ao programa standard sem que quando for lançada uma nova versão daquele
programa venha ser substituido. BADIs nada mais são do que uma nova e mais estruturada
forma de exit, agora incluindo classes e metódos.

Seguindo os passos:
1 - Escolher a BADI na transação SE18;

2 - Implementá-la (a BADI sem implementação não tem funcionalidade alguma).


3 - Deverá ser dado um nome e descrição (Colocar um Z antes do nome original da BADI
facilita)

4 - Na proxima tela ele pedirá para criar uma nova ampliação.


A BADI poderá ter varias ampliações de acordo com a necessidade de regra de negócio a ser
incluida.

5 - Acessar a SE19; entrar com a implementação Z criada para a BADI.

Tutorial 2

Implementar BADI - Exemplo MIGO


Implementar BADI (Exemplo: MIGO)

Acessar a transação SE18

Entrar com o nome da BADI e clicar em Exibir.

Menu Implementação  Criar


Entrar com o nome da Implementação e clicar em OK.

Entrar com uma Descrição, clicar na aba (guia) Interface

Clicar duas vezes sobre o método desejado. Exemplo: MB_DOCUMENT_UPDATE


Será solicitado o Pacote e uma Request.
Aparecerá uma mensagem informativa.

Será solicitada a escolha ou criação de uma Enhancement.

(Sugiro criar um novo para sua necessidade.) Clicar no botão Create Enhancement
Implementation

Entre com o nome do Enhancement e com uma Descrição. Clique em ENTER.

Será solicitado o Pacote e uma Request.


Escolha o Enhancement criado, marcando sua linha e clique em ENTER.

Aparecerá uma tela do editor de programas com a definição do método desejado para
que você entre com sua codificação.

Obs.: Perceba quais parâmetros você tem disponível para trabalhar, ou seja, quais os
dados (estruturas e/ou tabelas) você tem para seu processamento. No nosso exemplo
temos:

Caso não tenha certeza que este é o método adequado para seu processamento, coloque
um BREAK com seu usuário.

Tutorial 3

Descobrindo e implementando
BADIs
BY FLÁVIO FURLAN · JANUARY 5, 2009

Compartilhe!

Com as versões mais novas de WAS, a SAP vem utilizando cada vez mais
novas técnicas 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 têm uma série de vantagens, como


por exemplo:

 Reutilização;
 Implementações independentes;
 Possibilidade de ativação de desativação;
 Fácil localização;
 Maior “oferta” comparado com as user-exits;
Meu objetivo nesse post é focar no método mais fácil de localização dos
business add-ins.

O que é uma BADI? Um Pouco de


Teoria
As BADIs são baseadas nas Interfaces. Sabemos que as classes em ABAP são
formadas necessariamente por duas partes, DEFINITION e
IMPLEMENTATION, onde na definition fazemos a declaração (definição)
dos atributos e dos métodos (nomes e assinaturas). E na implementation,
implementamos (ou codificamos) os métodos descritos na definition.

As interfaces são como classes que possuem somente a definition, ou seja, ela
define como serão as chamadas dos métodos, mas não os implementa. Não é
possivel instanciar (ou criar um objeto) de uma interface.

Para implementar uma interface, temos necessariamente que criar uma classe
que a implementa.
Transações de BADIs. Aplicando a
Teoria
Voltando para as BADIs, estas são formadas por duas partes, a BADI
Definition e a BADI Implementation. Na transação SE18, temos a definição
da BADI, ou seja, como os métodos da BADI serão chamados. Esta definição
nada mais é do que uma interface global, com a nomenclatura
IF_<BADI_NAME>.

Já na transação SE19, temos a implementação da BADI. Ou seja, nada mais é


do que uma classe global que implementa a interface IF_<BADI_NAME>.

Então, num determinado ponto do código, no nosso caso um código standard,


o programador da SAP coloca uma chamada para um método dessa BADI. Aí
o runtime vai executar TODAS as implementações ativas para aquela BADI.

Pulo do Gato! Como achar BADIs


A dica vem agora. Vamos supor que você precise implementar alguma regra
de negócio na transação MIGO e você precisa localizar um possível add-in
que melhor atenda a sua necessidade, como fazer isso de uma maneira rápida
e direta?

Simples. TODAS, eu disse TODAS as chamadas de BADI, são precedidas


pela chamada do seguinte método:

CL_EXITHANDLER=>GET_INSTANCE

EDITADO: posteriormente foi introduzido o comando GET BADI (que


também pode ser pesquisado), que não necessita a chamada do método
GET_INSTANCE
Esse método estático (veja a forma da chamada usando “=>”) irá retornar uma
referência a um objeto que representa a add-in em questão.

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 variável de referência, você irá para a declaração
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, rápido e indolor!