<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ABAP101 &#187; Badi</title>
	<atom:link href="http://abap101.com/category/badi/feed/" rel="self" type="application/rss+xml" />
	<link>http://abap101.com</link>
	<description>ABAP &#124; Open Source &#124; Agile &#124; Programação</description>
	<lastBuildDate>Wed, 01 Feb 2012 01:27:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Descobrindo e implementando BADIs</title>
		<link>http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/</link>
		<comments>http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 02:32:44 +0000</pubDate>
		<dc:creator>Flávio Furlan</dc:creator>
				<category><![CDATA[Badi]]></category>
		<category><![CDATA[Receita ABAP]]></category>

		<guid isPermaLink="false">http://abap101.wordpress.com/?p=4</guid>
		<description><![CDATA[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, a BADI é uma maneira de extender a funcionalidade original do sistema, sem afetar [...]]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;counturl=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;count=horizontal&amp;text=Descobrindo%20e%20implementando%20BADIs" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;counturl=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;count=horizontal&amp;text=Descobrindo%20e%20implementando%20BADIs" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_google_gmail" href="http://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;linkname=Descobrindo%20e%20implementando%20BADIs" title="Google Gmail" rel="nofollow" target="_blank"><img src="http://abap101.com/wp-content/plugins/add-to-any/icons/gmail.png" width="16" height="16" alt="Google Gmail"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;linkname=Descobrindo%20e%20implementando%20BADIs" title="WordPress" rel="nofollow" target="_blank"><img src="http://abap101.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_blogger_post" href="http://www.addtoany.com/add_to/blogger_post?linkurl=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;linkname=Descobrindo%20e%20implementando%20BADIs" title="Blogger Post" rel="nofollow" target="_blank"><img src="http://abap101.com/wp-content/plugins/add-to-any/icons/blogger.png" width="16" height="16" alt="Blogger Post"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fabap101.com%2F2009%2F01%2F05%2Fdescobrindo-e-implementando-badis%2F&amp;title=Descobrindo%20e%20implementando%20BADIs" id="wpa2a_2"><img src="http://abap101.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p><p>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.</p>
<p>BADI significa Business Add-Ins. O conceito é parecido com o do plug-ins do Firefox, ou seja, a BADI é uma maneira de extender a funcionalidade original do sistema, sem afetar o funcionamento do mesmo.</p>
<p>Comparando com as user-exits, as BADIs têm uma série de vantagens, como por exemplo:</p>
<ul>
<li>Reutilização;</li>
<li>Implementações independêntes;</li>
<li>Possibilidade de ativação de desativação;</li>
<li>Fácil localização;</li>
<li>Maior &#8220;oferta&#8221; comparado com as user-exits;</li>
</ul>
<p>Meu objetivo nesse post é focar no método mais fácil de localização de BADIs.</p>
<p><strong><span id="more-4"></span>Um Pouco de Teoria</strong></p>
<p>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.</p>
<p>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.</p>
<p>Para implementar uma interface, temos necessariamente que criar uma classe que a implementa.</p>
<p><strong>Aplicando a Teoria</strong></p>
<p>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_&lt;BADI_NAME&gt;.</p>
<p>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_&lt;BADI_NAME&gt;.</p>
<p>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.</p>
<p><strong>Pulo do Gato!</strong></p>
<p>A dica vem agora. Vamos supor que você precise implementar alguma regra de negócio na transação MIGO e você precisa localizar a BADI que melhor atenda a sua necessidade, como fazer isso de uma maneira rápida e direta?</p>
<p>Simples. TODAS, eu disse TODAS as chamadas de BADI, são precedidas pela chamada do seguinte método:</p>
<blockquote><p>CL_EXITHANDLER=&gt;GET_INSTANCE</p></blockquote>
<p>Esse método estático (veja a forma da chamada usando &#8220;=&gt;&#8221;) irá retornar uma referência a um objeto que representa a BADI em questão.</p>
<p>No programa da MIGO, você pede para procurar por &#8220;CL_EXITHANDLER=&gt;GET_INSTANCE&#8221; e aí você terá todas as chamadas de BADI da MIGO.</p>
<p>Dando o duplo clique nessa variável de referência, você irá para a declaração da mesma, algo como</p>
<blockquote><p>DATA: r_ref TYPE REF TO IF_&lt;<strong><span style="color: #ff0000;">BADI_NAME</span></strong>&gt;.</p></blockquote>
<p>Sacaram? O nome da BADI que você precisa implementar é a que está em vermelho! Simples, rápido e indolor!</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

