Buscar

400297052-BAdi-implementacao-tutorial-docx

Prévia do material em texto

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). 
http://3.bp.blogspot.com/-e0tvM5_t2Yk/TcgD15uttaI/AAAAAAAAAJg/BCFfvIc0Ca8/s1600/Magical+Snap+-+2011.05.09+11.07+-+003.png
http://4.bp.blogspot.com/-vvfVaZy_5to/TcgDlBZGb7I/AAAAAAAAAJc/FQs0uTX6Bfg/s1600/Magical+Snap+-+2011.05.09+11.07+-+002.png
 
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 
http://4.bp.blogspot.com/-tDtjeZrc5tg/TcgEYvuwSXI/AAAAAAAAAJo/PXtH30xf1Dk/s1600/Magical+Snap+-+2011.05.09+12.15+-+005.png
http://1.bp.blogspot.com/-8PU3zuZax04/TqWPnhU_dpI/AAAAAAAAEb4/HipiIC99dLY/s1600/image003-754404.png
 
 
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. 
http://2.bp.blogspot.com/-tE8qTnd73j4/TqWPn8RLPwI/AAAAAAAAEcE/ioLxtrJvrvo/s1600/image009-755063.png
http://3.bp.blogspot.com/-qrF2qRRieG8/TqWPoGjfyJI/AAAAAAAAEcM/fMdtEeD0cE4/s1600/image011-756237.png
http://3.bp.blogspot.com/-F0XC23C538U/TqWPoW2-aYI/AAAAAAAAEcg/QB-eMD37UAA/s1600/image013-756948.png
 
 
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. 
 
http://2.bp.blogspot.com/-qhORnlHbR9w/TqWPo_h7NtI/AAAAAAAAEco/GXnk1L0QtQg/s1600/image015-759150.png
http://1.bp.blogspot.com/-o5yDlqPtr-8/TqWPo3HOV8I/AAAAAAAAEc0/uEhxYEAnQnw/s1600/image028-759850.png
http://4.bp.blogspot.com/-49XzFsE5jfw/TqWPpJYYw2I/AAAAAAAAEdA/jNHpJO9an5A/s1600/image029-760853.png
http://2.bp.blogspot.com/-qsVwWHf4hmU/TqWPpRUdwwI/AAAAAAAAEdM/iwQjr1wq88Y/s1600/image030-761899.png
http://2.bp.blogspot.com/-qhORnlHbR9w/TqWPo_h7NtI/AAAAAAAAEco/GXnk1L0QtQg/s1600/image015-759150.png
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. 
http://abap101.com/author/furlan/
http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/
http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/
https://www.addtoany.com/share_save#url=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&title=Descobrindo%20e%20implementando%20BADIs&description=Aprenda%20o%20que%20s%C3%A3o%2C%20como%20descobrir%2C%20implementar%20e%20usar%20BADIs%20em%20ABAP.%20Em%20apena
http://3.bp.blogspot.com/-ZEyEi6yGvdg/TqWPp7hQpEI/AAAAAAAAEdY/Np8f3rCCRBo/s1600/image031-763068.png
http://3.bp.blogspot.com/-lcHZRC52UQs/TqWPqEqzX9I/AAAAAAAAEdk/hisg_VWB1Fk/s1600/image032-764083.png
http://4.bp.blogspot.com/-mAfv7yQfKPw/TqWPqeF350I/AAAAAAAAEd0/u14MTTagnOk/s1600/image033-765479.png
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. 
http://help.sap.com/saphelp_nw04/helpdata/en/e6/d54d3c596f0b26e10000000a11402f/content.htm
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 nessavariá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!

Continue navegando