<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8835473261324693526</id><updated>2024-09-08T07:18:57.194-03:00</updated><category term="codificação"/><category term="utilidades"/><category term="comandos"/><category term="organização"/><category term="utilização"/><category term="macetes"/><category term="sobre"/><category term="funções"/><category term="SAP notes"/><category term="atalhos"/><category term="carreira"/><category term="debug"/><category term="programas"/><title type='text'>ABAP Warrior</title><subtitle type='html'>Dicas e macetes do dia a dia para profissionais ABAP.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-2376654459786391358</id><published>2019-08-03T16:17:00.000-03:00</published><updated>2019-08-03T16:17:20.945-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programas"/><category scheme="http://www.blogger.com/atom/ns#" term="utilidades"/><title type='text'>Transporte de variantes</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA8_73aqmLJMrKgjvGr3NxHDrQHherT2-6yMfryWSo1UzP5UxomNFVOMCZ8MdRy4E9qG-R5LSVLVv8UnnBFFD-FHHrpI4mIKSCQAbew5lPxybuQ25iM2g2Hi0UynHiy9ZW7EaSzq9dJBTY/s1600/TransporteVariante_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;&quot;&gt;&lt;img alt=&quot;Transporte de Variantes&quot; border=&quot;0&quot; data-original-height=&quot;150&quot; data-original-width=&quot;150&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA8_73aqmLJMrKgjvGr3NxHDrQHherT2-6yMfryWSo1UzP5UxomNFVOMCZ8MdRy4E9qG-R5LSVLVv8UnnBFFD-FHHrpI4mIKSCQAbew5lPxybuQ25iM2g2Hi0UynHiy9ZW7EaSzq9dJBTY/s1600/TransporteVariante_150x150.png&quot; title=&quot;Transporte de Variantes&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Você já precisou configurar a variante de um relatório em produção, e quando se deu conta da quantidade de filtros testados em QAS quase desistiu? rsrsrs... Não se preocupe mais com isso, pois é possível transportar variantes de um ambiente para outro. &lt;br /&gt;
&lt;br /&gt;
Veja nesta postagem como transportar, de maneira fácil e prática, as variantes de um determinado programa através de &lt;code&gt;requests&lt;/code&gt;.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-9140080035344337&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;9588557602&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Bom, se você ainda não passou pela situação descrita na introdução acima, talvez um dia ainda passe. Acredite, não é uma situação rara. Vou citar dois exemplos:&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Exemplo 1&lt;/h4&gt;&lt;br /&gt;
&lt;ul&gt;Pense em um relatório &lt;code&gt;standard&lt;/code&gt;. Talvez a transação &lt;code&gt;ME2L&lt;/code&gt;, que possui vários campos para filtros. Pense em uma situação onde a área de negócio quer começar a usar esse relatório, mas não sabe como funciona, quais resultados retorna e como se usam os filtros. Então, são montados vários cenários em QAS para que sejam realizados testes do funcionamento. Durantes os testes são criadas várias variantes diferentes para as execuções do programa. &lt;/ul&gt;&lt;ul&gt;Ao final de tudo, os cenários são validados e a área de negócio pede para colocar os mesmos &lt;code&gt;JOBs&lt;/code&gt; com as mesmas variantes em produção. É nesse momento que alguém terá que criar as variantes exatamente iguais as que foram validadas em QAS. &lt;/ul&gt;&lt;ul&gt;E se fosse transportada para produção a mesma variante dos testes..?? Com certeza daria menos trabalho... &lt;/ul&gt;&lt;br /&gt;
&lt;h4&gt;Exemplo 2&lt;/h4&gt;&lt;br /&gt;
&lt;ul&gt;Foi desenvolvido um novo programa para processar alguma informação qualquer em &lt;code&gt;background&lt;/code&gt;. O programa deverá rodar uma vez por dia com parâmetro dinâmico de data salvo na variante. Então os testes iniciais são realizados através de uma variante salva pelo desenvolvedor. Tanto em QAS quanto em produção, deverá ser criada uma variante igual. &lt;/ul&gt;&lt;ul&gt;Já que essa variante não deverá sofrer alterações, pois ficará rodando em um &lt;code&gt;JOB&lt;/code&gt; regular, poderia ser a mesma variante já criada em DEV. &lt;/ul&gt;&lt;ul&gt;E se fosse incluída, na mesma &lt;code&gt;request&lt;/code&gt; do programa, a variante de execução..?? Isso evitaria criar a mesma variante, pelo menos, três vezes. Além de evitar possíveis erros na criação por alguma falta de atenção. &lt;/ul&gt;&lt;br /&gt;
É possível incluir variantes em &lt;code&gt;requests&lt;/code&gt; para que sejam transportadas entre ambientes. Isso ajuda na organização do trabalho e também na minimização dos riscos de processos manuais. Basta usar o programa &lt;code&gt;standard&lt;/code&gt; &lt;code&gt;RSTRANSP&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Primeiro execute o programa &lt;code&gt;RSTRANSP&lt;/code&gt; nas transações &lt;code&gt;SE38&lt;/code&gt; ou &lt;code&gt;SA38&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/rstransp/SA38_RSTRANSP_359x156.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Programa RSTRANSP&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/rstransp/SA38_RSTRANSP_359x156.png&quot; height=&quot;156&quot; title=&quot;Programa RSTRANSP&quot; width=&quot;359&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Informe o programa &lt;code&gt;RSTRANSP&lt;/code&gt; e depois execute&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Ao executar o programa &lt;code&gt;RSTRANSP&lt;/code&gt;, uma tela de seleção será apresentada onde é necessário informa o nome do programa e também o nome da variante, ou das variantes caso sejam mais de uma. Na imagem abaixo usamos o programa &lt;code&gt;ZTESTEAW&lt;/code&gt; apenas para exemplo. No lugar deste programa, informe o programa do qual se pretende transportar a variante.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/rstransp/RSTRANSP_ZTESTEAW_838x156.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Filtro RSTRANSP&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/rstransp/RSTRANSP_ZTESTEAW_838x156.png&quot; height=&quot;93&quot; title=&quot;Filtro RSTRANSP&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Informe o programa para transporte das variantes e depois execute&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Uma tela será apresentada com o resultado da pesquisa. Se várias variantes, ou todas, foram consultadas, a tela apresentará várias opções para seleção. Então mantenha selecionadas as variantes que deseja transportar e pressione o botão &quot;Avançar&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/rstransp/RSTRANSP_ZTESTEAW_JOB_285x316.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Resultado RSTRANSP&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/rstransp/RSTRANSP_ZTESTEAW_JOB_285x316.png&quot; height=&quot;316&quot; title=&quot;Resultado RSTRANSP&quot; width=&quot;285&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Deixe selecionada a variante e pressione Avançar&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
E por último, deverá ser informado ao sistema em qual &lt;code&gt;change request&lt;/code&gt; será salvo o transporte das variantes. Perceba que é a tela padrão de &lt;code&gt;requests&lt;/code&gt; do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/rstransp/CHANGE_REQUEST_495x140.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Transporte&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/rstransp/CHANGE_REQUEST_495x140.png&quot; height=&quot;140&quot; title=&quot;Transporte&quot; width=&quot;495&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Informe uma &lt;code&gt;change request&lt;/code&gt; para continuar&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Após isso, basta seguir com o procedimento normal de &lt;code&gt;request&lt;/code&gt;. Faça a liberação e depois o transporte nos ambientes através da transação &lt;code&gt;STMS&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Existe outra forma de acessar o programa &lt;code&gt;RSTRANSP&lt;/code&gt;. &lt;br /&gt;
A efetividade é a mesma, apenas o caminho inicial que é um pouco diferente.&lt;br /&gt;
&lt;br /&gt;
Acesse o programa onde estão as variantes através da transação &lt;code&gt;SE38&lt;/code&gt;, porém com a opção de subobjetos de &quot;Variantes&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/rstransp/SE38_VARIANTES_474x354.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;SE38 Variantes&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/rstransp/SE38_VARIANTES_474x354.png&quot; height=&quot;354&quot; title=&quot;SE38 Variantes&quot; width=&quot;474&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Escolha a opção Variantes e acesse o programa&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Na próxima tela, acesse o menu superior nas opções &quot;Utilitários&quot; e depois &quot;Ordem transporte&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/rstransp/VARIANTES_REQUEST_531x113.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Menu Variantes&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/rstransp/VARIANTES_REQUEST_531x113.png&quot; height=&quot;106&quot; title=&quot;Menu Variantes&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Primeiro opção Utilitários e depois opção Ordem transporte&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Agora repare que a próxima tela é a mesma inicial do programa &lt;code&gt;RSTRANSP&lt;/code&gt;.&lt;br /&gt;
Baste seguir os mesmos passos de filtro e depois de &lt;code&gt;request&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Você já conhecia essas possibilidades..??&lt;br /&gt;
Um grande abraço e até a próxima.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/2376654459786391358/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/2376654459786391358?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/2376654459786391358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/2376654459786391358'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2019/08/transporte-de-variantes.html' title='Transporte de variantes'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA8_73aqmLJMrKgjvGr3NxHDrQHherT2-6yMfryWSo1UzP5UxomNFVOMCZ8MdRy4E9qG-R5LSVLVv8UnnBFFD-FHHrpI4mIKSCQAbew5lPxybuQ25iM2g2Hi0UynHiy9ZW7EaSzq9dJBTY/s72-c/TransporteVariante_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-1609882612897091285</id><published>2018-01-20T12:21:00.000-02:00</published><updated>2018-01-20T12:21:17.325-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="macetes"/><title type='text'>Tabelas de características de material para RETAIL</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSEJUs_XPgUhgFYiOKHU3sXyqYbggOoKMOoLcbvD8-jYzsRgwha44u6crZZ4tX1ufmzNzlEmctxj97t1KzWnwQ0OAB68oV9QuJm_-EZzcxq4yrPSvLanQQ1CpR2h5XRCxzkVwKgQyCrJu5/s1600/Caract_tables_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;&quot;&gt;&lt;img alt=&quot;Caracteristicas tabelas&quot; border=&quot;0&quot; data-original-height=&quot;150&quot; data-original-width=&quot;150&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSEJUs_XPgUhgFYiOKHU3sXyqYbggOoKMOoLcbvD8-jYzsRgwha44u6crZZ4tX1ufmzNzlEmctxj97t1KzWnwQ0OAB68oV9QuJm_-EZzcxq4yrPSvLanQQ1CpR2h5XRCxzkVwKgQyCrJu5/s1600/Caract_tables_150x150.png&quot; title=&quot;Caracteristicas tabelas&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Já mencionei anteriormente sobre a importância das características de materiais em &lt;code&gt;RETAIL&lt;/code&gt; e como retornar essas informações através de uma função &lt;code&gt;standard&lt;/code&gt;. Mas quando for necessário retornar dados de muitos materiais, a melhor opção é fazer a consulta diretamente nas tabelas.&lt;br /&gt;
&lt;br /&gt;
Veja nesta postagem quais são as tabelas que devem ser usadas, como as colunas delas estão relacionadas e o uso correto de cada coluna.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-9140080035344337&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;9588557602&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;h3&gt;
Explicação&lt;/h3&gt;
&lt;br /&gt;
Caso haja uma situação onde a massa de dados seja limitada ou então que a quantidade de materiais seja pequena, é recomendado o uso da função standard para retornar as características. Para saber mais sobre a função standard, acesse a postagem &lt;a href=&quot;http://www.abapwarrior.com/2017/04/caracteristicas-de-material-para-retail.html&quot;&gt;Características de material para RETAIL&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Porém, se o cenário possuir muitos registros, o ideal é usar a consulta direto nas tabelas. Você pode estar se perguntando: &quot;Mas a função também não acessa as mesmas tabelas ?&quot;. A resposta é: &quot;Sim!&quot;.&lt;br /&gt;
&lt;br /&gt;
O problema é que a função permite a consulta de apenas um material por vez. Isso significa que quanto mais materiais, mais consultas ao banco serão realizadas para cada tabela. Fazendo a consulta diretamente nas tabelas, mesmo com uma grande quantidade de materiais, será realizada apenas uma consulta ao banco para cada tabela.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Execução&lt;/h3&gt;
&lt;br /&gt;
As tabelas necessárias são: &lt;code&gt;INOB&lt;/code&gt;, &lt;code&gt;AUSP&lt;/code&gt;, &lt;code&gt;CAWN&lt;/code&gt; e &lt;code&gt;CAWNT&lt;/code&gt;, nesta ordem.&lt;br /&gt;
&lt;br /&gt;
Existem duas formas de se trabalhar com características. A característica pode ter valores previamente cadastrados para que o usuário escolha um dos valores, ou também pode ter livre digitação de valores. No caso de valores previamente cadastrados será necessário o uso das quatro tabelas mencionadas. Enquanto que na livre digitação será necessário o uso apenas das duas primeiras.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
1) Tabela &lt;code&gt;INOB&lt;/code&gt;&lt;/h4&gt;
&lt;br /&gt;
Na tabela &lt;code&gt;INOB&lt;/code&gt;, que é a primeira da sequência, utilize as colunas &lt;code&gt;OBTAB&lt;/code&gt;, &lt;code&gt;OBJEK&lt;/code&gt; e &lt;code&gt;KLART&lt;/code&gt;, exatamente nesta ordem. Os valores informados nas colunas devem ser:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;OBTAB&lt;/code&gt; = &#39;MARAT&#39; &lt;/span&gt;&lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; nome da tabela que se relaciona com materiais&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;OBJEK&lt;/code&gt; = [material com 18 dígitos] &lt;/span&gt;&lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; com zeros a esquerdas&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;KLART&lt;/code&gt; = &#39;026&#39; &lt;/span&gt;&lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; tipo de característica usada em grupo de mercadorias&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
É importante o retorno da coluna &lt;code&gt;CUOBJ&lt;/code&gt;, pois ela será usada na próxima consulta.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
2) Tabelas &lt;code&gt;AUSP&lt;/code&gt;&lt;/h4&gt;
&lt;br /&gt;
Para tabela &lt;code&gt;AUSP&lt;/code&gt; precisamos do retorno da tabela &lt;code&gt;INOB&lt;/code&gt;. Utilize as colunas &lt;code&gt;OBJEK&lt;/code&gt;, &lt;code&gt;KLART&lt;/code&gt; e &lt;code&gt;ATINN&lt;/code&gt;. Essa última coluna deve ser usada apenas se houverem características específicas para consultar, caso contrário não informe essa coluna na seleção. Os valores informados nas colunas devem ser:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;OBJEK&lt;/code&gt; = &lt;code&gt;INOB-CUOBJ&lt;code&gt; &lt;/code&gt;&lt;/code&gt;&lt;/span&gt;&lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; retorno da tabela &lt;code&gt;INOB&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;KLART&lt;/code&gt; = &#39;026&#39; &lt;/span&gt;&lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; tipo de característica usada em grupo de mercadorias&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;ATINN&lt;/code&gt; = [característica] &lt;/span&gt;&lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; nome da característica consultada&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Nesta etapa existem algumas particularidades.&lt;br /&gt;
Se for uma característica com valores previamente cadastrados, os valores deverão ser verificados na próxima etapa na tabela &lt;code&gt;CAWN&lt;/code&gt;. &lt;br /&gt;
Se for uma característica com valores de livre digitação, não é necessário passar para próxima etapa.&lt;br /&gt;
Para valores alfanuméricos deve-se usar a coluna &lt;code&gt;ATWRT&lt;/code&gt;. Para valores numéricos deve-se usar a coluna &lt;code&gt;ATFLV&lt;/code&gt;. Existe ainda a opção para valores numéricos com range, então deve-se usar as colunas &lt;code&gt;ATFLV&lt;/code&gt; e &lt;code&gt;ATFLB&lt;/code&gt;.&lt;br /&gt;
Para a próxima etapa retorne as colunas &lt;code&gt;ATINN&lt;/code&gt; e &lt;code&gt;ATWRT&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
3) Tabela &lt;code&gt;CAWN&lt;/code&gt;&lt;/h4&gt;
&lt;br /&gt;
Já na tabela &lt;code&gt;CAWN&lt;/code&gt; é onde estão os valores previamente cadastrados para cada característica. É importante saber que se não houver valores cadastrados nesta tabela o sistema irá permitir livre digitação na característica (de acordo com o formato e tipo cadastrados). Para buscar as descrições dos valores das características, obrigatoriamente é necessário passar por essa etapa. Deverão ser usadas as colunas &lt;code&gt;ATINN&lt;/code&gt; e &lt;code&gt;ATWRT&lt;/code&gt; da seguinte forma:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;ATINN&lt;/code&gt; = &lt;code&gt;AUSP-ATINN&lt;/code&gt; &lt;/span&gt;&lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; retorno da tabela &lt;code&gt;AUSP&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;ATWRT&lt;/code&gt; = &lt;code&gt;AUSP-ATWRT&lt;/code&gt;&lt;/span&gt; &lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; retorno da tabela &lt;code&gt;AUSP&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
É necessário o retorno das colunas &lt;code&gt;ATINN&lt;/code&gt;, &lt;code&gt;ATZHL&lt;/code&gt; e &lt;code&gt;ADZHL&lt;/code&gt; para  chegar até a próxima etapa.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
4) Tabela &lt;code&gt;CAWNT&lt;/code&gt;&lt;/h4&gt;
&lt;br /&gt;
E finalmente a tabela da última etapa, onde estão as descrições das características. A consulta deve ser feita usando as colunas retornadas da etapa anterior e também a coluna de idioma: &lt;code&gt;ATINN&lt;/code&gt;, &lt;code&gt;ATZHL&lt;/code&gt;, &lt;code&gt;SPRAS&lt;/code&gt; e &lt;code&gt;ADZHL&lt;/code&gt;. Os valores informados nas colunas devem ser:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;ATINN&lt;/code&gt; = &lt;code&gt;CAWN-ATINN&lt;/code&gt; &lt;/span&gt;&lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; retorno da tabela &lt;code&gt;CAWN&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;ATZHL&lt;/code&gt; = &lt;code&gt;CAWN-ATZHL&lt;/code&gt;&lt;/span&gt; &lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; retorno da tabela &lt;code&gt;CAWN&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;SPRAS&lt;/code&gt; = &lt;code&gt;SY-LANGU&lt;/code&gt;&lt;/span&gt; &lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; variável do sistema para idioma do login&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;code&gt;ADZHL&lt;/code&gt; = &lt;code&gt;CAWN-ADZHL&lt;/code&gt;&lt;/span&gt; &lt;i style=&quot;color: #999999; font-family: inherit;&quot;&gt;&quot; retorno da tabela &lt;code&gt;CAWN&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
A descrição fica armazenada na coluna &lt;code&gt;ATWTB&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parece trabalhoso, mas o resultado é muito satisfatório.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/1609882612897091285/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/1609882612897091285?isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/1609882612897091285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/1609882612897091285'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2018/01/tabelas-caracteristicas-de-material-para-retail.html' title='Tabelas de características de material para RETAIL'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSEJUs_XPgUhgFYiOKHU3sXyqYbggOoKMOoLcbvD8-jYzsRgwha44u6crZZ4tX1ufmzNzlEmctxj97t1KzWnwQ0OAB68oV9QuJm_-EZzcxq4yrPSvLanQQ1CpR2h5XRCxzkVwKgQyCrJu5/s72-c/Caract_tables_150x150.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-8071061648029126587</id><published>2017-11-11T19:14:00.001-02:00</published><updated>2017-11-11T19:14:13.573-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SAP notes"/><title type='text'>SAP Note 1907484 - How to switch between the PC editor and MS editor</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwgbhiyvtuWThUwYcpj4hht1-FOpumSI3SpzzGW8_pQPy8G5gk_2NlWfFcNR33qqoe34yQF4jdHihpYhXzTkOCIJZiUZg4yZEXSya68wv-bGUnOtyHSpXUhMzueCI7bSvbFfO9DOxL9Wuq/s1600/sap_note_1907484_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;150&quot; data-original-width=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwgbhiyvtuWThUwYcpj4hht1-FOpumSI3SpzzGW8_pQPy8G5gk_2NlWfFcNR33qqoe34yQF4jdHihpYhXzTkOCIJZiUZg4yZEXSya68wv-bGUnOtyHSpXUhMzueCI7bSvbFfO9DOxL9Wuq/s1600/sap_note_1907484_150x150.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Ao usar o SAP GUI versão 7.4, ou superior, são apresentados vários erros na tela durante a edição de documentação de objetos ABAP.&lt;br /&gt;
&lt;br /&gt;
No início pensei haver alguma incompatibilidade de versões entre SAP GUI e sistema operacional, mas na verdade existe uma nota de parametrização para corrigir esse problema.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;SAP Note&lt;/code&gt; 1907484.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Não sabe o que é uma nota da SAP...??? Entenda mais na postagem &lt;a href=&quot;http://www.abapwarrior.com/2017/11/sap-notes.html&quot;&gt;&lt;code&gt;SAP Notes&lt;/code&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-9140080035344337&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;9588557602&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
Havia começado a usar o SAP GUI 7.4. Gostei muito do tema &lt;code&gt;Blue Crystal Theme&lt;/code&gt;, porém haviam alguns problemas, como por exemplo algumas imagens que desapareciam em algumas telas. Além disso, mesmo em outro tema aconteciam vários erros quando tentava editar uma documentação de objeto ABAP. Depois de pesquisar um pouco, percebi outras pessoas reclamando do mesmo problema quando usavam &lt;code&gt;Windows&lt;/code&gt; 7, então achei que todos os problemas eram por conta da versão do &lt;code&gt;Windows&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Como na época eu ainda não tinha nenhuma perspectiva de começar a usar o &lt;code&gt;Windows&lt;/code&gt; 10, decidi voltar a usar o SAP GUI 7.3. Afinal, vale a pena abrir mão de um tema bonito para manter sua ferramenta funcionando 100%.&lt;br /&gt;
&lt;br /&gt;
Passado algum tempo, comecei a usar o &lt;code&gt;Windows&lt;/code&gt; 10. Quando fui instalar o SAP GUI, me lembrei da versão mais nova. Foi quando percebi que já havia uma versão mais atual, a 7.5. Instalei e me conectei ao SAP, e foi uma satisfação ver que não havia mais problemas de imagens que desapareciam. Então fui tentar editar uma documentação de objeto ABAP e para minha surpresa o problema de erros na tela ainda continuava.&lt;br /&gt;
&lt;br /&gt;
Foi então que compartilhei o problema com um colega BASIS. Pronto, problema resolvido. Ele encontrou um nota da SAP ensinando como resolver o problema. Um procedimento muito simples. Verifique a &lt;a href=&quot;https://drive.google.com/open?id=1twpwPCeVjeZcFxEcf9CQs77YoY1kD-qn&quot; target=&quot;_blank&quot;&gt;SAP Note&amp;nbsp;1907484&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
O problema acontece porquê a partir da versão 7.4 do SAP GUI, o SAP te obriga a usar as extensões do Word para editar documentações de objetos ABAP. Até a versão 7.3 podia se usar o próprio editor do SAP GUI. Em alguns ambientes falta esse pequeno procedimento descrito na nota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espero que seja útil.&lt;br /&gt;
Um grande abraço e até a próxima...&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/8071061648029126587/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/8071061648029126587?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/8071061648029126587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/8071061648029126587'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2017/11/sap-note-1907484-how-to-switch-between-the-pc-editor-and-ms-editor.html' title='SAP Note 1907484 - How to switch between the PC editor and MS editor'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwgbhiyvtuWThUwYcpj4hht1-FOpumSI3SpzzGW8_pQPy8G5gk_2NlWfFcNR33qqoe34yQF4jdHihpYhXzTkOCIJZiUZg4yZEXSya68wv-bGUnOtyHSpXUhMzueCI7bSvbFfO9DOxL9Wuq/s72-c/sap_note_1907484_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-96169329765692418</id><published>2017-11-10T22:35:00.001-02:00</published><updated>2017-11-10T22:35:58.576-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SAP notes"/><category scheme="http://www.blogger.com/atom/ns#" term="sobre"/><title type='text'>SAP Notes</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Bq69_wXp149uCJyhQEamQ1xtN6efvgSFKPx0JjHak2FZyAMj03j3T3YXQ704NwXk-NGNYitd5EF9eNmtijHWKRLx1ASHxRmTlj6KE5LAbj342llqrFbfeLvSjoqmQIRsawD_FTHLyMHl/s1600/sap_notes_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;150&quot; data-original-width=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Bq69_wXp149uCJyhQEamQ1xtN6efvgSFKPx0JjHak2FZyAMj03j3T3YXQ704NwXk-NGNYitd5EF9eNmtijHWKRLx1ASHxRmTlj6KE5LAbj342llqrFbfeLvSjoqmQIRsawD_FTHLyMHl/s1600/sap_notes_150x150.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
O que fazer quando se identifica um programa/processo standard que não está funcionando da forma correta? É bem provável que exista um erro e ele precisa ser tratado...&lt;br /&gt;
&lt;br /&gt;
O primeiro passo é procurar por uma nota de correção da &lt;code&gt;SAP&lt;/code&gt;, também conhecida como &lt;code&gt;SAP Note&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Vamos explorar um pouco esse tema. Útil e necessário para o dia-a-dia de um profissional SAP.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-9140080035344337&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;9588557602&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
Encontrar erros em programas standards não é tão raro. Isso porquê não existe um sistema infalível. O importante é estar preparado para quando um erro acontecer.&lt;br /&gt;
&lt;br /&gt;
Constantemente a &lt;code&gt;SAP&lt;/code&gt; libera pacotes de atualização chamados de &lt;code&gt;Support Packages&lt;/code&gt;. Basicamente eles são conjuntos de notas de correção e novas funcionalidades. É sempre muito importante manter as versões de &lt;code&gt;Support Packages&lt;/code&gt; atualizadas, principalmente por questões de legislação e impostos, e também para ter sempre as últimas notas de correção aplicadas.&lt;br /&gt;
&lt;br /&gt;
Mas também sei que nem sempre é fácil aplicar &lt;code&gt;Support Packages&lt;/code&gt;. Isso porquê é necessário fazer muitos testes quando se chega no nível do &lt;code&gt;SP&lt;/code&gt; desejado. Muitas vezes a saída é procurar por &lt;code&gt;SAP Notes&lt;/code&gt; que resolvam um problema específico.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Diferentes tipos de &lt;code&gt;SAP Notes&lt;/code&gt;&lt;/h3&gt;
&lt;br /&gt;
Deve-se levar em consideração que existem diferentes tipos de notas. Notas de correção de programas, notas de procedimento, notas de &lt;code&gt;customizing&lt;/code&gt;. As vezes procurando uma nota de correção acaba-se encontrando uma nota de procedimento explicando como o processo deve funcionar, e pode-se chegar a conclusão de que o processo está errado. O importante é que o intuito das notas é sempre auxiliar na correção de um problema.&lt;br /&gt;
&lt;br /&gt;
Ainda em notas de correção de programa, podem haver dois tipos. As notas que são aplicáveis automaticamente pelo próprio sistema, que podem ser implementadas através da transação &lt;code&gt;SNOTE&lt;/code&gt;. E também existem as correções manuais, onde a &lt;code&gt;SAP&lt;/code&gt; diz onde e como as alterações devem ser aplicadas, autorizando uma alteração no programa &lt;code&gt;standard&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Como procurar por &lt;code&gt;SAP Notes&lt;/code&gt;&lt;/h3&gt;
&lt;br /&gt;
A &lt;code&gt;SAP&lt;/code&gt; disponibiliza um portal para que seus clientes possam procurar por notas. É&amp;nbsp;possível também abrir um chamado e eles responderão, dentro do &lt;code&gt;SLA&lt;/code&gt;, com uma ou mais notas necessárias para corrigir o problema. Particularmente, prefiro procurar por notas antes de abrir um chamado, pois a resposta de um chamado pode demorar algum tempo. Mas dependendo do problema, abrir um chamado será inevitável.&lt;br /&gt;
&lt;br /&gt;
Para acessar o portal de notas da &lt;code&gt;SAP&lt;/code&gt; use o link &lt;a href=&quot;http://support.sap.com/notes&quot;&gt;support.sap.com/notes&lt;/a&gt;. E então informe algo relacionado ao problema no campo onde está escrito &quot;&lt;code&gt;&lt;i&gt;Enter keywords or an SAP Note / KBA number&lt;/i&gt;&lt;/code&gt;&quot; (veja na imagem abaixo).&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/sap-notes/tela_inicial_755x240.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Onde pesquisar notas da SAP&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/sap-notes/tela_inicial_755x240.png&quot; data-original-height=&quot;240&quot; data-original-width=&quot;755&quot; height=&quot;159&quot; title=&quot;Onde pesquisar notas da SAP&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Veja onde pesquisar notas da SAP&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
A dica é pesquisar todas as palavras possíveis que tenham alguma ligação com o problema até achar alguma nota. Nomes de programas, includes, transações, tabelas utilizadas, nomes técnicos de campos, nomes de processos, mensagens de erro, etc. Também é possível ir direto a uma nota já conhecida informando o número no mesmo campo.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Acesso ao &lt;code&gt;SAP Notes&lt;/code&gt;&lt;/h3&gt;
&lt;br /&gt;
Logo após pesquisar será exigido usuário e senha para acesso. Isso porquê o ambiente de suporte da &lt;code&gt;SAP&lt;/code&gt; é restrito apenas para parceiros e clientes. Procure saber com o &lt;code&gt;BASIS&lt;/code&gt; de sua equipe ou com o gestor da TI sobre o login de sua empresa.&lt;br /&gt;
&lt;br /&gt;
A tela para preenchimento de usuário e senha é semelhante a tela da imagem a baixo.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://sites.google.com/site/awstge/post/sap-notes/tela_login_375x370.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tela de login&quot; border=&quot;0&quot; data-original-height=&quot;370&quot; data-original-width=&quot;375&quot; height=&quot;245&quot; src=&quot;https://sites.google.com/site/awstge/post/sap-notes/tela_login_375x370.png&quot; title=&quot;Tela de login&quot; width=&quot;248&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Exemplo de tela para realizar login de acesso&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
A autenticação com usuário e senha é obrigatória. Sem ela não é possível ter acesso ao portal de suporte da &lt;code&gt;SAP&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Resultado da procura de notas&lt;/h3&gt;
&lt;br /&gt;
Após a autenticação, ou se já estiver autenticado, o portal exibirá o resultado da busca. Além de notas de correção, também serão exibidos resultados de discussões entre profissionais da comunidade &lt;code&gt;SAP&lt;/code&gt;. Essas discussões também ajudam, pois outras pessoas podem ter passado pelo mesmo problema.&lt;br /&gt;
&lt;br /&gt;
Para que fique mais seguro de que o resultado atende as expectativas, é possível usar filtros para descartar resultados não relevantes. Como por exemplo, filtrar componente técnico do sistema, módulos e submódulos, ou ainda a data de postagem da nota.&lt;br /&gt;
&lt;br /&gt;
E depois de usar filtros, ainda é necessário ficar atento a três seções dentro das notas: &lt;code&gt;[Symptom]&lt;/code&gt;, &lt;code&gt;[Software Components]&lt;/code&gt; e &lt;code&gt;[Prerequisites]&lt;/code&gt;. Se não considerar estas seções, poderá chegar a solução incorreta. Acontece com frequência de depois de encontrar uma nota que descreve exatamente o que está acontecendo no sistema, ao considerar o &lt;code&gt;Software Components&lt;/code&gt; poderá perceber que a solução não se aplica a versão que está utilizando. Continue procurando...&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Outras fontes de busca&lt;/h3&gt;
&lt;br /&gt;
O suporte da &lt;code&gt;SAP&lt;/code&gt; é um serviço contratado, ou seja, deve-se pagar por ele. Algumas empresas tomam a decisão de deixar esse serviço de lado e partir para suportes alternativos. Se este for o caso da empresa onde trabalha, você terá que encontrar a solução sem contar com o portal de suporte da &lt;code&gt;SAP&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Por fim, acho interessante ressaltar que a internet possui uma grande base de informações que podemos usar para buscar algo que não sabemos (na atualidade esse termo tem sido chamado de exteligência). Então podemos usar essa exteligência para tentar encontrar soluções. Existe uma grande quantidade de portais e blogs com dados de &lt;code&gt;SAP Notes&lt;/code&gt;, depoimentos de quem usou, se resolveu ou não, enfim... Existem muitas formas de buscar uma solução.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Em breve, espero poder ajudar com algumas notas...&lt;br /&gt;
Um grande abraço e até a próxima.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/96169329765692418/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/96169329765692418?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/96169329765692418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/96169329765692418'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2017/11/sap-notes.html' title='SAP Notes'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Bq69_wXp149uCJyhQEamQ1xtN6efvgSFKPx0JjHak2FZyAMj03j3T3YXQ704NwXk-NGNYitd5EF9eNmtijHWKRLx1ASHxRmTlj6KE5LAbj342llqrFbfeLvSjoqmQIRsawD_FTHLyMHl/s72-c/sap_notes_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-1690878750191257411</id><published>2017-04-28T00:10:00.000-03:00</published><updated>2018-10-06T10:12:53.656-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="comandos"/><title type='text'>Comando CONDENSE</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrRnWK9A_fX_1hAFvKrkrrvAbti88Z2g8e9BhEpNjK4CBXViGUEo5lxeXJwtP0Jky6nt5gYv-rZiyvayPAMAAhpKuhMybZ-HOD_OLUIh8Zdn1VflBrvQC1_J1WniEe76m309KKcN_EYWSx/s1600/Comando_CONDENSE_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Comando CONDENSE&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrRnWK9A_fX_1hAFvKrkrrvAbti88Z2g8e9BhEpNjK4CBXViGUEo5lxeXJwtP0Jky6nt5gYv-rZiyvayPAMAAhpKuhMybZ-HOD_OLUIh8Zdn1VflBrvQC1_J1WniEe76m309KKcN_EYWSx/s1600/Comando_CONDENSE_150x150.png&quot; title=&quot;Comando CONDENSE&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Se você tentou formar um texto juntando várias palavras, mas acabaram ficando várias espaços excedentes entre elas... Ou se você tentou formar uma palavra juntando vários caracteres, mas acabaram ficando espaços entre eles... Existe uma solução...&lt;br /&gt;
&lt;br /&gt;
Conheça o comando &lt;code&gt;CONDENSE&lt;/code&gt;, saiba o que ele pode fazer, e não se preocupe mais com espaços que atrapalham.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Um espaço pode parecer algo insignificante, mas se estiver no lugar errado ou em quantidade errada pode atrapalhar muito. Trabalhando com campos do tipo &lt;code&gt;string&lt;/code&gt;, &lt;code&gt;char&lt;/code&gt; ou qualquer outro alfanumérico inevitavelmente iremos nos deparar com essa situação. Mais uma postagem da &lt;a href=&quot;http://www.abapwarrior.com/p/series.html#comandos&quot;&gt;série COMANDOS&lt;/a&gt;.&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-9140080035344337&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;9588557602&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;h3&gt;O que é um &lt;code&gt;CONDENSE&lt;/code&gt; ?&lt;/h3&gt;&lt;br /&gt;
É um comando usado para remover espaços existentes dentro de variáveis ou objetos com conteúdo alfanumérico. Essencial para se trabalhar com textos.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Como funciona o &lt;code&gt;CONDENSE&lt;/code&gt; ?&lt;/h3&gt;&lt;br /&gt;
O comando &lt;code&gt;CONDENSE&lt;/code&gt; é muito simples de ser implementado. Existem duas formas diferentes de usá-lo. Uma que remove os espaços do início e do fim do texto, e os espaços existentes entre as palavras são reduzidos para apenas um entre cada uma delas. E outra que remove completamente qualquer espaço existente no texto.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Produzindo um cenário&lt;/h4&gt;&lt;br /&gt;
Primeiramente vamos produzir um cenário para mostrar em que situação existe a necessidade de tratar espaços. Considere os seguintes trechos de código:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;TYPES&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;BEGIN OF &lt;/span&gt;y_phrase,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;part1 &lt;span style=&quot;color: blue;&quot;&gt;TYPE &lt;/span&gt;c &lt;span style=&quot;color: blue;&quot;&gt;LENGTH &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;10&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;part2 &lt;span style=&quot;color: blue;&quot;&gt;TYPE &lt;/span&gt;c &lt;span style=&quot;color: blue;&quot;&gt;LENGTH &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;10&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;part3 &lt;span style=&quot;color: blue;&quot;&gt;TYPE &lt;/span&gt;c &lt;span style=&quot;color: blue;&quot;&gt;LENGTH &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;10&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;END OF &lt;/span&gt;y_phrase.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i style=&quot;background-color: #eeeeee;&quot;&gt;Declaração de um &lt;code&gt;TYPE&lt;/code&gt; chamado &lt;code&gt;Y_PHRASE&lt;/code&gt; com três campos. Os três do tipo &lt;code&gt;CHAR&lt;/code&gt; e tamanho 10.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;DATA&lt;/span&gt;: w_phrase &lt;span style=&quot;color: blue;&quot;&gt;TYPE &lt;/span&gt; y_phrase,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l_phrase &lt;span style=&quot;color: blue;&quot;&gt;TYPE &lt;/span&gt; c &lt;span style=&quot;color: blue;&quot;&gt;LENGHT &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;30&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i style=&quot;background-color: #eeeeee;&quot;&gt;Declaração de uma estrutura chamada&amp;nbsp;&lt;code&gt;W_PHRASE&lt;/code&gt; do tipo &lt;code&gt;Y_PHRASE&lt;/code&gt;. Declaração da variável &lt;code&gt;L_PHRASE&lt;/code&gt; do tipo &lt;code&gt;CHAR&lt;/code&gt; e tamanho 30.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;w_phrase-part1 = &lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Hello&#39;&lt;/span&gt;.&lt;br /&gt;
w_phrase-part2 = &lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;World&#39;&lt;/span&gt;.&lt;br /&gt;
w_phrase-part3 = &lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;!&#39;&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i style=&quot;background-color: #eeeeee;&quot;&gt;Preenchimento dos campos da estrutura &lt;code&gt;W_PHRASE&lt;/code&gt; com os textos &quot;&lt;code&gt;Hello&lt;/code&gt;&quot;, &quot;&lt;code&gt;World&lt;/code&gt;&quot; e &quot;!&quot;.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;l_phrase = w_phrase.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i style=&quot;background-color: #eeeeee;&quot;&gt;Transferir todo conteúdo da estrutura &lt;code&gt;W_PHRASE&lt;/code&gt; para a variável &lt;code&gt;L_PHRASE&lt;/code&gt;.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Esta última linha de código faz com que a variável &lt;code&gt;L_PHRASE&lt;/code&gt; seja preenchida com o conteúdo dos três campos da estrutura &lt;code&gt;W_PHRASE&lt;/code&gt;. Desta forma, o conteúdo dos três campos será transferido com os espaços completando o tamanho de cada campo. O conteúdo da variável &lt;code&gt;L_PHRASE&lt;/code&gt; ficará assim:&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;Hello&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;World&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Agora pintando cada espaço para que se possa ver onde estão.&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;Hello&lt;span style=&quot;background-color: lime;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: yellow;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: lime;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: yellow;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: lime;&quot;&gt;&amp;nbsp;&lt;/span&gt;World&lt;span style=&quot;background-color: yellow;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: lime;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: yellow;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: lime;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: yellow;&quot;&gt;&amp;nbsp;&lt;/span&gt;!&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
No total são 10 espaços desnecessários que estão sobrando e/ou atrapalhando.&lt;br /&gt;
Então agora com o cenário montado, vamos ver como usar o comando &lt;code&gt;CONDENSE&lt;/code&gt; para retirar esses espaços.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Reduzindo os espaços excedentes para apenas um espaço&lt;/h4&gt;&lt;br /&gt;
Para fazer a chamada do comando &lt;code&gt;CONDENSE&lt;/code&gt; basta colocá-lo à esquerda da variável que deseja aplicar o efeito. Exemplo de chamada com a variável &lt;code&gt;L_PHRASE&lt;/code&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;CONDENSE &lt;/span&gt;l_phrase.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Após a execução do comando acima, os espaços excedentes serão removidos ficando apenas um espaço entre as palavras. O conteúdo da variável &lt;code&gt;L_PHRASE&lt;/code&gt; fica assim: &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;Hello World !&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Agora pintando os espaços.&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;Hello&lt;span style=&quot;background-color: lime;&quot;&gt;&amp;nbsp;&lt;/span&gt;World&lt;span style=&quot;background-color: yellow;&quot;&gt;&amp;nbsp;&lt;/span&gt;!&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Removendo todos os espaços&lt;/h4&gt;&lt;br /&gt;
Para remover todos os espaços basta acrescentar o parâmetro &lt;code&gt;NO-GAPS&lt;/code&gt; à direita da variável. Exemplo de chamada:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;CONDENSE &lt;/span&gt;l_phrase &lt;span style=&quot;color: blue;&quot;&gt;NO-GAPS&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Após a execução do comando acima, todos os espaços existentes serão removidos. O conteúdo da variável &lt;code&gt;L_PHRASE&lt;/code&gt; fica assim: &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: left;&quot;&gt;HelloWorld!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O comando &lt;code&gt;CONDENSE&lt;/code&gt; é muito simples, mas muito útil. &lt;br /&gt;
Faz parte do dia-a-dia de um ABAP.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/1690878750191257411/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/1690878750191257411?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/1690878750191257411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/1690878750191257411'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2017/04/comando-condense.html' title='Comando CONDENSE'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrRnWK9A_fX_1hAFvKrkrrvAbti88Z2g8e9BhEpNjK4CBXViGUEo5lxeXJwtP0Jky6nt5gYv-rZiyvayPAMAAhpKuhMybZ-HOD_OLUIh8Zdn1VflBrvQC1_J1WniEe76m309KKcN_EYWSx/s72-c/Comando_CONDENSE_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-4962551939934639040</id><published>2017-04-01T14:40:00.000-03:00</published><updated>2017-07-08T22:44:22.951-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="funções"/><category scheme="http://www.blogger.com/atom/ns#" term="utilização"/><title type='text'>Características de material para RETAIL</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfD7RNWAknk9Dn92jXaI4R746JsK_xkX2xtzeU4iJIWfa2tE0Sp0ukS3SoUNZCshuTUNRFkD2uCRFItwPlD2NLv3FeorhVel2-4j9KjWpuSlgQwwPcEbfZYzJkqsuwB5dFZkpm5oRgObyo/s1600/Caracteristicas_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Caracteristicas&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfD7RNWAknk9Dn92jXaI4R746JsK_xkX2xtzeU4iJIWfa2tE0Sp0ukS3SoUNZCshuTUNRFkD2uCRFItwPlD2NLv3FeorhVel2-4j9KjWpuSlgQwwPcEbfZYzJkqsuwB5dFZkpm5oRgObyo/s1600/Caracteristicas_150x150.png&quot; title=&quot;Caracteristicas&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;A classificação no SAP, de uma forma geral, é algo muito interessante e pode ser aplicada em diversos objetos. E no &lt;code&gt;RETAIL&lt;/code&gt; temos também a classificação de materiais através do grupo de mercadorias, que é um agrupamento de características.&lt;br /&gt;
&lt;br /&gt;
Existe uma função específica para retornar as características de um material. Vamos ver como chamar essa função e como processar seu retorno.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-9140080035344337&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;9588557602&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
As características de um material são encontradas dentro das transações de mestre de material em &lt;code&gt;RETAIL&lt;/code&gt; (MM41, MM42 e MM43). Elas têm a estrutura   vinculada ao grupo de mercadorias do material, isso quer dizer que pode haver combinações de diferentes características dependendo do grupo de mercadorias atribuído ao material. Elas tem uma mecânica muito parecida com os sistemas de classificação dentro do SAP, porém agrupadas pelo grupo de mercadorias.&lt;br /&gt;
&lt;br /&gt;
Também existe uma variação de características quando são usados materiais genéricos e suas variantes. É possível especificar quais características serão relevantes na criação de materiais variantes. Essas características também dependem do grupo de mercadorias.&lt;br /&gt;
&lt;br /&gt;
Para consultar as características de um material existe uma BAPI/função muito interessante: &lt;b&gt;&lt;code&gt;BAPI_MATERIAL_GETCHARMERCHHIER&lt;/code&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Para chamar essa função basta apenas informar o material no campo &lt;code&gt;MATERIAL&lt;/code&gt;. Se houver a necessidade de trabalhar com outro idioma, diferente do idioma que foi feito &lt;code&gt;login&lt;/code&gt;, basta informar nos campos &lt;code&gt;LANGUAGE&lt;/code&gt; ou &lt;code&gt;LANGUAGE_ISO&lt;/code&gt; &lt;i&gt;(se for usar idioma interno, como &lt;code&gt;SY-LANGU&lt;/code&gt;, use no campo &lt;code&gt;LANGUAGE&lt;/code&gt;; se for usar idioma externo, como &lt;code&gt;PT&lt;/code&gt; ou &lt;code&gt;EN&lt;/code&gt;, use no campo &lt;code&gt;LANGUAGE_ISO&lt;/code&gt;)&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;Exemplo de chamada da função:&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;code&gt;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;CALL FUNCTION &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;BAPI_MATERIAL_GETCHARMERCHHIER&#39;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;EXPORTING&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; material &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= &lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;B12345&#39;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; language &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= sy-langu&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;IMPORTING&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= w_return&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;TABLES&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; characteristics       = t_characteristics.&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i&gt;Um ponto de atenção é para o uso de rotinas de conversão para o campo &lt;code&gt;MATERIAL&lt;/code&gt;. Caso esteja usando um intervalo numérico de materiais, será necessário completar com zeros a esquerda ou usar a função de conversão &lt;code&gt;CONVERSION_EXIT_MATN1_INPUT&lt;/code&gt; para converter o valor.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
A estrutura &lt;code&gt;W_RETURN&lt;/code&gt; é declarada com o tipo &lt;code&gt;BAPIRETURN1&lt;/code&gt;. Essa estrutura irá retornar uma mensagem, que pode ser de erro ou de sucesso, de acordo com a execução da função. É interessante checar esse retorno antes de seguir para as características.&lt;br /&gt;
&lt;br /&gt;
A tabela &lt;code&gt;T_CHARACTERISTICS&lt;/code&gt; é declarada com o tipo &lt;code&gt;BAPIMATCHA&lt;/code&gt;. Essa tabela irá retornar todas as características cadastradas para o material consultado. Segue abaixo a estrutura detalhada desta tabela.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&lt;code&gt;NAME_CHAR&lt;/code&gt;&lt;/h4&gt;É o nome técnico da característica. Chave única para identificação da característica.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&lt;code&gt;DESCR_CHAR&lt;/code&gt;&lt;/h4&gt;Denominação ou descrição da característica. Nesta coluna será retornado o texto explicativo cadastrado na característica.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&lt;code&gt;RELEVANCY&lt;/code&gt;&lt;/h4&gt;Código de relevância para materiais variantes. Esta coluna estará preenchida quando a característica for relevante para determinação de variantes e o material consultado for um material variante.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&lt;code&gt;CHAR_VALUE&lt;/code&gt;&lt;/h4&gt;Valor da característica. Aqui será retornado o valor interno da característica. Se for uma característica de livre digitação, será retornado o texto ou valor digitado. E se for uma característica com valores possíveis pré-definidos, será retornado o código do valor.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&lt;code&gt;DESCR_CVAL&lt;/code&gt;&lt;/h4&gt;Descrição do valor da característica. Aqui será retornada a descrição referente ao valor da característica, caso tenha valores pré-definidos. Mas se for uma característica de livre digitação, essa coluna terá o mesmo valor da coluna &lt;code&gt;CHAR_VALUE&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Em breve vou mostrar, em uma nova postagem, como fazer essas consultas em larga escala, consultando diretamente as tabelas &lt;code&gt;standards&lt;/code&gt; de características.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/4962551939934639040/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/4962551939934639040?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/4962551939934639040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/4962551939934639040'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2017/04/caracteristicas-de-material-para-retail.html' title='Características de material para RETAIL'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfD7RNWAknk9Dn92jXaI4R746JsK_xkX2xtzeU4iJIWfa2tE0Sp0ukS3SoUNZCshuTUNRFkD2uCRFItwPlD2NLv3FeorhVel2-4j9KjWpuSlgQwwPcEbfZYzJkqsuwB5dFZkpm5oRgObyo/s72-c/Caracteristicas_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-4867612401376952616</id><published>2017-02-15T21:26:00.000-02:00</published><updated>2017-04-09T16:23:58.482-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="organização"/><category scheme="http://www.blogger.com/atom/ns#" term="utilização"/><title type='text'>Acessar o SAP em outro idioma</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrL2mo800B_v8BFMvTrgtJeKOlwdWCWWXwM5t2WW_86X0fE_855JmUnjf_o9aukm7AcF9Mw8ClqrYnQlMI4bZsbNwZWMVNZ9AdNJsX56mC8d-K8TUCTB3C5P3xE2hiGgCrgf-5umlKV5Te/s1600/SAP_Idiomas_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Idiomas SAP&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrL2mo800B_v8BFMvTrgtJeKOlwdWCWWXwM5t2WW_86X0fE_855JmUnjf_o9aukm7AcF9Mw8ClqrYnQlMI4bZsbNwZWMVNZ9AdNJsX56mC8d-K8TUCTB3C5P3xE2hiGgCrgf-5umlKV5Te/s1600/SAP_Idiomas_150x150.png&quot; title=&quot;Idiomas SAP&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Quando se trata de uma empresa multinacional, uma das coisas imprescindíveis é que o sistema disponibilize formas de acesso em outros idiomas.&lt;br /&gt;
&lt;br /&gt;
Veja como é fácil acessar o SAP em outro idioma e o que isso representa na prática para o dia-a-dia de uma empresa, de um colaborador ou de um técnico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Imagine que uma empresa decida expandir seus negócios para um país diferente de onde está sediada. Pode ser que este país tenha como oficial um idioma diferente do país de origem desta empresa. Por mais que essa empresa leve alguns funcionários para esta nova empreitada, terá de contratar funcionários do novo país. Em qual idioma o sistema desta empresa deve operar? Se for SAP a empresa pode operar em quais idiomas precisar.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
Na tela de login do SAP você pode informar o idioma que deseja acessar. Veja o campo destacado em amarelo na imagem abaixo.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/acessando-idioma/Login_Idioma_250x226.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Campo de idioma do SAP&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/acessando-idioma/Login_Idioma_250x226.png&quot; height=&quot;226&quot; title=&quot;Campo de idioma do SAP&quot; width=&quot;250&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Tela de login do SAP - Campo de Idioma&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Na imagem acima, repare que o idioma já está preenchido com &lt;code&gt;PT&lt;/code&gt; que é a abreviação de português. Geralmente se define um idioma padrão que sempre estará preenchido nesta tela. Mas é possível informar outro idioma. Não existe um &lt;code&gt;match-code&lt;/code&gt; para este campo nesta tela, então é obrigatório que o idioma seja digitado.&lt;br /&gt;
&lt;br /&gt;
O único detalhe é saber quais são as abreviações de cada idioma. Algumas das abreviações são: Alemão = &lt;code&gt;DE&lt;/code&gt;, Português = &lt;code&gt;PT&lt;/code&gt;, Inglês = &lt;code&gt;EN&lt;/code&gt; e Espanhol = &lt;code&gt;ES&lt;/code&gt;. Para saber sobre outros idiomas consulte a tabela standard &lt;code&gt;T002&lt;/code&gt;, nela se encontram todos os idiomas disponíveis. Mas atenção, não é só porquê o idioma existe na tabela que você irá conseguir acessá-lo, pois o idioma precisa antes estar habilitado pelo &lt;code&gt;BASIS&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Acessando com outro idioma todo o sistema estará traduzido para o idioma informado. Para transações e programas standard é praticamente certo de que estarão traduzidos. Podem haver erros de tradução ou concordância, mas nada que atrapalhe o entendimento.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;------------------------------&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;O que muda para empresa ?&lt;/h3&gt;&lt;br /&gt;
Em um contexto geral, é muito importante que a empresa possa apresentar relatórios em todos os idiomas em que opera. Então, se a empresa opera em dois países, sendo que um fala português e em outro fala espanhol, o ideal é habilitar os dois idiomas em todo o sistema para que qualquer pessoa da empresa possa ver todas as transações e relatórios no idioma que preferir.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que muda para o colaborador ?&lt;/h3&gt;&lt;br /&gt;
Bom, aí depende de que país é o colaborador, ou pra quem ele responde corporativamente. Se o colaborador é de outro país, e não domina o idioma falado na empresa, é importante que o sistema disponibilize um idioma que o deixe mais confortável. Alguns podem pensar: &quot;ah, mas cada um tem que se responsabilizar em aprender o idioma necessário!&quot;. Concordo. Mas isso nem sempre é possível, principalmente quando a empresa expande os negócios adquirindo empresas de outro país. Pode levar um tempo até que os colaboradores da empresa adquirida aprendam a falar o idioma de sua nova matriz. Por isso é interessante disponibilizar outro idioma no sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que muda para o técnico ?&lt;/h3&gt;&lt;br /&gt;
Para o técnico funcional não muda praticamente nada. Basta fazer login no idioma disponível e fazer as configurações e as criações de cenários normalmente. Acredito que o inglês, como regra geral, estará disponível junto com algum outro idioma. Considerando este fato, acesse em inglês que fica tudo bem. Já para os ABAPs existe uma tarefa árdua, que deve ser considerada em qualquer empresa multinacional, que é a tradução de todos os textos existentes nos programas. Isso inclui domínios, elementos de dados, tabelas, entre outros objetos. Não é fácil, mas necessário.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;------------------------------&lt;/div&gt;&lt;br /&gt;
Acessando em português, o menu de botões da tela principal fica assim:&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/acessando-idioma/Menu_Botoes_PT_717x74.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Menu de botões em português&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/acessando-idioma/Menu_Botoes_PT_717x74.PNG&quot; height=&quot;51&quot; title=&quot;Menu de botões em português&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Menu de botões do SAP em português&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Enquanto o menu de acesso em português fica assim:&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/acessando-idioma/Menu_SAP_PT_467x514.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Menu de acesso em português&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/acessando-idioma/Menu_SAP_PT_467x514.PNG&quot; height=&quot;514&quot; title=&quot;Menu de acesso em português&quot; width=&quot;467&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Menu de acesso do SAP em português&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Acessando em inglês, o menu de botões da tela principal fica assim:&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/acessando-idioma/Menu_Botoes_EN_688x73.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Menu de botões em português&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/acessando-idioma/Menu_Botoes_EN_688x73.PNG&quot; height=&quot;53&quot; title=&quot;Menu de botões em português&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Menu de botões do SAP em inglês&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Enquanto o menu de acesso em inglês fica assim:&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/acessando-idioma/Menu_SAP_EN_466x513.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Menu de acesso em português&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/acessando-idioma/Menu_SAP_EN_466x513.PNG&quot; height=&quot;513&quot; title=&quot;Menu de acesso em português&quot; width=&quot;466&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Menu de acesso do SAP em inglês&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;------------------------------&lt;/div&gt;&lt;br /&gt;
Futuramente vou mostrar como fazer a tradução de textos de alguns objetos e também como pode ser útil acessar algumas configurações e objetos em inglês.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/4867612401376952616/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/4867612401376952616?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/4867612401376952616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/4867612401376952616'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2017/02/acessar-o-sap-em-outro-idioma.html' title='Acessar o SAP em outro idioma'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrL2mo800B_v8BFMvTrgtJeKOlwdWCWWXwM5t2WW_86X0fE_855JmUnjf_o9aukm7AcF9Mw8ClqrYnQlMI4bZsbNwZWMVNZ9AdNJsX56mC8d-K8TUCTB3C5P3xE2hiGgCrgf-5umlKV5Te/s72-c/SAP_Idiomas_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-3773643595470832031</id><published>2016-12-20T22:09:00.001-02:00</published><updated>2019-09-24T23:55:34.023-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="funções"/><title type='text'>Barra de Progresso (Progress Bar)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifoBqZCUppivGWeDJpq86sB9DQIBk54stLm2qQ-_5gXUxpQb_lRl8d59kmg3bIM5gG73VJrPtdpOrW16kanf1vUQHDUBS3e1lvNQ2UPWG-yfccQwsnjaInP0FjGYB82lwnw0-S2soUeHXJ/s1600/Barra_de_Progresso_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Barra de progresso&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifoBqZCUppivGWeDJpq86sB9DQIBk54stLm2qQ-_5gXUxpQb_lRl8d59kmg3bIM5gG73VJrPtdpOrW16kanf1vUQHDUBS3e1lvNQ2UPWG-yfccQwsnjaInP0FjGYB82lwnw0-S2soUeHXJ/s1600/Barra_de_Progresso_150x150.png&quot; title=&quot;Barra de progresso&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Nada como acompanhar o andamento de um processo. Deixar claro para o usuário o que o programa está executando no momento e quantos passos ainda faltam para finalizar.&lt;br /&gt;
&lt;br /&gt;
Mais um assunto que muitas vezes é classificado como &quot;perfumaria&quot;. Eu acredito que não é, e vou mostrar como usar essa ferramenta. Simples, e traz um efeito muito legal para o usuário.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Com certeza, o mais importante ao elaborar e escrever um programa é o seu bom funcionamento. Ele deve cumprir perfeitamente a finalidade para que foi criado e isso deve ser sempre o foco principal do desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
Mas apesar disso tudo, temos que fazer com que o programa tenha uma comunicação visual interessante para o usuário. Pense que o programa fará parte de uma rotina para o usuário, independente da frequência ou da periodicidade. Sendo assim, a barra de progresso é uma excelente opção para deixar o usuário confortável com a execução do programa.&lt;br /&gt;
&lt;br /&gt;
A barra de progresso do SAP fica localizada no canto inferior esquerdo da tela. Ela não se parece exatamente com uma barra, mas sim com um tipo de relógio ou cronômetro. Ela realmente passa desapercebida, até o momento que ela possa ajudar em alguma coisa. Abaixo, exemplo da barra de progresso. Como em tamanho original ela é bem pequena, coloquei também uma imagem ampliada.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://sites.google.com/site/awstge/post/progresso/Barra_de_Progresso_31x31.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Barra de progresso SAP&quot; border=&quot;0&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Barra_de_Progresso_31x31.png&quot; height=&quot;31&quot; title=&quot;Barra de progresso SAP&quot; width=&quot;31&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Barra de progresso em tamanho original&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://sites.google.com/site/awstge/post/progresso/Barra_de_Progresso_100x100.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Barra de progresso SAP - Ampliada&quot; border=&quot;0&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Barra_de_Progresso_100x100.png&quot; height=&quot;100&quot; title=&quot;Barra de progresso SAP - Ampliada&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Barra de progresso ampliada (perda de qualidade devido a ampliação)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Um detalhe importante é que, dependendo do tema do &lt;code&gt;SAP GUI&lt;/code&gt; que estiver sendo utilizado, a barra de progresso pode ficar com a aparência diferente. A imagem acima foi feita com o tema &lt;code&gt;Corbu Theme&lt;/code&gt;. Veja alguns detalhes sobre os temas na postagem &lt;a href=&quot;http://www.abapwarrior.com/2016/07/temas-do-sap-gui.html&quot; target=&quot;_blank&quot;&gt;Temas do &lt;code&gt;SAP GUI&lt;/code&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Sempre que um programa está em execução, algo que tem a aparência de um relógio com ponteiro eletrônico começa a rodar, porém sem mostrar o percentual de andamento da execução. O percentual será exibido apenas se a função responsável por isso for chamada.&lt;br /&gt;
&lt;br /&gt;
Para acionar o percentual de andamento é necessário usar uma função que controla, além do percentual de andamento, também as mensagens da barra de mensagens. A função &lt;code&gt;SAPGUI_PROGRESS_INDICATOR&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;Como usar a função SAPGUI_PROGRESS_INDICATOR&lt;/h3&gt;&lt;br /&gt;
Segue agora exemplo de chamada da função:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &#39;courier new&#39;,&#39;courier&#39;,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;CALL FUNCTION &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;SAPGUI_PROGRESS_INDICATOR&#39;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;EXPORTING&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;percentage = &lt;span style=&quot;color: #6fa8dc;&quot;&gt;50&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Mensagem ABAP Warrior&#39;&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://sites.google.com/site/awstge/post/progresso/Exemplo_180x28.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Exemplo barra de progresso&quot; border=&quot;0&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Exemplo_180x28.png&quot; height=&quot;28&quot; title=&quot;Exemplo barra de progresso&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Barra de progresso gerada pelo exemplo acima&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
O primeiro parâmetro é o &lt;code&gt;PERCENTAGE&lt;/code&gt; onde deve ser passado o percentual, que é relativo a posição mostrada pela barra de progresso. O segundo parâmetro é o &lt;code&gt;TEXT&lt;/code&gt; onde deve ser informado o texto que deve aparecer na barra de mensagens, ao lado da barra de progresso.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Detalhes importantes&lt;/h3&gt;&lt;br /&gt;
Existem alguns detalhes importantes que devem ser destacados.&lt;br /&gt;
&lt;br /&gt;
Embora a declaração do parâmetro &lt;code&gt;PERCENTAGE&lt;/code&gt; não tenha nenhuma referência a algum tipo de dado, ele obrigatoriamente deve ser um valor numérico. E o valor deve estar entre 1 e 99. Caso seja informado um valor menor ou igual 0 ou maior ou igual 100 o &quot;relógio&quot; da barra de progresso não será exibido. E caso o parâmetro não receba nenhum valor, também não será exibido.&lt;br /&gt;
&lt;br /&gt;
Se o parâmetro &lt;code&gt;TEXT&lt;/code&gt; não receber nenhum valor, a barra de mensagens também não será exibida.&lt;br /&gt;
&lt;br /&gt;
E caso não seja usado nenhum dos dois parâmetros, como os dois parâmetros não são obrigatórios, tanto o relógio quanto a barra de mensagens não serão exibidos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Faixas e posições da Barra de Progresso&lt;/h3&gt;&lt;br /&gt;
Testei todas as faixas de valores e a posição que cada uma das faixas gera na barra de progresso. Ao todo são 13 posições, desde a barra vazia até a barra cheia. Abaixo a imagem de cada posição com a faixa de percentual correspondente.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_1a7_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1 a 7&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_8a15_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;8 a 15&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_16a23_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;16 a 23&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_24a30_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;24 a 30&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_31a38_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;31 a 38&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_39a46_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;39 a 46&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_47a53_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;47 a 53&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_54a61_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;54 a 61&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_62a69_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;62 a 69&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_70a76_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;70 a 76&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_77a84_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;77 a 84&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_85a92_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;85 a 92&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;img align=&quot;center&quot; src=&quot;https://sites.google.com/site/awstge/post/progresso/Posicao_93a99_29x28.png&quot; height=&quot;28&quot; width=&quot;29&quot; /&gt;&amp;nbsp;&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;93 a 99&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Todas essas posições me deram uma ideia... Criar um GIF animado... rsrsrs&lt;br /&gt;
&lt;img src=&quot;https://media.giphy.com/media/QxLsm00JPQ2YMxk8oG/giphy.gif&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/3773643595470832031/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/3773643595470832031?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/3773643595470832031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/3773643595470832031'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/12/barra-de-progresso-progress-bar.html' title='Barra de Progresso (Progress Bar)'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifoBqZCUppivGWeDJpq86sB9DQIBk54stLm2qQ-_5gXUxpQb_lRl8d59kmg3bIM5gG73VJrPtdpOrW16kanf1vUQHDUBS3e1lvNQ2UPWG-yfccQwsnjaInP0FjGYB82lwnw0-S2soUeHXJ/s72-c/Barra_de_Progresso_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-7341102758827739562</id><published>2016-12-11T23:28:00.000-02:00</published><updated>2017-04-14T21:34:13.354-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="atalhos"/><category scheme="http://www.blogger.com/atom/ns#" term="utilidades"/><title type='text'>Atalhos para Criar, Modificar, Visualizar e Executar objetos</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQRfpoZY2yme8N_HZJI5cibcV5rHEZ3giR7Fu55puwnaZRyB6jFUZMEDthG6fuJ6FWYFin_7OxVQ2MoD-aI6AyxCjwyO2gN4_tQHCcx3IxebHghf42IIfWJMthGAYrbpKr47Jv0ns3ftF7/s1600/Atalhos_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Atalhos F5 F6 F7 F8&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQRfpoZY2yme8N_HZJI5cibcV5rHEZ3giR7Fu55puwnaZRyB6jFUZMEDthG6fuJ6FWYFin_7OxVQ2MoD-aI6AyxCjwyO2gN4_tQHCcx3IxebHghf42IIfWJMthGAYrbpKr47Jv0ns3ftF7/s1600/Atalhos_150x150.png&quot; title=&quot;Atalhos F5 F6 F7 F8&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Usar o máximo possível do teclado sempre traz um pouco mais de agilidade na execução de qualquer processo.&lt;br /&gt;
&lt;br /&gt;
Nada contra o mouse, mas quando o assunto é programação, não existe nada melhor do que fazer a maior quantidade de coisas possíveis apenas com o teclado.&lt;br /&gt;
&lt;br /&gt;
Nesta simples postagem vamos ver os quatro atalhos de entrada que estão na maioria das transações ABAP.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Existem muitos objetos ABAP, como programas, módulos de função, BAdIs, enhancements, pacotes, classes, transações, mensagens, entre outros... Para cada um deles existe uma transação específica para acessá-los, e dentro delas os atalhos para Criar, Modificar, Visualizar e Executar podem ser aplicados.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Para [CRIAR] &amp;nbsp; &amp;nbsp; &amp;nbsp;é usada a tecla &lt;b&gt;F5&lt;/b&gt;.&lt;br /&gt;
Para [MODIFICAR] &amp;nbsp;é usada a tecla &lt;b&gt;F6&lt;/b&gt;.&lt;br /&gt;
Para [VISUALIZAR] é usada a tecla &lt;b&gt;F7&lt;/b&gt;.&lt;br /&gt;
Para [EXECUTAR] &amp;nbsp; é usada a tecla &lt;b&gt;F8&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Um detalhe importante é que nem todas as transações possuem as quatro funções. Algumas não possuem a função para executar, e outras não possuem a função de criar. E obviamente, quando não possuem a função também não possuem o atalho.&lt;br /&gt;
&lt;br /&gt;
Começando com as transações mais comuns, vou fazer um breve comentário sobre cada uma. Repare nas imagens o mapeamento correspondente de cada botão com seu respectivo atalho.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Transação SE38&lt;/h3&gt;&lt;br /&gt;
Utilizada para programas. Pode-se construir programas próprios ou ainda utilizar programas standards disponibilizados pela própria SAP. Lembrando que não são todos os tipos de programa que podem ser executados diretamente pela SE38.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE38_756x598.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Criar, Modificar, Visualizar e Executar - SE38&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE38_756x598.png&quot; height=&quot;380&quot; title=&quot;Criar, Modificar, Visualizar e Executar - SE38&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Atalhos para Criar, Modificar, Visualizar e Executar na SE38&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Transação SE37&lt;/h3&gt;&lt;br /&gt;
Utilizada para módulos de funções, ou simplesmente para funções. Pode-se construir funções próprias ou ainda utilizar funções standards disponibilizadas pela própria SAP. Para conhecer um pouquinho veja a postagem &lt;a href=&quot;http://www.abapwarrior.com/2016/03/conhecendo-modulos-de-funcao.html&quot; target=&quot;_blank&quot;&gt;Conhecendo Módulos de Função&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE37_630x365.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Criar, Modificar, Visualizar e Executar - SE37&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE37_630x365.png&quot; height=&quot;231&quot; title=&quot;Criar, Modificar, Visualizar e Executar - SE37&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Atalhos para Criar, Modificar, Visualizar e Executar na SE37&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Transação SE11&lt;/h3&gt;&lt;br /&gt;
Utilizada para tipos de objetos de dados. São eles Tabelas, Visões, Elementos de dados, Estruturas, Grupos de tipos, Domínios, Ajudas de pesquisa e Objetos de bloqueio. Esta transação não possui a função de execução.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE11_657x639.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Criar, Modificar e Visualizar - SE11&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE11_657x639.png&quot; height=&quot;405&quot; title=&quot;Criar, Modificar e Visualizar - SE11&quot; width=&quot;417&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Atalhos para Criar, Modificar e Visualizar na SE11&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Transação SE93&lt;/h3&gt;&lt;br /&gt;
Utilizada para transações. É nesta transação que se pode criar, modificar, visualizar e executar outras transações. Inclusive é uma ótima opção quando se precisa pesquisar transações.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE93_674x360.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Criar, Modificar, Visualizar e Executar - SE93&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE93_674x360.png&quot; height=&quot;228&quot; title=&quot;Criar, Modificar, Visualizar e Executar - SE93&quot; width=&quot;428&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Atalhos para Criar, Modificar, Visualizar e Executar na SE93&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Transação SE91&lt;/h3&gt;&lt;br /&gt;
Utilizada para classe de mensagens. Este objeto é usado para montar mensagens que serão utilizadas nos programas. Esta transação não possui a função de execução.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE91_732x528.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Criar, Modificar e Visualizar - SE91&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE91_732x528.png&quot; height=&quot;335&quot; title=&quot;Criar, Modificar e Visualizar - SE91&quot; width=&quot;464&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Atalhos para Criar, Modificar e Visualizar na SE91&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Transação SE24&lt;/h3&gt;&lt;br /&gt;
Utilizada para interfaces de classes. Alguns tipos de classes podem ser trabalhadas nesta transação, como classes de orientação a objeto e classes de interfaces de BAdI.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://sites.google.com/site/awstge/post/f5f6f7f8/SE24_642x360.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Criar, Modificar, Visualizar e Executar - SE24&quot; border=&quot;0&quot; height=&quot;229&quot; src=&quot;https://sites.google.com/site/awstge/post/f5f6f7f8/SE24_642x360.png&quot; title=&quot;Criar, Modificar, Visualizar e Executar - SE24&quot; width=&quot;407&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Atalhos para Criar, Modificar, Visualizar e Executar na SE24&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Transação SE20&lt;/h3&gt;&lt;br /&gt;
Utilizada para objetos do tipo enhancement. Pode ser um enhancement referente a uma BAdI, um enhancement estático, um enhancement dinâmico, ou ainda um agrupamento de enhancements. Esta transação não possui a função de execução.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE20_701x405.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Criar, Modificar e Visualizar - SE20&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/f5f6f7f8/SE20_701x405.png&quot; height=&quot;257&quot; title=&quot;Criar, Modificar e Visualizar - SE20&quot; width=&quot;445&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Atalhos para Criar, Modificar e Visualizar na SE20&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gostaria de lembrar que existem vários outros atalhos em cada uma das transações, mas com certeza Criar (F5), Modificar (F6), Visualizar (F7) e Executar (F8) são os mais utilizados no dia a dia.&lt;br /&gt;
&lt;br /&gt;
Mais uma postagem da &lt;a href=&quot;http://www.abapwarrior.com/p/series.html#atalhos&quot;&gt;série ATALHOS&lt;/a&gt;.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/7341102758827739562/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/7341102758827739562?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/7341102758827739562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/7341102758827739562'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/12/atalhos-criar-modificar-visualizar-executar.html' title='Atalhos para Criar, Modificar, Visualizar e Executar objetos'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQRfpoZY2yme8N_HZJI5cibcV5rHEZ3giR7Fu55puwnaZRyB6jFUZMEDthG6fuJ6FWYFin_7OxVQ2MoD-aI6AyxCjwyO2gN4_tQHCcx3IxebHghf42IIfWJMthGAYrbpKr47Jv0ns3ftF7/s72-c/Atalhos_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-1097357049689726694</id><published>2016-11-19T14:16:00.000-02:00</published><updated>2018-10-06T10:13:16.907-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="comandos"/><title type='text'>Comando CASE</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqCQdmyoNIukgKrvi6xIIUPi1YRulnOdKv2sBRabF9fHl4E16SLALfcKPqurPf7QMgpCMSdxKAFV0rRkOSOasvXzmbvBhOZ0QPBcnipyjjQQmXivxVL3VPZjYYkeUxRB1hgpPmL-ho_iec/s1600/Comando_CASE_300x300.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Comando CASE&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqCQdmyoNIukgKrvi6xIIUPi1YRulnOdKv2sBRabF9fHl4E16SLALfcKPqurPf7QMgpCMSdxKAFV0rRkOSOasvXzmbvBhOZ0QPBcnipyjjQQmXivxVL3VPZjYYkeUxRB1hgpPmL-ho_iec/s200/Comando_CASE_300x300.png&quot; title=&quot;Comando CASE&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Quando a necessidade é tratar, de forma simples, vários valores de uma mesma variável, com certeza a melhor opção é o comando &lt;code&gt;CASE&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Este comando é ideal para lógicas sem complexidade, validações simples e diretas de valores de uma variável, ou ainda para verificar quais variáveis possuem um determinado valor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Em mais uma postagem da &lt;a href=&quot;http://www.abapwarrior.com/p/series.html#comandos&quot;&gt;série COMANDOS&lt;/a&gt;, vamos falar desta vez sobre o comando &lt;code&gt;CASE&lt;/code&gt;. É muito fácil de ser implementado e trás uma praticidade incrível. Embora sua funcionalidade seja as vezes confundida com a do &lt;a href=&quot;http://www.abapwarrior.com/2016/01/comando-if.html&quot; target=&quot;_blank&quot;&gt;comando &lt;code&gt;IF&lt;/code&gt;&lt;/a&gt;, ele possui particularidades que o diferencia.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que é um &lt;code&gt;CASE&lt;/code&gt; ?&lt;/h3&gt;&lt;br /&gt;
É um comando usado para tratar caso a caso de diferentes valores de uma variável. Assim como o &lt;a href=&quot;http://www.abapwarrior.com/2016/01/comando-if.html&quot; target=&quot;_blank&quot;&gt;comando IF&lt;/a&gt;, também pode ser usado para causar um desvio de comportamento em um programa. É a exata tradução de CASO.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Como funciona o &lt;code&gt;CASE&lt;/code&gt; ?&lt;/h3&gt;&lt;br /&gt;
Primeiro vou mostrar como o comando fica verificando os valores de uma variável. Na sequência mostro como como fica verificando as variáveis para um valor. Nada muito complexo, mas muito interessante.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&amp;gt; Verificando valores de uma variável&lt;/h4&gt;&lt;br /&gt;
&lt;i&gt;Para os exemplos, vamos supor uma variável do tipo alfanumérica que irá armazenar a descrição do dia da semana...&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Basta escrever &lt;code&gt;CASE&lt;/code&gt; e em seguida escrever o nome da variável que terá os valores verificados, terminando com ponto. Em seguida escrever &lt;code&gt;WHEN&lt;/code&gt; seguido do valor que será verificado e terminando com ponto. E então, escrever a programação desejada. E depois fechar o comando com um &lt;code&gt;ENDCASE&lt;/code&gt; e ponto.&lt;br /&gt;
&lt;br /&gt;
Exemplo simples do comando:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;CASE &lt;/span&gt;v_weekday.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WHEN &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;MONDAY&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WRITE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Week beginning&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;ENDCASE&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #eeeeee;&quot;&gt;No exemplo acima estou verificando os valores da variável &lt;code&gt;V_WEEKDAY&lt;/code&gt;. Quando o valor for &lt;code&gt;&quot;MONDAY&quot;&lt;/code&gt; o programa irá entrar no bloco e executar o comando &lt;code&gt;WRITE&lt;/code&gt; com &quot;Week beginning&quot;. Depois o comando &lt;code&gt;CASE&lt;/code&gt; é fechado com &lt;code&gt;ENDCASE&lt;/code&gt;.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
O comando &lt;code&gt;CASE&lt;/code&gt; também funciona verificando dois ou mais valores de uma só vez através do operador OU (&lt;code&gt;OR&lt;/code&gt;).&lt;br /&gt;
&lt;br /&gt;
Exemplo de &lt;code&gt;CASE&lt;/code&gt; verificando três valores:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;CASE &lt;/span&gt;v_weekday.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WHEN &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;FRIDAY&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;OR &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;SATURDAY&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;OR &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;SUNDAY&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WRITE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Weekend&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;ENDCASE&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #eeeeee;&quot;&gt;No exemplo acima estou verificando os valores da variável &lt;code&gt;V_WEEKDAY&lt;/code&gt;. Quando o valor for &lt;code&gt;&quot;FRIDAY&quot;&lt;/code&gt;, &lt;code&gt;&quot;SATURDAY&quot;&lt;/code&gt; ou &lt;code&gt;&quot;SUNDAY&quot;&lt;/code&gt; o programa irá entrar no bloco e executar o comando &lt;code&gt;WRITE&lt;/code&gt; com &quot;Weekend&quot;. Depois o comando &lt;code&gt;CASE&lt;/code&gt; é fechado com &lt;code&gt;ENDCASE&lt;/code&gt;.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Agora fazendo várias verificações em blocos diferentes. Podem ser encadeadas quantas verificações forem necessárias, bastando destacar as verificações pelo argumento &lt;code&gt;WHEN&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Exemplo com várias verificações em diferentes blocos&amp;nbsp;&lt;code&gt;WHEN&lt;/code&gt;.&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;CASE &lt;/span&gt;v_weekday.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WHEN &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;MONDAY&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WRITE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Week beginning&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WHEN &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;FRIDAY&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;OR &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;SATURDAY&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;OR &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;SUNDAY&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WRITE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Weekend&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;ENDCASE&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #eeeeee;&quot;&gt;No exemplo acima estou verificando os valores da variável &lt;code&gt;V_WEEKDAY&lt;/code&gt;. Quando o valor for &lt;code&gt;&quot;MONDAY&quot;&lt;/code&gt; o programa irá entrar no bloco e executar o comando &lt;code&gt;WRITE&lt;/code&gt; com &quot;Week beginning&quot;. Quando o valor for &lt;code&gt;&quot;FRIDAY&quot;&lt;/code&gt;, &lt;code&gt;&quot;SATURDAY&quot;&lt;/code&gt; ou &lt;code&gt;&quot;SUNDAY&quot;&lt;/code&gt; o programa irá entrar no bloco e executar o comando &lt;code&gt;WRITE&lt;/code&gt; com &quot;Weekend&quot;. Depois o comando &lt;code&gt;CASE&lt;/code&gt; é fechado com &lt;code&gt;ENDCASE&lt;/code&gt;.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
E ainda temos o argumento para tratar os demais valores que não precisam estar explícitos. Devem ser tratados pelo argumento &lt;code&gt;WHEN OTHERS&lt;/code&gt; todos os valores que forem diferentes dos valores destacados nos argumentos &lt;code&gt;WHEN&lt;/code&gt; anteriores.&lt;br /&gt;
&lt;br /&gt;
Exemplo com argumento &lt;code&gt;WHEN OTHERS&lt;/code&gt;.&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;CASE &lt;/span&gt;v_weekday.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WHEN &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;MONDAY&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WRITE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Week beginning&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WHEN &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;FRIDAY&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;OR &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;SATURDAY&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;OR &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;SUNDAY&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WRITE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Weekend&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WHEN OTHERS&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WRITE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Through week&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;ENDCASE&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #eeeeee;&quot;&gt;No exemplo acima estou verificando os valores da variável &lt;code&gt;V_WEEKDAY&lt;/code&gt;. Além das verificações já citadas nos outros exemplos, quando o valor não for &lt;code&gt;&quot;MONDAY&quot;&lt;/code&gt;, &lt;code&gt;&quot;FRIDAY&quot;&lt;/code&gt;, &lt;code&gt;&quot;SATURDAY&quot;&lt;/code&gt; e nem &lt;code&gt;&quot;SUNDAY&quot;&lt;/code&gt;&amp;nbsp;o programa irá entrar no bloco &lt;code&gt;OTHERS&lt;/code&gt;&amp;nbsp;e executar o comando &lt;code&gt;WRITE&lt;/code&gt; com &quot;Through week&quot;. Depois o comando &lt;code&gt;CASE&lt;/code&gt; é fechado com &lt;code&gt;ENDCASE&lt;/code&gt;.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&amp;gt; Verificando variáveis para um valor&lt;/h4&gt;&lt;br /&gt;
&lt;i&gt;Para o exemplo, vamos supor que existam sete variáveis. Todas do tipo alfanumérico e uma para cada dia da semana. Sempre uma delas estará preenchida com &quot;X&quot; para o dia da semana correspondente...&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Basta escrever &lt;code&gt;CASE&lt;/code&gt; e em seguida escrever o valor que será verificado, terminando com ponto. Em seguida escrever &lt;code&gt;WHEN&lt;/code&gt; seguido do nome da variável que será verificada e terminando com ponto. E então escrever a programação desejada. E depois fechar o comando com um &lt;code&gt;ENDCASE&lt;/code&gt; e ponto.&lt;br /&gt;
&lt;br /&gt;
Exemplo completo:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;CASE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;X&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WHEN &lt;/span&gt;v_monday.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WRITE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Week beginning&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WHEN &lt;/span&gt;v_friday &lt;span style=&quot;color: blue;&quot;&gt;OR &lt;/span&gt;v_saturday &lt;span style=&quot;color: blue;&quot;&gt;OR &lt;/span&gt;v_sunday.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WRITE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Weekend&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WHEN OTHERS&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;WRITE &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;Through week&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;ENDCASE&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
No exemplo acima estou verificando qual variável estará preenchida com &quot;X&quot;. Quando for a variável &lt;code&gt;V_MONDAY&lt;/code&gt; o programa irá entrar no bloco e executar o comando &lt;code&gt;WRITE&lt;/code&gt; com &quot;Week beginning&quot;. Quando for a variável &lt;code&gt;V_FRIDAY&lt;/code&gt;, &lt;code&gt;V_SATURDAY&lt;/code&gt; ou &lt;code&gt;V_SUNDAY&lt;/code&gt; o programa irá entrar no bloco e executar o comando &lt;code&gt;WRITE&lt;/code&gt; com &quot;Weekend&quot;. Quando não for nenhuma das quatro variáveis anteriores, o programa irá entrar no bloco &lt;code&gt;OTHERS&lt;/code&gt; e executar o comando &lt;code&gt;WRITE&lt;/code&gt; com &quot;Through week&quot;. Depois o comando &lt;code&gt;CASE&lt;/code&gt; é fechado com &lt;code&gt;ENDCASE&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E esse foi o comando &lt;code&gt;CASE&lt;/code&gt;, pessoal.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/1097357049689726694/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/1097357049689726694?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/1097357049689726694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/1097357049689726694'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/11/comando-case.html' title='Comando CASE'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqCQdmyoNIukgKrvi6xIIUPi1YRulnOdKv2sBRabF9fHl4E16SLALfcKPqurPf7QMgpCMSdxKAFV0rRkOSOasvXzmbvBhOZ0QPBcnipyjjQQmXivxVL3VPZjYYkeUxRB1hgpPmL-ho_iec/s72-c/Comando_CASE_300x300.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-6927985816220989823</id><published>2016-11-11T23:10:00.001-02:00</published><updated>2017-04-14T21:40:43.704-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="organização"/><category scheme="http://www.blogger.com/atom/ns#" term="utilização"/><title type='text'>Início e fim das rotinas</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRQCzOBwf3xn3ssu7pl66ZAttEhRzv1fJexAuSOsgjSPPaDOrEicOUS0Jjlz0svZ78-fL24KQE2BVHgWhqy8WWxfQwgRiwQwLDOumAWHFg1TKa7AJ0ob5P6H6506m9Ezh64x5Qol_uemQK/s1600/Begin_End_300x300.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Início e fim das rotinas&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRQCzOBwf3xn3ssu7pl66ZAttEhRzv1fJexAuSOsgjSPPaDOrEicOUS0Jjlz0svZ78-fL24KQE2BVHgWhqy8WWxfQwgRiwQwLDOumAWHFg1TKa7AJ0ob5P6H6506m9Ezh64x5Qol_uemQK/s200/Begin_End_300x300.png&quot; title=&quot;Início e fim das rotinas&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Todos os tipos de rotina tem início e fim em suas declarações. De fácil identificação no início, começando com FORM, MODULE, CLASS, entre outros... E de fácil identificação no fim, terminando com &lt;code&gt;ENDFORM&lt;/code&gt;, &lt;code&gt;ENDMODULE&lt;/code&gt;, &lt;code&gt;ENDCLASS&lt;/code&gt;, entre outros...&lt;br /&gt;
&lt;br /&gt;
Simplesmente saber disso já basta??? Na verdade sim rsrsrs. Mas existe algo que facilita muito o dia-a-dia e as manutenções.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
A manutenção de programas desconhecidos, complexos ou sem documentação é uma das maiores dificuldades do dia-a-dia. Em programas ou includes com muitas rotinas, muitas vezes se torna difícil entender onde terminam cada uma dessas rotinas. E é nessas situações que se faz necessário a identificação de início e fim das rotinas.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
Pode parecer uma perfumaria sem tamanho, mas acredite, é algo que ajuda muito (muito mesmo) quem não conhece o programa.&lt;br /&gt;
&lt;br /&gt;
Imagine-se numa situação onde seja necessário olhar um programa, para entender o funcionamento técnico, fazer alguma manutenção, ou ainda para fazer documentação. E então quando você vê um &lt;code&gt;ENDFORM&lt;/code&gt; fica na dúvida se ele está fechando o mesmo &lt;code&gt;FORM&lt;/code&gt; que você já estava olhando ou se você não percebeu que já era outro &lt;code&gt;FORM&lt;/code&gt;. Aí você é obrigado a rolar a página de volta para conferir e ter certeza.&lt;br /&gt;
&lt;br /&gt;
Identificando o início e fim das rotinas é possível ter essa visão de forma mais prática. Alguns podem questionar e dizer: &quot;... mas dependendo do editor, o próprio sistema já destaca, na barra inferior de status, o nome da rotina visualizada...&quot;. Concordo, mas por mais incrível que pareça conheço excelentes profissionais que preferem os editores antigos, que não possuem as facilidades dos editores mais novos. E tem também uma questão de facilidade, pois é muito mais prático ler no próprio código.&lt;br /&gt;
&lt;br /&gt;
Uma coisa simples de se fazer, e que vai consumir praticamente nada do tempo de cada um, é colocar um cabeçalho comentado nas linhas antes do começo da rotina com uma breve explicação do que é feito dentro da rotina e também os parâmetros que podem haver ao chamá-las. Eu, particularmente, não tenho o costume de colocar essa explicação e nem os parâmetros. O que faço é simplesmente colocar uma pequeno cabeçalho com o nome da rotina. E, o que pra mim é o mais importante, colocar uma identificação comentada ao lado do final da rotina com o nome da respectiva rotina. Entenda sobre texto comentados na postagem &lt;a href=&quot;http://www.abapwarrior.com/2016/02/comentarios-nos-codigos.html&quot; target=&quot;_blank&quot;&gt;Comentários nos códigos&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Seguem exemplos:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;i style=&quot;color: #999999;&quot;&gt;*&amp;amp;----------------------------------------------------------------*&lt;br /&gt;
*&amp;amp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FORM &amp;nbsp;zf_rotina_form&lt;br /&gt;
*&amp;amp;----------------------------------------------------------------*&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;FORM &lt;/span&gt;zf_rotina_form.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;ENDFORM&lt;/span&gt;. &lt;i style=&quot;color: #999999;&quot;&gt;&quot;zf_rotina_form&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i style=&quot;color: #999999;&quot;&gt;*&amp;amp;----------------------------------------------------------------*&lt;br /&gt;
*&amp;amp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FORM &amp;nbsp;zf_rotina_module&lt;br /&gt;
*&amp;amp;----------------------------------------------------------------*&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;MODULE &lt;/span&gt;zm_rotina_module &lt;span style=&quot;color: blue;&quot;&gt;OUTPUT&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;ENDMODULE&lt;/span&gt;. &lt;i style=&quot;color: #999999;&quot;&gt;&quot;zm_rotina_module OUTPUT&lt;/i&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Lembrando que estou longe de ser o dono da razão, essas são apenas pequenas sugestões que podem melhorar um pouquinho nosso dia-a-dia. Repare como as rotinas ficam melhor separadas e como fica mais fácil identificar o final correspondente de cada rotina. Mostrei exemplos apenas para FORM e MODULE, mas o modelo pode ser aplicado em qualquer tipo de rotina.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Não custa nada fazer algo que pode ajudar alguém.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/6927985816220989823/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/6927985816220989823?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/6927985816220989823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/6927985816220989823'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/11/inicio-e-fim-das-rotinas.html' title='Início e fim das rotinas'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRQCzOBwf3xn3ssu7pl66ZAttEhRzv1fJexAuSOsgjSPPaDOrEicOUS0Jjlz0svZ78-fL24KQE2BVHgWhqy8WWxfQwgRiwQwLDOumAWHFg1TKa7AJ0ob5P6H6506m9Ezh64x5Qol_uemQK/s72-c/Begin_End_300x300.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-8645815365003513551</id><published>2016-08-25T22:48:00.000-03:00</published><updated>2017-04-09T11:59:44.395-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programas"/><category scheme="http://www.blogger.com/atom/ns#" term="utilidades"/><title type='text'>Gerar PDF de uma ordem de spool</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbaSopdO_FGXV1Zk9F3YLvBW4h9a7fIEsxLZUiFfQyVNLp3OJyatWXucUhunTn-jLHTyFWUt_7QbTvfiDcpzLrwI_NIAB80Xp-2PIj-MaBU2LYtfKC3SD2rlI-LWBBZbg_A81iCUtQcqwA/s1600/PDF_spool_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;PDF spool&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbaSopdO_FGXV1Zk9F3YLvBW4h9a7fIEsxLZUiFfQyVNLp3OJyatWXucUhunTn-jLHTyFWUt_7QbTvfiDcpzLrwI_NIAB80Xp-2PIj-MaBU2LYtfKC3SD2rlI-LWBBZbg_A81iCUtQcqwA/s1600/PDF_spool_150x150.png&quot; title=&quot;PDF spool&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Gerar arquivos no formato PDF é importante para armazenar qualquer tipo de informação ou relatório.&lt;br /&gt;
&lt;br /&gt;
Depois de imprimir no SAP, é possível converter as impressões em arquivos no formato PDF. Existe um programa standard, que é próprio para isso, onde é necessário apenas informar o número da ordem de &lt;code&gt;spool&lt;/code&gt; e o caminho para gravação do arquivo.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que é uma ordem de spool?&lt;/h3&gt;&lt;br /&gt;
Uma ordem de spool é um documento de impressão do SAP. Toda impressão feita de dentro do sistema gera uma ordem de spool. Dependendo das configurações do sistema, as ordens de spool podem ser eliminadas depois de um determinado tempo, ou imediatamente depois da impressão ser enviada para a impressora (o que pode ser um problema para localizar posteriormente ordens de spool já processadas).&lt;br /&gt;
&lt;br /&gt;
A impressão fica registrada na ordem de spool de forma fiel à impressão física. Ao acessar a ordem de spool, é possível visualizar a impressão e reimprimir. Para localizar uma ordem de spool utilize as transações SP01, SP01o, SP02 ou SP02o. Também é possível localizar através da tabela TSP01.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Como gerar PDF?&lt;/h3&gt;&lt;br /&gt;
Se a ordem de spool foi criada a partir de uma impressão de Smart Forms, é possível entrar na impressão e acessar a pré-visualização, e então gerar PDF diretamente pelo campo de comandos do SAP. Confira como fazer na postagem &lt;a href=&quot;http://www.abapwarrior.com/2016/02/gerar-pdf-em-pre-visualizacao-de-smart.html&quot; target=&quot;_blank&quot;&gt;Gerar PDF em pré-visualização de &lt;code&gt;Smart Forms&lt;/code&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Outra forma, sem usar o campo de comandos, e que funciona para qualquer ordem de spool, é através do programa standard &lt;code&gt;RSTXPDFT4&lt;/code&gt;. É possível executar esse programa pelas transações SE38 ou SA38. Uma outra forma muito útil e interessante para executar, inclusive para os usuários, é criar uma transação para o programa, já que ele não possui uma.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&amp;gt; Usando o programa &lt;code&gt;RSTXPDFT4&lt;/code&gt;&lt;/h4&gt;&lt;br /&gt;
O programa &lt;code&gt;RSTXPDFT4&lt;/code&gt; tem poucos campos para preenchimento e é de fácil entendimento. Veja na imagem abaixo a tela do programa em execução.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/pdf/Programa_RSTXPDFT4_845x251.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tela RSTXPDFT4&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/pdf/Programa_RSTXPDFT4_845x251.png&quot; height=&quot;148&quot; title=&quot;Tela RSTXPDFT4&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Tela do programa &lt;code&gt;RSTXPDFT4&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
- No campo [Ordem spool] é onde se coloca o número da ordem de spool.&lt;br /&gt;
- Se a opção [Download file PDF] não estiver marcada o programa apenas simulará a conversão em PDF, mas não gravará nada. Então lembre-se de deixar esse campo marcado.&lt;br /&gt;
- No campo [Nome de file PDF] se informa o caminho para gravação do arquivo PDF. Ele irá trazer inicialmente o caminho &quot;C:\temp\file.pdf&quot;, mas pode ser modificado. Um detalhe importante é que esse arquivo será gravado através do &lt;code&gt;SAP GUI&lt;/code&gt;, ou seja, na máquina local. Isso quer dizer que não funcionará se for executado em background.&lt;br /&gt;
- As opções [Largura real] e [Largura da edição] servem apenas para impressões no formato de lista. Na primeira opção, o sistema irá maximizar a largura da lista para tentar ocupar o espaço da página. E na segunda opção, o sistema respeitará a largura original da lista.&lt;br /&gt;
&lt;br /&gt;
O programa também funciona muito bem para chamadas internas com &lt;code&gt;SUBMIT&lt;/code&gt;.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/8645815365003513551/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/8645815365003513551?isPopup=true' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/8645815365003513551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/8645815365003513551'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/08/gerar-pdf-de-uma-ordem-de-spool.html' title='Gerar PDF de uma ordem de spool'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbaSopdO_FGXV1Zk9F3YLvBW4h9a7fIEsxLZUiFfQyVNLp3OJyatWXucUhunTn-jLHTyFWUt_7QbTvfiDcpzLrwI_NIAB80Xp-2PIj-MaBU2LYtfKC3SD2rlI-LWBBZbg_A81iCUtQcqwA/s72-c/PDF_spool_150x150.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-4345078671809920081</id><published>2016-07-28T20:49:00.000-03:00</published><updated>2017-11-11T19:34:54.853-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="organização"/><category scheme="http://www.blogger.com/atom/ns#" term="utilidades"/><title type='text'>Temas do SAP GUI</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM9alzZFShGXJeA_G5-1id3IjWb6F0NA3BxChXCXeizhH4ihIU0IFVsWuaHtclbo1QE4k8vQMVRVJ-HtM2hPqAE9q3wDq6bsPoEfSmiR-vQ0mSiii7ppvhcOQDxc0fiHNu2-Ip7-PAC7yo/s1600/Temas_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Temas do SAP GUI&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM9alzZFShGXJeA_G5-1id3IjWb6F0NA3BxChXCXeizhH4ihIU0IFVsWuaHtclbo1QE4k8vQMVRVJ-HtM2hPqAE9q3wDq6bsPoEfSmiR-vQ0mSiii7ppvhcOQDxc0fiHNu2-Ip7-PAC7yo/s1600/Temas_150x150.png&quot; title=&quot;Temas do SAP GUI&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Já que você irá ficar muitas horas do seu dia na frente de uma tela do SAP, seria bom se você pudesse deixá-la com uma aparência mais agradável ao seu gosto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Conheça os temas disponíveis no SAP GUI e confira se existe algum que melhor lhe agrada. Dependendo do tema, existem opções para customizar as cores e as fontes dos elementos dentro das janelas. Os mais legais não possuem essa flexibilidade, mas que também não faz falta. Confira...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Através dos temas do SAP GUI é possível customizar a aparência das telas do SAP. Mas, sinceramente, não se empolgue muito, pois as customizações são limitadas. Alguns temas, inclusive, são completamente fechados. Mas, com certeza, já é alguma coisa. Mesmo com limitações, é melhor ter a possibilidade de mudar ao invés de enjoar da mesma tela de sempre.&lt;br /&gt;
&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-9140080035344337&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;9588557602&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Como acessar os temas?&lt;/h3&gt;
&lt;br /&gt;
A opção de modificação dos temas se encontra dentro da tela de opções do SAP GUI, juntamente com muitas outras opções. Mas nesta postagem vamos focar apenas na modificação dos temas.&lt;br /&gt;
&lt;br /&gt;
A tela de opções do SAP GUI pode ser acessada de três formas: através do &lt;a href=&quot;http://www.abapwarrior.com/2016/01/conheca-o-sap-logon.html&quot; target=&quot;_blank&quot;&gt;SAP Logon&lt;/a&gt;, ou através de uma janela ativa do SAP, ou ainda por atalho direto.&lt;br /&gt;
&lt;br /&gt;
Os exemplos abaixo foram montados usando SAP GUI 7.4 para Windows, e com Windows 7 64-bit. Em outras versões do Windows quase não existe diferença. Já para quem usa Mac OS, não sei dizer se os caminhos são os mesmo, mas acredito que devem ser parecidos.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
&lt;/h4&gt;
&lt;h4&gt;
&lt;u&gt;Através do SAP Logon&lt;/u&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Para acessar através do SAP Logon, basta clicar no menu do canto superior esquerdo (em vermelho na imagem abaixo) e em seguida clicar em opções (em amarelo na imagem abaixo).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Acesso_SAP_Logon_199x222.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Acesso opções SAP Logon&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Acesso_SAP_Logon_199x222.png&quot; height=&quot;200&quot; title=&quot;Acesso opções SAP Logon&quot; width=&quot;179&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Opções pelo SAP Logon&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;h4&gt;
&lt;u&gt;Através de janela ativa&lt;/u&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Para acessar através de uma janela ativa, basta ir até o menu de botões interativos e clicar no último botão &quot;Ajustar layout local&quot; (em vermelho na imagem abaixo) e em seguida clicar em opções (em amarelo na imagem abaixo).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Acesso_tela_ativa_311x404.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Acesso opções tela ativa&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Acesso_tela_ativa_311x404.png&quot; height=&quot;320&quot; title=&quot;Acesso opções tela ativa&quot; width=&quot;246&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Opções, através de uma tela ativa&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;br /&gt;
O botão &quot;Ajustar layout local&quot; parece com uma televisão, ou um monitor, com algumas cores dentro, e é o último botão deste grupo de botões. Porém, existe uma pequena exceção que depende do tema. Para quem já usa o tema &quot;Classic Theme&quot;, este botão &lt;b&gt;não&lt;/b&gt; fica junto com os outros botões, mas sim fica na extrema direita da tela, logo abaixo do botão fechar.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Acesso_tela_ativa_281x428.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Acesso opções tela ativa tema Classic&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Acesso_tela_ativa_281x428.png&quot; height=&quot;320&quot; title=&quot;Acesso opções tela ativa tema Classic&quot; width=&quot;210&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Opções, através de uma tela ativa com tema Classic Theme&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;h4&gt;
&lt;u&gt;Através de atalho direto&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
Para acessar através de atalho direto, pelo Windows, basta ir até o menu Iniciar, na pasta onde foi instalado o SAP GUI e escolher a opção &quot;SAP GUI Configuration&quot;. Geralmente a raiz do menu fica na pasta &quot;SAP Front End&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Acesso_atalho_direto_259x83.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Acesso opções atalho direto&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Acesso_atalho_direto_259x83.png&quot; height=&quot;83&quot; title=&quot;Acesso opções atalho direto&quot; width=&quot;259&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Opções, através de atalho direto&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Como alterar o tema ?&lt;/h3&gt;
&lt;br /&gt;
Independente de qual forma foi usada para acessar a tela opções, o resultado será o mesmo. Uma tela, semelhante à da imagem abaixo, será apresentada. Repare que o tema se encontra na parte superior, sendo o primeiro campo da tela (em amarelo). Neste caso, fica registrada minha preferência pelo tema &quot;Corbu Theme&quot; rsrsrs...&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Opcoes_SAP_GUI_850x597.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Opções do SAP GUI&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Opcoes_SAP_GUI_850x597.png&quot; height=&quot;350&quot; title=&quot;Opções do SAP GUI&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Tela de opções do SAP GUI&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Para alterar o tema, basta abrir o campo do tema, que é do tipo combo-box ou drop-down, e escolher um tema diferente. Ao escolher um novo tema, uma prévia da tela com o novo tema será apresentada no espaço à direita.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Um detalhe importante é que, ao escolher, o tema ainda não estará disponível para suas telas. É necessário pressionar o botão &quot;OK&quot; ou o botão &quot;Transferir&quot; e depois, ainda, fechar todas as janelas ativas, fechar o SAP Logon e abrir novamente. Só então, o novo tema escolhido estará disponível em suas telas.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Detalhes dos temas&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ultimamente a SAP tem lançado um tema novo a cada novo &quot;release&quot;, ou versão final, do SAP GUI. Atualmente, com a versão 7.4, existem 7 temas disponíveis. Para que se possa usufruir dos últimos temas, e de outras melhorias, é bom pedir aos responsáveis pela administração do sistema, na empresa em que você trabalha, para que disponibilizem a última versão do SAP GUI. Isso vale tanto para os usuários quanto para nós técnicos.&lt;br /&gt;
&lt;br /&gt;
Abaixo, uma pequena descrição dos temas, e um exemplo de cada um acessando a transação MIRO.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;h4&gt;
&amp;gt; &lt;u&gt;Classic Theme&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
Esse tema tem uma aparência muito interessante. Como o próprio nome já diz, é um tema clássico. Ele apresenta a parte externa das janelas com as mesmas características do sistema operacional, assim como os botões de fechar, maximizar e minimizar. As barras de rolagem das janelas também seguem as barras do sistema operacional.&lt;br /&gt;
&lt;br /&gt;
Já a parte interna da janela, os campos, botões, tabelas, entre outros, ficam muito parecidos com um programa feito no antigo VB6, ou antigo C#, ou antigo Delphi. Para o pessoal &quot;das antigas&quot;, é um pouco de nostalgia. rsrsrs&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_Classic_Theme_1021x723.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tema Classic Theme&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_Classic_Theme_1021x723.png&quot; height=&quot;354&quot; title=&quot;Tema Classic Theme&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Classic Theme&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;i&gt;Nesse tema são permitidas as seguintes personalizações:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a fonte padrão do sistema. Dentro do menu &quot;Configuração de fonte&quot;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a cor dos registros em lista. Dentro do menu &quot;Cores em listas&quot;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a cor dos objetos em tela. Dentro do menu &quot;Cor em formulários&quot;.&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h4&gt;
&amp;gt; &lt;u&gt;Enjoy Theme&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
O tema Enjoy também poderia ser chamado de clássico, já que foi um dos primeiros temas a serem lançados pela SAP. Foi partindo deste que outros temas nasceram, como por exemplo o Streamline e o Tradeshow. Não tem a aparência tão antiga quanto o Classic, mas também não possui visual moderno.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_Enjoy_Theme_1021x723.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tema Enjoy Theme&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_Enjoy_Theme_1021x723.png&quot; height=&quot;354&quot; title=&quot;Tema Enjoy Theme&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Enjoy Theme&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;i&gt;Nesse tema são permitidas as seguintes personalizações:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a fonte padrão do sistema. Dentro do menu &quot;Configuração de fonte&quot;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a cor dos objetos em tela. Dentro do menu &quot;Configurações de cor&quot;.&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h4&gt;
&amp;gt; &lt;u&gt;Streamline Theme&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
O tema Streamline, como já dito no tema anterior, nasceu a partir do tema Enjoy. Ele é muito parecido com o Enjoy em termos de formas e objetos, mas usa cores mais suaves, principalmente na área de fundo e na barra da janela. E também possui destaque nas guias selecionadas, o que era mais sutil no tema antecessor.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_Streamline_Theme_1021x723.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tema Streamline Theme&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_Streamline_Theme_1021x723.png&quot; height=&quot;354&quot; title=&quot;Tema Streamline Theme&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Streamline Theme&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;i&gt;Nesse tema são permitidas as seguintes personalizações:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a fonte padrão do sistema. Dentro do menu &quot;Configuração de fonte&quot;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a cor dos objetos em tela. Dentro do menu &quot;Configurações de cor&quot;.&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h4&gt;
&amp;gt; &lt;u&gt;Tradeshow Theme&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
O tema Tradeshow também segue a mesma linha do tema Enjoy, mas teoricamente é uma melhoria do tema Streamline. Muito semelhante ao Streamline, as principais diferenças entre os dois são, o destaque visual dos botões e dos cabeçalhos de grids, e os contrastes mais acentuados entre os azuis claro e escuro.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_Tradeshow_Theme_1021x723.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tema Tradeshow Theme&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_Tradeshow_Theme_1021x723.png&quot; height=&quot;354&quot; title=&quot;Tema Tradeshow Theme&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Tradeshow Theme&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;i&gt;Nesse tema são permitidas as seguintes personalizações:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a fonte padrão do sistema. Dentro do menu &quot;Configuração de fonte&quot;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a cor dos objetos em tela. Dentro do menu &quot;Configurações de cor&quot;.&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h4&gt;
&amp;gt; &lt;u&gt;System Dependent Theme&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
Esse, na verdade, não é um tema, mas sim uma forma diferente de se trabalhar com temas. Fica configurado no servidor de cada ambiente qual o tema será usado. Então é possível configurar diferentes temas entre DEV, QAS e PRD, e ao se conectar no ambiente automaticamente o tema será direcionado. Uma forma bem legal de diferenciar um ambiente de outro.&lt;br /&gt;
&lt;br /&gt;
Basicamente, basta acessar a transação RZ10 e incluir o parâmetro &quot;sapgui/theme&quot; e no valor de parâmetro informar o tema com letras maiúsculas (&quot;ENJOY&quot; ou &quot;STREAMLINE&quot; ou &quot;TRADESHOW&quot;).&lt;br /&gt;
&lt;br /&gt;
É uma pena que valha apenas para esses três antigos temas Enjoy, Streamline e Tradeshow, pois é um recurso bem interessante.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
&amp;gt; &lt;u&gt;SAP Signature Theme&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
Finalmente o tema mais conhecido do mundo SAP. O tema SAP Signature é o tema mais comum, usado tanto pelos usuários quanto pelos profissionais técnicos. Ao mesmo que tempo que tem uma aparência moderna, ainda lembra um pouco os temas mais antigos. Foi o primeiro tema do SAP que explorou objetos com aparência 3D.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_SAP_Signature_Theme_1021x723.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tema SAP Signature Theme&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_SAP_Signature_Theme_1021x723.png&quot; height=&quot;354&quot; title=&quot;Tema SAP Signature Theme&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;SAP Signature Theme&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;i&gt;Nesse tema são permitidas as seguintes personalizações:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Ativar alto contraste para pessoas com dificuldades visuais. Dentro do menu &quot;Visualização/configs.tema&quot;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a fonte padrão do sistema. Dentro do menu &quot;Configuração de fonte&quot;.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a cor dos objetos em tela. Dentro do menu &quot;Configurações de cor&quot;.&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h4&gt;
&amp;gt; &lt;u&gt;Corbu Theme&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
O tema Corbu tem uma aparência bem moderna, tendo a barra superior da janela na cor preta e aparência 3D. Esse tema não tem muitas opções de personalização, não sendo possível mexer nas cores. Mas pela boa aparência, acaba não fazendo muita falta.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_Corbu_Theme_1021x723.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tema Corbu Theme&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/temas-sapgui/Tema_Corbu_Theme_1021x723.png&quot; height=&quot;354&quot; title=&quot;Tema Corbu Theme&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Corbu Theme&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;i&gt;Nesse tema são permitidas as seguintes personalizações:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a fonte padrão do sistema. Dentro do menu &quot;Configuração de fonte&quot;.&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h4&gt;
&amp;gt; &lt;u&gt;Blue Crystal Theme&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
O tema Blue Crystal foi o último liberado pela SAP até o momento. Ele passa uma impressão muito leve e tem aparência WEB. Gostei muito deste tema, até descobrir que ele tem algumas incompatibilidades por conta de versões do windows e versões do próprio sistema SAP. No meu caso, especificamente, todos os botões ficam sem imagem. Não consegui mostrar como ficaria na transação MIRO, assim como fiz nos outros temas. Então usei uma imagem extraída de uma postagem de outro BLOG, aliás muito bom: &lt;a href=&quot;http://www.hackingsap.com/blog/a-look-at-sap-gui-themes&quot; target=&quot;_blank&quot;&gt;http://www.hackingsap.com/blog/a-look-at-sap-gui-themes&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.hackingsap.com/blog/wp-content/uploads/bluecrystal.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tema Blue Crystal Theme&quot; border=&quot;0&quot; src=&quot;http://www.hackingsap.com/blog/wp-content/uploads/bluecrystal.png&quot; height=&quot;380&quot; title=&quot;Tema Blue Crystal Theme&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Blue Crystal Theme&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;i&gt;Nesse tema são permitidas as seguintes personalizações:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Modificar a fonte padrão do sistema. Dentro do menu &quot;Configuração de fonte&quot;.&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;background-color: yellow;&quot;&gt;------------------- início de atualização 11/11/2017 -------------------&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Queria deixar registrado que ao usar o &lt;code&gt;Windows&lt;/code&gt; 10 com SAP GUI 7.5 não estou mais encontrando problema nenhum. Todas as funcionalidades da ferramenta estão operando corretamente. O tema &lt;code&gt;Blue Crystal Theme&lt;/code&gt; é muito bom.&lt;br /&gt;
&lt;br /&gt;
Se ainda encontrar problemas, verifique a postagem sobre a &lt;a href=&quot;http://www.abapwarrior.com/2017/11/sap-note-1907484-how-to-switch-between-the-pc-editor-and-ms-editor.html&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;SAP Note&lt;/code&gt; 1907484&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;background-color: yellow;&quot;&gt;------------------- fim de atualização 11/11/2017 -------------------&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
Conclusão&lt;/h3&gt;
&lt;br /&gt;
Veja na prática o tema que melhor lhe agrada. Isso quer dizer que a melhor forma de saber se o tema lhe agrada é usando no dia-a-dia. Muitas vezes o tema parece bacana, mas pode haver algum detalhe importante que dificulte alguma atividade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Essa postagem não tem finalidade técnica, mas sim de mostrar recursos da ferramenta.&lt;br /&gt;
Quaisquer dúvidas, ou informações adicionais, podem ser comentadas.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/4345078671809920081/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/4345078671809920081?isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/4345078671809920081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/4345078671809920081'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/07/temas-do-sap-gui.html' title='Temas do SAP GUI'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM9alzZFShGXJeA_G5-1id3IjWb6F0NA3BxChXCXeizhH4ihIU0IFVsWuaHtclbo1QE4k8vQMVRVJ-HtM2hPqAE9q3wDq6bsPoEfSmiR-vQ0mSiii7ppvhcOQDxc0fiHNu2-Ip7-PAC7yo/s72-c/Temas_150x150.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-5842091754110709972</id><published>2016-06-05T00:34:00.001-03:00</published><updated>2017-04-09T12:07:24.599-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="macetes"/><category scheme="http://www.blogger.com/atom/ns#" term="utilização"/><title type='text'>Solução BW com VBA</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP0EROVSsrUywtw4z0vIh_ikeYsNJQ1TZ-dNw9JfvIPWgCsMvJs1xgFuhHaS4czb0hxry0mz4ElNFzG2ZyiW9RPf5jTgL1KCmLDAs_c3ZguaqhKptZ-feqTf0s1f8JgbM_VrZYDksuAhb4/s1600/BW_VBA_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;BW com VBA&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP0EROVSsrUywtw4z0vIh_ikeYsNJQ1TZ-dNw9JfvIPWgCsMvJs1xgFuhHaS4czb0hxry0mz4ElNFzG2ZyiW9RPf5jTgL1KCmLDAs_c3ZguaqhKptZ-feqTf0s1f8JgbM_VrZYDksuAhb4/s1600/BW_VBA_150x150.png&quot; title=&quot;BW com VBA&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Em algumas circunstâncias a solução técnica pode estar em outra plataforma. Este é um caso onde, meus colegas e eu, implementamos em VBA uma solução de relatório no BW.&lt;br /&gt;
&lt;br /&gt;
Solução simples e fácil de se implementar. Se você conhecer um pouco de Visual Basic fica ainda mais fácil. Se você não conhecer, também não se preocupe, as macros do Excel podem ajudar.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que é BW ?&lt;/h3&gt;&lt;br /&gt;
Algumas pessoas podem não saber o que é BW, portanto acho legal fazer um breve resumo. Mais um dos muitos módulos no SAP, o BW conta com uma plataforma diferenciada e arquitetura dedicada. Tudo isso para suportar o armazenamento de uma grande quantidade de dados. BW é uma sigla simplificada de &lt;b&gt;B&lt;/b&gt;usiness Information &lt;b&gt;W&lt;/b&gt;arehouse, que traduzindo significa Depósito de Informações de Negócio. É um módulo especializado em tratamento e organização de dados na forma de cubo, onde se possibilita que informações possam ser montadas e formatadas de várias formas e níveis diferentes, resultando em várias possibilidades de relatórios.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que é VBA ?&lt;/h3&gt;&lt;br /&gt;
O VBA é a implementação da plataforma do bom e velho Visual Basic em outras aplicações da Microsoft. A tradução é exatamente sua explicação,&amp;nbsp;&lt;b&gt;V&lt;/b&gt;isual &lt;b&gt;B&lt;/b&gt;asic for &lt;b&gt;A&lt;/b&gt;pplications. A ferramenta onde o VBA é mais utilizado com certeza é o Excel, mas o que poucos sabem é que todas as aplicações do Office podem utilizá-la. É possível administrar e manipular praticamente tudo nas aplicações do Office usando VBA.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que o BW tem a ver com o VBA ?&lt;/h3&gt;&lt;br /&gt;
Uma das formas de interface de relatório com o usuário que o BW utiliza é o Excel. E com certeza uma das mais interessantes, pelo fato de poder formatar e salvar o relatório conforme seja de seu agrado, além de facilmente se manipular os dados e cruzar com outros relatórios via PROCV. E no caso do Excel, o próprio BW usa API&#39;s via VBA para escrever os dados e desenhar um formato padrão de relatório. Isso nos abre infinitas possibilidades de soluções, e é uma destas soluções que venho compartilhar nesta postagem.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Solução&lt;/h3&gt;&lt;br /&gt;
Para falarmos da solução, temos que primeiro falar do problema. Nas versões mais antigas do BW, os campos de texto tem uma limitação de 60 caracteres. Sendo assim, se for necessário usar um campo de 100 caracteres você será obrigado a quebrar o campo em duas partes, sendo uma de 60 e outra de 40. Em nosso caso, o campo tinha 6000 caracteres, portanto foi necessário quebrar em 100 partes. Parece loucura, mas é a realidade.&lt;br /&gt;
&lt;br /&gt;
E como exibir isso no relatório, um único campo dividido em 100 colunas? Claro que não fica nada legal. Foi então que nosso colega, profissional de BW, cogitou uma possível solução em VBA. Então abraçamos a ideia e, depois de descobrirmos alguns detalhes bens legais, fizemos a concatenação das 100 colunas em apenas uma, deixando o relatório melhor apresentável.&lt;br /&gt;
&lt;br /&gt;
Depois de criar uma query para o Excel, ao abri-la pelo Analyzer do BW, você poderá acessar a área de desenvolvedor (destacado em amarelo na imagem abaixo) e em seguida clicar em Visual Basic (destacado em vermelho na imagem abaixo).&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/bw_vba/Acessar_VBA_726x134.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Acessando Visual Basic no Excel&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/bw_vba/Acessar_VBA_726x134.png&quot; height=&quot;92&quot; title=&quot;Acessando Visual Basic no Excel&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Acesse a guia de desenvolvedor e clique em Visual Basic&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Feito o passo acima, irá se abrir uma tela muito parecida com o antigo Visual Basic 6.0.&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/bw_vba/TelaVBA_1366x768.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tela VBA Excel&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/bw_vba/TelaVBA_1366x768.png&quot; height=&quot;281&quot; title=&quot;Tela VBA Excel&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Tela do VBA do Excel, muito parecida com o VB6.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Agora, olhando os detalhes na janela de navegação de objetos. Ela fica geralmente localizada à esquerda da tela e contém objetos como se fossem nós que podem ser expandidos. Na imagem acima ela se encontra exatamente à esquerda da tela. Na imagem abaixo está a janela de nevegação já com todos os nós expandidos.&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/bw_vba/TelaNavegacao_283x420.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tela navegação VBA&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/bw_vba/TelaNavegacao_283x420.png&quot; height=&quot;400&quot; title=&quot;Tela navegação VBA&quot; width=&quot;268&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Tela de navegação do VBA&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Repare que existem dois projetos, que são os nós nos níveis mais abrangentes. Destacados em amarelo na imagem acima, os dois são criados pelo próprio BW.&lt;br /&gt;
&lt;br /&gt;
O primeiro projeto, denominado &quot;BExAnalyzer&quot;, sempre é recriado todas as vezes que o relatório é aberto novamente. Isso quer dizer que sempre que abrir uma query ou um workbook esse projeto será recriado, e toda e qualquer alteração feita em seus objetos será perdida.&lt;br /&gt;
&lt;br /&gt;
Enquanto o segundo projeto, denominado &quot;VBAProject&quot;, é criado apenas uma vez na criação da query ou do workbook. Se forem feitas alterações em seus objetos, elas serão preservadas e executadas nas próximas aberturas do relatório.&lt;br /&gt;
&lt;br /&gt;
A porta de entrada para intervenções no relatório está nos objetos do segundo projeto. Um exemplo de objeto é um módulo chamado &quot;DefaultWorkbook&quot;. Dentro dele existe uma Sub chamada &quot;CallBack&quot;. Essa Sub é a última rotina chamada durante a abertura do relatório. Então, se for necessário implementar algo após todo relatório estar montado, basta incluir o código necessário antes do fechamento da Sub.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/bw_vba/Sub_CallBack_400x221.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Fechamento do CallBack&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/bw_vba/Sub_CallBack_400x221.png&quot; height=&quot;176&quot; title=&quot;Fechamento do CallBack&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Trecho de fechamento da Sub CallBack&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Na imagem acima é possível identificar o fechamento da Sub &quot;CallBack&quot; com a linha End Sub. Basta inserir a codificação necessária antes da linha End Sub. Minha sugestão é que seja criado uma novo módulo, com uma Sub personalizada, e que no fechamento do &quot;CallBack&quot; fique apenas uma chamada para esta nova Sub. Eu criei um módulo chamado ZVBA.&lt;br /&gt;
&lt;br /&gt;
Acesso via Drive:&lt;br /&gt;
&lt;a href=&quot;https://drive.google.com/open?id=0Bw1nt8N9np4wWmRuYlFlMlJOTm8&quot; target=&quot;_blank&quot;&gt;Módulo ZVA&lt;/a&gt;.&lt;br /&gt;
&lt;a href=&quot;https://drive.google.com/open?id=0Bw1nt8N9np4wRml6SkE2R3R1MkE&quot; target=&quot;_blank&quot;&gt;Chamada CallBack&lt;/a&gt;.&lt;br /&gt;
Quem estiver interessado em saber um pouco mais sobre a solução, pode deixar comentários.&lt;br /&gt;
&lt;br /&gt;
Confesso que essa postagem não está ligada com a área ABAP, mas pelo fato de ser algo do nosso meio de trabalho achei interessante compartilhar. Espero que seja útil para mais alguém.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O trabalho em equipe sempre prevalece.&lt;br /&gt;
E é sempre um prazer poder ajudar os colegas de trabalho.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/5842091754110709972/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/5842091754110709972?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/5842091754110709972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/5842091754110709972'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/06/solucao-bw-com-vba.html' title='Solução BW com VBA'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP0EROVSsrUywtw4z0vIh_ikeYsNJQ1TZ-dNw9JfvIPWgCsMvJs1xgFuhHaS4czb0hxry0mz4ElNFzG2ZyiW9RPf5jTgL1KCmLDAs_c3ZguaqhKptZ-feqTf0s1f8JgbM_VrZYDksuAhb4/s72-c/BW_VBA_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-8406387393038161660</id><published>2016-04-21T13:11:00.000-03:00</published><updated>2017-04-14T21:49:12.031-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debug"/><category scheme="http://www.blogger.com/atom/ns#" term="macetes"/><category scheme="http://www.blogger.com/atom/ns#" term="utilidades"/><title type='text'>Depurando em qualquer tela (DEBUG)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQZHogxoPX7pRvHuDuAIbwwgJse1YdFIdlSOLt0_T8ZeV3dXZusHVAvAtP4Esy0tJ2Pg5ff0pM-mbx2SefmoFLWXCfkXYVV6S5TTddu06l5omqI54sv2jqybLGv0w8ibFqR8g_wYS6OZt/s1600/Debug.sap_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Arquivo Debug.sap&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQZHogxoPX7pRvHuDuAIbwwgJse1YdFIdlSOLt0_T8ZeV3dXZusHVAvAtP4Esy0tJ2Pg5ff0pM-mbx2SefmoFLWXCfkXYVV6S5TTddu06l5omqI54sv2jqybLGv0w8ibFqR8g_wYS6OZt/s1600/Debug.sap_150x150.png&quot; title=&quot;Arquivo Debug.sap&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Quantas vezes você quis depurar um programa a partir de um determinado momento. Por exemplo, logo após uma janela de pergunta, ou depois de uma mensagem de aviso. E como depurar se o campo de comando não estiver acessível para executar o famoso &quot;/H&quot;?&lt;br /&gt;
&lt;br /&gt;
Existe um grande macete, muito útil, que lhe permite iniciar um DEBUG em qualquer tela e a partir de qualquer momento.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Se você ainda não conhece a forma convencional de depuração, sugiro dar uma olhadinha na postagem &lt;a href=&quot;http://www.abapwarrior.com/2016/01/depurando-um-programa-debug.html&quot; target=&quot;_blank&quot;&gt;Depurando um programa (DEBUG)&lt;/a&gt;. Na verdade, a navegação durante a depuração é exatamente igual. O que muda é forma de iniciá-la.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;h3&gt;&lt;u&gt;Passo 1 - Criando um arquivo&lt;/u&gt;&lt;/h3&gt;&lt;br /&gt;
Primeiro será necessário criar um arquivo. De preferência deixe-o em um lugar de fácil acesso, como no desktop, ou em alguma pasta que você se lembre facilmente. No local onde será criado o arquivo, clique numa área vazia da tela com o botão direito do mouse, escolha a opção &quot;Novo&quot; e depois &quot;Documento de Texto&quot;. Segue exemplo na imagem abaixo.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/debug/Menu_Novo_Documento_de_texto_621x405.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Criar documento de texto&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/debug/Menu_Novo_Documento_de_texto_621x405.png&quot; height=&quot;260&quot; title=&quot;Criar documento de texto&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Botão direito do mouse, opção &quot;Novo&quot; e depois &quot;Documento de Texto&quot;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Um novo arquivo será criado sem nenhum conteúdo. Ainda não se preocupe com o nome do arquivo, nem com sua extensão. Geralmente, o arquivo será criado com o nome &quot;Novo Documento de Texto&quot; e terá a extensão &quot;.txt&quot;. Exemplo do arquivo criado na imagem abaixo.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/debug/Novo_arquivo_621x83.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Novo arquivo&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/debug/Novo_arquivo_621x83.png&quot; height=&quot;61&quot; title=&quot;Novo arquivo&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Dependendo da configuração de seu sistema operacional, a extensão pode ou não ser exibida&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;h3&gt;&lt;u&gt;Passo 2 - Preenchendo o arquivo&lt;/u&gt;&lt;/h3&gt;&lt;br /&gt;
Se você não alterou seu editor padrão de extensões &quot;.txt&quot;, ainda será o poderosíssimo Bloco de Notas. Caso tenha alterado, não tem problema. Simplesmente abra o arquivo, ou dê um duplo clique sobre ele. Com o arquivo aberto, preencha com o conteúdo abaixo.&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; text-align: justify;&quot;&gt;&lt;br /&gt;
[Function]&lt;br /&gt;
Command=/h&lt;br /&gt;
Type=SystemCommand&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
E então salve seu arquivo e feche o editor.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;u&gt;Passo 3 - Renomeando o arquivo&lt;/u&gt;&lt;/h3&gt;&lt;br /&gt;
Apenas fazendo isso seu DEBUG já irá funcionar, mas vamos fazer algo pra deixar o arquivo mais apresentável e fazer com que você se lembre pra quê ele serve. Renomeie seu arquivo para &quot;Debug.sap&quot;, lembrando que o nome do arquivo é &quot;Debug&quot; e que &quot;.sap&quot; é a extensão. O procedimento para mudar a extensão de um arquivo pode ser diferente dependendo das configurações de seu sistema operacional. Após renomeação o arquivo ficará conforme imagem abaixo.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/debug/Lista_Debug.sap_291x74.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Arquivo Debug.sap&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/debug/Lista_Debug.sap_291x74.png&quot; height=&quot;80&quot; title=&quot;Arquivo Debug.sap&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Arquivo com nome e ícone apropriados&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;h3&gt;&lt;u&gt;Passo 4 - Ativando o DEBUG&lt;/u&gt;&lt;/h3&gt;&lt;br /&gt;
Bom, agora vem a parte mais esperada, que é ativar a depuração a partir de qualquer janela ou tela, e em qualquer momento. Experimente abrir uma transação qualquer no SAP. Em qualquer tela ou janela. Pode ser inclusive uma tela de popup, ou então uma janela de aviso. Pode ser um match-code para seleção de valores. Pode ser em qualquer janela mesmo. Então vá até o local onde seu arquivo &quot;Debug.sap&quot; foi criado, clique sobre ele e mantenha clicado, arraste até a janela do SAP e solte.&lt;br /&gt;
&lt;br /&gt;
Pronto, a depuração foi ativada. A ativação pode ser confirmada com a mensagem de rodapé &quot;Debugging foi ligado&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/debug/Mensagem1_237x36.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Debugging foi ligado&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/debug/Mensagem1_237x36.png&quot; height=&quot;36&quot; title=&quot;Debugging foi ligado&quot; width=&quot;237&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Mensagem de ativação de depuração&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Após isso, qualquer ação na tela irá abrir uma sessão de DEBUG.&lt;br /&gt;
Boa diversão.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/8406387393038161660/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/8406387393038161660?isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/8406387393038161660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/8406387393038161660'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/04/depurando-em-qualquer-tela-debug.html' title='Depurando em qualquer tela (DEBUG)'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQZHogxoPX7pRvHuDuAIbwwgJse1YdFIdlSOLt0_T8ZeV3dXZusHVAvAtP4Esy0tJ2Pg5ff0pM-mbx2SefmoFLWXCfkXYVV6S5TTddu06l5omqI54sv2jqybLGv0w8ibFqR8g_wYS6OZt/s72-c/Debug.sap_150x150.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-8298112907083266460</id><published>2016-04-08T19:55:00.000-03:00</published><updated>2018-10-06T10:18:14.609-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="comandos"/><title type='text'>Comando DELETE ADJACENT DUPLICATES</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLQXa6YwYp-MLOzF1qB80n17OSimXpVX2n4bGC9tOE8aP3iw4z7fKA4bVJRGRoTFzHzFY49Pjd3qu__Y-AUgreajrlKt8xxCtj3_mlueWBGeyQrn2USMJhWmU1JIrMprRkdF4HzSaG7IGa/s1600/Duplicados_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Limpar registros duplicados&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLQXa6YwYp-MLOzF1qB80n17OSimXpVX2n4bGC9tOE8aP3iw4z7fKA4bVJRGRoTFzHzFY49Pjd3qu__Y-AUgreajrlKt8xxCtj3_mlueWBGeyQrn2USMJhWmU1JIrMprRkdF4HzSaG7IGa/s1600/Duplicados_150x150.png&quot; title=&quot;Limpar registros duplicados&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Como fazer para localizar e tratar dados duplicados dentro de uma tabela interna? Algo importante e essencial. O comando &lt;code&gt;DELETE ADJACENT DUPLICATES&lt;/code&gt; tem a finalidade de comparar os dados de uma tabela interna para encontrar duplicidades e removê-las.&lt;br /&gt;
&lt;br /&gt;
Esse comando é uma das três variações do comando &lt;code&gt;DELETE&lt;/code&gt; em tabelas internas. Confira mais uma postagem da &lt;a href=&quot;http://www.abapwarrior.com/p/series.html#comandos&quot;&gt;série COMANDOS&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que é um &lt;code&gt;DELETE ADJACENT DUPLICATES&lt;/code&gt; ?&lt;/h3&gt;&lt;br /&gt;
Esse comando é uma das três variações do comando &lt;code&gt;DELETE&lt;/code&gt; e é usado especificamente para tratar repetições de dados em tabelas internas. É possível informar por quais colunas deverá ser feita a verificação das repetições. Ele compara os dados na tabela interna e, se houver registros considerados iguais, descarta os repetidos deixando apenas o primeiro registro.&lt;br /&gt;
&lt;br /&gt;
Para que funcione de forma correta precisa ser usado sempre em parceria com o &lt;a href=&quot;http://www.abapwarrior.com/2016/03/comando-sort.html&quot; target=&quot;_blank&quot;&gt;comando &lt;code&gt;SORT&lt;/code&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Como funciona o &lt;code&gt;DELETE ADJACENT DUPLICATES&lt;/code&gt; ?&lt;/h3&gt;&lt;br /&gt;
Para usar o comando &lt;code&gt;DELETE ADJACENT DUPLICATES&lt;/code&gt; basta informar a tabela após o comando. Se nenhum parâmetro adicional for informado, a comparação dos dados será realizada através de campos declarados com tipos alfanuméricos. A não ser que a tabela tenha sido declarada com alguma chave, neste caso a comparação dos dados será realizada através dos campos que compõe a chave.&lt;br /&gt;
&lt;br /&gt;
Um exemplo da forma sem especificar parâmetros adicionais ficaria assim:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;DELETE ADJACENT DUPLICATES&lt;/span&gt; t_dados.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima os dados da tabela T_DADOS serão comparados apenas pelas colunas do tipo alfanumérico. Se a tabela T_DADOS for declarada com alguma chave, a comparação será feita pelos campos da chave. Registros considerados iguais na comparação serão excluídos, deixando apenas o primeiro encontrado.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Usando com o comando &lt;code&gt;SORT&lt;/code&gt;&lt;/h4&gt;&lt;br /&gt;
Deve-se usar sempre o &lt;a href=&quot;http://www.abapwarrior.com/2016/03/comando-sort.html&quot; target=&quot;_blank&quot;&gt;comando &lt;code&gt;SORT&lt;/code&gt;&lt;/a&gt; antes do comando &lt;code&gt;DELETE ADJACENT DUPLICATES&lt;/code&gt; para garantir a ordenação dos registros. Preferencialmente use os mesmos campos para ordenação e para a comparação. Isso porquê, de uma forma bem prática, o comando percorre todos os registros, mas ele compara apenas o registro atual com o próximo registro.&lt;br /&gt;
&lt;br /&gt;
Imagine que internamente o sistema faz um &lt;code&gt;LOOP&lt;/code&gt; na tabela interna percorrendo todos os registros. Quando o sistema está no registro 1, ele compara com o registros 2. Se os registros 1 e 2 forem considerados iguais segundo o critério de comparação, o registro 2 será removido da tabela fazendo com que todos os registros abaixo dele sejam automaticamente deslocados para cima. Então o sistema faz uma nova comparação ainda com o registro 1, e com o novo registro 2 (que antes era o 3, mas que foi deslocado para cima quando o antigo registro 2 foi removido). Sendo iguais, novamente o registro 2 será removido e os demais deslocados para cima. Continuando, o sistema compara o registro 1 e o novo registro 2. Se os registros não forem iguais, o sistema segue para o registro 2. Agora apontando para o registro 2, ele compara com o registro 3. Se forem iguais, remove o 3. Se não forem iguais, aponta para o 3. E assim vai sequencialmente até o penúltimo registro.&lt;br /&gt;
&lt;br /&gt;
Perceba que, com esta lógica, se os registros não estiverem ordenados com o mesmo critério de comparação, o sistema não encontrará as repetições e não removerá os registros repetidos&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Especificando colunas para comparação&lt;/h4&gt;&lt;br /&gt;
Informe o parâmetro &lt;code&gt;COMPARING&lt;/code&gt; depois da tabela e em seguida as colunas separadas por espaço. Com isso as colunas estarão especificadas para a comparação.&lt;br /&gt;
&lt;br /&gt;
Vamos usar como um simples exemplo a tabela abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/delete-adjacent/Tabela_T_DADOS_198x110.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img alt=&quot;Tabela T_LOJAS com repetições&quot; border=&quot;0&quot; src=&quot;https://sites.google.com/site/awstge/post/delete-adjacent/Tabela_T_DADOS_198x110.png&quot; height=&quot;110&quot; title=&quot;Tabela T_LOJAS com repetições&quot; width=&quot;198&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Podemos perceber que a loja &lt;code&gt;A002&lt;/code&gt; aparece duas vezes na tabela, porem os dois registros não estão imediatamente abaixo um do outro. Desta forma, se executarmos o comando especificando a coluna &lt;code&gt;LOJA&lt;/code&gt;, o comando não funcionará.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;DELETE ADJACENT DUPLICATES&lt;/span&gt; t_lojas &lt;span style=&quot;color: blue;&quot;&gt;COMPARING&lt;/span&gt; loja.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima os dados da tabela &lt;code&gt;T_LOJAS&lt;/code&gt; serão comparados apenas pela coluna &lt;code&gt;LOJA&lt;/code&gt;. Registros considerados iguais pela coluna &lt;code&gt;LOJA&lt;/code&gt; serão excluídos, deixando apenas o primeiro encontrado. Porém, como a tabela não estava ordenada pela coluna &lt;code&gt;LOJA&lt;/code&gt;, nenhum registro será excluído.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Usando o comando &lt;code&gt;SORT&lt;/code&gt; antes do comando &lt;code&gt;DELETE ADJACENT DUPLICATES&lt;/code&gt; faz com que os registros fiquem com a disposição correta para as comparações.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT&lt;/span&gt; t_lojas &lt;span style=&quot;color: blue;&quot;&gt;BY&lt;/span&gt; loja.&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;DELETE ADJACENT DUPLICATES&lt;/span&gt; t_lojas &lt;span style=&quot;color: blue;&quot;&gt;COMPARING&lt;/span&gt; loja.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima, o primeiro comando irá ordenar a tabela &lt;code&gt;T_LOJAS&lt;/code&gt; pela coluna &lt;code&gt;LOJA&lt;/code&gt;. Em seguida, os dados da tabela &lt;code&gt;T_LOJAS&lt;/code&gt; serão comparados apenas pela coluna &lt;code&gt;LOJA&lt;/code&gt;. Registros considerados iguais pela coluna &lt;code&gt;LOJA&lt;/code&gt; serão excluídos, deixando apenas o primeiro encontrado.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
No comando &lt;code&gt;SORT&lt;/code&gt; a tabela &lt;code&gt;T_LOJAS&lt;/code&gt; ficaria com a seguinte disposição:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/delete-adjacent/Tabela_T_LOJAS_ordenada_198x110.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;tabela T_LOJAS ordenada&quot; border=&quot;0&quot; src=&quot;https://sites.google.com/site/awstge/post/delete-adjacent/Tabela_T_LOJAS_ordenada_198x110.png&quot; height=&quot;110&quot; title=&quot;tabela T_LOJAS ordenada&quot; width=&quot;198&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Agora repare que os registros da loja &lt;code&gt;A002&lt;/code&gt; estão imediatamente um abaixo do outro. Ao processar o comando &lt;code&gt;DELETE ADJACENT DUPLICATES&lt;/code&gt; a tabela &lt;code&gt;T_LOJAS&lt;/code&gt; ficaria assim:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/delete-adjacent/Tabela_T_LOJAS_final_200x92.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;tabela T_LOJAS final&quot; border=&quot;0&quot; src=&quot;https://sites.google.com/site/awstge/post/delete-adjacent/Tabela_T_LOJAS_final_200x92.png&quot; height=&quot;92&quot; title=&quot;tabela T_LOJAS final&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Por fim, repare que o registro repetido da loja &lt;code&gt;A002&lt;/code&gt; não existe mais. É assim que funciona o comando &lt;code&gt;DELETE ADJACENT DUPLICATES&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Comparação por todas as colunas&lt;/h4&gt;&lt;br /&gt;
Existe ainda uma forma de fazer a comparação de repetições por todas as colunas da tabela. Basta acrescentar o parâmetro &lt;code&gt;COMPARING ALL FIELDS&lt;/code&gt;. Mesmo assim, o comando só funcionará se a tabelas estiver ordenada.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;DELETE ADJACENT DUPLICATES&lt;/span&gt; t_lojas &lt;span style=&quot;color: blue;&quot;&gt;COMPARING ALL FIELDS&lt;/span&gt;&lt;/span&gt;.&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima os dados da tabela T_LOJAS serão comparados por todas as colunas. Registros considerados iguais pela coluna &lt;code&gt;LOJA&lt;/code&gt; serão excluídos, deixando apenas o primeiro encontrado.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espero que seja útil.&lt;br /&gt;
Se alguém quiser compartilhar alguma experiência usando o &lt;code&gt;DELETE ADJACENT DUPLICATES&lt;/code&gt;, ou se tiver alguma dúvida, fiquem a vontade nos comentários.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/8298112907083266460/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/8298112907083266460?isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/8298112907083266460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/8298112907083266460'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/04/comando-delete-adjacent-duplicates.html' title='Comando DELETE ADJACENT DUPLICATES'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLQXa6YwYp-MLOzF1qB80n17OSimXpVX2n4bGC9tOE8aP3iw4z7fKA4bVJRGRoTFzHzFY49Pjd3qu__Y-AUgreajrlKt8xxCtj3_mlueWBGeyQrn2USMJhWmU1JIrMprRkdF4HzSaG7IGa/s72-c/Duplicados_150x150.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-2442856689555839301</id><published>2016-03-31T20:01:00.000-03:00</published><updated>2018-10-06T10:20:47.030-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="comandos"/><title type='text'>Comando SORT</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6QLIveK90QPHaf-FbKkUOXjkI9D-Xs2HiClur_LobWiB_kgJ-cDaYXE9VV9btl-k69JUs1UWgoFSTYTTu9N2jfM3ozlSalQX4B9lTQPe9ats_-LKAD2Zd-KYnhuoClFmNFl9lMnFNNsJm/s1600/Ordenar_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Comando SORT&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6QLIveK90QPHaf-FbKkUOXjkI9D-Xs2HiClur_LobWiB_kgJ-cDaYXE9VV9btl-k69JUs1UWgoFSTYTTu9N2jfM3ozlSalQX4B9lTQPe9ats_-LKAD2Zd-KYnhuoClFmNFl9lMnFNNsJm/s1600/Ordenar_150x150.png&quot; title=&quot;Comando SORT&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;É muito comum ordenar uma tabela para que a disposição dos dados fique de acordo com a necessidade. E também é muito importante saber alguns detalhes de como é possível ordenar uma tabela, e conhecer as variações que podem ser aplicadas.&lt;br /&gt;
&lt;br /&gt;
Dentro do &lt;code&gt;ABAP&lt;/code&gt; isso é feito através do comando &lt;code&gt;SORT&lt;/code&gt;. E ele é essencial para que outros comandos também funcionem. Esta é mais uma postagem da &lt;a href=&quot;http://www.abapwarrior.com/p/series.html#comandos&quot;&gt;série COMANDOS&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-9140080035344337&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;9588557602&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que é um &lt;code&gt;SORT&lt;/code&gt; ?&lt;/h3&gt;&lt;br /&gt;
&lt;code&gt;SORT&lt;/code&gt; é um comando da plataforma &lt;code&gt;ABAP&lt;/code&gt; usado para ordenar os dados em uma tabela lógica. A ordenação é importante para organizar os dados antes de exibí-los em um relatório, ou para deixar a tabela apta para uma pesquisa ou leitura direta.&lt;br /&gt;
&lt;br /&gt;
Também é usado em conjunto com o &lt;a href=&quot;http://www.abapwarrior.com/2016/04/comando-delete-adjacent-duplicates.html&quot; target=&quot;_blank&quot;&gt;comando &lt;code&gt;DELETE ADJACENT DUPLICATES&lt;/code&gt;&lt;/a&gt; e é essencial para o perfeito funcionamento deste último citado. Outra aplicação em conjunto é com o comando &lt;code&gt;READ TABLE&lt;/code&gt; com o parâmetro &lt;code&gt;BINARY SEARCH&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Como funciona o &lt;code&gt;SORT&lt;/code&gt; ?&lt;/h3&gt;&lt;br /&gt;
O comando &lt;code&gt;SORT&lt;/code&gt; tem algumas variações de uso bem interessantes. Algumas eu nem conhecia, passei a conhecer quando comecei a estudar sobre o tema antes de escrever esta postagem.&lt;br /&gt;
&lt;br /&gt;
A forma mais simples de uso é ordenar uma tabela sem especificar colunas. Se nenhuma coluna for especificada, a ordenação será feita por todas as colunas obedecendo a ordem das colunas, ou seja, da primeira até a última. A não ser que a tabela tenha sido declara com alguma chave, neste caso a ordenação será feita pela chave.&lt;br /&gt;
&lt;br /&gt;
Outro detalhe importante é a questão da direção da ordenação, para dizer se é para ordenar de forma crescente ou decrescente. Para ordenar de forma crescente usar o argumento &lt;code&gt;ASCENDING&lt;/code&gt; e de forma descrescente usar o argumento &lt;code&gt;DESCENDING&lt;/code&gt;. Se nada for informado quanto à direção, automaticamente será usada a forma crescente.&lt;br /&gt;
&lt;br /&gt;
Um exemplo da forma mais simples ficaria assim:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima a tabela &lt;code&gt;T_DADOS&lt;/code&gt; será ordenada no sentido crescente por todas as colunas da primeira até a última. Se a tabela &lt;code&gt;T_DADOS&lt;/code&gt; for declarada com alguma chave, a ordenação será feita pelos campos da chave.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&lt;u&gt;Colunas e sentidos de ordenação&lt;/u&gt;&lt;/h4&gt;&lt;br /&gt;
Para ordenar especificando uma ou mais colunas, basta usar o complemento &lt;code&gt;BY&lt;/code&gt; e em seguida informar as colunas. Se for duas ou mais separe por espaços.&lt;br /&gt;
&lt;br /&gt;
Um exemplo especificando duas colunas ficar assim:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;BY &lt;/span&gt;data valor.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima a tabela &lt;code&gt;T_DADOS&lt;/code&gt; será ordenada apenas pelas colunas &lt;code&gt;DATA&lt;/code&gt; e &lt;code&gt;VALOR&lt;/code&gt;. As duas no sentido crescente, pelo fato de não ter o sentido informado.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
O exemplo abaixo tem o mesmo efeito do exemplo acima, porém deixando explícito qual o sentido da ordenação:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;BY &lt;/span&gt;data &lt;span style=&quot;color: blue;&quot;&gt;ASCENDING &lt;/span&gt;valor &lt;span style=&quot;color: blue;&quot;&gt;ASCENDING&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima a tabela &lt;code&gt;T_DADOS&lt;/code&gt; será ordenada apenas pelas colunas &lt;code&gt;DATA&lt;/code&gt; e &lt;code&gt;VALOR&lt;/code&gt;, as duas no sentido crescente.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Quando o sentido da ordenação for o mesmo para todas as colunas, também é possível deixar explícito o sentido antes do &lt;code&gt;BY&lt;/code&gt;:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;ASCENDING BY &lt;/span&gt;data valor.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima a tabela &lt;code&gt;T_DADOS&lt;/code&gt; será ordenada apenas pelas colunas &lt;code&gt;DATA&lt;/code&gt; e &lt;code&gt;VALOR&lt;/code&gt;, as duas no sentido crescente.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Para que fique claro, usando as três formas abaixo, o resultado será o mesmo. Na primeira deixando o sentido implícito, ou seja, sem informar. Na segunda informando o sentido coluna por coluna. E na terceira informando o sentido para todas as colunas de uma vez.&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;BY &lt;/span&gt;data valor.&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;BY &lt;/span&gt;data &lt;span style=&quot;color: blue;&quot;&gt;ASCENDING &lt;/span&gt;valor &lt;span style=&quot;color: blue;&quot;&gt;ASCENDING&lt;/span&gt;.&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;ASCENDING BY &lt;/span&gt;data valor.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
No caso da ordenação decrescente é necessário informar obrigatoriamente o sentido, ou seja, de forma explícita. Deve ser aplicado como na segunda e terceira formas mostradas acima, com o sentido crescente.&lt;br /&gt;
&lt;br /&gt;
Informando coluna por coluna:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;BY &lt;/span&gt;data &lt;span style=&quot;color: blue;&quot;&gt;DESCENDING &lt;/span&gt;valor &lt;span style=&quot;color: blue;&quot;&gt;DESCENDING&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Informando para todas as colunas de uma vez:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;DESCENDING BY &lt;/span&gt;data valor.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;Nos dois exemplos acima a tabela &lt;code&gt;T_DADOS&lt;/code&gt; será ordenada apenas pelas colunas &lt;code&gt;DATA&lt;/code&gt; e &lt;code&gt;VALOR&lt;/code&gt;, as duas no sentido decrescente.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Para que fique claro, usando as duas formas abaixo, o resultado será o mesmo. Na primeira informando o sentido coluna por coluna. E na segunda informando o sentido para todas as colunas de uma vez.&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;BY &lt;/span&gt;data &lt;span style=&quot;color: blue;&quot;&gt;DESCENDING &lt;/span&gt;valor &lt;span style=&quot;color: blue;&quot;&gt;DESCENDING&lt;/span&gt;.&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;SORT&lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;DESCENDING BY &lt;/span&gt;data valor.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Outro detalhe importante quando usar o sentido de ordenação antes do &lt;code&gt;BY&lt;/code&gt; é que ele será aplicado em todas as colunas. Desta forma, se em alguma coluna for necessário ordenar em outro sentido, o mesmo deverá estar explicito à direta da coluna:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;DESCENDING BY &lt;/span&gt;data cidade &lt;span style=&quot;color: blue;&quot;&gt;ASCENDING &lt;/span&gt;valor.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima a tabela &lt;code&gt;T_DADOS&lt;/code&gt; será ordenada apenas pelas colunas &lt;code&gt;DATA&lt;/code&gt;, &lt;code&gt;CIDADE&lt;/code&gt; e &lt;code&gt;VALOR&lt;/code&gt;, sendo primeiro por &lt;code&gt;DATA&lt;/code&gt; decrescente, depois por &lt;code&gt;CIDADE&lt;/code&gt; crescente e por último por &lt;code&gt;VALOR&lt;/code&gt; decrescente.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&lt;u&gt;Ordenação de textos&lt;/u&gt;&lt;/h4&gt;&lt;br /&gt;
Um parâmetro muito interessante é o uso do &lt;code&gt;AS TEXT&lt;/code&gt;. Ele pode ser usado de forma geral para toda tabela ou especificando em uma ou mais colunas. O uso deste parâmetro faz com que as colunas com tipos alfanuméricos sejam classificadas desconsiderando acentos. Sem este parâmetro, os acentos serão considerados e irão para o fim da ordenação.&lt;br /&gt;
&lt;br /&gt;
Um ótimo cenário de exemplo é usando as vogais. Imagine uma tabela contendo quatro linhas, e que uma das colunas com tipo alfanumérico esteja preenchida com os dados &quot;E&quot;, &quot;I&quot;, &quot;É&quot; e &quot;A&quot;. Repare que uma das vogais está com a acento agudo.&lt;br /&gt;
&lt;br /&gt;
Se ordenar &lt;u&gt;sem&lt;/u&gt; o parâmetro &lt;code&gt;AS TEXT&lt;/code&gt; a vogal com acento ficará por último.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;É&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Se ordenar &lt;u&gt;com&lt;/u&gt; o parâmetro &lt;code&gt;AS TEXT&lt;/code&gt; a vogal com acento será considerada como se não tivesse o acento, ficando logo depois da mesma vogal sem acento.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;É&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Informando o parâmetro em coluna:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;BY &lt;/span&gt;cidade &lt;span style=&quot;color: blue;&quot;&gt;AS TEXT&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Informando o parâmetro para todas as colunas da tabela:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;AS TEXT&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No primeiro exemplo acima a tabela &lt;code&gt;T_DADOS&lt;/code&gt; será ordenada na forma de texto pela colunas &lt;code&gt;CIDADE&lt;/code&gt;.&lt;br /&gt;
Já no segundo exemplo a mesma tabela será ordenada na forma de texto por todas as colunas. Este caso apenas funcionará se as colunas alfanuméricas forem as primeiras da tabela.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&lt;u&gt; Ordenação estável&lt;/u&gt;&lt;/h4&gt;&lt;br /&gt;
Este parâmetro eu não conhecia e tem uma funcionalidade muito útil. É o parâmetro &lt;code&gt;STABLE&lt;/code&gt;. Já o tinha visto algumas vezes na ajuda e nunca tinha entendido até colocar em prática durante o estudo desta postagem.&lt;br /&gt;
&lt;br /&gt;
Quando uma tabela é ordenada por uma coluna que possui dados que se repetem, o que acontece com as outras colunas que não foram informadas no comando? As informações dessas colunas, como não foram informadas na ordenação, serão ordenadas de forma aleatória. Isso quer dizer que a cada novo comando de ordenação esses dados poderão ficar em posições diferentes.&lt;br /&gt;
&lt;br /&gt;
O uso do parâmetro &lt;code&gt;STABLE&lt;/code&gt; é para que essa situação não aconteça. Apenas na primeira ordenação os dados das colunas não informadas serão de forma aleatória. Em cada novo comando de ordenação com &lt;code&gt;STABLE&lt;/code&gt; os dados serão preservados na mesma posição.&lt;br /&gt;
&lt;br /&gt;
Vamos ver um cenário prático para ajudar a entender. Imagine a tabela &lt;code&gt;T_DADOS&lt;/code&gt; com as seguintes colunas e registros:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/sort/Tabela_SORT_307x111.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Tabela T_DADOS para comando SORT&quot; border=&quot;0&quot; height=&quot;111&quot; src=&quot;https://sites.google.com/site/awstge/post/sort/Tabela_SORT_307x111.png&quot; title=&quot;Tabela T_DADOS para comando SORT&quot; width=&quot;307&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Repare que o cliente &quot;Anderson&quot; se repete em duas linhas com produtos diferentes. Se for aplicado um comando &lt;code&gt;SORT&lt;/code&gt; pela colunas &lt;code&gt;CIDADE&lt;/code&gt; e &lt;code&gt;CLIENTE&lt;/code&gt;, os dados da coluna PRODUTO seriam ordenados de forma aleatória, pois esta coluna não foi especificada no comando. A cada novo comando os produtos &quot;geladeira&quot; e &quot;fogão&quot; podem acabar trocando de lugar. Exemplo do comando:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;BY &lt;/span&gt;cidade cliente.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Usando o parâmetro &lt;code&gt;STABLE&lt;/code&gt; os produtos &quot;geladeira&quot; e &quot;fogão&quot; não irão ficar trocando de lugar, preservando sempre os dados. Exemplo do comando:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;STABLE BY &lt;/span&gt;cidade cliente.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Esse comando é bem funcional quando usado na apresentação de relatórios. Ele garante que os dados não ficarão diferentes ao reprocessar ou atualizar as informações da tela.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;&lt;u&gt;Ordenação dinâmica&lt;/u&gt;&lt;/h4&gt;&lt;br /&gt;
O que deixei por último não é o menos importante dos parâmetros. Este é um parâmetro interessante para deixar a ordenação de forma dinâmica. Consiste em informar uma tabela contendo as colunas que deverão ser ordenadas. Supondo que a tabela de colunas seja &lt;code&gt;T_COLUNAS&lt;/code&gt;, basicamente o comando fica assim:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SORT &lt;/span&gt;t_dados &lt;span style=&quot;color: blue;&quot;&gt;BY &lt;/span&gt;(t_colunas).&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;Detalhe para os parenteses. Só assim o comando entende que é uma tabela de colunas. Sem eles o programa nem será ativado.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Para declarar a tabela use o tipo standard &lt;code&gt;ABAP_SORTORDER_TAB&lt;/code&gt; que existe exatamente pra isso. Ele possui uma estrutura bem simples, com apenas três colunas. A primeira é a coluna &lt;code&gt;NAME&lt;/code&gt;, onde deve ser preenchido o nome da coluna para ordenação. A segunda é a coluna &lt;code&gt;DESCENDING&lt;/code&gt;, onde deve ser preenchido com um &quot;X&quot; se o sentido for decrescente. Se o sentido for crescente não preencha nada. E a terceira é a coluna &lt;code&gt;ASTEXT&lt;/code&gt;, onde deve ser preenchido com &quot;X&quot; se precisar ser aplicada a ordenação por texto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E você, já precisou usar alguma das variações? Tem alguma experiência sobre este comando que gostaria de compartilhar? Tem alguma dúvida?&lt;br /&gt;
Um grande abraço e até a próxima.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/2442856689555839301/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/2442856689555839301?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/2442856689555839301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/2442856689555839301'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/03/comando-sort.html' title='Comando SORT'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6QLIveK90QPHaf-FbKkUOXjkI9D-Xs2HiClur_LobWiB_kgJ-cDaYXE9VV9btl-k69JUs1UWgoFSTYTTu9N2jfM3ozlSalQX4B9lTQPe9ats_-LKAD2Zd-KYnhuoClFmNFl9lMnFNNsJm/s72-c/Ordenar_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-7012019858399501792</id><published>2016-03-15T23:07:00.000-03:00</published><updated>2017-04-14T21:53:12.478-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="funções"/><category scheme="http://www.blogger.com/atom/ns#" term="utilidades"/><title type='text'>Disparar ENTER pelo programa</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjur0dYW7iyDLkKXNG75ASH1onFTzW4u8X7dL0X_6hQBppxbufGaGLkt3K77HCW4pPA0nlFGcPflMtezlJQ4jrHrsNam8fFg6WRBsJVzLfk0VLuJpEd5AY9MA2-XCT6ogUfW5qzTC9ZvBFm/s1600/TeclaEnter_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Tecla ENTER&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjur0dYW7iyDLkKXNG75ASH1onFTzW4u8X7dL0X_6hQBppxbufGaGLkt3K77HCW4pPA0nlFGcPflMtezlJQ4jrHrsNam8fFg6WRBsJVzLfk0VLuJpEd5AY9MA2-XCT6ogUfW5qzTC9ZvBFm/s1600/TeclaEnter_150x150.png&quot; title=&quot;Tecla ENTER&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;E se fosse possível simular o pressionamento de um &lt;code&gt;ENTER&lt;/code&gt;, para tratar alguma situação específica, ao invés de ficar esperando o usuário pressioná-lo???&lt;br /&gt;
&lt;br /&gt;
Na verdade é possível. Não só é possível como também é muito útil, simples, e fácil. Além de disparar um &lt;code&gt;ENTER&lt;/code&gt; também é possível disparar qualquer &lt;code&gt;CODE&lt;/code&gt; de seu &lt;code&gt;STATUS GUI&lt;/code&gt; e tratá-lo nos eventos de &lt;code&gt;INPUT&lt;/code&gt; e &lt;code&gt;OUTPUT&lt;/code&gt;.&lt;br /&gt;
Apenas com a chamada de uma função...&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Recentemente passei por uma situação bem específica. Fiz um programa com uma particularidade no preenchimento dos campos da tela inicial. Quando o usuário preenche uma série de campos, algumas informações são validadas e depois alguns campos são desabilitados para que o usuário não modifique mais as entradas.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
Esse mesmo programa citado também pode ser chamado a partir de outro programa com algumas entradas já preenchidas. Neste caso a validação e desabilitação dos campos não funcionava por si só. Para funcionar era necessário que alguém pressionasse um &lt;code&gt;ENTER&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Mas era estranho ter que pedir para o usuário. &quot;Olha, depois que você preencher os dados na tela, você pode dar mais um &lt;code&gt;ENTER&lt;/code&gt;, por favor???&quot; rsrsrs. Então pensei que pudesse existir alguma funcionalidade que disparasse o pressionamento de um &lt;code&gt;ENTER&lt;/code&gt; como se fosse o usuário.&lt;br /&gt;
&lt;br /&gt;
Foi então que conheci a função &lt;code&gt;SAPGUI_SET_FUNCTIONCODE&lt;/code&gt;.&lt;br /&gt;
Essa função pode disparar qualquer &lt;code&gt;CODE&lt;/code&gt; que você precise. Para disparar um &lt;code&gt;ENTER&lt;/code&gt; basta passar o sinal de igual para o parâmetro &lt;code&gt;FUNCTIONCODE&lt;/code&gt; da função. Veja exemplo abaixo.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;CALL FUNCTION &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;SAPGUI_SET_FUNCTIONCODE&#39;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;EXPORTING&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;functioncode &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;=&#39;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;EXCEPTIONS&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function_not_supported = &lt;span style=&quot;color: #6fa8dc;&quot;&gt;1&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;OTHERS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;2&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Fiz alguns testes, e todos os &lt;code&gt;CODES&lt;/code&gt; disparados pela função funcionaram perfeitamente. Para disparar um &lt;code&gt;CODE&lt;/code&gt;, informe-o no parâmetro &lt;code&gt;FUNCTIONCODE&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Outro detalhe que pude perceber nos testes é que nos programas do tipo &lt;code&gt;REPORT&lt;/code&gt; a função não funciona muito bem nas seções &lt;code&gt;START-OF-SELECTION&lt;/code&gt; e &lt;code&gt;END-OF-SELECTION&lt;/code&gt;. Já nos programas do tipo &lt;code&gt;MODULE POOL&lt;/code&gt; a função funcionou em todos os lugares.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se alguém souber mais informações sobre o uso da função &lt;code&gt;SAPGUI_SET_FUNCTIONCODE&lt;/code&gt; pode compartilhar aqui na página.&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/7012019858399501792/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/7012019858399501792?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/7012019858399501792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/7012019858399501792'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/03/disparar-enter-pelo-programa.html' title='Disparar ENTER pelo programa'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjur0dYW7iyDLkKXNG75ASH1onFTzW4u8X7dL0X_6hQBppxbufGaGLkt3K77HCW4pPA0nlFGcPflMtezlJQ4jrHrsNam8fFg6WRBsJVzLfk0VLuJpEd5AY9MA2-XCT6ogUfW5qzTC9ZvBFm/s72-c/TeclaEnter_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-3253844869692772908</id><published>2016-03-12T16:44:00.003-03:00</published><updated>2017-04-15T12:32:07.737-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="macetes"/><title type='text'>Aguardar milésimos de segundo</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia6mkkb_pF6MzRcfuK1qVNnrpb2EdgpGXcCY6ay0lHXZvpAJIdWtJ_v1Nqf5Hy_JXUAsG4WkqlKglk-IJgXk-NuJXDcACoRAg7nuKd3_k5M6QRxm3KCHWyPbTo8dZ_9CKHhAZiuiiwyVfH/s1600/Timer_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Timer&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia6mkkb_pF6MzRcfuK1qVNnrpb2EdgpGXcCY6ay0lHXZvpAJIdWtJ_v1Nqf5Hy_JXUAsG4WkqlKglk-IJgXk-NuJXDcACoRAg7nuKd3_k5M6QRxm3KCHWyPbTo8dZ_9CKHhAZiuiiwyVfH/s1600/Timer_150x150.png&quot; title=&quot;Timer&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Há algum tempo postei sobre o &lt;a href=&quot;http://www.abapwarrior.com/2016/02/comando-wait-up-to.html&quot; target=&quot;_blank&quot;&gt;comando &lt;code&gt;WAIT UP TO&lt;/code&gt;&lt;/a&gt;, que faz com seu programa aguarde um determinado tempo em segundos.&lt;br /&gt;
&lt;br /&gt;
E se fosse necessário aguardar um tempo bem específico, algo menor que um segundo??? Com o &lt;a href=&quot;http://www.abapwarrior.com/2016/02/comando-wait-up-to.html&quot; target=&quot;_blank&quot;&gt;comando &lt;code&gt;WAIT UP TO&lt;/code&gt;&lt;/a&gt; não seria possível, pois o tempo mínimo que ele aceita é um segundo. Mas calma, existe como adaptar uma solução técnica pra isso.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Você pode estar se perguntando: mas pra que eu precisaria aguardar menos de 1 (um) segundo??? Sua pergunta faz sentido. Quem aguarda 1/2 (meio) segundo pode perfeitamente aguardar 1 (um) segundo. O problema é quando falamos de grandes quantidades de registros em massa. Se existir um processamento de 300 (trezentos) registros e for necessário colocar uma espera de 1 (um) segundo entre cada registro, já estamos falando de 5 (cinco) minutos de atraso neste processo.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;h3&gt;Onde isso é aplicável ?&lt;/h3&gt;&lt;br /&gt;
Participei de um projeto logístico onde foram desenvolvidos programas de impressão de etiquetas de produtos nos processos de recebimento e expedição. Resumidamente, para cada produto processado no estoque do depósito era criada uma etiqueta de identificação do produto dentro do processo. Para que o processo operacional funcionasse corretamente, as etiquetas precisavam ser impressas numa ordem determinada. Se não saíssem na ordem poderiam causar alguma confusão na operação. Com um processamento muito rápido no servidor, praticamente instantâneo, as ordens de impressão eram criadas praticamente juntas, nos mesmos hora, minuto e segundo.&lt;br /&gt;
&lt;br /&gt;
Como garantir que as impressões cheguem na ordem correta para impressão, se são criadas todas praticamente no mesmo instante??? Tínhamos duas opções. A primeira era mudar a estrutura do programa para, ao invés de criar uma etiqueta por ordem de impressão, criar uma única ordem de impressão com paginação por etiqueta. A segunda opção era colocar um pequeno atraso entre a criação de cada etiqueta para que cada ordem de impressão pudesse ser processada única e individualmente.&lt;br /&gt;
&lt;br /&gt;
A primeira opção, embora pareça a solução ideal, representaria um enorme desvio de tempo no projeto. Não impactaria apenas no momento da impressão, mas também seria necessário desenvolver uma série de outros controles. Foi então que optamos pela segunda opção.&lt;br /&gt;
&lt;br /&gt;
Com o &lt;a href=&quot;http://www.abapwarrior.com/2016/02/comando-wait-up-to.html&quot; target=&quot;_blank&quot;&gt;comando &lt;code&gt;WAIT UP TO&lt;/code&gt;&lt;/a&gt; poderíamos fazer um atraso de no mínimo 1 (um) segundo entre cada etiqueta. Mas em cenários com muitos produtos poderia representar um perda significativa no tempo de processamento. Então surgiu a necessidade de aguardar menos de 1 (um) segundo. Seria necessário aguardar milésimos de segundo.&lt;br /&gt;
&lt;br /&gt;
Esse foi apenas um exemplo, mas com certeza existem vários cenários onde esse macete pode ser aplicado.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Codificação&lt;/h3&gt;&lt;br /&gt;
Será necessário declarar três variáveis do tipo &lt;code&gt;TIMESTAMPL&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;DATA&lt;/span&gt;: l_ts1 &lt;span style=&quot;color: blue;&quot;&gt;TYPE &lt;/span&gt;timestampl,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l_ts2 &lt;span style=&quot;color: blue;&quot;&gt;TYPE &lt;/span&gt;timestampl,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l_ts3 &lt;span style=&quot;color: blue;&quot;&gt;TYPE &lt;/span&gt;timestampl.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;Apenas sugestão de declaração.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Depois é necessário colocar a codificação, abaixo, no ponto do programa onde será necessário aguardar o tempo.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;GET TIME STAMP FIELD &lt;/span&gt;l_ts1.&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;DO&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;GET TIME STAMP FIELD &lt;/span&gt;l_ts2.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;l_ts3 = l_ts2 - l_ts1.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;IF &lt;/span&gt;l_ts3 &lt;span style=&quot;color: blue;&quot;&gt;GT &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;0.2&#39;&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;EXIT&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ENDIF&lt;/span&gt;.&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;ENDDO&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;Primeiro existe um comando &lt;code&gt;GET TIME STAMP&lt;/code&gt; jogando o valor de data, hora, minuto, segundo e milésimos para dentro da variável &lt;code&gt;L_TS1&lt;/code&gt;. Depois dentro do laço &lt;code&gt;DO...ENDDO&lt;/code&gt; existe outro comando &lt;code&gt;GET TIME STAMP&lt;/code&gt; jogando um valor mais atual de data, hora, minuto, segundo e milésimo para dentro da variável &lt;code&gt;L_TS2&lt;/code&gt;. Já a variável &lt;code&gt;L_TS3&lt;/code&gt; recebe a diferença das variáveis &lt;code&gt;L_TS1&lt;/code&gt; e &lt;code&gt;LTS2&lt;/code&gt;. Quando o valor de &lt;code&gt;L_TS3&lt;/code&gt; for maior que 200 (duzentos) milésimos de segundo o comando &lt;code&gt;EXIT&lt;/code&gt; faz com que o laço &lt;code&gt;DO...ENDDO&lt;/code&gt; seja abandonado.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
No exemplo acima, a codificação faz aguardar um 200 milésimos de segundo. Você pode alterar este número conforme sua necessidade.&lt;br /&gt;
&lt;br /&gt;
E você, já precisou de algo parecido???&lt;br /&gt;
Um grande abraços e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/3253844869692772908/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/3253844869692772908?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/3253844869692772908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/3253844869692772908'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/03/aguardar-milesimos-de-segundo.html' title='Aguardar milésimos de segundo'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia6mkkb_pF6MzRcfuK1qVNnrpb2EdgpGXcCY6ay0lHXZvpAJIdWtJ_v1Nqf5Hy_JXUAsG4WkqlKglk-IJgXk-NuJXDcACoRAg7nuKd3_k5M6QRxm3KCHWyPbTo8dZ_9CKHhAZiuiiwyVfH/s72-c/Timer_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-5984698767115560279</id><published>2016-03-05T11:20:00.001-03:00</published><updated>2017-04-12T21:44:49.584-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="funções"/><title type='text'>Conhecendo Módulos de Função</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfX8jt_xNtEQujNEVhXeZSG41Q86PIONOw2B0DfuU-ITr39Cck6E0YtwYBbkpT10S1UQQcbCCgF3uWD1DYhm_CUTulQ9ro3Hlggakn0l35FJG3hPqBDZ4OeCbMtIr7arBCcE7RXhSLGnH3/s1600/SE37_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Módulo de função&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfX8jt_xNtEQujNEVhXeZSG41Q86PIONOw2B0DfuU-ITr39Cck6E0YtwYBbkpT10S1UQQcbCCgF3uWD1DYhm_CUTulQ9ro3Hlggakn0l35FJG3hPqBDZ4OeCbMtIr7arBCcE7RXhSLGnH3/s1600/SE37_150x150.png&quot; title=&quot;Módulo de função&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Você já deve ter visto ou ouvido falar de um módulo de função, ou simplesmente de função. Ou então, já viu em algum programa uma chamada com a linha de comando CALL FUNCTION.&lt;br /&gt;
&lt;br /&gt;
Se você não conhece, não se preocupe, vou mostrar os conceitos básicos de como funcionam os módulos de função dentro de ABAP. Se você já conhece, venha conferir e compartilhar conhecimentos.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que é um Módulo de Função ?&lt;/h3&gt;&lt;br /&gt;
Um módulo de função, em ABAP, funciona como as funções em outras linguagens de programação. Basicamente, você pode colocar um processamento ou uma funcionalidade específica dentro de uma função e depois fazer uso dela em vários outros lugares de um ou mais programas.&lt;br /&gt;
&lt;br /&gt;
Existem muitos módulos de funções standards que são muito úteis. Mas se houver necessidade, e sempre há, você pode criar seu próprio módulo de função.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Como funciona um Módulo de Função ?&lt;/h3&gt;&lt;br /&gt;
Para explicar como funciona um módulo de função vou usar a transação SE37, que é a transação onde se trabalha com módulos de função. E vou usar uma função standard do módulo de WM, usada para criar Ordens de Transporte com base em Remessas, chamada L_TO_CREATE_DN.&lt;br /&gt;
&lt;br /&gt;
Acessando a transação SE37, no único campo disponível na tela basta preencher com o nome da função &quot;L_TO_CREATE_DN&quot; e pressionar o botão &quot;Exibir&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/modulo-funcao/Tela_de_acesso_396x91.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tela inicial SM37&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/modulo-funcao/Tela_de_acesso_396x91.png&quot; height=&quot;91&quot; title=&quot;Tela inicial SM37&quot; width=&quot;396&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Informe o nome da função e pressione &quot;Exibir&quot;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
A primeira guia que será exibida é chamada &quot;Texto fonte&quot;, que é o próprio código-fonte da função. Se quiser pode dar uma &quot;&lt;b&gt;sap&lt;/b&gt;eada&quot; no código para ver como é a codificação standard. Não fique preocupado se você não entender nada, pois a grande maioria dos códigos standards está em alemão.&lt;br /&gt;
&lt;br /&gt;
Além da guia &quot;Texto fonte&quot; existem outras guias. Para quem vai usar função, as mais importantes são: &quot;Importação&quot;, &quot;Exportação&quot;, &quot;Modificação&quot;, &quot;Tabelas&quot; e &quot;Exceções&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/modulo-funcao/Guias_644x95.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Guias SM37&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/modulo-funcao/Guias_644x95.png&quot; height=&quot;74&quot; title=&quot;Guias SM37&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Guias da SM37&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Guia &quot;Importação&quot;&lt;/h4&gt;&lt;br /&gt;
Na guia &quot;Importação&quot; estão os parâmetros que a função precisa receber, ou seja, parâmetros de ida. São aqueles que você passa para a função e não podem ser alterados para tratar um possível retorno. É uma via de mão única, apenas de ida.&lt;br /&gt;
&lt;br /&gt;
Um detalhe interessante em ABAP, é que os parâmetros declarados como importação serão chamados externamente como exportação. Imagine como um cenário de compra e venda internacional, se um país está importando, é porquê outro está exportando. Então depende do ponto de vista: se você estiver dentro da função estará importando parâmetros e se estiver fora da função estará exportando. Na chamada externa da função usa-se &quot;EXPORTING&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;* Aqui são aceitos tanto parâmetros com valores individuais como também estruturas.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Guia &quot;Exportação&quot;&lt;/h4&gt;&lt;br /&gt;
Na guia &quot;Exportação&quot; estão os parâmetros que a função irá devolver, ou seja, parâmetros de volta. São aqueles que você espera que a função responda e não podem ter os valores passados de fora da função. É uma via de mão única, apenas de volta.&lt;br /&gt;
&lt;br /&gt;
Os parâmetros de exportação são chamados externamente como importação. Ele tem o tratamento exatamente ao contrário dos parâmetros de importação, mas usando o mesmo conceito do ponto de vista de dentro ou de fora. Na chamada externa da função usa-se &quot;IMPORTING&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;* Aqui são aceitos tanto parâmetros com valores individuais como também estruturas.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Guia &quot;Modificações&quot;&lt;/h4&gt;&lt;br /&gt;
Na guia &quot;Modificações&quot; estão os parâmetros que se comportam como uma mistura dos dois primeiros citados acima. Pode-se tanto passar valores como modificá-los e retorná-los. Na chamada externa da função usa-se &quot;CHANGING&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;* Aqui são aceitos tanto parâmetros com valores individuais como também estruturas.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Guia &quot;Tabelas&quot;&lt;/h4&gt;&lt;br /&gt;
Na guia &quot;Tabelas&quot;, diferentemente dos outros parâmetros, apenas são aceitos parâmetros com estrutura de tabelas. Também pode-se passar valores como também modificá-los e retorná-los, mas sempre dentro de uma estrutura de tabela. Na chamada externa da função usa-se &quot;TABLES&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Guia &quot;Exceções&quot;&lt;/h4&gt;&lt;br /&gt;
Na guia &quot;Exceções&quot; talvez se encontre a parte mais importante de uma chamada a uma função, que é o tratamento dos erros que podem acontecer durante o processamento. Se você não citar na chamada externa as exceções que você quer tratar, ao ocorrer um erro irá apresentar um DUMP e não será possível tratar dentro do seu programa.&lt;br /&gt;
&lt;br /&gt;
Para tratar as exceções você deve numerá-las, sem repetições dos números, e verificar depois da chamada se valor da variável global SY-SUBRC está entre os números referenciados. Na chamada externa da função usa-se &quot;EXCEPTIONS&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Exemplo de chamada&lt;/h3&gt;Usando ainda a função L_TO_CREATE_DN, segue abaixo exemplo de chamada:&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;CALL FUNCTION &lt;/span&gt;&lt;span style=&quot;color: #93c47d;&quot;&gt;&#39;L_TO_CREATE_DN&#39;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;EXPORTING&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i_lgnum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= v_lgnum&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i_vbeln&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= v_vbeln&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i_squit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= c_x&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;it_delit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= tg_delit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;IMPORTING&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e_tanum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= v_tanum&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;EXCEPTIONS&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreign_lock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;1&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dn_completed&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;2&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;partial_delivery_forbidden&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;3&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xfeld_wrong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;4&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ldest_wrong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;5&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drukz_wrong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;6&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dn_wrong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;7&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;squit_forbidden&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;8&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;no_to_created&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;9&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;teilk_wrong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;10&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update_without_commit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;11&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;no_authority&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;12&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;no_picking_allowed&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;13&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dn_hu_not_choosable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;14&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;input_error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;15&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;OTHERS&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;span style=&quot;color: #6fa8dc;&quot;&gt;16&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Não esta em uso a sessão de tabelas (TABLES). Mesmo que no módulo de função exista a declaração de tabelas, se lá estiver marcado que seu uso é opcional você não precisa usar na sua chamada. Óbvio, se você também não precisar. Veja que as três existentes na função estão marcadas como opcionais.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/modulo-funcao/Tabelas_657x191.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Tabelas L_TO_CREATE_DN&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/modulo-funcao/Tabelas_657x191.png&quot; height=&quot;145&quot; title=&quot;Tabelas L_TO_CREATE_DN&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Tabelas do módulo de função L_TO_CREATE_DN&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;i&gt;* Os parâmetros de importação e modificação também podem ter a marcação como opcionais.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Não está em uso a sessão de modificações (CHANGING), pois este módulo de funções não possui parâmetros de modificação.&lt;br /&gt;
&lt;br /&gt;
Repare na numeração das exceções. Se ocorrer algum erro dentro do processamento do módulo de função, com as exceções citadas e numeradas, o erro poderá ser tratado para o usuário. Em toda e qualquer chamada de função você pode usar a exceção OTHERS. Ela funciona como uma exceção padrão, para caso ocorra um erro no qual não exista necessidade de tratamento especifico.&lt;br /&gt;
&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/5984698767115560279/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/5984698767115560279?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/5984698767115560279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/5984698767115560279'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/03/conhecendo-modulos-de-funcao.html' title='Conhecendo Módulos de Função'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfX8jt_xNtEQujNEVhXeZSG41Q86PIONOw2B0DfuU-ITr39Cck6E0YtwYBbkpT10S1UQQcbCCgF3uWD1DYhm_CUTulQ9ro3Hlggakn0l35FJG3hPqBDZ4OeCbMtIr7arBCcE7RXhSLGnH3/s72-c/SE37_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-5285400487564406452</id><published>2016-02-24T22:55:00.001-03:00</published><updated>2018-10-06T10:12:28.114-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="comandos"/><title type='text'>Comando WAIT UP TO</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6sXGRncdRaDDoeiAoCKHUwqQTKUWHwyPMdt8XxIRiFiDvC4usAYzWSJ4QogXAA33OuvVXrVhZhIu6TFSbtpqZI5C8O9EjRn58fH6QOl_RnzKWoX5Jp3daNFbLvK0ARSXP7bE-Q19wWJAi/s1600/Timer_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Wait&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6sXGRncdRaDDoeiAoCKHUwqQTKUWHwyPMdt8XxIRiFiDvC4usAYzWSJ4QogXAA33OuvVXrVhZhIu6TFSbtpqZI5C8O9EjRn58fH6QOl_RnzKWoX5Jp3daNFbLvK0ARSXP7bE-Q19wWJAi/s1600/Timer_150x150.png&quot; title=&quot;Wait&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Você já precisou que um programa aguardasse por um tempo determinado, mesmo que fosse por apenas alguns segundos? Isso é bem comum, para esperar um processamento paralelo terminar. Ou ainda para esperar que uma atualização em banco de dados seja concluída antes de prosseguir.&lt;br /&gt;
&lt;br /&gt;
Este é um recurso bem interessante e muito simples de se implementar, e que pode ser mais útil do que você imagina. Esta é mais uma postagem da &lt;a href=&quot;http://www.abapwarrior.com/p/series.html#comandos&quot;&gt;série COMANDOS&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;O que é um &lt;code&gt;WAIT UP TO&lt;/code&gt; ?&lt;/h3&gt;&lt;br /&gt;
&lt;code&gt;WAIT UP TO&lt;/code&gt; é um comando utilizado para fazer com que seu programa aguarde uma determinada quantidade de tempo antes de prosseguir o processamento. A tradução literária de &lt;code&gt;WAIT UP TO&lt;/code&gt; é esperar até.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;h3&gt;Como funciona o &lt;code&gt;WAIT UP TO&lt;/code&gt; ?&lt;/h3&gt;&lt;br /&gt;
Como já mencionado, o comando &lt;code&gt;WAIT UP TO&lt;/code&gt; é muito simples de se implementar. Basta escrever &lt;code&gt;WAIT UP TO&lt;/code&gt;, em seguida informar quantos segundos seu programa precisa aguardar e finalizar escrevendo &lt;code&gt;SECONDS&lt;/code&gt;. Deve ser informado para os segundos sempre um valor inteiro. Caso seja informado um valor com decimais, ele será arredondado matematicamente.&lt;br /&gt;
&lt;br /&gt;
Exemplo de uso do comando:&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;text-align: left; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;WAIT UP TO &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt; SECONDS&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima, quando passar pelo comando, o programa irá aguardar dez (10) segundos antes prosseguir seu processamento.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Lembrando que o comando funciona apenas na unidade de segundos. Portanto, se existir a necessidade de aguardar minutos, será necessário calcular em segundos ao passar para o comando.&lt;br /&gt;
&lt;br /&gt;
Exemplo de uso com variável:&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;text-align: left; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;DATA: &lt;/span&gt;l_segundos &lt;span style=&quot;color: blue;&quot;&gt;TYPE &lt;/span&gt;i.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;l_segundos = &lt;span style=&quot;color: #9fc5e8;&quot;&gt;120&lt;/span&gt;.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;WAIT UP TO &lt;/span&gt;l_segundos &lt;span style=&quot;color: blue;&quot;&gt;SECONDS&lt;/span&gt;.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i style=&quot;background-color: #f3f3f3;&quot;&gt;No exemplo acima é usado a variável &lt;code&gt;L_SEGUNDOS&lt;/code&gt; para armazenar a quantidade de segundos. Para dois (2) minutos foram informados cento e vinte (120) segundos. Em seguida a variável é usada dentro do comando.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Use este comando com uma certa moderação. Toda vez que ele for executado o programa ficará esperando o tempo informado. Isso quer dizer que a interface gráfica do usuário ficará parada durante o tempo informado. Com muito uso, ou com quantidades excessivas de segundos, pode causar algum desconforto com a performance. Então use somente quando necessário.&lt;br /&gt;
&lt;br /&gt;
Veja &lt;a href=&quot;http://www.abapwarrior.com/p/series.html#comandos&quot;&gt;todas as postagens da série COMANDOS&lt;/a&gt;.&lt;br /&gt;
Veja também, como &lt;a href=&quot;http://www.abapwarrior.com/2016/03/aguardar-milesimos-de-segundo.html&quot;&gt;aguardar menos de um segundo&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Um grande abraço e até a próxima!!!&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/5285400487564406452/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/5285400487564406452?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/5285400487564406452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/5285400487564406452'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/02/comando-wait-up-to.html' title='Comando WAIT UP TO'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6sXGRncdRaDDoeiAoCKHUwqQTKUWHwyPMdt8XxIRiFiDvC4usAYzWSJ4QogXAA33OuvVXrVhZhIu6TFSbtpqZI5C8O9EjRn58fH6QOl_RnzKWoX5Jp3daNFbLvK0ARSXP7bE-Q19wWJAi/s72-c/Timer_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-1703021860917220251</id><published>2016-02-20T15:37:00.000-02:00</published><updated>2017-04-09T16:14:53.116-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="macetes"/><category scheme="http://www.blogger.com/atom/ns#" term="utilidades"/><title type='text'>Gerar PDF em pré-visualização de Smart Forms</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlz3l6xMGzccsyx3G-H7cAQ6ZATJNgJr-GCT3wiI9ft5kpWqIPiKIrBGTXxeh62V7ctldnnv9aITIF0gMZfTBxnWJMeUcSLAMWcHF_gtDOExG5ETGeVerHrsty9bzFS43Ly0GwT0Egb7g2/s1600/SM_PDF_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Smartform com PDF&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlz3l6xMGzccsyx3G-H7cAQ6ZATJNgJr-GCT3wiI9ft5kpWqIPiKIrBGTXxeh62V7ctldnnv9aITIF0gMZfTBxnWJMeUcSLAMWcHF_gtDOExG5ETGeVerHrsty9bzFS43Ly0GwT0Egb7g2/s1600/SM_PDF_150x150.png&quot; title=&quot;Smartform com PDF&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Aprenda, no SAP, um comando simples para gerar arquivos no formato PDF a partir da pré-visualização de um relatório em Smart Forms. &lt;br /&gt;
&lt;br /&gt;
Isso é feito diretamente no sistema SAP, sem necessidade de instalar nada em seu computador. O próprio sistema converte o conteúdo do relatório e disponibiliza uma interface para visualização e gravação do arquivo PDF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Talvez você já tenha precisado de uma cópia de algum relatório gerado no ambiente de produção. Um relatório desenvolvido em Smart Forms, no qual você será o responsável por implementar alguma melhoria ou corrigir algum erro. Nos dias de hoje não existe a necessidade de usar a impressora, gastar toner, tinta, papel, energia, enfim...&lt;br /&gt;
&lt;br /&gt;
Uma forma muito prática e eficaz é gerar um arquivo no formato PDF. Porém você percebe que no computador do usuário não existe instalação de uma impressora para gravar o PDF, e nem outro software similar. Um simples Print Screen já resolveria? Talvez... Também é possível pedir para o usuário ir até o seu computador. Mas existe uma opção muito bacana.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Prepare o relatório&lt;/h3&gt;&lt;br /&gt;
O primeiro passo é gerar o relatório em tela. Isso quer dizer que você deve pré-visualizar seu relatório &amp;nbsp;e deixá-lo aberto aberto em uma tela.&lt;br /&gt;
&lt;br /&gt;
Mas tenha certeza de que se trata de um relatório desenvolvido em Smart Forms. Caso contrário o comando não funcionará.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Execute o comando&lt;/h3&gt;&lt;br /&gt;
Com a tela do relatório aberta, vá até o campo de comandos do SAP e digite &quot;PDF!&quot; e pressione ENTER.&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/awstge/post/pdf/Comando_PDF_195x47.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Comando PDF!&quot; border=&quot;0&quot; src=&quot;http://sites.google.com/site/awstge/post/pdf/Comando_PDF_195x47.png&quot; height=&quot;76&quot; title=&quot;Comando PDF!&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Digite PDF! e pressione ENTER&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
E pronto. Outra janela será aberta com a interface em PDF e com o conteúdo do relatório já no formato esperado. De dentro desta janela é possível navegar e visualizar, ou ainda gravar seu arquivo em um caminho determinado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dica simples, mas muito conveniente para o dia a dia.&lt;br /&gt;
Você já conhecia este comando???&lt;br /&gt;
&lt;br /&gt;
Um grande abraço e até a próxima.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/1703021860917220251/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/1703021860917220251?isPopup=true' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/1703021860917220251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/1703021860917220251'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/02/gerar-pdf-em-pre-visualizacao-de-smart.html' title='Gerar PDF em pré-visualização de Smart Forms'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlz3l6xMGzccsyx3G-H7cAQ6ZATJNgJr-GCT3wiI9ft5kpWqIPiKIrBGTXxeh62V7ctldnnv9aITIF0gMZfTBxnWJMeUcSLAMWcHF_gtDOExG5ETGeVerHrsty9bzFS43Ly0GwT0Egb7g2/s72-c/SM_PDF_150x150.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-27557031229080204</id><published>2016-02-15T22:17:00.000-02:00</published><updated>2017-04-15T12:47:53.538-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="atalhos"/><category scheme="http://www.blogger.com/atom/ns#" term="organização"/><title type='text'>Atalhos para comentários</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifxMOv74XjWbTbIzBB96Q3N4sgBeU6KUmRm6R69cE4YtpJzmA6SWIYph33_QuBzpOJ72xqKWqaop0Ue7JCXl45yFaLbK0xP10S6isbdaDN9gtSlm1U0XQ_j0-qHtLROveiVvY8trsyIV5v/s1600/Teclado_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Atalhos&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifxMOv74XjWbTbIzBB96Q3N4sgBeU6KUmRm6R69cE4YtpJzmA6SWIYph33_QuBzpOJ72xqKWqaop0Ue7JCXl45yFaLbK0xP10S6isbdaDN9gtSlm1U0XQ_j0-qHtLROveiVvY8trsyIV5v/s1600/Teclado_150x150.png&quot; title=&quot;Atalhos&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Assim como em outras linguagens, em ABAP também existem vários atalhos com combinações no teclado que nos ajudam a executar mais rapidamente algumas tarefas. Vou mostrar os atalhos para inserir ou remover comentários.&lt;br /&gt;
&lt;br /&gt;
Quanto menos mão no mouse, melhor. rsrsrs&lt;br /&gt;
Esta é a primeira postagem da &lt;a href=&quot;http://www.abapwarrior.com/p/series.html#atalhos&quot;&gt;série ATALHOS&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Se você não sabe o que são comentários, sugiro que você leia a postagem &quot;&lt;a href=&quot;http://abapwarrior.blogspot.com/2016/02/comentarios-nos-codigos.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Comentários nos códigos&lt;/a&gt;&quot;&amp;nbsp;antes de continuar.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Seleção do código&lt;/h3&gt;&lt;br /&gt;
Você pode selecionar um bloco de linhas para aplicar o comentário em todas ao mesmo tempo. Se o objetivo é comentar apenas uma linha, basta deixar o cursor sobre a linha desejada.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Combinação de teclas&lt;/h3&gt;&lt;br /&gt;
Para inserir o comentário basta utilizar as combinações:&lt;br /&gt;
Ctrl + , (Control&amp;nbsp;+ Vírgula)&lt;br /&gt;
ou&lt;br /&gt;
Ctrl + \ (Control + Barra invertida)&lt;br /&gt;
&lt;br /&gt;
Para retirar o comentário basta utilizar as combinações:&lt;br /&gt;
Ctrl + . (Control + Ponto)&lt;br /&gt;
ou&lt;br /&gt;
Ctrl + | (Control + Pipe)&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Detalhe&lt;/h3&gt;&lt;br /&gt;
Em ABAP o caractere padrão para inserir comentários é o asterisco. Então ao usar o atalho para inserir, o comentário será inserido com asterisco.&lt;br /&gt;
&lt;br /&gt;
Mesmo se o comentário foi feito com aspa dupla, o atalho para retirar comentários irá funcionar. Mas ao comentar novamente com o atalho de inserir, será feito com asterisco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um grande abraço e até a próxima!&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/27557031229080204/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/27557031229080204?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/27557031229080204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/27557031229080204'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/02/atalhos-para-comentarios.html' title='Atalhos para comentários'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifxMOv74XjWbTbIzBB96Q3N4sgBeU6KUmRm6R69cE4YtpJzmA6SWIYph33_QuBzpOJ72xqKWqaop0Ue7JCXl45yFaLbK0xP10S6isbdaDN9gtSlm1U0XQ_j0-qHtLROveiVvY8trsyIV5v/s72-c/Teclado_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-3541755361036226674</id><published>2016-02-12T22:54:00.001-02:00</published><updated>2017-04-09T12:43:29.130-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sobre"/><title type='text'>Informe: Mudança de endereço</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6tqErJPL0_etO2HC9j7LqorYKp73gtAH40_ItEux6_hbkYNmav82gDjV8hLTAMeacw5dWvGYABfN1uQd7kRVz4Qu3rigSxv99SREu1svEWVYPd8n6bJD5_AQMCu6D49yiD-M7n16bVmLI/s1600/Mudan%25C3%25A7a_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Mudança de endereço blogspot&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6tqErJPL0_etO2HC9j7LqorYKp73gtAH40_ItEux6_hbkYNmav82gDjV8hLTAMeacw5dWvGYABfN1uQd7kRVz4Qu3rigSxv99SREu1svEWVYPd8n6bJD5_AQMCu6D49yiD-M7n16bVmLI/s1600/Mudan%25C3%25A7a_150x150.png&quot; title=&quot;Mudança de endereço blogspot&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Quero informar a todos que o blog ABAP Warrior está mudando de endereço.&lt;br /&gt;
&lt;br /&gt;
Em breve você estará acessando através do endereço &lt;a href=&quot;http://www.abapwarrior.com/&quot;&gt;www.abapwarrior.com&lt;/a&gt;&amp;nbsp;(sem mais blogspot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Registro de domínio próprio&lt;/h3&gt;&lt;br /&gt;
Depois de um pequeno tempo que este blog estava no ar tomei a decisão de registrar um domínio próprio e deixar o antigo endereço que apontava para blogspot. O endereço inicial era abapwarrior.blogspot.com, agora passará a ser &lt;a href=&quot;http://abapwarrior.com/&quot;&gt;abapwarrior.com&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Com essa mudança, durante um período existe a possibilidade do blog ficar indisponível ou com conexão instável. É normal que isso aconteça quando se muda o endereço de acesso de um site ou blog.&lt;br /&gt;
&lt;br /&gt;
Mas em breve o blog estará com tudo estabilizado. E então, espero continuar ajudando, de alguma forma, os leitores deste blog.&lt;br /&gt;
&lt;br /&gt;
Um grande abraço!!!&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/3541755361036226674/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/3541755361036226674?isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/3541755361036226674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/3541755361036226674'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/02/informe-mudanca-de-endereco.html' title='Informe: Mudança de endereço'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6tqErJPL0_etO2HC9j7LqorYKp73gtAH40_ItEux6_hbkYNmav82gDjV8hLTAMeacw5dWvGYABfN1uQd7kRVz4Qu3rigSxv99SREu1svEWVYPd8n6bJD5_AQMCu6D49yiD-M7n16bVmLI/s72-c/Mudan%25C3%25A7a_150x150.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8835473261324693526.post-1707569665540389437</id><published>2016-02-07T17:09:00.000-02:00</published><updated>2017-04-15T13:16:51.402-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codificação"/><category scheme="http://www.blogger.com/atom/ns#" term="organização"/><title type='text'>Comentários nos códigos</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxkH08quqnJS7PO-6qd3NXopg4Rf1W2q3nLJkwfyrTy9rOvPLX6iwvq7NTahrPCkg8fIUdINAszVmKqV8Vm0F75jYHKsftBhy85UccwACBaIXQXkutVyo-lWHNg0aYrFoMJrJgzEUJtZd-/s1600/Comentario_150x150.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Comentário ABAP&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxkH08quqnJS7PO-6qd3NXopg4Rf1W2q3nLJkwfyrTy9rOvPLX6iwvq7NTahrPCkg8fIUdINAszVmKqV8Vm0F75jYHKsftBhy85UccwACBaIXQXkutVyo-lWHNg0aYrFoMJrJgzEUJtZd-/s1600/Comentario_150x150.png&quot; title=&quot;Comentário ABAP&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Se você é programador já ouviu falar no termo: &quot;Vou comentar o código&quot;. Acredito que o termo correto seria: &quot;Vou transformar o código em comentário&quot;, pois é isso exatamente o que acontece. O comentário também é uma importante ferramenta na organização do código.&lt;br /&gt;
&lt;br /&gt;
Se você não é programador, ou é novo nesta área, fique tranquilo que vou explicar. Se você já sabe o que é, te convido a ler sobre esse tema mesmo assim.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;O que são comentários nos códigos ?&lt;/h3&gt;&lt;br /&gt;
Comentários são textos que você pode inserir no código que não são reconhecidos nem como comandos nem como objetos e, como o próprio nome já diz, não passam de comentários.&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Interno Postagem --&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-9140080035344337&quot;
     data-ad-slot=&quot;9588557602&quot;
     data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Como utilizar ?&lt;/h3&gt;&lt;br /&gt;
Em ABAP temos duas formas de incluir comentários.&lt;br /&gt;
&lt;br /&gt;
A primeira usando aspas duplas (&quot;) no ínicio do texto. Em qualquer lugar do programa, quando você incluir uma aspa dupla, todo texto a direta dela se tornará um comentário.&lt;br /&gt;
&lt;br /&gt;
A segunda usando o asterisco (*) no ínicio da linha. Em qualquer linha do programa, quando você incluir um asterisco no lugar do primeiro caractere da linha, toda linha passa a ser um comentário.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Pra que servem ?&lt;/h3&gt;&lt;br /&gt;
Podem servir para desativar um trecho de código já existente. Então, se existe um trecho de código ativo no programa que não será mais necessário, você pode &quot;comentar&quot; esse trecho para que não seja mais reconhecido.&lt;br /&gt;
&lt;br /&gt;
Serve também para fazer qualquer tipo de marcação ou comentário referente ao um trecho de código. Então, se existe um trecho de código que seria interessante descrever para que serve, você pode usar o comentário pra isso.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Exemplos&lt;/h3&gt;&lt;br /&gt;
Imagine que exista o seguinte trecho de código, fazendo uma seleção na tabela EKKO:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;text-align: left; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;SELECT &lt;/span&gt;ebeln loekz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;INTO TABLE &lt;/span&gt;t_ekko&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;FROM &lt;/span&gt;ekko&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;WHERE &lt;/span&gt;aedat &lt;span style=&quot;color: blue;&quot;&gt;EQ &lt;/span&gt;sy-datum.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Ao comentar este código usando aspas duplas fica da seguinte forma:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;i style=&quot;text-align: left; color: #999999; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&quot;SELECT ebeln loekz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;INTO TABLE t_ekko&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;FROM ekko&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;WHERE aedat EQ sy-datum.&lt;/i&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Ao comentar este código usando asteriscos fica da seguinte forma:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;i style=&quot;text-align: left; color: #999999; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;*&amp;nbsp;&amp;nbsp;SELECT ebeln loekz&lt;br /&gt;
*&amp;nbsp;&amp;nbsp;INTO TABLE t_ekko&lt;br /&gt;
*&amp;nbsp;&amp;nbsp;FROM ekko&lt;br /&gt;
*&amp;nbsp;&amp;nbsp;WHERE aedat EQ sy-datum.&lt;/i&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Ao fazer um comentário com aspa dupla referente ao código, sem desativá-lo, apenas complementando informações, fica da seguinte forma:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;text-align: left; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;i style=&quot;color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&quot; Seleção de pedidos e eliminação por data&lt;/i&gt;&lt;/span&gt;&lt;code&gt;&lt;span style=&quot;text-align: left; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;SELECT &lt;/span&gt;ebeln loekz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;INTO TABLE &lt;/span&gt;t_ekko&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;FROM &lt;/span&gt;ekko&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;WHERE &lt;/span&gt;aedat &lt;span style=&quot;color: blue;&quot;&gt;EQ &lt;/span&gt;sy-datum.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Ao fazer um comentário com asterisco referente ao código, sem desativá-lo, apenas complementando informações, fica da seguinte forma:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;text-align: left; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;i style=&quot;color: #999999;&quot;&gt;* Seleção de pedidos e eliminação por data&lt;/i&gt;&lt;/span&gt;&lt;code&gt;&lt;span style=&quot;text-align: left; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;SELECT &lt;/span&gt;ebeln loekz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;INTO TABLE &lt;/span&gt;t_ekko&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;FROM &lt;/span&gt;ekko&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;WHERE &lt;/span&gt;aedat &lt;span style=&quot;color: blue;&quot;&gt;EQ &lt;/span&gt;sy-datum.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um grande abraço e até a próxima!&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.abapwarrior.com/feeds/1707569665540389437/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8835473261324693526/1707569665540389437?isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/1707569665540389437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8835473261324693526/posts/default/1707569665540389437'/><link rel='alternate' type='text/html' href='http://www.abapwarrior.com/2016/02/comentarios-nos-codigos.html' title='Comentários nos códigos'/><author><name>Fernando Botelho</name><uri>http://www.blogger.com/profile/10009138649984363015</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxkH08quqnJS7PO-6qd3NXopg4Rf1W2q3nLJkwfyrTy9rOvPLX6iwvq7NTahrPCkg8fIUdINAszVmKqV8Vm0F75jYHKsftBhy85UccwACBaIXQXkutVyo-lWHNg0aYrFoMJrJgzEUJtZd-/s72-c/Comentario_150x150.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>