Baixe o app para aproveitar ainda mais
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!
Compartilhar