<?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, 02 May 2012 22:30:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</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><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/"></a><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="horizontal" data-url="http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/" data-text="Descobrindo e implementando BADIs"></a><a class="a2a_button_google_plusone addtoany_special_service" data-href="http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/"></a><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>

