<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkQMQ309eSp7ImA9WhRaFEk.&quot;"><id>tag:blogger.com,1999:blog-5565456114569803252</id><updated>2012-02-16T16:59:42.361-08:00</updated><category term="sap" /><category term="abap" /><category term="webdynpro" /><category term="apostila web dynpro minisap ecc dynpro bsp" /><category term="desenvolvimento web" /><title>Web Dynpro Brasil | Tutoriais e Dicas</title><subtitle type="html">Web Dynpro ABAP é uma tecnologia de interface gráfica que utiliza os poderosos recursos do SAP Netweaver Application Server ABAP em uma plataforma de apresentação independente de sistema e baseada em browser, que pretende suceder o antigo DYNamic PROgramming, atual tecnologia de Interface baseada no SAP GUI.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://webdynprobrasil.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://webdynprobrasil.blogspot.com/" /><author><name>Flavio Rasseli</name><uri>http://www.blogger.com/profile/07781002108317110040</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_wVN4aRMc2ZQ/S2UKzM9i4QI/AAAAAAAAAfo/ubyia4YsKY4/S220/03012010954.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/WebDynproBrasil" /><feedburner:info uri="webdynprobrasil" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D0MHRno7eyp7ImA9WhZSEkU.&quot;"><id>tag:blogger.com,1999:blog-5565456114569803252.post-4412427076985876518</id><published>2011-03-27T21:07:00.000-07:00</published><updated>2011-03-27T21:10:37.403-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-27T21:10:37.403-07:00</app:edited><title>Primeiros passos: usando o Context</title><content type="html">&lt;div&gt;O Context desempenha um papel muito importante na implementação do padrão MVC do Web Dynpro, é através do dele que podemos criar,&amp;nbsp;manter,&amp;nbsp;compartilhar e segregar os dados entre os diferentes componentes deste modelo. Entenda mais os conceitos por trás do &lt;a href="http://webdynprobrasil.blogspot.com/2010/02/abap-web-dynpro-fundamentos.html"&gt;Web Dynpro aqui&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Para entender esses conceitos na prática, façamos um primeiro experimento usando o Context.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;1. Criando um novo Componente&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Acesse a transação SE80, o nosso ponto de partida:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ortprS5ahaI/TY_vh3Ix6qI/AAAAAAAABC4/Tn5eNkI7l9A/s1600/00_se80.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="502" src="http://3.bp.blogspot.com/-ortprS5ahaI/TY_vh3Ix6qI/AAAAAAAABC4/Tn5eNkI7l9A/s640/00_se80.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Com a opção Web Dynpro Comp. / Intf. selecionada, entre com um nome para o novo Componente, e então pressione Enter:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-33pqEzYF_kk/TY_v9FtD6EI/AAAAAAAABC8/OGsMNvFQSOg/s1600/01_criar_componente_zwdc_tutorial1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-33pqEzYF_kk/TY_v9FtD6EI/AAAAAAAABC8/OGsMNvFQSOg/s1600/01_criar_componente_zwdc_tutorial1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Confirme a criação e preencha as informações do novo componente: &amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-LlB7lSk-o84/TY_wNLRsk2I/AAAAAAAABDA/DI7RsRtr2-E/s1600/03_preencher_dados_do_componente.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-LlB7lSk-o84/TY_wNLRsk2I/AAAAAAAABDA/DI7RsRtr2-E/s1600/03_preencher_dados_do_componente.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;No meu caso, estou usando o pacote para objetos locais $TMP. Se você clicar no botão Local Object, esse é pacote onde seu objeto será colocado.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-md3ELbaRNVI/TY_waQWAh8I/AAAAAAAABDE/7vZVMZOmf9w/s1600/04_preencher_pacote.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-md3ELbaRNVI/TY_waQWAh8I/AAAAAAAABDE/7vZVMZOmf9w/s1600/04_preencher_pacote.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Note que será criado um novo componente, com uma View chamada MAIN e uma nova Window, com o mesmo nome do componente.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-2e098V59Bbw/TY_wvqcnsTI/AAAAAAAABDI/XEqgjgdjXYQ/s1600/05_componente_criado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="502" src="http://1.bp.blogspot.com/-2e098V59Bbw/TY_wvqcnsTI/AAAAAAAABDI/XEqgjgdjXYQ/s640/05_componente_criado.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Ao entrar (duplo clique) no Component Controller, que é um controller padrão existente em todo componente Web Dynpro, podemos ver seu Context. O Context é representado por uma estrutura em árvore, o que facilita sua manipulação e sua visualização, onde podemos definir estruturas complexas de dados de forma declarativa. A programação declarativa é um dos grandes avanços do Web Dynpro em relação as tecnologias de interface gráfica de usuário (GUI) usadas anteriormente pela SAP, pois facilita o entendimento enquanto aumenta a produtividade. &lt;a href="http://bspbrasil.blogspot.com/2011/03/entendendo-as-diferencas-entre-bsp-e.html"&gt;Diferentemente do BSP&lt;/a&gt;, o Web Dynpro não permite que o programador gerencie o detalhe de implementação da interface gráfica, tornando o grande foco, e&amp;nbsp;consequentemente&amp;nbsp;a maior parte do esforço, de uma aplicação Web Dynpro o planejamento do fluxo de trabalho e a correta manipulação dos dados, para alcançar o objetivo esperado. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NfG3thl-cF4/TY_xDHz174I/AAAAAAAABDM/IRgR2l1fhuA/s1600/06_comp_controller.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="502" src="http://1.bp.blogspot.com/-NfG3thl-cF4/TY_xDHz174I/AAAAAAAABDM/IRgR2l1fhuA/s640/06_comp_controller.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Vamos adicionar um nó na árvore do Context do nosso Component Controller. Clique com o botão direito na raiz do context e escolha Create &amp;gt; Node:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-88APRQnrobU/TY_z1BnLdSI/AAAAAAAABDQ/sqEZrTJuOfg/s1600/07_context_create_node.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="506" src="http://2.bp.blogspot.com/-88APRQnrobU/TY_z1BnLdSI/AAAAAAAABDQ/sqEZrTJuOfg/s640/07_context_create_node.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Entre com um nome para o nó, aceite as outras opções sem alterá-las por enquanto.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-NR2-uU0C4eY/TY_0OtGt0tI/AAAAAAAABDU/BQjli45SfnA/s1600/08_preencher_dados_do_node.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-NR2-uU0C4eY/TY_0OtGt0tI/AAAAAAAABDU/BQjli45SfnA/s1600/08_preencher_dados_do_node.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Vamos criar agora um atributo para esse nó. Pode-se imaginar os atributos como folhas de um nó, sendo que o nó é uma ramificação de um nó pai. O nó mais acima na hierarquia é chamado de ROOTNODE no Web Dynpro.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-xXdL1wGAIbI/TY_0jS0q7qI/AAAAAAAABDY/737IUkjSbWE/s1600/09_node_criado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="532" src="http://3.bp.blogspot.com/-xXdL1wGAIbI/TY_0jS0q7qI/AAAAAAAABDY/737IUkjSbWE/s640/09_node_criado.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Clique com o botão direito agora no nó recém criado e selecione Create &amp;gt; Attribute:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-HGagrmg1m2E/TY_1e4ZxAFI/AAAAAAAABDc/i6hG0oREPh0/s1600/10_create_node_attribute.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="558" src="http://1.bp.blogspot.com/-HGagrmg1m2E/TY_1e4ZxAFI/AAAAAAAABDc/i6hG0oREPh0/s640/10_create_node_attribute.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Preencha o nome do atributo e selecione um tipo. Perceba que nesse ponto é possível usar qualquer tipo ABAP presente no dicionário de dados. Vamos usar o tipo STRING:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-rfgSTtfYdj8/TY_12XUa0OI/AAAAAAAABDg/gjL66RtGhfo/s1600/11_preencher_dados_do_atributo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-rfgSTtfYdj8/TY_12XUa0OI/AAAAAAAABDg/gjL66RtGhfo/s1600/11_preencher_dados_do_atributo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Agora o seu context deverá estar assim:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wOLZ44h5bQI/TY_2BEhhpLI/AAAAAAAABDk/ifcfBVQyPG4/s1600/12_atributo_criado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="567" src="http://1.bp.blogspot.com/-wOLZ44h5bQI/TY_2BEhhpLI/AAAAAAAABDk/ifcfBVQyPG4/s640/12_atributo_criado.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Vamos agora, criar uma nova View, que será chamada pela View MAIN, formando um fluxo simples:&amp;nbsp;&lt;/div&gt;&lt;div&gt;Na árvore de objetos, clique em Views com o botão direito e escolha Create &amp;gt; View.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-s_e_-LSfmCk/TY_2181LT1I/AAAAAAAABDo/rNGNgDkIShM/s1600/13_create_view.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-s_e_-LSfmCk/TY_2181LT1I/AAAAAAAABDo/rNGNgDkIShM/s1600/13_create_view.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Dê o nome RESULT para essa View e entre com uma descrição:&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-31thugZv3XM/TY_3GoqER5I/AAAAAAAABDw/qp3XMC_0-j8/s1600/14_preencher_dados_view_result.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" src="http://2.bp.blogspot.com/-31thugZv3XM/TY_3GoqER5I/AAAAAAAABDw/qp3XMC_0-j8/s640/14_preencher_dados_view_result.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Com a view RESULT criada, salve e vá até a aba Context desta View:&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-c5SEc1DD08g/TY_3ZsW-USI/AAAAAAAABD0/nDpdfI_6azM/s1600/15_view_result_criada.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="468" src="http://1.bp.blogspot.com/-c5SEc1DD08g/TY_3ZsW-USI/AAAAAAAABD0/nDpdfI_6azM/s640/15_view_result_criada.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Você vai notar que o Context do Component Controller já estará automaticamente disponível para a nova View.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jVx4Czy6QdE/TY_3puSDFPI/AAAAAAAABD4/mEGbZqx7h4c/s1600/16_view_result_context.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="468" src="http://4.bp.blogspot.com/-jVx4Czy6QdE/TY_3puSDFPI/AAAAAAAABD4/mEGbZqx7h4c/s640/16_view_result_context.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Para usá-lo efetivamente, é preciso que seja feito o Context Mapping, que pode ser feito arrastando o nó NODE_GLOBAL_DATA do Component Controller para a raiz do Context da View RESULT:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-vu_VYc0m0pI/TY_4O6X_RKI/AAAAAAAABD8/0GJlutfayts/s1600/17_view_result_context_arrastar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="468" src="http://4.bp.blogspot.com/-vu_VYc0m0pI/TY_4O6X_RKI/AAAAAAAABD8/0GJlutfayts/s640/17_view_result_context_arrastar.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Salve a View RESULT. Repita essa mesma operação para a View MAIN.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-fCm_3BGR7Jc/TY_4a3f4BGI/AAAAAAAABEA/zbUMva0AfXc/s1600/18_view_main_context_arrastar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="469" src="http://3.bp.blogspot.com/-fCm_3BGR7Jc/TY_4a3f4BGI/AAAAAAAABEA/zbUMva0AfXc/s640/18_view_main_context_arrastar.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Desta forma, o nó NODE_GLOBAL_DATA está mapeado entre o Componete Controller a as duas Views do nosso componente. Isso garante que os dados deste nó sempre estejam sincronizados entre esses três elementos. Qualquer alteração feita em uma ponta afeta as outras duas igualmente.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Agora, na View MAIN, vamos criar elementos de interação com o usuário com base nos dados do Context:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Do lado direito do View Designer, na aba Layout da View, temos o Outline. Clique com o botão direito no elemento ROOTUIELEMENTCONTAINER e escolha Create Container Form:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-_NKn3VBz7ow/TY_5BgTYgOI/AAAAAAAABEE/jcyVIzr5lk0/s1600/19_view_main_create_container_form.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="516" src="http://1.bp.blogspot.com/-_NKn3VBz7ow/TY_5BgTYgOI/AAAAAAAABEE/jcyVIzr5lk0/s640/19_view_main_create_container_form.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Clique no botão Context:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-PRDIQSGbnHE/TY_5qFEr0DI/AAAAAAAABEI/z4_PktInVmA/s1600/20_create_container_form.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="424" src="http://1.bp.blogspot.com/-PRDIQSGbnHE/TY_5qFEr0DI/AAAAAAAABEI/z4_PktInVmA/s640/20_create_container_form.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Selecione o nó NODE_GLOBAL_DATA:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Fy97PptCLXY/TY_525aAh0I/AAAAAAAABEM/Fu7RkQHY71Y/s1600/21_selecionar_node.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Fy97PptCLXY/TY_525aAh0I/AAAAAAAABEM/Fu7RkQHY71Y/s1600/21_selecionar_node.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Você verá que todos os atributos, no caso apenas um, do nó foram mapeados em elementos de interface gráfica, e estes já serão automaticamente ligados (Data binding) ao respectivo atributo do nó.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-19hGftbBPxc/TY_6DB3C1mI/AAAAAAAABEQ/LXDTEVFUANc/s1600/22_confirmar_container_form.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="424" src="http://2.bp.blogspot.com/-19hGftbBPxc/TY_6DB3C1mI/AAAAAAAABEQ/LXDTEVFUANc/s640/22_confirmar_container_form.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Juntamente com o InputField gerado para o atributo USER_NAME, foi criado um Label. Selecione-o no Outline e modifique a propriedade Text. &amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XYxzY-y5CAw/TY_6ny2ik3I/AAAAAAAABEU/HYD0L9_5HlY/s1600/23_container_criado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="518" src="http://1.bp.blogspot.com/-XYxzY-y5CAw/TY_6ny2ik3I/AAAAAAAABEU/HYD0L9_5HlY/s640/23_container_criado.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Qse8grMvnvA/TY_7F3owOdI/AAAAAAAABEY/IFjfJI8eFOA/s1600/24_inserir_text_campo_usuario.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="604" src="http://3.bp.blogspot.com/-Qse8grMvnvA/TY_7F3owOdI/AAAAAAAABEY/IFjfJI8eFOA/s640/24_inserir_text_campo_usuario.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Salve e repita o processo para a View RESULT, porém agora selecione o tipo de Cell Editor TextView, ao invés de InputField:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-nB5OHdCq9SQ/TY_7i6dcg_I/AAAAAAAABEc/ehWAWY__WoQ/s1600/26_view_result_dados_container_form.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="428" src="http://3.bp.blogspot.com/-nB5OHdCq9SQ/TY_7i6dcg_I/AAAAAAAABEc/ehWAWY__WoQ/s640/26_view_result_dados_container_form.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Crie uma mensagem com o Label adicionado junto ao TextView:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3wtgcJESpUg/TY_7qKBVEyI/AAAAAAAABEg/Y15qPp1kuVQ/s1600/27_view_result_preencher_text.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="524" src="http://1.bp.blogspot.com/-3wtgcJESpUg/TY_7qKBVEyI/AAAAAAAABEg/Y15qPp1kuVQ/s640/27_view_result_preencher_text.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Agora, voltando a View MAIN, vamos adicionar um elemento Button a View. Desta vez, vamos arrastá-lo direto do painel de elementos a esquerda do View Designer. O elemento Button fica no painel Action:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8auSvZnucAw/TY_9mpjlBFI/AAAAAAAABEk/XMxFUrhJtps/s1600/28_button_enviar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="516" src="http://3.bp.blogspot.com/-8auSvZnucAw/TY_9mpjlBFI/AAAAAAAABEk/XMxFUrhJtps/s640/28_button_enviar.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Após adicionado, vamos entrar com um texto para o botão na propriedade Text.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Ainda na View Main, vamos até a aba Outbound Plugs para criar um plug que irá disparar os dados para a View RESULT:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-mM6077eChQE/TY__szkwQzI/AAAAAAAABEo/vMpjWheqVCk/s1600/29_view_main_outbound_plug.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="518" src="http://4.bp.blogspot.com/-mM6077eChQE/TY__szkwQzI/AAAAAAAABEo/vMpjWheqVCk/s640/29_view_main_outbound_plug.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Salve e vá até a View RESULT. Nesta View, devemos criar um Inbound Plug, para receber a ligação do Outbound Plug criado acima na View MAIN:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-UhPF2ZCKeZg/TZAATbKkaQI/AAAAAAAABEs/91Vn6kPRYg0/s1600/30_view_result_inbound_plug.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="520" src="http://1.bp.blogspot.com/-UhPF2ZCKeZg/TZAATbKkaQI/AAAAAAAABEs/91Vn6kPRYg0/s640/30_view_result_inbound_plug.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Note que ao criar um Inbound Plug, também é criado um método manipulador de evento para receber e tratar os dados deste plug. Salve a View RESULT e retorne para a MAIN.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;No elemento Button, junto as suas propriedades, você vai encontrar uma evento, que dará uma funcionalidade a esse botão. Vamos clicar no ícone ao lado do evento onAction:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-gFCGgodsDNM/TZABWu2rJUI/AAAAAAAABEw/09nFN0CmHgo/s1600/31_evento_on_action.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-gFCGgodsDNM/TZABWu2rJUI/AAAAAAAABEw/09nFN0CmHgo/s1600/31_evento_on_action.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Preencha os dados da nova Action a ser criada, slecionando o Outbound Plug que criamos anteriormente:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--9oVMAa5pI0/TZAB3pJMh-I/AAAAAAAABE0/Ddzpm6aenu4/s1600/32_create_action.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/--9oVMAa5pI0/TZAB3pJMh-I/AAAAAAAABE0/Ddzpm6aenu4/s1600/32_create_action.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Vá até a aba Actions e veja que para essa nova Action foi também criado um método manipulador de eventos.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-EeIMZ_NCdU4/TZACow3ZHGI/AAAAAAAABE4/q1wxsnJ7a20/s1600/33_action_criada.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" src="http://4.bp.blogspot.com/-EeIMZ_NCdU4/TZACow3ZHGI/AAAAAAAABE4/q1wxsnJ7a20/s640/33_action_criada.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Um duplo clique no Event Handler nos leva até o código ABAP do método.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-l9t3BZIrKZc/TZAC_7_9pCI/AAAAAAAABE8/5EsTTSUoxGQ/s1600/34_event_handler_method.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="326" src="http://4.bp.blogspot.com/-l9t3BZIrKZc/TZAC_7_9pCI/AAAAAAAABE8/5EsTTSUoxGQ/s640/34_event_handler_method.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Tudo que esse evento faz é chamar o método fire_to_result_plg() do objeto wd_this. O objeto wd_this é uma variável presente em todos os objetos Web Dynpro ABAP e contém uma referência para este objeto. Nesse caso, wd_this é uma referência para o View Controller local da View MAIN. O método fire_[nome_do_plug]_plg() é criado para cada Outbound Plug existente na View e serve para disparar qualquer que seja a ligação deste plug.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;O que faremos agora é criar a ligação entre o Outbound Plug TO_RESULT da View MAIN com o Inbound Plug FROM_MAIN da View RESULT. Para isso, dê um duplo clique na Window do seu Componente:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-vHtUYVlvFzM/TZAEgIgjtcI/AAAAAAAABFA/NYdUlL4XiA0/s1600/35_window.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" src="http://4.bp.blogspot.com/-vHtUYVlvFzM/TZAEgIgjtcI/AAAAAAAABFA/NYdUlL4XiA0/s640/35_window.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Atualmente, somente a View MAIN está adicionada a Window, para adicionar a View RESULT a Window, simplesmente arraste-a da árvore de objetos, a esquerda, para a árvore da Window, a direita:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-FrCUIh5Q8hg/TZAFOJgTbPI/AAAAAAAABFE/mSM84-a5wB0/s1600/36_view_result_para_window.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://1.bp.blogspot.com/-FrCUIh5Q8hg/TZAFOJgTbPI/AAAAAAAABFE/mSM84-a5wB0/s640/36_view_result_para_window.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Agora para criar um link entre os plugs, arraste o Outbound&amp;nbsp;Plug da view MAIN &amp;nbsp;para o Inbound Plug da View RESULT:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-McSKx9JcpPM/TZAFvEQ5GYI/AAAAAAAABFI/MtBhJZdHM-Y/s1600/37_link_entre_plugs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://3.bp.blogspot.com/-McSKx9JcpPM/TZAFvEQ5GYI/AAAAAAAABFI/MtBhJZdHM-Y/s640/37_link_entre_plugs.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Aceite os detalhes do Link de navegação:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5IzNmoBwV8I/TZAGOyHe0pI/AAAAAAAABFM/Z4Ah-hfuR94/s1600/37_window_com_link.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="194" src="http://1.bp.blogspot.com/-5IzNmoBwV8I/TZAGOyHe0pI/AAAAAAAABFM/Z4Ah-hfuR94/s640/37_window_com_link.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Tudo que precisamos para testar o componente agora é criar uma aplicação Web Dynpro:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Xn8SncNeyTw/TZAGmylLwnI/AAAAAAAABFQ/xcwn1-c7vx0/s1600/38_create_app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Xn8SncNeyTw/TZAGmylLwnI/AAAAAAAABFQ/xcwn1-c7vx0/s1600/38_create_app.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp;Preencha os dados:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-th2AaDP1vK8/TZAG6Dz4EKI/AAAAAAAABFU/sZdZQGH7a8E/s1600/39_app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="136" src="http://1.bp.blogspot.com/-th2AaDP1vK8/TZAG6Dz4EKI/AAAAAAAABFU/sZdZQGH7a8E/s640/39_app.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Salve e ative todos os objetos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Na hora de testar, não se esqueça do FQDN:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Q8xh52bAylY/TZAI-uGNYRI/AAAAAAAABFc/r0Ox8KGhz_s/s1600/41_preencher_user_name.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://4.bp.blogspot.com/-Q8xh52bAylY/TZAI-uGNYRI/AAAAAAAABFc/r0Ox8KGhz_s/s640/41_preencher_user_name.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Clique em Enviar!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-vSIGpvZMmxw/TZAI_KK0cpI/AAAAAAAABFg/JYvA5KlUO1I/s1600/42_result_view.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://1.bp.blogspot.com/-vSIGpvZMmxw/TZAI_KK0cpI/AAAAAAAABFg/JYvA5KlUO1I/s640/42_result_view.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Pronto! Agora você pode adicionar um plug para voltar a View MAIN e criar um novo botão na View RESULT para acionar esse Plug. Boa sorte! Até a próxima...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5565456114569803252-4412427076985876518?l=webdynprobrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TE8tvWiHxhcZZtU88_KLOQPaHjY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TE8tvWiHxhcZZtU88_KLOQPaHjY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TE8tvWiHxhcZZtU88_KLOQPaHjY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TE8tvWiHxhcZZtU88_KLOQPaHjY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDynproBrasil/~4/DNnC2sPYzpo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdynprobrasil.blogspot.com/feeds/4412427076985876518/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webdynprobrasil.blogspot.com/2011/03/primeiros-passos-usando-o-context.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5565456114569803252/posts/default/4412427076985876518?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5565456114569803252/posts/default/4412427076985876518?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDynproBrasil/~3/DNnC2sPYzpo/primeiros-passos-usando-o-context.html" title="Primeiros passos: usando o Context" /><author><name>Flavio Rasseli</name><uri>http://www.blogger.com/profile/07781002108317110040</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_wVN4aRMc2ZQ/S2UKzM9i4QI/AAAAAAAAAfo/ubyia4YsKY4/S220/03012010954.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-ortprS5ahaI/TY_vh3Ix6qI/AAAAAAAABC4/Tn5eNkI7l9A/s72-c/00_se80.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://webdynprobrasil.blogspot.com/2011/03/primeiros-passos-usando-o-context.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAFQHc6fyp7ImA9WhZTFEw.&quot;"><id>tag:blogger.com,1999:blog-5565456114569803252.post-2707911633302471012</id><published>2011-03-14T20:14:00.000-07:00</published><updated>2011-03-17T18:11:51.917-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-17T18:11:51.917-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="apostila web dynpro minisap ecc dynpro bsp" /><title>Tutorial: Instalando e configurando ambiente Web Dynpro ABAP</title><content type="html">&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: Arial, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: white; font-size: xx-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;Olá pessoal! Como estão?&lt;br /&gt;
&lt;br /&gt;
Fiquei impressionado e muito contente com o retorno que tive com os primeiros posts sobre WebDynpro aqui no Blogger. Depois de muito tempo e de muito trabalho, volto para dar mais uma contribuição. Vamos lá.&lt;br /&gt;
&lt;br /&gt;
Hoje vou demonstrar como poderemos instalar e configurar um ambiente de desenvolvimento para WebDynpro ABAP, versão 7.01.&lt;br /&gt;
&lt;br /&gt;
Com este ambiente poderemos criar e testar os vários recursos desta tecnologia SAP, bem como o uso da linguagem ABAP de forma "irrestrita". Eu coloco aspas nesta palavra, pois assim como acontecia nas versões do antigo MiniSAP, esta versão para desenvolvedores não tem qualquer transação dos módulos funcionais do ECC. Ela é uma instalação baseada no SAP Netweaver Web Application Sever ABAP 7.01, e acompanha várias ferramentas de performance e ajuste fino de programas e classes ABAP (&lt;i&gt;performance tunning&lt;/i&gt;), como irei mostrar em posts mais específicos.&amp;nbsp;Eis o que iremos precisar:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Mídias de instalação do Netweaver ABAP 7.01 SP3 Developer edition (&lt;a href="http://www.sdn.sap.com/irj/scn/downloads?rid=/library/uuid/70b58216-00e7-2c10-f6a9-c59f3a351b63"&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Computador com sistema operacional Windows XP SP2 ou superior (Vista, 2003/2008 Server, Vista ou Seven)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Java Runtime Environment 1.4.2 instalado no sistema de destino (para instalação) (&lt;a href="https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=j2re-1.4.2_19-oth-JPR@CDS-CDS_Developer"&gt;link&lt;/a&gt;)&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Descompactador de arquivos RAR, como WinRAR.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Se você tem um computador com mais de 3Gb de memória e um bom processador (qualquer dual core ou superior), eu recomendo fortemente utilizar uma máquina virtual para instalação do ambiente. Você poderá usar a &lt;a href="http://www.virtualbox.org/wiki/Downloads"&gt;Oracle Virtual Box&lt;/a&gt; ou o &lt;a href="http://www.microsoft.com/windows/virtual-pc/"&gt;MS Virtual PC&lt;/a&gt;. Se estiver usando um host Linux, como eu, uma boa opção é o &lt;a href="http://www.vmware.com/products/player/"&gt;VMWare Player,&lt;/a&gt;&amp;nbsp;é leve, funciona muito bem e é muito flexível.&lt;br /&gt;
&lt;br /&gt;
O download das mídias para instalação é dividido em dois arquivos, no formato RAR, de: 1,9Gb e 1,2Gb.&lt;br /&gt;
&lt;br /&gt;
Após os arquivos estarem devidamente descompactados no sistema de arquivos da máquina destino (deve estar formatado com NTFS), podemos iniciar o processo de configuração antes da instalação. Abra no seu navegador favorito o arquivo &lt;b&gt;&lt;i&gt;start.htm&lt;/i&gt;&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-lssFEouFt6U/TX-l2SdGErI/AAAAAAAAA_M/OnMwYbc-BFI/s1600/abap_01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="https://lh3.googleusercontent.com/-lssFEouFt6U/TX-l2SdGErI/AAAAAAAAA_M/OnMwYbc-BFI/s640/abap_01.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-I1TpYJqMI90/TX-mFGLt7fI/AAAAAAAAA_Q/4ktMjVd0P-s/s1600/abap_02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="544" src="https://lh5.googleusercontent.com/-I1TpYJqMI90/TX-mFGLt7fI/AAAAAAAAA_Q/4ktMjVd0P-s/s640/abap_02.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Vamos até a sessão System Requirements:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-Mm0yAcv2tZo/TX-mREf8mtI/AAAAAAAAA_U/taJ51EbcF-4/s1600/abap_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="544" src="https://lh4.googleusercontent.com/-Mm0yAcv2tZo/TX-mREf8mtI/AAAAAAAAA_U/taJ51EbcF-4/s640/abap_03.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Vamos revisar esses pontos antes de começar a instalação.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Seu sistema operacional deve ser Windows XP SP2 ou superior, eu estou usando uma VM com o Windows 7 Ultimate 32bit;&lt;/li&gt;
&lt;li&gt;O nome do seu computador (Computador &amp;gt; Propriedades &amp;gt; Nome do Computador) não deve exceder 13 caracteres;&lt;/li&gt;
&lt;li&gt;O sistema de arquivos com o qual você formatou o disco para instalação do Windows deve ser o NTFS (padrão);&lt;/li&gt;
&lt;li&gt;Deverá ter um navegador IE5.5 ou Firefox (qualquer versão acima do 1.0). Eu particularmente uso o Google Chrome;&lt;/li&gt;
&lt;li&gt;Pelo menos 1 Gb de memória RAM. 2 Gb é bastante razoável para esta instalação, mas se você não dispor de 2Gb, 1Gb é suficiente, sem muita espera;&lt;/li&gt;
&lt;li&gt;Pagefile: é o tamanho da memória Virtual do seu sistema. Eu recomendo utilizar, para uma instalação em sistema com 1Gb de memória, usar 6Gb (6144Mb) de memória Virtual. Isso ajuda bastante o App Server. Para 2Gb de memória RAM, você pode tranquilamente usar 4Gb de memória virtual (4096 Mb). Essa configuração é feita em Computador &amp;gt; Propriedades &amp;gt; Aba Avançado &amp;gt; Na área Desempenho, clicar em Configurações &amp;gt; Aba Avançado &amp;gt; Na área Memória virtual, clique em Alterar. Siga as instruções na tela para alterar o tamanho da Memória.&lt;/li&gt;
&lt;li&gt;Processador Pentium 3 (1.1 Ghz) ou superior. Isso é fácil hoje em dia!&lt;/li&gt;
&lt;li&gt;30 Gb de HD livre durante a instalação, e 22Gb permanentes. Minha Máquina virtual tem um espaço de 60 Gb, pois só vou instalar esse ambiente, mais nada, nela. Na maioria dos casos, isso é suficiente, pois o banco de dados não crescerá tanto assim;&lt;/li&gt;
&lt;li&gt;Monitor com resolução de no mínimo 1024x768 e 256 Cores;&lt;/li&gt;
&lt;li&gt;Nenhuma outra instância de produto SAP instalada previamente nesta máquina. Ou seja, tire aquele BW que está rodando aí!!!&lt;/li&gt;
&lt;li&gt;Várias portas usadas pelo App Server ABAP têm que estar disponíveis neste sistema. Mais uma vantagem de se usar uma máquina virtual: a instalação está limpa!&lt;/li&gt;
&lt;li&gt;Se você não estiver conectado a uma rede, por algum motivo (?), você pode simular uma interface de rede com o driver MS Loopback Adapter. Clique no link para mais informações. Eu duvido que você vai precisar... &amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;
Tudo certo? Então podemos começar a instalação, que é bem simples. O arquivo do instalador está na pasta&amp;nbsp;SAPNWABAP701SR1_TRIAL\SAP_NetWeaver701SR1_2008_Installation_Master\IM_WINDOWS_I386\, partindo da raiz do download que fizemos nos passos anteriores. O arquivo é o &lt;b&gt;&lt;i&gt;sapinst.exe&lt;/i&gt;&lt;/b&gt;:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-4UdBOItNo9o/TX-ucshVShI/AAAAAAAAA_Y/DC14RNVzhCo/s1600/abap_04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="https://lh3.googleusercontent.com/-4UdBOItNo9o/TX-ucshVShI/AAAAAAAAA_Y/DC14RNVzhCo/s640/abap_04.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Após alguns avisos sobre exceções no Firewall do Windows, que você deve permitir, abrirá a ferramenta de instalação SAP:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-hlRB9pA-bXc/TX-vLVTv0kI/AAAAAAAAA_c/2aL-ml3RbqM/s1600/abap_05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="219" src="https://lh4.googleusercontent.com/-hlRB9pA-bXc/TX-vLVTv0kI/AAAAAAAAA_c/2aL-ml3RbqM/s320/abap_05.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Selecione as opções como na imagem a seguir:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-EABnPt08jQk/TX-vf6NqcdI/AAAAAAAAA_g/i25MUaa5X5c/s1600/abap_06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="https://lh5.googleusercontent.com/-EABnPt08jQk/TX-vf6NqcdI/AAAAAAAAA_g/i25MUaa5X5c/s640/abap_06.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Clique em Next...&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Após recolher algumas informações sobre seu sistema, o instalador exige que seja feito um Log-Off no Windows, afim de garantir que você possua mesmo credenciais de administrador no sistema, o que é essencial para essa instalação, diga-se de passagem:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-GdwLXddzqKc/TX-xKJ7xj4I/AAAAAAAAA_k/MN9UGQZr6I4/s1600/abap_07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="https://lh5.googleusercontent.com/-GdwLXddzqKc/TX-xKJ7xj4I/AAAAAAAAA_k/MN9UGQZr6I4/s400/abap_07.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Prossiga com o Log-Off. O sistema irá restaurar o estado do instalador automaticamente após o reinício da sessão.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Leia e Aceite o contrato de utilização de usuário final:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-ACrYM69x3Cg/TX-y32hwHEI/AAAAAAAAA_o/LaeUN3QCi5g/s1600/abap_08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="https://lh3.googleusercontent.com/-ACrYM69x3Cg/TX-y32hwHEI/AAAAAAAAA_o/LaeUN3QCi5g/s640/abap_08.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Clique em Next...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-LiprR4RSnfA/TX-zWlpmP2I/AAAAAAAAA_s/2Nqx_nSlMuA/s1600/abap_09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="98" src="https://lh4.googleusercontent.com/-LiprR4RSnfA/TX-zWlpmP2I/AAAAAAAAA_s/2Nqx_nSlMuA/s400/abap_09.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Como eu disse, você deve aceitar o contrato..&lt;br /&gt;
&lt;br /&gt;
Clique em Next...&lt;br /&gt;
&lt;br /&gt;
Indique onde está sua instalação do JRE 1.4.2, atenção para a versão, que deve ser a indicada.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-CT7qtsVJ0ww/TX-z8vLIQ1I/AAAAAAAAA_w/zuBWVdyq3h0/s1600/abap_10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="https://lh6.googleusercontent.com/-CT7qtsVJ0ww/TX-z8vLIQ1I/AAAAAAAAA_w/zuBWVdyq3h0/s640/abap_10.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Clique em Next...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Neste ponto o instalador lhe pergunta se deseja habilitar o FQDN no sistema. FQDN significa Full Qualified Domain Name, o que por&amp;nbsp;sua vez podemos traduzir em Nome de Domínio Totalmente Qualificado, ou seja, o seu sistema está em um domínio e a configuração&amp;nbsp;correspondente no seu sistema ABAP já será providenciada. Não faremos essa configuração agora, porém usaremos o FQDN mais tarde,&amp;nbsp;tanto no processamento de WebyDynpros quanto de BSPs. Explicarei tudo oportunamente.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-8PvB5z6ZRY4/TYDz_T97t0I/AAAAAAAABAA/4ThBEtLBBLg/s1600/abap_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="598" src="https://lh5.googleusercontent.com/-8PvB5z6ZRY4/TYDz_T97t0I/AAAAAAAABAA/4ThBEtLBBLg/s640/abap_11.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Clique em Next...&lt;br /&gt;
&lt;br /&gt;
A próxima tela lhe pergunta pela Master Password, que é a senha mestra para todos os sistemas a serem instalados em sua máquina.&amp;nbsp;Guarde essa senha com cuidado e não use caracteres especiais, como @, pois há um bug conhecido no MaxDB quando se usa caracteres&amp;nbsp;especiais no usuário Control deste sistema. Essa senha deve ser composta por letras e números, com tamanho entre 8 e 9 caracteres.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-yFoUhCFCDdg/TYD0a2ugluI/AAAAAAAABAE/aLIlPMQPRpU/s1600/abap_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="598" src="https://lh4.googleusercontent.com/-yFoUhCFCDdg/TYD0a2ugluI/AAAAAAAABAE/aLIlPMQPRpU/s640/abap_12.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-ViYdeJmFI2M/TYD0d8DLNmI/AAAAAAAABAI/QDc6H0zR3pA/s1600/abap_13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="181" src="https://lh3.googleusercontent.com/-ViYdeJmFI2M/TYD0d8DLNmI/AAAAAAAABAI/QDc6H0zR3pA/s400/abap_13.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-DIzDCwEqck8/TYD0eftUUEI/AAAAAAAABAM/uLfkos4xNnY/s1600/abap_14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="598" src="https://lh6.googleusercontent.com/-DIzDCwEqck8/TYD0eftUUEI/AAAAAAAABAM/uLfkos4xNnY/s640/abap_14.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Clique em Next...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;Neste momento, o instalador verifica os pré requisitos para instalação e certamente vai reclaramar se sua versão do Windows não é&amp;nbsp;XP, Vista ou 2003 Server. Se você está usando um sistema em PT-BR, ele também diz que só suporta sistemas em Inglês internacional.&amp;nbsp;Por enquanto, apenas ignore esses avisos e clique em Cancel no Popup apresentado.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-1Aog4RrmWK4/TYD00H4rA4I/AAAAAAAABAQ/TFPE2eZYFAU/s1600/abap_15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="https://lh4.googleusercontent.com/-1Aog4RrmWK4/TYD00H4rA4I/AAAAAAAABAQ/TFPE2eZYFAU/s400/abap_15.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-1C6wDXft1kw/TYD03I08AnI/AAAAAAAABAU/LQo-ow63ojc/s1600/abap_16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="598" src="https://lh5.googleusercontent.com/-1C6wDXft1kw/TYD03I08AnI/AAAAAAAABAU/LQo-ow63ojc/s640/abap_16.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;Para esta instalação de desenvolvimento não utilizaremos SSL, para fins de simplicidade. Na próxima tela, desmarque a opção de&amp;nbsp;instalar a SAP Cryptographic Library.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Clique em Next...&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;Neste momento o instalador te apresenta um resumo dos parâmetros de instalação, e lhe permite revisá-lo e corrigí-los, quando&amp;nbsp;necessário.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-28KjS0dpYOk/TYD1lgO7dWI/AAAAAAAABAY/WcY6Vdyl_jA/s1600/abap_17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="598" src="https://lh6.googleusercontent.com/-28KjS0dpYOk/TYD1lgO7dWI/AAAAAAAABAY/WcY6Vdyl_jA/s640/abap_17.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Quanto estiver pronto, clique em Next...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-b03HC94kJ7o/TYD14ZFkqtI/AAAAAAAABAc/R0ZCX4OBs88/s1600/abap_18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="598" src="https://lh6.googleusercontent.com/-b03HC94kJ7o/TYD14ZFkqtI/AAAAAAAABAc/R0ZCX4OBs88/s640/abap_18.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;A parte mais demorada da instalação é a etapa &lt;b&gt;&lt;i&gt;Import ABAP&lt;/i&gt;&lt;/b&gt;, onde os programas que&amp;nbsp;compõem o App Server e todas as ferramentas e transações existentes nesta versão são carregados, como o Dicionário de Dados ABAP, o ABAP Workbench, as ferramentas de performance e monitoramento ST05, SM50, SE30 e etc. Essa importação é feita em 28 Jobs separados, rodando de três em três simultaneamente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-zWBQdFFZgB4/TYD7QrKoF0I/AAAAAAAABAg/5Ka5wZScChg/s1600/abap_19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="598" src="https://lh3.googleusercontent.com/-zWBQdFFZgB4/TYD7QrKoF0I/AAAAAAAABAg/5Ka5wZScChg/s640/abap_19.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Após 6 horas de processamento, em minha máquina virtual com 2Gb de memória e 1 processador apenas, o resultado é o seguinte:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-swVK_gZ1QUk/TYFcupLyJaI/AAAAAAAABAk/RI3oEt6vkio/s1600/abap_20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="598" src="https://lh6.googleusercontent.com/-swVK_gZ1QUk/TYFcupLyJaI/AAAAAAAABAk/RI3oEt6vkio/s640/abap_20.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Após mais meia hora de espera, a instalação é concluída. Se a sua instalação demorar mais que isso, não se preocupe. Na verdade é normal. Instalações do ECC completa chegam a durar alguns dias, dependendo da máquina/cluster a ser instalada e configurada.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-aO2fn-UBl_E/TYFc0sH64pI/AAAAAAAABAo/NGHoEiWdwec/s1600/abap_21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-aO2fn-UBl_E/TYFc0sH64pI/AAAAAAAABAo/NGHoEiWdwec/s1600/abap_21.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Depois disso, você pode notar que aparece um ícone em sua área de trabalho:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-4BrZp7CPr0U/TYFdRLYtq6I/AAAAAAAABAs/Mv-zVoaniEs/s1600/abap_22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-4BrZp7CPr0U/TYFdRLYtq6I/AAAAAAAABAs/Mv-zVoaniEs/s1600/abap_22.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;Este console é usado como ponto de partida para iniciar, parar e monitorar a sua instância SAP local.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-xs2yH0EJx0M/TYFdepIqzzI/AAAAAAAABAw/Opn2yxVsKxA/s1600/abap_23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="406" src="https://lh6.googleusercontent.com/-xs2yH0EJx0M/TYFdepIqzzI/AAAAAAAABAw/Opn2yxVsKxA/s640/abap_23.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
O Netweaver Application Server ABAP &amp;nbsp;é composto por 2 processo de sistema operacional básicos: o Message Server e o Dispatcher. Sempre que iniciar sua instância, e você precisa fazer isso sempre que quiser usá-la, você deve ter certeza que estes dois processos estão executando normalmente. Antes de desligar sua máquina, sempre pare completamente a instância SAP, para evitar a corrupção dos dados no banco MaxDB.&lt;br /&gt;
&lt;br /&gt;
Ps.: Você sabia que o MaxDB é um sistema de banco de dados livre fornecido pela SAP e que ele é baseado no MySQL?&lt;br /&gt;
&lt;br /&gt;
Bom, agora que tudo está instalado e rodando, vamos criar a entrada no SAP Logon para sua instância SAP local:&lt;br /&gt;
&lt;br /&gt;
Crie uma nova entrada em seu SAP GUI com a seguintes configurações:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-sjQVwYzBTXE/TYFep55kQbI/AAAAAAAABA0/-ChRwZQS8yI/s1600/abap_24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="522" src="https://lh5.googleusercontent.com/-sjQVwYzBTXE/TYFep55kQbI/AAAAAAAABA0/-ChRwZQS8yI/s640/abap_24.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Vai ficar assim:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-zQ8a2wh1TLg/TYFewQqUGpI/AAAAAAAABA4/07ZdbxVKAHM/s1600/abap_25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="247" src="https://lh3.googleusercontent.com/-zQ8a2wh1TLg/TYFewQqUGpI/AAAAAAAABA4/07ZdbxVKAHM/s640/abap_25.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Inicie o logon nesta ligação, o que você deve ver é o seguinte:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-mNXrxnoEnqI/TYFfB0rxABI/AAAAAAAABA8/UuhP8n1N0Pg/s1600/abap_26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="538" src="https://lh6.googleusercontent.com/-mNXrxnoEnqI/TYFfB0rxABI/AAAAAAAABA8/UuhP8n1N0Pg/s640/abap_26.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Vamos usar agora o usuário BCUSER para logar no mandante 001, de desenvolvimento. A senha é "minisap".&lt;br /&gt;
&lt;br /&gt;
Você provavelmente receberá algumas mensagens de erro desse tipo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-lvRoee31jaQ/TYFflUoMrcI/AAAAAAAABBA/8S1yBoFrCu0/s1600/abap_27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="626" src="https://lh3.googleusercontent.com/-lvRoee31jaQ/TYFflUoMrcI/AAAAAAAABBA/8S1yBoFrCu0/s640/abap_27.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Além de muito tempo de compilação. Não se preocupe, isso não deve nos atrapalhar, logo que o tempo de uso da instância tiver sido maior, a maioria dos programas já terão sido compilados e o cache estará atualizado. Isso é comum em instalações novas. Existe até uma transação, a SGEN, que é usada para gerar/compilar grandes porções de programas em background, para manter o cache atualizado. Como essa instância será usada por apenas poucos, ou apenas um, usuários, apenas o uso constante já deve resolver esse problema.&lt;br /&gt;
&lt;br /&gt;
Após a compilação correta, você deve começar a ver a tela do menu SAP incial assim:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-nLsUOPFH1Zg/TYFgXp8x5pI/AAAAAAAABBE/W0eG-Dpb4Fg/s1600/abap_28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="564" src="https://lh5.googleusercontent.com/-nLsUOPFH1Zg/TYFgXp8x5pI/AAAAAAAABBE/W0eG-Dpb4Fg/s640/abap_28.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Vamos começar iniciando o Object Navigator, transação SE80. Essa transação será utilizada como ponto de partida para desenvolvimento Web Dynpro ABAP e BSP na maior parte do tempo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-JzjnCUmvKUI/TYFgtQzATYI/AAAAAAAABBI/8hHjAXl5Lsk/s1600/abap_29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="626" src="https://lh3.googleusercontent.com/-JzjnCUmvKUI/TYFgtQzATYI/AAAAAAAABBI/8hHjAXl5Lsk/s640/abap_29.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Tudo pronto. Agora é mãos à obra!!!&lt;br /&gt;
&lt;br /&gt;
Pra não ficar só na conversa, vamos criar um Componente Web Dynpro rápido, um Hello World, a fim de testar nossa instalação.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1 - Criando o componente:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Na transação SE80, selecione o tipo de objeto Web Dynpro Componente / Interface:&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-NQNSWjtZHSM/TYFvClFl6pI/AAAAAAAABBM/i5oCS03CRDM/s1600/abap_29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="626" src="https://lh5.googleusercontent.com/-NQNSWjtZHSM/TYFvClFl6pI/AAAAAAAABBM/i5oCS03CRDM/s640/abap_29.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Dê um nome ao componente: ZWDC_HELLO_WORLD.&lt;/div&gt;&lt;div&gt;Tecle Enter.&lt;/div&gt;&lt;div&gt;Ao ser perguntado se deseja criar um novo componente, responda que sim, obviamente.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;a href="https://lh6.googleusercontent.com/--vpEfJmpul4/TYFv98mlOeI/AAAAAAAABBQ/iwHfN6lE_0g/s1600/web_dynpro_02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/--vpEfJmpul4/TYFv98mlOeI/AAAAAAAABBQ/iwHfN6lE_0g/s1600/web_dynpro_02.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Após isso, dê um texto descritivo ao seu componente Web Dynpro e confira o nome da nova View e da nova Window &amp;nbsp;que serão automaticamente adicionados ao seu componente:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-A-w2tcSwKl8/TYFxE65YS0I/AAAAAAAABBU/WggbKT9thJU/s1600/web_dynpro_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-A-w2tcSwKl8/TYFxE65YS0I/AAAAAAAABBU/WggbKT9thJU/s1600/web_dynpro_03.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;Confirme...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-OjozG93o62s/TYF0eHwhIpI/AAAAAAAABBY/m-8AdwThjUs/s1600/web_dynpro_04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-OjozG93o62s/TYF0eHwhIpI/AAAAAAAABBY/m-8AdwThjUs/s1600/web_dynpro_04.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Como não vamos transportar nenhum objeto, não há a necessidade de se indicar um pacote, apesar de você poder criar um pela SE80 e indicar aqui. Para o nosso caso, apenas clique no botão Local Object...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Após a criação, navegue até Views &amp;gt; MAIN e dê um duplo clique:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-WsxyAxNzKJU/TYGAm5DIrkI/AAAAAAAABBc/21ASIXMX9-U/s1600/web_dynpro_06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="474" src="https://lh5.googleusercontent.com/-WsxyAxNzKJU/TYGAm5DIrkI/AAAAAAAABBc/21ASIXMX9-U/s640/web_dynpro_06.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;Clique no botão "Show/Hide Layout Preview" na barra de ferramentas na parte de cima da janela. Você verá que existe algum problema com o preview do Web Dynpro ABAP:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-Vs1DCDKpAkk/TYGApENoFNI/AAAAAAAABBg/DI3Qvc8Cn9w/s1600/web_dynpro_07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="474" src="https://lh6.googleusercontent.com/-Vs1DCDKpAkk/TYGApENoFNI/AAAAAAAABBg/DI3Qvc8Cn9w/s640/web_dynpro_07.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;Felizmente, para resolver é simples. Vá até a transação SICF para configurarmos alguns serviços Web necessários ao nosso ambiente de desenvolvimento:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-NUalFWF-V4M/TYGBV38OgiI/AAAAAAAABBk/J2CGN_-bOjg/s1600/web_dynpro_08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="520" src="https://lh3.googleusercontent.com/-NUalFWF-V4M/TYGBV38OgiI/AAAAAAAABBk/J2CGN_-bOjg/s640/web_dynpro_08.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Execute o programa e navegue até o caminho abaixo. Ative todos os serviços abaixo deste caminho.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-uMQsdCXf2Ho/TYGCk7-5urI/AAAAAAAABBo/C79s9Kjjr3Y/s1600/web_dynpro_09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="556" src="https://lh6.googleusercontent.com/-uMQsdCXf2Ho/TYGCk7-5urI/AAAAAAAABBo/C79s9Kjjr3Y/s640/web_dynpro_09.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ao ser perguntado, clique no botão ativar todos, que é o segundo na imagem abaixo.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-zzWKFA-XN5U/TYGClWEuwrI/AAAAAAAABBs/P22j0ehjaPc/s1600/web_dynpro_10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-zzWKFA-XN5U/TYGClWEuwrI/AAAAAAAABBs/P22j0ehjaPc/s1600/web_dynpro_10.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Importante: Ative também todos os serviços do nó &lt;i&gt;&lt;b&gt;"/default_host/sap/bc/".&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
Os serviços mais importantes para o designer Web Dynpro (SE80) são os do nó "&lt;b&gt;&lt;i&gt;/default_host/sap/bc/wdvd/&lt;/i&gt;&lt;/b&gt;", portanto não esqueça de ativá-los.&lt;br /&gt;
&lt;br /&gt;
Aproveite para ativar o serviço no nó "&lt;b&gt;&lt;i&gt;/default_host/sap/public/myssocntl&lt;/i&gt;&lt;/b&gt;", ele será útil mais tarde.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;Após isso, reinicie a transação SE80 (você pode usar o comando /nSE80), &amp;nbsp;e vá até seu componente WebDynpro. Clique novamente na View MAIN:&lt;br /&gt;
&lt;br /&gt;
Nesse momento você deve fornecer as credenciais do usuário SAP:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-536q76C93zI/TYGN-lRrnhI/AAAAAAAABBw/UBPEv7mqneQ/s1600/web_dynpro_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-536q76C93zI/TYGN-lRrnhI/AAAAAAAABBw/UBPEv7mqneQ/s1600/web_dynpro_11.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Pronto, agora o View Designer já está funcionando!&lt;br /&gt;
&lt;br /&gt;
Alterne para o modo de Edição, clicando no Lápis na barra de ferramentas.&lt;br /&gt;
&lt;br /&gt;
Do lado direito, aparece a estrutura da View até aqui, chamada de &lt;i&gt;&lt;b&gt;Outline&lt;/b&gt;&lt;/i&gt;, clique no elemento RootUIElementContainer com o botão direito do mouse e escolha &lt;b&gt;&lt;i&gt;Insert Element&lt;/i&gt;&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-TdHiu25QXoc/TYGUiD9sG2I/AAAAAAAABB0/PuYKNK6XnnA/s1600/web_dynpro_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="474" src="https://lh6.googleusercontent.com/-TdHiu25QXoc/TYGUiD9sG2I/AAAAAAAABB0/PuYKNK6XnnA/s640/web_dynpro_12.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Dê um Id e um tipo para o elemento, como abaixo, e confirme:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-zapuXg0Q4qM/TYGUiqLDswI/AAAAAAAABB4/vzBzNDEvskw/s1600/web_dynpro_13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-zapuXg0Q4qM/TYGUiqLDswI/AAAAAAAABB4/vzBzNDEvskw/s1600/web_dynpro_13.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Insira um texto, como Hello World! na propriedade &lt;b&gt;&lt;i&gt;Text&lt;/i&gt;&lt;/b&gt; do novo elemento.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-6Q1c1fdn_A4/TYGX00TNYlI/AAAAAAAABB8/Q3kYjOgUARI/s1600/web_dynpro_14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="474" src="https://lh6.googleusercontent.com/-6Q1c1fdn_A4/TYGX00TNYlI/AAAAAAAABB8/Q3kYjOgUARI/s640/web_dynpro_14.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Salve e alterne novamente para o modo Exibição, clicando no lápis da barra de ferramentas. Ative todo o componente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-CPladfOQfhE/TYGYX_L38lI/AAAAAAAABCA/g51BVDc686A/s1600/web_dynpro_15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="478" src="https://lh4.googleusercontent.com/-CPladfOQfhE/TYGYX_L38lI/AAAAAAAABCA/g51BVDc686A/s640/web_dynpro_15.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Desta forma, estaremos ativando todos os objetos de uma só vez:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-bx8J-En7Va8/TYGYvvvm1OI/AAAAAAAABCE/t0CzolUCgEU/s1600/web_dynpro_16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="430" src="https://lh6.googleusercontent.com/-bx8J-En7Va8/TYGYvvvm1OI/AAAAAAAABCE/t0CzolUCgEU/s640/web_dynpro_16.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Após ativado, só falta um passo pra testarmos nosso componente: uma Aplicação Web Dynpro.&lt;br /&gt;
Pense na aplicação Web Dynpro como uma transação SAP, um ponto de partida para um programa. É a aplicação Web Dynpro que nos fornecerá uma URL:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-U1S_BOdB-2A/TYGbsQ4zv0I/AAAAAAAABCI/vAhvlduc46s/s1600/web_dynpro_17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="478" src="https://lh6.googleusercontent.com/-U1S_BOdB-2A/TYGbsQ4zv0I/AAAAAAAABCI/vAhvlduc46s/s640/web_dynpro_17.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Dê um texto para a aplicação e confirme:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-mOs9dz13Euk/TYGcyaMCK0I/AAAAAAAABCM/vUTs-UIHDx4/s1600/web_dynpro_18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="136" src="https://lh5.googleusercontent.com/-mOs9dz13Euk/TYGcyaMCK0I/AAAAAAAABCM/vUTs-UIHDx4/s640/web_dynpro_18.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Após criada, salve e ative a aplicação. Como a Aplicação Web Dynpro é um objeto independente do componente Web Dynpro, você precisará indicar um pacote, ou objeto local no nosso caso.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-CxLWvsxeS2s/TYGeMyoE6QI/AAAAAAAABCQ/6lq4nA5wiH8/s1600/web_dynpro_19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="474" src="https://lh5.googleusercontent.com/-CxLWvsxeS2s/TYGeMyoE6QI/AAAAAAAABCQ/6lq4nA5wiH8/s640/web_dynpro_19.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Agora já temos a URL para testar a aplicação, vamos lá?!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-ZS6QXCOHsP4/TYGf55Ba2EI/AAAAAAAABCU/jQ72_kHU9lE/s1600/web_dynpro_20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="622" src="https://lh3.googleusercontent.com/-ZS6QXCOHsP4/TYGf55Ba2EI/AAAAAAAABCU/jQ72_kHU9lE/s640/web_dynpro_20.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Use as credenciais do usuário BCUSER para logar. Caso ocorra um erro de &lt;b&gt;&lt;i&gt;Time Out&lt;/i&gt;&lt;/b&gt;, insista na tentativa até conseguir. Isso ocorre principalmente nas primeiras vezes, devido ao cache.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-pCR9qwpKO2Q/TYGhNgJaqCI/AAAAAAAABCY/RxkljXMDKXU/s1600/web_dynpro_21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="438" src="https://lh6.googleusercontent.com/-pCR9qwpKO2Q/TYGhNgJaqCI/AAAAAAAABCY/RxkljXMDKXU/s640/web_dynpro_21.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Agora ocorre um erro que tem um detalhe interessante: lembra-se do FQDN do qual eu falei lá atrás, durante a instalação? Pois é, esse é o momento de configurá-lo, ou melhor, de simularmos um FQDN.&lt;br /&gt;
&lt;br /&gt;
Abra o seu arquivo hosts (execute o notepad como Administrador no Vista ou Seven) e inclúa uma linha no final com um domínio fictício, apontando para o IP local da máquina, como segue:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-S-LYoWl4ypE/TYGiVk_KrAI/AAAAAAAABCc/FPNwr6IBcTs/s1600/web_dynpro_22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="397" src="https://lh6.googleusercontent.com/-S-LYoWl4ypE/TYGiVk_KrAI/AAAAAAAABCc/FPNwr6IBcTs/s640/web_dynpro_22.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Observe que na maioria dos sistemas, o arquivo hosts fica no caminho C:\Windows\System32\drivers\etc. &lt;br /&gt;
&lt;br /&gt;
Reinicie o Browser e tente novamente, mas agora substitua o nome do host pelo domínio fictício:&lt;br /&gt;
&lt;br /&gt;
Deve demorar um pouco até que você consiga visualizar o resultado. Continue atualizando a página enquanto os erros de Time Out não acabarem, assim os programas serão compilados e da próxima vez será bem mais fácil!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-J8Cz7l0FKk4/TYGnq_EgLSI/AAAAAAAABCg/xMoL-Qy6HMY/s1600/web_dynpro_23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-J8Cz7l0FKk4/TYGnq_EgLSI/AAAAAAAABCg/xMoL-Qy6HMY/s1600/web_dynpro_23.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Finalmente! Meu último recado é: não se frustre se você acha que o resultado é muito pequeno diante de tanto trabalho, pois agora temos todas as ferramentas a mão e podemos usar o bom e velho ABAP em uma perspectiva toda nova.&lt;br /&gt;
Eu garanto que o próximo tutorial terá um resultado muito mais interessante. Persista!&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5565456114569803252-2707911633302471012?l=webdynprobrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PUvSH1HuvRQuiLJlPUQgOS2S_3Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PUvSH1HuvRQuiLJlPUQgOS2S_3Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PUvSH1HuvRQuiLJlPUQgOS2S_3Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PUvSH1HuvRQuiLJlPUQgOS2S_3Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDynproBrasil/~4/pRzxh-uru_o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdynprobrasil.blogspot.com/feeds/2707911633302471012/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webdynprobrasil.blogspot.com/2011/03/tutorial-instalando-e-configurando.html#comment-form" title="10 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5565456114569803252/posts/default/2707911633302471012?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5565456114569803252/posts/default/2707911633302471012?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDynproBrasil/~3/pRzxh-uru_o/tutorial-instalando-e-configurando.html" title="Tutorial: Instalando e configurando ambiente Web Dynpro ABAP" /><author><name>Flavio Rasseli</name><uri>http://www.blogger.com/profile/07781002108317110040</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_wVN4aRMc2ZQ/S2UKzM9i4QI/AAAAAAAAAfo/ubyia4YsKY4/S220/03012010954.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-lssFEouFt6U/TX-l2SdGErI/AAAAAAAAA_M/OnMwYbc-BFI/s72-c/abap_01.png" height="72" width="72" /><thr:total>10</thr:total><feedburner:origLink>http://webdynprobrasil.blogspot.com/2011/03/tutorial-instalando-e-configurando.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ACSHg7eip7ImA9WxBVEUo.&quot;"><id>tag:blogger.com,1999:blog-5565456114569803252.post-9031767445963530816</id><published>2010-02-14T11:25:00.000-08:00</published><updated>2010-02-14T11:29:29.602-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-14T11:29:29.602-08:00</app:edited><title>ABAP Web Dynpro - Prática 1</title><content type="html">Clique &lt;a href="https://docs.google.com/fileview?id=0B4ukCwsygTruNGYyZTZmODEtMjc0OC00ZjExLTgxMTAtYzA4YmY1YTZmMTMw&amp;amp;hl=pt_BR"&gt;aqui&lt;/a&gt; para baixar a apostila ABAP Web Dynpro - Prática 1.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sobre dúvidas de como configurar o ambiente, visite a página do programa &lt;a href="http://sdn.sap.com"&gt;SDN&lt;/a&gt; (em inglês) ou me mande um email: &lt;a href="mailto:frasseli@gmail.com"&gt;frasseli@gmail.com&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5565456114569803252-9031767445963530816?l=webdynprobrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Izqxs9zCeKvxniMUVCvYj2AFw44/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Izqxs9zCeKvxniMUVCvYj2AFw44/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Izqxs9zCeKvxniMUVCvYj2AFw44/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Izqxs9zCeKvxniMUVCvYj2AFw44/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDynproBrasil/~4/v151k5um1dc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdynprobrasil.blogspot.com/feeds/9031767445963530816/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webdynprobrasil.blogspot.com/2010/02/abap-web-dynpro-pratica-1.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5565456114569803252/posts/default/9031767445963530816?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5565456114569803252/posts/default/9031767445963530816?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDynproBrasil/~3/v151k5um1dc/abap-web-dynpro-pratica-1.html" title="ABAP Web Dynpro - Prática 1" /><author><name>Flavio Rasseli</name><uri>http://www.blogger.com/profile/07781002108317110040</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_wVN4aRMc2ZQ/S2UKzM9i4QI/AAAAAAAAAfo/ubyia4YsKY4/S220/03012010954.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://webdynprobrasil.blogspot.com/2010/02/abap-web-dynpro-pratica-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4DQX8yeSp7ImA9WhZTEUg.&quot;"><id>tag:blogger.com,1999:blog-5565456114569803252.post-2762823810071629352</id><published>2010-02-14T11:11:00.000-08:00</published><updated>2011-03-14T19:42:50.191-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-14T19:42:50.191-07:00</app:edited><title>ABAP Web Dynpro - Fundamentos</title><content type="html">&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: inherit; font-size: x-small;"&gt;Clique &lt;a href="https://docs.google.com/fileview?id=0B4ukCwsygTruMmJjOTNhNTQtYWFhOC00NTNiLTkwNzItZmZjOWEwNThkYTQ4&amp;amp;hl=pt_BR"&gt;aqui&lt;/a&gt; para baixar a Apresentação em PDF&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;O que é Web Dynpro &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;De um ponto de vista tecnológico, Web Dynpro, Java e ABAP, são passos revolucionários para o desenvolvimento de interface de usuário para Web, dentro da estratégia da SAP. É completamente diferente do paradigma até então estabelecido pela SAP e representa um grande avanço no desenvolvimento de aplicações ERP baseadas em Web.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Aplicações Web Dynpro são construídas usando técnicas de programação declarativa baseadas no padrão de projeto MVC (Model View Controller), largamente difundido na indústria. Isto é, você define quais objetos deverão estar disponíveis para o cliente e de onde estes os valores para estes objetos deverão ser recuperados/armazenados. Você define também quais são os possíveis caminhos de navegação, declarativamente em sua aplicação. Todo o código necessário é, então, gerado automaticamente dentro do runtime framework. Este modelo isenta o desenvolvedor das tarefas repetitivas de codificação/marcação HTML e interatividade, como JavaScript.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;ABAP Web Dynpo está disponível desde a versão NetWeaver 2004s (Application Server 7.0). Para o desenvolvimento componentes e aplicações Web Dynpro ABAP, a transação SE80 (ABAP Workbench) foi aprimorada.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Web Dynpro foi concebido para suportar desenvolvimento estruturado e as unidades de modularização são os chamados Componentes Web Dynpro, que podem ser combinados para formar aplicações complexas.&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Declarações &lt;i&gt;Meta Modelo &lt;/i&gt;vs. Código Customizado&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Considerando o modelo de programação declarativa do Web Dynrpo, dentro do &lt;i&gt;Workbench&lt;/i&gt;, existem certas ferramentas que permitem ao desenvolvedor construir uma representação abstrata na forma de &lt;i&gt;Meta Modelo &lt;/i&gt;Web Dynrpo. O código necessário é então gerado, em conformidade com uma arquitetura padrão, conhecida como o &lt;i&gt;Framework &lt;/i&gt;Web Dynpro.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Este framework permite, então, que o desenvolvedor injete, em locais predefinidos, código customizado para atender aos requisitos de negócio da aplicação. Isto diferencia uma aplicação Web Dynpro das outras, que por definição, são compostas das mesmas unidades básicas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Este modelo permite que nem todas as decisões de implementação sejam feitas na fase de desenho da aplicação. Isto permite, por exemplo, que a aparência da interface com o usuário seja decidida em tempo de execução, de acordo com parâmetros do usuário ou requisitos de negócio. Isto permite que uma aplicação Web altamente flexível seja construída sem a necessidade de códigos complexos DHTML e Javascript.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Cenários de aplicações Web Dynpro&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Aplicações ABAP Web Dynpro podem acessar uma variedade de fontes de dados (Models), tanto diretamente, como chamadas a módulos de função e métodos de objetos, ou indiretamente, através do consumo de Web Services ou de conexões com EJB (Enterprise JavaBeans) usando o conector Java (JCo).&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;É possível ainda, apesar de ser altamente não recomendado, causando uma confusa mistura entre a camada de negócios e o modelo de dados (Model e Controller), o acesso direto a um comando OpenSQL SELECT.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Um Objeto ABAP (instância de uma classe) até o presente momento não pode ser usado como modelo. A maneira recomendada para se ter objetos reutilizáveis que representem lógicas de negócio é construir Classes ABAP para conter este tipo de código. É possível ainda se criar um Componente &lt;i&gt;faceless&lt;/i&gt;, ou seja, um componente WebDynpro sem nenhum elemento visual, apenas para fim de reusabilidade.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Benefícios do Web Dynpro&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;O objetivo principal do Web Dynpro é fornecer ao desenvolvedor de aplicações uma maneira de criar aplicações Web poderosas com o mínimo de esforço (repetitivo) usando ferramentas e processos declarativos em um processo de desenho estruturado.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Uma regra de oura da filosofia do Web Dynpro é: &lt;i&gt;Quanto menos linhas de código escritas pelo desenvolvedor, melhor&lt;/i&gt;. Este objetivo é alcançado considerando-se dois princípios:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Usando uma técnica declarativa, com Meta Modelo independente de linguagem para definir a interface com usuário e, desta definição declarativa, o ambiente de desenvolvimento pode gerar o código fonte necessário. Código manual ainda tem seu lugar, mas está, ou deveria estar, restrito apenas a manipulação de dados de negócio e nunca de interface com usuário (View).&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Artifícios técnicos prontos, como I18N, baixo número de &lt;i&gt;reloads&lt;/i&gt; de páginas através de AJAX (flicker-free interaction), e uma clara separação  da camada de negócio (Controller) e interface com usuário (View).&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
Model-View-Controller&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;O Web Dynpro é fundamentado no padrão de projeto MVC, concebido originalmente pelo projetista de software norueguês Trygve Reenskaug, enquanto trabalhava na Xerox, no PARC no final dos anos 70. Sua primeira implementação ocorreu no lançamento da  linguagem Smalltalk-80.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Este padrão de projeto foi considerado uma revolução, pois foi o primeiro a descrever componentes de software em termos de:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; As responsabilidades funcionais correspondentes a cada componente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; Os protocolos de mensagem a qual cada componente deveria responder, ou reagir.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;A SAP modificou e estendeu a especificação original do MVC para criar o conjunto de ferramentas Web Dynrpo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
Componentes Web Dynpro&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Os componentes permitem uma complexa estruturação de entidades de aplicação Web interativas e sua reutilização. Isto permite o aninhamento em grandes aplicações.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Podemos enxergar o componente como um container para outros objetos relacionados a interface com o usuário (View) e o código fonte Web Dynpro (Controller).&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Os elementos principais de interface com o usuário, são as Windows e as Views. Uma View representa uma área retangular que será exibida em uma página no cliente, um Web Browser por exemplo. Esta contém elementos de interação, como caixas de texto, imagens e botões. Uma página completa enviada para o cliente pode ser composta de apenas uma View, mas também pode ser uma combinação de virtualmente qualquer número de Views. Esta combinação de Views e o fluxo entre estas é definido em uma Window. O relacionamento entre Views e Windows, fazendo uma analogia ao DER, seria N:N.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;O código fonte de uma aplicação Web Dynpro está localizado nos Controllers. O armazenamento lógico dos dados globais de um Controller é hierarquicamente definido em um Context.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
Context Mapping e Data Binding&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;As variáveis definidas em um Context de Controller Web Dynpro podem ser referenciadas dentro de Contexts de outros Controller. Chamamos isto de &lt;b&gt;Context Mapping&lt;/b&gt;. Isto permite o compartilhamento de dados comuns entre diferentes Controllers, retirando a necessidade de se efetuar cópias destes dados entre contextos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Os valores de elementos de interação com o usuário devem ser ligados a atributos de um Context do Controller corrspondente: ao Context do View Controller, por exemplo. A isto chamamos de &lt;b&gt;Data Binding&lt;/b&gt;. Através desta técnica, ocorre o transporte automático dos dados de campos de entrada para os atributos (variáveis) do Context.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Combinando estas duas técnicas, vemos que o transporte de dados entre elementos de diferentes Views é definido de uma forma puramente declarativa.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
Context Mapping&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Permite que um nó em um Controller seja automaticamente preenchido com os dados de um nó correspondente em um Context, geralmente de uma View. Este é o mecanismo principal para compartilhar dados comuns entre Controllers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Quando dois Controllers dentro do mesmo Componente compartilham dados através deste relacionamento, isto é chamado de Mapping interno. O Context que atua como fonte dos dados é chamado Nó de Origem, enquanto o nó que recebe os valores é chamado de Nó Mapeado.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;O Mapping de Nós entre Context de Controllers localizados em diferentes Componentes é chamado de Mapping Externo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Para o Mapping de nós ser declarado, é preciso que alguns pré-requisitos sejam cumpridos:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; É preciso que exista um Nó de origem no Context de Controller agindo como a fonte dos dados.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; O Controller que contem o Contex com o Nó Origem não pode ser um View Controller.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; O Controller com o Nó Mapeado deve declaras o Controller com o Nó de Origem como um Controller usado.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
Data Binding&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;É a técnica pela qual os dados são transportados de um Context de uma View para os elementos de interação nolayout desta View, e vice versa. Você não pode ligar um elemento de interface com o usuário com um nó ou atributo localizado em um Context de outro Controller, apenas o contido na própria View.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Sendo assim, os elementos de interface com o usuário sempre serão privados àquela View onde foram declarados.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Esta técnica separa os elementos de interface com o usuário do código fonte da aplicação, localizado dentro dos Controllers. Desta forma, para se manipular valores de propriedades em um elemento de interface com o usuário, o código fonte do Controller da View em questão precisará apenas modificar os nós e atributos do Context desta View, considerando que estes elementos estejam ligados por Data Binding. O framework Web Dynpro executa então as duas tarefas a seguir:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; O transporte dos dados do nó ou atributo para o elemento de interface com usuário ao qual este esteja ligado, durante o processo de renderização da página.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; A atualização de todos os nós e atributos correspondentes que sofreram modificações nos elementos de entrada de dados por parte do usuário. Neste processo, os dados são automaticamente convertidos e checados para que correspondam a seus respectivos tipos declarados, caso ocorra alguma falha, uma mensagem é imediatamente exibida para que o usuário possa corrigir este valor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Data Binding não se restringe, porém, a ligação com valores de elementos de interação com atributos do Context, mas pode-se, por exemplo controlar propriedades destes elementos como visibilidade, aparência, etc. Desta forma podemos controlar as propriedades de qualquer elemento de uma View de dentro do Controller desta View, modificando valores de nós e atributos do seu Context.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
Navegação entre diferentes Views&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;A navegação entre as Views é acionada configurando e, eventualmente, disparando-se Outbound Plugs. Isto causa um evento de navegação. Estes eventos são organizados, de modo assíncrono, em uma fila. Múltiplos Outbound Plugs podem ser disparados de uma única View. Cada chamada pode redefinir a interface com o usuário, apresentando-lhe um novo conjunto de Views, Esta fila contendo os eventos de navegação é processada em um determinado ponto da &lt;i&gt;fase de processamento&lt;/i&gt;, gerenciada pelo framework Web Dynpro. Até este ponto, esta pilha de chamada pode ser modificada, incluindo-se ou retirando-se eventos de navegação. Convêm-se que Outbound Plugs sejam nomeados de acordo com a ação que causou a navegação desta View para uma outra. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Do outro lado, existes métodos manipuladores de eventos especiais, que são associados aos eventos de navegação gerados pelos Outboud Plugs. Estes são chamados de Inbound Plugs. Quando da fase de processamento do framework Web Dynrpo, estes métodos são chamados para cada evento na fila de navegação. É interessante notar que, para estes eventos serem acionados, todas as Views do conjunto atual tenham disparado seus Outbound Plugs e que nenhum erro de validação de dados tenha ocorrido, cancelando a navegação. Inbound Plugs, em nome da clareza, deveriam ser nomeados em razão do motivo pelo qual a View a que corresponde está sendo exibida.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Outbound Plugs e Inbound Plugs são ligados através de Navigation Links. Tecnicamente, ao se definir um Navigation Link entre um Outbound Plug e um Inbound Plug significa registrar o método manipulador de evento de um Inbound Plug ao evento de navegação de um Outbound Plug. Desta forma, assim que um Outbound Plug é disparado, automaticamente o método do Inbound Plug correspondente é executado. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;É possível definir parâmetros entre o disparo de um evento de navegação de um Outbound Plug e o método manipulador de evento do Inbound Plug, permitindo que dados sejam transferidos de uma View para outra.&lt;i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Windows e Views aninhadas&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Uma Window é, por definição um conjunto de todas as Views necessárias para a construção de uma página visível. Uma Window pode ter zero ou mais Views ebutinas. Uma Window pode conter elementos denominados View Containers, permitindo assim o aninhamento de Views dentro de uma Window.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Uma Window define quais combinações de Views estarão visíveis e em que momento, através do uso de Outbound Plugs. Desta forma, ao criar uma Window, você terá que definir três aspectos:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; Todas as possíveis Views que poderão ser exibidas devem ser embutidas na Window.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; Se for necessário que várias Views sejam exibidas em paralelo, deve-se definir o layout e a organização destas Views através de um elemento View Container. Para cada elemento View Container, uma View padrão deve ser definida para ser exibida inicialmente&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; Os Navigation Links entre as Views devem ser definidos, ligando-se Outbound e Inbound Plugs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Apenas uma View pode ser exibida para o usuário, em tempo de execução. É possível definir uma View vazia, a fim de se conseguir limpar a tela visível para o usuário. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;O conjunto de Views utilizado para de compor uma Window é conhecido como View Assembly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
Interface View e Interface Controller&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;As partes de um Componente Web Dynpro visíveis, para outro Componente Web Dynrpo, são os chamados Interface View(s) e Interface Controller.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Apenas um Interface View por Componente é automaticamente criado, e dentro dele podem ser expostos dados (Context), métodos e manipuladores de evento, para outros Componentes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;As Interface Views representam as interfaces visuais com o usuário de um Componente Web Dynpro. Há uma relação de 1:1 entre as Windows e as Interface Views, ou seja, cada vez que se define uma Window, uma nova Interface View é automaticamente criada, expondo esta Window para outros Componentes Web Dynpro. Esta Interface View obedece a propriedade &lt;i&gt;interface&lt;/i&gt; de cada Outbound e Inbound Plug para decidir se estes serão expostos. Os métodos e dados da Window não serão acessíveis através deste mecanismo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Para um Componente que não possui Views, não há a necessidade de se gerar Windows e, portanto, não existirão Interface Views. Um Componente que não tenha interface visual é conhecido como faceless.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US"&gt;StartUp Plug e Web Dynpro Application&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Finalmente, é preciso definir um ponto de partida para o uso das Views e seus a lógica contidas nos Controllers, que se comunicam com os Models do Web Dynpro.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Este ponto de partida é definido através de um Inbound Plug especial, do tipo StartUp. É preciso ainda que seja criado uma Web Dynpro Application, que representa uma URL e é associado ao StartUp Plug da Interface View.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Na maioria dos casos, uma Interface View será chamada por apenas uma Web Dynpro Application. Porém, assim como um ABAP Módulo Pool pode ser invocado por transações diferentes, seguindo fluxos de tela diferentes, também podem existir várias Web Dynpro Applications tendo pontos de partida no mesmo Componente Web Dynrpo, sendo que posem ser criados vários StartUp Plugs em diferentes Interface Views.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Para se definir uma Web Dynpro Application é necessário:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; Definir qual Componente será invocado. Este será conhecido como o Componente Root para a Application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; Qual Interface View deste Componente será usado, definindo assim qual o View Assembly será exibido por padrão pela Application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; text-autospace: none; text-indent: 0cm;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;•&lt;/span&gt; Qual Inbound Plug desta Interface View, que deve ser mandatoriamente do tipo StartUp, agirá como ponto de partida para Application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5565456114569803252-2762823810071629352?l=webdynprobrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WUEoHAMoL-S4_6T43_6VhP-alzU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WUEoHAMoL-S4_6T43_6VhP-alzU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WUEoHAMoL-S4_6T43_6VhP-alzU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WUEoHAMoL-S4_6T43_6VhP-alzU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDynproBrasil/~4/8PaVXQPlGCc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdynprobrasil.blogspot.com/feeds/2762823810071629352/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webdynprobrasil.blogspot.com/2010/02/abap-web-dynpro-fundamentos.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5565456114569803252/posts/default/2762823810071629352?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5565456114569803252/posts/default/2762823810071629352?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDynproBrasil/~3/8PaVXQPlGCc/abap-web-dynpro-fundamentos.html" title="ABAP Web Dynpro - Fundamentos" /><author><name>Flavio Rasseli</name><uri>http://www.blogger.com/profile/07781002108317110040</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_wVN4aRMc2ZQ/S2UKzM9i4QI/AAAAAAAAAfo/ubyia4YsKY4/S220/03012010954.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://webdynprobrasil.blogspot.com/2010/02/abap-web-dynpro-fundamentos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4GR3g-cSp7ImA9WxBXGUw.&quot;"><id>tag:blogger.com,1999:blog-5565456114569803252.post-8795796750566998829</id><published>2010-01-30T20:36:00.000-08:00</published><updated>2010-01-30T20:42:06.659-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-30T20:42:06.659-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sap" /><category scheme="http://www.blogger.com/atom/ns#" term="desenvolvimento web" /><category scheme="http://www.blogger.com/atom/ns#" term="abap" /><category scheme="http://www.blogger.com/atom/ns#" term="webdynpro" /><title>Web Dynpro Brasil</title><content type="html">SAP Web Dynpro é uma nova tecnologia de desenvolvimento para Web para a plataforma NetWeaver, da empresa alemã SAP, líder mundial em sistemas corporativos.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Através dos artigos deste blog, você pode se atualizar sobre esta tecnologia e seguir tutoriais, dicas e notícias sobre esta revolucionária tecnologia.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Começaremos apresentando um material, de minha autoria, baseado no material utilizado no curso oficial NET310, da SAP, para a introdução aos Fundamentos do Web Dynpro ABAP.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5565456114569803252-8795796750566998829?l=webdynprobrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e3YUGlc-EgHSzTQKucTzTUqsL6o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e3YUGlc-EgHSzTQKucTzTUqsL6o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e3YUGlc-EgHSzTQKucTzTUqsL6o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e3YUGlc-EgHSzTQKucTzTUqsL6o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDynproBrasil/~4/Q1oZV99jlM4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdynprobrasil.blogspot.com/feeds/8795796750566998829/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://webdynprobrasil.blogspot.com/2010/01/web-dynpro-brasil.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5565456114569803252/posts/default/8795796750566998829?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5565456114569803252/posts/default/8795796750566998829?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDynproBrasil/~3/Q1oZV99jlM4/web-dynpro-brasil.html" title="Web Dynpro Brasil" /><author><name>Flavio Rasseli</name><uri>http://www.blogger.com/profile/07781002108317110040</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_wVN4aRMc2ZQ/S2UKzM9i4QI/AAAAAAAAAfo/ubyia4YsKY4/S220/03012010954.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://webdynprobrasil.blogspot.com/2010/01/web-dynpro-brasil.html</feedburner:origLink></entry></feed>

