<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
	<title>Comments for Abapinho</title>
	
	<link>http://abapinho.com</link>
	<description>ABAP em português</description>
	<lastBuildDate>Wed, 16 May 2012 12:42:24 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blogabapinhocomentarios" /><feedburner:info uri="blogabapinhocomentarios" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Comment on Programas poliglotas que sabem o que dizem by admin</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/acm62XlMAV0/</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 16 May 2012 12:42:24 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1140#comment-4562</guid>
		<description>obrigado!</description>
		<content:encoded><![CDATA[<p>obrigado!</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/acm62XlMAV0" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2011/11/programas-poliglotas/comment-page-1/#comment-4562</feedburner:origLink></item>
	<item>
		<title>Comment on Programas poliglotas que sabem o que dizem by Bruno Esperança</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/-zNr2752cnE/</link>
		<dc:creator>Bruno Esperança</dc:creator>
		<pubDate>Wed, 16 May 2012 12:05:11 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1140#comment-4560</guid>
		<description>Dispõe sempre, o prazer é todo meu.

Atenção a uma questão, este módulo de função tem um parâmetro estranho de saída, que se adapta ao tipo usado na chamada à função. Quando usado na SE37 parece que não devolve decimais, mas quando usado programaticamente ele funciona como deve ser com o número de casas decimais da variável utilizada :)

Abraço!</description>
		<content:encoded><![CDATA[<p>Dispõe sempre, o prazer é todo meu.</p>
<p>Atenção a uma questão, este módulo de função tem um parâmetro estranho de saída, que se adapta ao tipo usado na chamada à função. Quando usado na SE37 parece que não devolve decimais, mas quando usado programaticamente ele funciona como deve ser com o número de casas decimais da variável utilizada :)</p>
<p>Abraço!</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/-zNr2752cnE" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2011/11/programas-poliglotas/comment-page-1/#comment-4560</feedburner:origLink></item>
	<item>
		<title>Comment on Enviar relatório ou ordem de spool por e-mail by admin</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/4EtrffGbqOo/</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 16 May 2012 10:58:30 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1430#comment-4559</guid>
		<description>Olá Bruno,
Realmente quando meti aqui o código considerei nuggets e gist (http://gist.github.com) mas acabei por ainda não me decidir por nenhum. Mas acho que tens razão e vou começar a meter nuggets no Abapinho.</description>
		<content:encoded><![CDATA[<p>Olá Bruno,<br />
Realmente quando meti aqui o código considerei nuggets e gist (<a href="http://gist.github.com" rel="nofollow">http://gist.github.com</a>) mas acabei por ainda não me decidir por nenhum. Mas acho que tens razão e vou começar a meter nuggets no Abapinho.</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/4EtrffGbqOo" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/02/relatorio-por-email/comment-page-1/#comment-4559</feedburner:origLink></item>
	<item>
		<title>Comment on Constantes gregárias by admin</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/X5TXsQG3pdM/</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 16 May 2012 10:32:23 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1671#comment-4558</guid>
		<description>Olá Custodio, boa ideia, obrigado por partilhares.</description>
		<content:encoded><![CDATA[<p>Olá Custodio, boa ideia, obrigado por partilhares.</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/X5TXsQG3pdM" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/05/constantesgregarias/comment-page-1/#comment-4558</feedburner:origLink></item>
	<item>
		<title>Comment on Programas poliglotas que sabem o que dizem by admin</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/4kiGN-97Flk/</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 16 May 2012 10:31:27 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1140#comment-4557</guid>
		<description>Olá Bruno, obrigado, vou experimentar e depois hei-de fazer disso uma dica ;)</description>
		<content:encoded><![CDATA[<p>Olá Bruno, obrigado, vou experimentar e depois hei-de fazer disso uma dica ;)</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/4kiGN-97Flk" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2011/11/programas-poliglotas/comment-page-1/#comment-4557</feedburner:origLink></item>
	<item>
		<title>Comment on Programas poliglotas que sabem o que dizem by Bruno Esperança</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/ap5LIoU5RxI/</link>
		<dc:creator>Bruno Esperança</dc:creator>
		<pubDate>Wed, 16 May 2012 10:19:37 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1140#comment-4556</guid>
		<description>Boas Abapinho!

Por falar em poliglotismo... existe um cenário que tenho visto frequentemente (muito mais que o que gostaria) e não sei se já falaste dele ou se já te deparaste com o mesmo, que tem a ver com o formato dos números...

Ora, o que vejo muito frequentemente é a substituição dos pontos por um espaço, das vírgulas por um ponto, e um belo condense no fim para embelezar a coisa. Claro que isto é um autêntico assassínio do programa, pois assim que for utilizado por alguém num país que funcione ao contrário (como os nossos colegas do outro lado do Atlântico) isto vai funcionar muito mal... normalmente até resulta em erro em tempo de execução...

Para ultrapassar este problema existe um módulo de função muito simpático chamado MOVE_CHAR_TO_NUM, este módulo de função pergunta ao SAP qual é o formato configurado pelo utilizador para os separadores dos milhares e décimais e faz a conversão consoante esta configuração. Se o utilizador tiver o SAP configurado duma maneira e fizer um upload ou inserção dum número ao contrário aí já não há nada a fazer, mas ao menos fizémos o nosso trabalho como deve ser.

Abraço, espero que a dica seja útil.</description>
		<content:encoded><![CDATA[<p>Boas Abapinho!</p>
<p>Por falar em poliglotismo&#8230; existe um cenário que tenho visto frequentemente (muito mais que o que gostaria) e não sei se já falaste dele ou se já te deparaste com o mesmo, que tem a ver com o formato dos números&#8230;</p>
<p>Ora, o que vejo muito frequentemente é a substituição dos pontos por um espaço, das vírgulas por um ponto, e um belo condense no fim para embelezar a coisa. Claro que isto é um autêntico assassínio do programa, pois assim que for utilizado por alguém num país que funcione ao contrário (como os nossos colegas do outro lado do Atlântico) isto vai funcionar muito mal&#8230; normalmente até resulta em erro em tempo de execução&#8230;</p>
<p>Para ultrapassar este problema existe um módulo de função muito simpático chamado MOVE_CHAR_TO_NUM, este módulo de função pergunta ao SAP qual é o formato configurado pelo utilizador para os separadores dos milhares e décimais e faz a conversão consoante esta configuração. Se o utilizador tiver o SAP configurado duma maneira e fizer um upload ou inserção dum número ao contrário aí já não há nada a fazer, mas ao menos fizémos o nosso trabalho como deve ser.</p>
<p>Abraço, espero que a dica seja útil.</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/ap5LIoU5RxI" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2011/11/programas-poliglotas/comment-page-1/#comment-4556</feedburner:origLink></item>
	<item>
		<title>Comment on Automatizar catálogo de campos de ALV by Bruno Esperança</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/uXCkYuJhVcU/</link>
		<dc:creator>Bruno Esperança</dc:creator>
		<pubDate>Wed, 16 May 2012 10:08:29 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1187#comment-4555</guid>
		<description>Olá Luiz,

Explora um bocadinho a classe CL_SALV. Tens muitos métodos à tua disposição para adicionar/remover funcionalidades, e podes também criar o teu próprio status e utilizá-lo com essa classe.

Abraço.</description>
		<content:encoded><![CDATA[<p>Olá Luiz,</p>
<p>Explora um bocadinho a classe CL_SALV. Tens muitos métodos à tua disposição para adicionar/remover funcionalidades, e podes também criar o teu próprio status e utilizá-lo com essa classe.</p>
<p>Abraço.</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/uXCkYuJhVcU" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2011/12/automatizar-catalogo-alv/comment-page-1/#comment-4555</feedburner:origLink></item>
	<item>
		<title>Comment on Enviar relatório ou ordem de spool por e-mail by Bruno Esperança</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/bGyO31X0pDs/</link>
		<dc:creator>Bruno Esperança</dc:creator>
		<pubDate>Wed, 16 May 2012 09:55:02 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1430#comment-4554</guid>
		<description>Acho difícil expressar por palavras a minha gratidão.

Não obstante, tenho uma sugestão para esta nova modalidade da partilha de código. Que tal em vez de usar a velha modalidade da "partilha" de código, que implica a partilha do código "em esparguete", como lhe chamava o meu caro colega Zé Nascimento, fazer apenas uma boa descrição do programa e partilhá-lo em nuggets?

Abraço.</description>
		<content:encoded><![CDATA[<p>Acho difícil expressar por palavras a minha gratidão.</p>
<p>Não obstante, tenho uma sugestão para esta nova modalidade da partilha de código. Que tal em vez de usar a velha modalidade da &#8220;partilha&#8221; de código, que implica a partilha do código &#8220;em esparguete&#8221;, como lhe chamava o meu caro colega Zé Nascimento, fazer apenas uma boa descrição do programa e partilhá-lo em nuggets?</p>
<p>Abraço.</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/bGyO31X0pDs" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/02/relatorio-por-email/comment-page-1/#comment-4554</feedburner:origLink></item>
	<item>
		<title>Comment on Ó Tempo Volta Para Trás by Bruno Esperança</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/aPTDfBfMUFs/</link>
		<dc:creator>Bruno Esperança</dc:creator>
		<pubDate>Wed, 16 May 2012 09:12:13 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1583#comment-4553</guid>
		<description>As minhas preces foram ouvidas.

Obrigado.</description>
		<content:encoded><![CDATA[<p>As minhas preces foram ouvidas.</p>
<p>Obrigado.</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/aPTDfBfMUFs" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/04/o-tempo-volta-para-tras/comment-page-1/#comment-4553</feedburner:origLink></item>
	<item>
		<title>Comment on Como sabotar tabelas by Bruno Esperança</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/L65343RkR4A/</link>
		<dc:creator>Bruno Esperança</dc:creator>
		<pubDate>Wed, 16 May 2012 09:03:03 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1520#comment-4552</guid>
		<description>Boas!

Outra manha interessante (que me vi obrigado a utilizar aqui no cliente onde estou) é na SE16N, fazer /H para entrar em debug, e mudar na estrutura GD os campos EDIT e SAP_EDIT para 'X'. Não sei porquê mas o &amp;sap_edit não funcionava e eu tenho pavor da SE16, então vi-me forçado a descobrir este método.

Cumps, e obrigado pelo blog.</description>
		<content:encoded><![CDATA[<p>Boas!</p>
<p>Outra manha interessante (que me vi obrigado a utilizar aqui no cliente onde estou) é na SE16N, fazer /H para entrar em debug, e mudar na estrutura GD os campos EDIT e SAP_EDIT para &#8216;X&#8217;. Não sei porquê mas o &amp;sap_edit não funcionava e eu tenho pavor da SE16, então vi-me forçado a descobrir este método.</p>
<p>Cumps, e obrigado pelo blog.</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/L65343RkR4A" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/03/como-sabotar-tabelas/comment-page-1/#comment-4552</feedburner:origLink></item>
	<item>
		<title>Comment on Constantes gregárias by Custodio</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/ZmFZmz82UGg/</link>
		<dc:creator>Custodio</dc:creator>
		<pubDate>Wed, 16 May 2012 04:54:46 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1671#comment-4551</guid>
		<description>Mais uma excelente dica.

No projeto em que estou trabalhando, costumamos usar uma classe apenas para as constantes, podendo assim reutilizar as constantes em outros programas. Exemplo:

Na SE24 ou SE80, crie uma classe ZCL_CONSTANTES, definindo como FINAL.

em atributos, crie:
C_bukrs_espanha type bukrs_d value '1111'
C_bukrs_franca type bukrs_d value '2222'
C_bukrs_india type bukrs_d value '3333'

todos eles tipo constant e visibilidade public

no seu programa, use:

START-OF-SELECTION.

  CASE l_bukrs.
    WHEN zcl_constants=&gt;c_bukrs_ESPANHA.
      txt = 'Hola'.
   WHEN zcl_constants=&gt;c_bukrs_franca.
     txt = 'Bonjour'.
   WHEN zcl_constants=&gt;c_bukrs_INDIA.
     txt = 'Namaste'.
  ENDCASE.
  WRITE txt.

Pode tb criar uma unica constante estruturada, bastando clicar na seta de entrada direta de dados e declarar a contante como fez no exemplo:
CONSTANTS:
  BEGIN OF C_BUKRS,
    ESPANHA TYPE BUKRS VALUE '1111',
    FRANCA TYPE BUKRS VALUE '2222',
    INDIA TYPE BUKRS VALUE '3333',
  END OF C_BUKRS.

no seu programa ficaria:

START-OF-SELECTION.

  CASE l_bukrs.
    WHEN zcl_constants=&gt;c_bukrs-ESPANHA.
      txt = 'Hola'.
   WHEN zcl_constants=&gt;c_bukrs-franca.
     txt = 'Bonjour'.
   WHEN zcl_constants=&gt;c_bukrs-INDIA.
     txt = 'Namaste'.
  ENDCASE.
  WRITE txt.</description>
		<content:encoded><![CDATA[<p>Mais uma excelente dica.</p>
<p>No projeto em que estou trabalhando, costumamos usar uma classe apenas para as constantes, podendo assim reutilizar as constantes em outros programas. Exemplo:</p>
<p>Na SE24 ou SE80, crie uma classe ZCL_CONSTANTES, definindo como FINAL.</p>
<p>em atributos, crie:<br />
C_bukrs_espanha type bukrs_d value &#8217;1111&#8242;<br />
C_bukrs_franca type bukrs_d value &#8217;2222&#8242;<br />
C_bukrs_india type bukrs_d value &#8217;3333&#8242;</p>
<p>todos eles tipo constant e visibilidade public</p>
<p>no seu programa, use:</p>
<p>START-OF-SELECTION.</p>
<p>  CASE l_bukrs.<br />
    WHEN zcl_constants=&gt;c_bukrs_ESPANHA.<br />
      txt = &#8216;Hola&#8217;.<br />
   WHEN zcl_constants=&gt;c_bukrs_franca.<br />
     txt = &#8216;Bonjour&#8217;.<br />
   WHEN zcl_constants=&gt;c_bukrs_INDIA.<br />
     txt = &#8216;Namaste&#8217;.<br />
  ENDCASE.<br />
  WRITE txt.</p>
<p>Pode tb criar uma unica constante estruturada, bastando clicar na seta de entrada direta de dados e declarar a contante como fez no exemplo:<br />
CONSTANTS:<br />
  BEGIN OF C_BUKRS,<br />
    ESPANHA TYPE BUKRS VALUE &#8217;1111&#8242;,<br />
    FRANCA TYPE BUKRS VALUE &#8217;2222&#8242;,<br />
    INDIA TYPE BUKRS VALUE &#8217;3333&#8242;,<br />
  END OF C_BUKRS.</p>
<p>no seu programa ficaria:</p>
<p>START-OF-SELECTION.</p>
<p>  CASE l_bukrs.<br />
    WHEN zcl_constants=&gt;c_bukrs-ESPANHA.<br />
      txt = &#8216;Hola&#8217;.<br />
   WHEN zcl_constants=&gt;c_bukrs-franca.<br />
     txt = &#8216;Bonjour&#8217;.<br />
   WHEN zcl_constants=&gt;c_bukrs-INDIA.<br />
     txt = &#8216;Namaste&#8217;.<br />
  ENDCASE.<br />
  WRITE txt.</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/ZmFZmz82UGg" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/05/constantesgregarias/comment-page-1/#comment-4551</feedburner:origLink></item>
	<item>
		<title>Comment on A sua password expirou. Mude-a 5 vezes. by Willian Fakri Bratkauskas</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/gjEUmMirqZ8/</link>
		<dc:creator>Willian Fakri Bratkauskas</dc:creator>
		<pubDate>Fri, 11 May 2012 17:01:41 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1666#comment-4533</guid>
		<description>O velho truque da troca de senha hein! rsrs

Boa dica!</description>
		<content:encoded><![CDATA[<p>O velho truque da troca de senha hein! rsrs</p>
<p>Boa dica!</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/gjEUmMirqZ8" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/05/a-sua-password-expirou/comment-page-1/#comment-4533</feedburner:origLink></item>
	<item>
		<title>Comment on Ó Tempo Volta Para Trás by Maxsuel Maia</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/W8To99PcGZk/</link>
		<dc:creator>Maxsuel Maia</dc:creator>
		<pubDate>Fri, 27 Apr 2012 16:15:30 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1583#comment-4512</guid>
		<description>Tambem pode fazer colocando o cursor do mouse na linha que você quer voltar e apertar Shift + F12.

Assim também pode voltar no tempo !... kkk

Abraço galera !</description>
		<content:encoded><![CDATA[<p>Tambem pode fazer colocando o cursor do mouse na linha que você quer voltar e apertar Shift + F12.</p>
<p>Assim também pode voltar no tempo !&#8230; kkk</p>
<p>Abraço galera !</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/W8To99PcGZk" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/04/o-tempo-volta-para-tras/comment-page-1/#comment-4512</feedburner:origLink></item>
	<item>
		<title>Comment on Enviar relatório ou ordem de spool por e-mail by Lucas (Osvaldo)</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/e2BY3PfBozs/</link>
		<dc:creator>Lucas (Osvaldo)</dc:creator>
		<pubDate>Thu, 19 Apr 2012 18:29:39 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1430#comment-4500</guid>
		<description>Bom, caso ainda precisam segue um report, gera um SMARTFORMS, Gera o PDF e envia por email, sem usar o spool.

Código ta meio feio, mais era com apenas 3 meses de experiencia.

Objetivo: Encaminhar email a todos os fornecedores que tiveram suas notas pagas através da rotina de pagamento automático. 

************************************************************************
* Autor     : Lucas Augusto Gonçalves                                  *
* Data      : 14.07.2011                                               *
* Descrição	:                                                          *
* Transação	: ZFIR056                                                  *
* Projeto  	:                                                          *
* Request  	:                                                          *
************************************************************************
*                    Histórico Das Modificações                        *
************************************************************************
* Autor	   	:                                                          *
* Data      :                                                          *
* Comentário  :                                                        *
************************************************************************

*----------------------------------------------------------------------*
* Report
*----------------------------------------------------------------------*
REPORT  zfir016.

*----------------------------------------------------------------------*
* Tabelas
*----------------------------------------------------------------------*
TABLES : reguh,
         regup,
         lfa1,
         adr6.

*----------------------------------------------------------------------*
* Tipos
*----------------------------------------------------------------------*
TYPE-POOLS: icon,
            slis.

TYPES: BEGIN OF ty_relatorio,
             status     TYPE icon-name,
             lifnr      TYPE regup-lifnr,
             name1      TYPE reguh-name1,
             msg        TYPE string,
       END OF ty_relatorio.

TYPES: BEGIN OF ty_reguh,
             laufd      TYPE reguh-laufd,
             laufi      TYPE reguh-laufi,
             xvorl      TYPE reguh-xvorl,
             zbukr      TYPE reguh-zbukr,
             lifnr      TYPE reguh-lifnr,
             kunnr      TYPE reguh-kunnr,
             empfg      TYPE reguh-empfg,
             vblnr      TYPE reguh-vblnr,
             name1      TYPE reguh-name1,
             zaldt      TYPE reguh-zaldt,
       END OF ty_reguh.

TYPES: BEGIN OF ty_regup,
              laufd     TYPE regup-laufd,
              laufi     TYPE regup-laufi,
              xvorl     TYPE regup-xvorl,
              zbukr     TYPE regup-zbukr,
              lifnr     TYPE regup-lifnr,
              kunnr     TYPE regup-kunnr,
              empfg     TYPE regup-empfg,
              vblnr     TYPE regup-vblnr,
              bukrs     TYPE regup-bukrs,
              belnr     TYPE regup-belnr,
              gjahr     TYPE regup-gjahr,
              buzei     TYPE regup-buzei,
              dmbtr     TYPE regup-dmbtr,
              xblnr     TYPE regup-xblnr,
              name1     TYPE reguh-name1,
              zaldt     TYPE reguh-zaldt,
       END OF ty_regup.

TYPES: BEGIN OF ty_lfa1,
              lifnr     TYPE lfa1-lifnr,
              name1     TYPE lfa1-name1,
              adrnr     TYPE lfa1-adrnr,
       END OF ty_lfa1.

TYPES: BEGIN OF ty_adr6,
              addrnumber    TYPE adr6-addrnumber,
              persnumber    TYPE adr6-persnumber,
              date_from     TYPE adr6-date_from ,
              consnumber    TYPE adr6-consnumber,
              smtp_addr     TYPE adr6-smtp_addr ,
       END OF ty_adr6.

*----------------------------------------------------------------------*
* Tabelas Internas
*----------------------------------------------------------------------*
DATA: tg_reguh     TYPE TABLE OF ty_reguh,
      tg_regup     TYPE TABLE OF ty_regup,
      tg_lfa1      TYPE TABLE OF ty_lfa1,
      tg_adr6      TYPE TABLE OF ty_adr6,
      tg_reclist   TYPE TABLE OF somlreci1,
      tg_saida     TYPE zfict013,
      tg_saida2    TYPE zfict013,
      tg_control   TYPE TABLE OF ssfctrlop.

DATA: tg_events    TYPE TABLE OF slis_alv_event.
DATA: tg_relatorio TYPE TABLE OF ty_relatorio.

DATA: tg_objtxt    TYPE TABLE OF solisti1,
      tg_objbin    TYPE TABLE OF solisti1,
      tg_objhead   TYPE TABLE OF solisti1,
      tg_tline     TYPE TABLE OF tline,
      tg_objpack   TYPE TABLE OF sopcklsti1.


*----------------------------------------------------------------------*
* Estruturas/Work areas
*----------------------------------------------------------------------*
DATA: wg_reguh     TYPE ty_reguh,
      wg_regup     TYPE ty_regup,
      wg_lfa1      TYPE ty_lfa1,
      wg_adr6      TYPE ty_adr6,
      wg_reclist   TYPE somlreci1,
      wg_saida     TYPE zfie013,
      wg_saida2    TYPE zfie013,
      wg_control   TYPE ssfctrlop.

DATA: wg_relatorio TYPE ty_relatorio.

DATA: wg_objtxt    TYPE solisti1,
      wg_objbin    TYPE solisti1,
      wg_tline     TYPE tline,
      wg_doc_chng  TYPE sodocchgi1,
      wg_objpack   TYPE sopcklsti1,
      wg_objhead   TYPE soli_tab.

DATA: wg_buffer TYPE string.

DATA: i_record TYPE solisti1 OCCURS 0 WITH HEADER LINE.

*----------------------------------------------------------------------*
* Variáveis
*----------------------------------------------------------------------*
DATA: vl_smtp_to   TYPE adr6-smtp_addr,
      vl_len_in    TYPE sood-objlen.

DATA : i_otf       TYPE itcoo OCCURS 0 WITH HEADER LINE,
       i_tline     TYPE TABLE OF tline WITH HEADER LINE. " make each line 132 character

*** make each line 255 characters
DATA : BEGIN OF i_tline2 OCCURS 0,
  tline  TYPE char255,
        END OF i_tline2.

*   Variáveis ALV
DATA: tg_fieldcat    TYPE slis_t_fieldcat_alv.
DATA: wg_fieldcat    LIKE LINE OF tg_fieldcat.
DATA: vg_colpos(05)  TYPE n.

DATA: vg_lines_bin TYPE i,
      vg_lines_txt TYPE i.

*----------------------------------------------------------------------*
* Constantes
*----------------------------------------------------------------------*
DATA: c_x(1)         TYPE c    VALUE 'X',
      c_u(1)         TYPE c    VALUE 'U',
      c_l(1)         TYPE c    VALUE 'L',
      c_10(2)        TYPE c    VALUE '10',
      c_30(2)        TYPE c    VALUE '30',
      c_35(2)        TYPE c    VALUE '35',
      c_status(6)    TYPE c    VALUE 'STATUS',
      c_lifnr(5)     TYPE c    VALUE 'LIFNR',
      c_regup(5)     TYPE c    VALUE 'REGUP',
      c_name1(5)     TYPE c    VALUE 'NAME1',
      c_reguh(5)     TYPE c    VALUE 'REGUH',
      c_msg(3)       TYPE c    VALUE 'MSG',
      c_string(6)    TYPE c    VALUE 'STRING',
      c_tabcolor(8)  TYPE c    VALUE 'TABCOLOR',
      c_st           TYPE tdid VALUE 'ST',
      c_text(10)     TYPE c    VALUE 'TEXT',
      c_raw(03)      TYPE c    VALUE 'RAW'.

*----------------------------------------------------------------------*
* Definição dos Parâmetros de Seleção
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS:     p_laufd   TYPE  reguh-laufd  OBLIGATORY, "Dia de Execução
                p_laufi   TYPE  reguh-laufi  OBLIGATORY. "Identificação
SELECT-OPTIONS: s_lifnr   FOR   regup-lifnr  .           "Código do Fornecedor

SELECTION-SCREEN END OF BLOCK b1.

*----------------------------------------------------------------------*
* Start-of-Selection
*----------------------------------------------------------------------*
START-OF-SELECTION.

* Valida dada
  PERFORM valida_data.

* Seleção das tabelas utilizadas
  PERFORM selecao.

* Monta Email
  PERFORM prepara_email.

END-OF-SELECTION.

*&amp;---------------------------------------------------------------------*
*&amp;      Form  VALIDA_DADA
*&amp;---------------------------------------------------------------------
FORM valida_data.

  IF p_laufd &gt; sy-datum.
    MESSAGE i208(00) WITH text-e02. "Data não pode ser futura
    LEAVE LIST-PROCESSING.
  ENDIF.

ENDFORM.                    " VALIDA_DADA

*&amp;---------------------------------------------------------------------*
*&amp;      Form  SELECAO
*&amp;---------------------------------------------------------------------*
FORM selecao .

*  Seleciona os dados para seleção
  SELECT laufd laufi xvorl zbukr lifnr
         kunnr empfg vblnr name1 zaldt
    FROM reguh
    INTO CORRESPONDING FIELDS OF TABLE tg_reguh
    WHERE laufd  =  p_laufd  AND
          laufi  =  p_laufi  AND
          lifnr  IN s_lifnr.

* Se existe, seleciona os dados do email
  IF sy-subrc = 0.
    SORT tg_reguh BY laufd laufi xvorl zbukr lifnr
                     kunnr empfg vblnr.

    SELECT laufd laufi xvorl zbukr lifnr
           kunnr empfg vblnr bukrs belnr
           gjahr buzei dmbtr xblnr
      FROM regup
      INTO CORRESPONDING FIELDS OF TABLE tg_regup
      FOR ALL ENTRIES IN tg_reguh
      WHERE laufd = tg_reguh-laufd AND
            laufi = tg_reguh-laufi AND
            xvorl = space          AND
            zbukr = tg_reguh-zbukr AND
            lifnr = tg_reguh-lifnr AND
            kunnr = tg_reguh-kunnr AND
            empfg = tg_reguh-empfg AND
            vblnr  space.

    IF tg_regup IS NOT INITIAL.

* Seleciona o cod do fornecedor
      SELECT lifnr name1 adrnr
        FROM lfa1
        INTO TABLE tg_lfa1
        FOR ALL ENTRIES IN tg_reguh
        WHERE lifnr = tg_reguh-lifnr.

      IF tg_lfa1 IS NOT INITIAL.

*   Seleciona o email (destinatário)
        SELECT addrnumber persnumber date_from
               consnumber smtp_addr
          FROM adr6
          INTO CORRESPONDING FIELDS OF TABLE tg_adr6
          FOR ALL ENTRIES IN tg_lfa1
          WHERE addrnumber = tg_lfa1-adrnr.

      ENDIF.

    ELSE.
* Se seleção não encontrar, msg de erro
      MESSAGE i208(00) WITH text-e01.
      LEAVE LIST-PROCESSING.

    ENDIF.

  ELSE.
* Se seleção não encontrar, msg de erro
    MESSAGE i208(00) WITH text-e01.
    LEAVE LIST-PROCESSING.

  ENDIF.

ENDFORM.                    " SELECAO

*&amp;---------------------------------------------------------------------*
*&amp;      Form  PREPARA_EMAIL
*&amp;---------------------------------------------------------------------*
FORM prepara_email .

* Preenche dados a ser exibidos
  PERFORM abastece_email.
* Mostra na tela para usuario o LOG
  PERFORM relatorio.

ENDFORM.                    " PREPARA_EMAIL

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ABASTECE_EMAIL
*&amp;---------------------------------------------------------------------*
FORM abastece_email .

  DATA: vl_total TYPE string.

  SORT tg_reguh BY name1.

  REFRESH: tg_saida2[].
  CLEAR:   wg_saida2.
  CLEAR:   vl_total.

  LOOP AT tg_reguh INTO wg_reguh.

    CLEAR: wg_saida2.
*Dados para preencher o cabelho do smartforms
    MOVE: wg_reguh-name1 TO wg_saida2-name1, " Nome fornecedor
          wg_reguh-zaldt TO wg_saida2-zaldt. " Dt. Pagamento

    APPEND wg_saida2 TO tg_saida2.

    REFRESH : tg_saida[].
    CLEAR:    wg_saida.
    CLEAR:    vl_total.

    LOOP AT tg_regup INTO wg_regup WHERE laufd = wg_reguh-laufd AND
                                         laufi = wg_reguh-laufi AND
                                         xvorl = wg_reguh-xvorl AND
                                         zbukr = wg_reguh-zbukr AND
                                         lifnr = wg_reguh-lifnr AND
                                         kunnr = wg_reguh-kunnr AND
                                         empfg = wg_reguh-empfg AND
                                         vblnr = wg_reguh-vblnr.

* Dados para preencher a tabela do smartforms
      MOVE:   wg_regup-lifnr TO wg_saida-lifnr, " N° fornecedor
              wg_regup-xblnr TO wg_saida-xblnr, " N° da NFe
              wg_regup-dmbtr TO wg_saida-dmbtr, " Valor
              wg_reguh-zaldt TO wg_saida-zaldt. " Dt. pagamento


      vl_total = wg_saida-dmbtr + vl_total.

      APPEND wg_saida TO tg_saida.

    ENDLOOP.

    SORT tg_saida BY xblnr zaldt.

    IF tg_saida IS NOT INITIAL.

      CLEAR wg_saida.
      wg_saida-lifnr = 'TOTAL'.
      wg_saida-dmbtr = vl_total.
      APPEND wg_saida TO tg_saida.

    ENDIF.

*   Trata Destinatários
    PERFORM trata_destinatario.

*   Chama smartforms e dispara o email
    PERFORM smartforms.

  ENDLOOP.

ENDFORM.                    " ABASTECE_EMAIL

*&amp;---------------------------------------------------------------------*
*&amp;      Form  TRATA_DESTINATARIO
*&amp;---------------------------------------------------------------------*
FORM trata_destinatario .

  SORT tg_lfa1 BY lifnr adrnr.
  SORT tg_adr6 BY addrnumber.

  REFRESH: tg_reclist.
  CLEAR: wg_reclist.

  CLEAR: wg_lfa1.
  READ TABLE tg_lfa1 INTO wg_lfa1 WITH KEY lifnr = wg_reguh-lifnr
                                              BINARY SEARCH.

  CLEAR: wg_adr6.
  READ TABLE tg_adr6 INTO wg_adr6 WITH KEY addrnumber = wg_lfa1-adrnr
                                              BINARY SEARCH.

  IF sy-subrc IS INITIAL.

    LOOP AT tg_adr6 INTO wg_adr6 FROM sy-tabix.

      IF wg_adr6-addrnumber  wg_lfa1-adrnr.
        EXIT.
      ENDIF.
      wg_reclist-receiver = vl_smtp_to = wg_adr6-smtp_addr.
      wg_reclist-rec_type = c_u.
*    wg_reclist-express  = c_x.
      APPEND wg_reclist TO tg_reclist.
    ENDLOOP.
  ENDIF.

ENDFORM.                    " TRATA_DESTINATARIO

*&amp;---------------------------------------------------------------------*
*&amp;      Form  SMARTFORMS
*&amp;---------------------------------------------------------------------*
FORM smartforms .

  DATA: wl_fmname  TYPE rs38l_fnam,
        wl_return  TYPE ssfcrescl.

  DATA: vl_msg1 TYPE string,
        vl_msg2 TYPE string.

* Pegar nome do programa de formulário
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           = 'ZFI001'
    IMPORTING
      fm_name            = wl_fmname
    EXCEPTIONS
      no_form            = 1
      no_function_module = 2
      OTHERS             = 3.

  IF sy-subrc = 0.

  ENDIF.

  IF tg_saida IS NOT INITIAL.

    PERFORM preencher_control.

*** Chama a função do Smartforms ***
    CALL FUNCTION wl_fmname
      EXPORTING
        user_settings      = c_x
        t_dados            = tg_saida
        name1              = wg_saida2-name1
        datapag            = wg_saida2-zaldt
        control_parameters = wg_control
      IMPORTING
        job_output_info    = wl_return
      EXCEPTIONS
        formatting_error   = 1
        internal_error     = 2
        send_error         = 3
        user_canceled      = 4
        OTHERS             = 5.

    i_otf[] = wl_return-otfdata[].

*** CONVERT PARA PDF ***
    CALL FUNCTION 'CONVERT_OTF'
      EXPORTING
        format                = 'PDF'
        max_linewidth         = 132
      IMPORTING
        bin_filesize          = vl_len_in
      TABLES
        otf                   = i_otf
        lines                 = i_tline
      EXCEPTIONS
        err_max_linewidth     = 1
        err_format            = 2
        err_conv_not_possible = 3
        err_bad_otf           = 4
        OTHERS                = 5.

    IF sy-subrc  0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

*SX_TABLE_LINE_WIDTH_CHANGE use :-faça de cada linha 255 caracteres
    CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
      TABLES
        content_in                  = i_tline
        content_out                 = i_tline2
      EXCEPTIONS
        err_line_width_src_too_long = 1
        err_line_width_dst_too_long = 2
        err_conv_failed             = 3
        OTHERS                      = 4.

    IF sy-subrc  0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    IF tg_reclist IS NOT INITIAL.

      PERFORM corpo_email.

      CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
        EXPORTING
          document_data              = wg_doc_chng
          put_in_outbox              = c_x
        TABLES
          packing_list               = tg_objpack
          object_header              = wg_objhead
          contents_bin               = tg_objbin
          contents_txt               = tg_objtxt
          receivers                  = tg_reclist
        EXCEPTIONS
          too_many_receivers         = 1
          document_not_sent          = 2
          document_type_not_exist    = 3
          operation_no_authorization = 4
          parameter_error            = 5
          x_error                    = 6
          enqueue_error              = 7
          OTHERS                     = 8.

      IF sy-subrc = 0.

        vl_msg1 = text-010. "'Email enviado com sucesso.'.

***Mensagem de sucesso
        CLEAR: wg_relatorio.
        MOVE: icon_system_okay TO wg_relatorio-status,
              vl_msg1        TO wg_relatorio-msg,
              wg_regup-lifnr TO wg_relatorio-lifnr,
              wg_reguh-name1 TO wg_relatorio-name1.

        APPEND wg_relatorio TO tg_relatorio.

      ENDIF.

    ELSE.

      vl_msg2 = text-011. "'Campo email do Fornecedor não atualizado.'.

**Mensagem de erro
      CLEAR: wg_relatorio.
      MOVE:  icon_system_cancel TO wg_relatorio-status,
             vl_msg2        TO wg_relatorio-msg,
             wg_regup-lifnr TO wg_relatorio-lifnr,
             wg_reguh-name1 TO wg_relatorio-name1.

      APPEND wg_relatorio TO tg_relatorio.

    ENDIF.

  ENDIF.

ENDFORM.                    " SMARTFORMS

*&amp;---------------------------------------------------------------------*
*&amp;      Form  PREENCHER_OUTPUT
*&amp;---------------------------------------------------------------------*
FORM preencher_control .

*  wg_control-device    = 'LOCL'.
  wg_control-no_dialog = c_x.
*  wg_control-preview   = c_x.
  wg_control-getotf    = c_x.
  wg_control-langu     = sy-langu.

ENDFORM.                    " PREENCHER_OUTPUT

*&amp;---------------------------------------------------------------------*
*&amp;      Form  CORPO_EMAIL
*&amp;---------------------------------------------------------------------*

  DATA: vl_assunto TYPE string.
  DATA: vl_msg     TYPE string.
  DATA: vl_data    TYPE char10.

  WRITE sy-datum TO vl_data  DD/MM/YYYY.
  REPLACE '.' WITH '/' INTO vl_data.
  REPLACE '.' WITH '/' INTO vl_data.

  vl_assunto = text-008.

  CONCATENATE: text-007 vl_data
                INTO vl_msg SEPARATED BY space.

* Attachment
  REFRESH:  tg_objtxt,
            tg_objbin,
            tg_objpack.
  CLEAR wg_objhead.

  tg_objbin[] = i_tline2[].

* Mensagem no corpo do email
  wg_objtxt = vl_msg.
  APPEND wg_objtxt TO tg_objtxt.

  DESCRIBE TABLE tg_objtxt LINES vg_lines_txt.
  READ TABLE tg_objtxt INTO wg_objtxt INDEX vg_lines_txt.
  wg_doc_chng-obj_name = vl_assunto.
  wg_doc_chng-expiry_dat = sy-datum + 10.
  wg_doc_chng-obj_descr = vl_assunto.
  wg_doc_chng-doc_size = vg_lines_txt * 255.

* Main Text
  CLEAR wg_objpack-transf_bin.
  wg_objpack-head_start = 1.
  wg_objpack-head_num = 0.
  wg_objpack-body_start = 1.
  wg_objpack-body_num = vg_lines_txt.
  wg_objpack-doc_type = 'RAW'.
  APPEND wg_objpack TO tg_objpack.

* Attachment (pdf-Attachment)
  wg_objpack-transf_bin = 'X'.
  wg_objpack-head_start = 1.
  wg_objpack-head_num = 0.
  wg_objpack-body_start = 1.

* Anexo do smart forms em pdf
  DESCRIBE TABLE tg_objbin LINES vg_lines_bin.
  READ TABLE tg_objbin INTO wg_objbin INDEX vg_lines_bin.
  wg_objpack-doc_size = vg_lines_bin * 255 .
  wg_objpack-body_num = vg_lines_bin.
  wg_objpack-doc_type = 'PDF'.
  wg_objpack-obj_name = vl_assunto.
  wg_objpack-obj_descr = vl_assunto.
  APPEND wg_objpack TO tg_objpack.

*  wg_objpack-transf_bin = space.
*  wg_objpack-head_start = 000000000000001.
*  wg_objpack-head_num = 000000000000001.
*  wg_objpack-body_start = 000000000000002.
*  wg_objpack-body_num = 000000000000010.
*  wg_objpack-doc_type = 'RAW'.
*  APPEND wg_objpack TO tg_objpack.


ENDFORM.                    " CORPO_EMAIL

*&amp;---------------------------------------------------------------------*
*&amp;      Form  RELATORIO
*&amp;---------------------------------------------------------------------*
FORM relatorio .

* Prepar o fieldcat
  PERFORM criar_fieldcat.

* Imprimi Relatório
  PERFORM imprimir_relatorio.

ENDFORM.                    " RELATORIO

*&amp;---------------------------------------------------------------------*
*&amp;      Form  CRIAR_FIELDCAT
*&amp;---------------------------------------------------------------------*
FORM criar_fieldcat .

  CLEAR: vg_colpos.

*  Status
  PERFORM preenche_fieldcat USING c_status
                                  c_status
                                  c_status
                                  text-005
                                  c_l
                                  space
                                  space
                                  space
                                  c_10
                                  space.

*  Cód do Fornecedor
  PERFORM preenche_fieldcat USING c_lifnr
                                  c_lifnr
                                  c_regup
                                  text-002
                                  c_l
                                  space
                                  space
                                  space
                                  c_10
                                  space.

*  Nome do Fornecedor
  PERFORM preenche_fieldcat USING c_name1
                                  c_name1
                                  c_reguh
                                  text-003
                                  c_l
                                  space
                                  space
                                  space
                                  c_35
                                  space.

*  Msg do Sistema
  PERFORM preenche_fieldcat USING c_msg
                                  c_msg
                                  c_string
                                  text-004
                                  c_l
                                  space
                                  space
                                  space
                                  c_30
                                  space.

ENDFORM.                    " CRIAR_FIELDCAT
*&amp;---------------------------------------------------------------------*
*&amp;      Form  PREENCHE_FIELDCAT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&gt;P_C_NAME1  text
*      --&gt;P_C_NAME1  text
*      --&gt;P_C_REGUH  text
*      --&gt;P_TEXT_003  text
*      --&gt;P_C_L  text
*      --&gt;P_SPACE  text
*      --&gt;P_SPACE  text
*      --&gt;P_SPACE  text
*      --&gt;P_C_4  text
*      --&gt;P_SPACE  text
*----------------------------------------------------------------------*
FORM preenche_fieldcat   USING p_fieldname
                          p_ref_fieldname
                          p_ref_tabname
                          seltext_l
                          p_ddictxt
                          p_key
                          p_do_sum
                          p_no_out
                          p_outputlen
                          p_inttype.

  ADD 1 TO vg_colpos.

  CLEAR: wg_fieldcat.

  wg_fieldcat-fieldname     = p_fieldname.
  wg_fieldcat-ref_fieldname = p_ref_fieldname.
  wg_fieldcat-ref_tabname   = p_ref_tabname.
  wg_fieldcat-seltext_l     = seltext_l.
  wg_fieldcat-ddictxt       = p_ddictxt.
  wg_fieldcat-key           = p_key.
  wg_fieldcat-col_pos       = vg_colpos.
  wg_fieldcat-do_sum        = p_do_sum.
  wg_fieldcat-no_out        = p_no_out.
  wg_fieldcat-outputlen     = p_outputlen.
  wg_fieldcat-inttype       = p_inttype.

  APPEND wg_fieldcat TO tg_fieldcat.

ENDFORM.                    " PREENCHE_FIELDCAT

*&amp;---------------------------------------------------------------------*
*&amp;      Form  IMPRIMIR_RELATORIO
*&amp;---------------------------------------------------------------------*

FORM imprimir_relatorio .

  DATA: wl_slis        TYPE slis_layout_alv,
        wl_variant     TYPE disvariant.

* Opções do ALV
  CLEAR: wl_slis,
         wl_variant.

  wl_slis-zebra             = c_x.
  wl_slis-numc_sum          = c_x.
  wl_slis-colwidth_optimize = c_x.
  wl_slis-totals_text       = c_x.
  wl_slis-subtotals_text    = c_x.
  wl_slis-coltab_fieldname  = c_tabcolor.

  wl_variant-variant = '/STD'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = 'ZFIR016'
*      i_callback_top_of_page  = 'GERA_CABECALHO'
      i_callback_user_command = 'USER_COMMAND'
      it_fieldcat             = tg_fieldcat[]
*      it_sort                 = tg_sort[]
      it_events               = tg_events[]
      is_layout               = wl_slis
      is_variant              = wl_variant
      i_save                  = c_x
    TABLES
      t_outtab                = tg_relatorio
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.

ENDFORM.                    " IMPRIMIR_RELATORIO

*Text elements
*----------------------------------------------------------
* 001 Parâmetros de Seleção
* 002 Número do Fornecedor
* 003 Nome do Fornecedor
* 004 Mensagem do Sistema
* 005 Status
* 006 Informativo de Pagamento Dicico
* 007 Segue em anexo faturas liquidadas pela empresa Dicico na data de
* 008 Informativo de Pagamento Dicico
* 010 Email enviado com sucesso.
* 011 Campo email do Fornecedor não atualizado.
* E01 Não existem dados para o Critério de Seleção
* E02 Data não pode ser futura.
* E03 Campo email do Fornecedor não atualizado.


*Selection texts
*----------------------------------------------------------
* P_LAUFD         Dia de Execução
* P_LAUFI         Identificação
* S_LIFNR         Código do Fornecedor


*Messages
*----------------------------------------------------------
*
* Message class: 00
*208   &amp;

----------------------------------------------------------------------------------
Extracted by Direct Download Enterprise version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 700</description>
		<content:encoded><![CDATA[<p>Bom, caso ainda precisam segue um report, gera um SMARTFORMS, Gera o PDF e envia por email, sem usar o spool.</p>
<p>Código ta meio feio, mais era com apenas 3 meses de experiencia.</p>
<p>Objetivo: Encaminhar email a todos os fornecedores que tiveram suas notas pagas através da rotina de pagamento automático. </p>
<p>************************************************************************<br />
* Autor     : Lucas Augusto Gonçalves                                  *<br />
* Data      : 14.07.2011                                               *<br />
* Descrição	:                                                          *<br />
* Transação	: ZFIR056                                                  *<br />
* Projeto  	:                                                          *<br />
* Request  	:                                                          *<br />
************************************************************************<br />
*                    Histórico Das Modificações                        *<br />
************************************************************************<br />
* Autor	   	:                                                          *<br />
* Data      :                                                          *<br />
* Comentário  :                                                        *<br />
************************************************************************</p>
<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
* Report<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
REPORT  zfir016.</p>
<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
* Tabelas<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
TABLES : reguh,<br />
         regup,<br />
         lfa1,<br />
         adr6.</p>
<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
* Tipos<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
TYPE-POOLS: icon,<br />
            slis.</p>
<p>TYPES: BEGIN OF ty_relatorio,<br />
             status     TYPE icon-name,<br />
             lifnr      TYPE regup-lifnr,<br />
             name1      TYPE reguh-name1,<br />
             msg        TYPE string,<br />
       END OF ty_relatorio.</p>
<p>TYPES: BEGIN OF ty_reguh,<br />
             laufd      TYPE reguh-laufd,<br />
             laufi      TYPE reguh-laufi,<br />
             xvorl      TYPE reguh-xvorl,<br />
             zbukr      TYPE reguh-zbukr,<br />
             lifnr      TYPE reguh-lifnr,<br />
             kunnr      TYPE reguh-kunnr,<br />
             empfg      TYPE reguh-empfg,<br />
             vblnr      TYPE reguh-vblnr,<br />
             name1      TYPE reguh-name1,<br />
             zaldt      TYPE reguh-zaldt,<br />
       END OF ty_reguh.</p>
<p>TYPES: BEGIN OF ty_regup,<br />
              laufd     TYPE regup-laufd,<br />
              laufi     TYPE regup-laufi,<br />
              xvorl     TYPE regup-xvorl,<br />
              zbukr     TYPE regup-zbukr,<br />
              lifnr     TYPE regup-lifnr,<br />
              kunnr     TYPE regup-kunnr,<br />
              empfg     TYPE regup-empfg,<br />
              vblnr     TYPE regup-vblnr,<br />
              bukrs     TYPE regup-bukrs,<br />
              belnr     TYPE regup-belnr,<br />
              gjahr     TYPE regup-gjahr,<br />
              buzei     TYPE regup-buzei,<br />
              dmbtr     TYPE regup-dmbtr,<br />
              xblnr     TYPE regup-xblnr,<br />
              name1     TYPE reguh-name1,<br />
              zaldt     TYPE reguh-zaldt,<br />
       END OF ty_regup.</p>
<p>TYPES: BEGIN OF ty_lfa1,<br />
              lifnr     TYPE lfa1-lifnr,<br />
              name1     TYPE lfa1-name1,<br />
              adrnr     TYPE lfa1-adrnr,<br />
       END OF ty_lfa1.</p>
<p>TYPES: BEGIN OF ty_adr6,<br />
              addrnumber    TYPE adr6-addrnumber,<br />
              persnumber    TYPE adr6-persnumber,<br />
              date_from     TYPE adr6-date_from ,<br />
              consnumber    TYPE adr6-consnumber,<br />
              smtp_addr     TYPE adr6-smtp_addr ,<br />
       END OF ty_adr6.</p>
<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
* Tabelas Internas<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
DATA: tg_reguh     TYPE TABLE OF ty_reguh,<br />
      tg_regup     TYPE TABLE OF ty_regup,<br />
      tg_lfa1      TYPE TABLE OF ty_lfa1,<br />
      tg_adr6      TYPE TABLE OF ty_adr6,<br />
      tg_reclist   TYPE TABLE OF somlreci1,<br />
      tg_saida     TYPE zfict013,<br />
      tg_saida2    TYPE zfict013,<br />
      tg_control   TYPE TABLE OF ssfctrlop.</p>
<p>DATA: tg_events    TYPE TABLE OF slis_alv_event.<br />
DATA: tg_relatorio TYPE TABLE OF ty_relatorio.</p>
<p>DATA: tg_objtxt    TYPE TABLE OF solisti1,<br />
      tg_objbin    TYPE TABLE OF solisti1,<br />
      tg_objhead   TYPE TABLE OF solisti1,<br />
      tg_tline     TYPE TABLE OF tline,<br />
      tg_objpack   TYPE TABLE OF sopcklsti1.</p>
<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
* Estruturas/Work areas<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
DATA: wg_reguh     TYPE ty_reguh,<br />
      wg_regup     TYPE ty_regup,<br />
      wg_lfa1      TYPE ty_lfa1,<br />
      wg_adr6      TYPE ty_adr6,<br />
      wg_reclist   TYPE somlreci1,<br />
      wg_saida     TYPE zfie013,<br />
      wg_saida2    TYPE zfie013,<br />
      wg_control   TYPE ssfctrlop.</p>
<p>DATA: wg_relatorio TYPE ty_relatorio.</p>
<p>DATA: wg_objtxt    TYPE solisti1,<br />
      wg_objbin    TYPE solisti1,<br />
      wg_tline     TYPE tline,<br />
      wg_doc_chng  TYPE sodocchgi1,<br />
      wg_objpack   TYPE sopcklsti1,<br />
      wg_objhead   TYPE soli_tab.</p>
<p>DATA: wg_buffer TYPE string.</p>
<p>DATA: i_record TYPE solisti1 OCCURS 0 WITH HEADER LINE.</p>
<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
* Variáveis<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
DATA: vl_smtp_to   TYPE adr6-smtp_addr,<br />
      vl_len_in    TYPE sood-objlen.</p>
<p>DATA : i_otf       TYPE itcoo OCCURS 0 WITH HEADER LINE,<br />
       i_tline     TYPE TABLE OF tline WITH HEADER LINE. &#8221; make each line 132 character</p>
<p>*** make each line 255 characters<br />
DATA : BEGIN OF i_tline2 OCCURS 0,<br />
  tline  TYPE char255,<br />
        END OF i_tline2.</p>
<p>*   Variáveis ALV<br />
DATA: tg_fieldcat    TYPE slis_t_fieldcat_alv.<br />
DATA: wg_fieldcat    LIKE LINE OF tg_fieldcat.<br />
DATA: vg_colpos(05)  TYPE n.</p>
<p>DATA: vg_lines_bin TYPE i,<br />
      vg_lines_txt TYPE i.</p>
<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
* Constantes<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
DATA: c_x(1)         TYPE c    VALUE &#8216;X&#8217;,<br />
      c_u(1)         TYPE c    VALUE &#8216;U&#8217;,<br />
      c_l(1)         TYPE c    VALUE &#8216;L&#8217;,<br />
      c_10(2)        TYPE c    VALUE &#8217;10&#8242;,<br />
      c_30(2)        TYPE c    VALUE &#8217;30&#8242;,<br />
      c_35(2)        TYPE c    VALUE &#8217;35&#8242;,<br />
      c_status(6)    TYPE c    VALUE &#8216;STATUS&#8217;,<br />
      c_lifnr(5)     TYPE c    VALUE &#8216;LIFNR&#8217;,<br />
      c_regup(5)     TYPE c    VALUE &#8216;REGUP&#8217;,<br />
      c_name1(5)     TYPE c    VALUE &#8216;NAME1&#8242;,<br />
      c_reguh(5)     TYPE c    VALUE &#8216;REGUH&#8217;,<br />
      c_msg(3)       TYPE c    VALUE &#8216;MSG&#8217;,<br />
      c_string(6)    TYPE c    VALUE &#8216;STRING&#8217;,<br />
      c_tabcolor(8)  TYPE c    VALUE &#8216;TABCOLOR&#8217;,<br />
      c_st           TYPE tdid VALUE &#8216;ST&#8217;,<br />
      c_text(10)     TYPE c    VALUE &#8216;TEXT&#8217;,<br />
      c_raw(03)      TYPE c    VALUE &#8216;RAW&#8217;.</p>
<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
* Definição dos Parâmetros de Seleção<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.</p>
<p>PARAMETERS:     p_laufd   TYPE  reguh-laufd  OBLIGATORY, &#8220;Dia de Execução<br />
                p_laufi   TYPE  reguh-laufi  OBLIGATORY. &#8220;Identificação<br />
SELECT-OPTIONS: s_lifnr   FOR   regup-lifnr  .           &#8220;Código do Fornecedor</p>
<p>SELECTION-SCREEN END OF BLOCK b1.</p>
<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
* Start-of-Selection<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
START-OF-SELECTION.</p>
<p>* Valida dada<br />
  PERFORM valida_data.</p>
<p>* Seleção das tabelas utilizadas<br />
  PERFORM selecao.</p>
<p>* Monta Email<br />
  PERFORM prepara_email.</p>
<p>END-OF-SELECTION.</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  VALIDA_DADA<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
FORM valida_data.</p>
<p>  IF p_laufd &gt; sy-datum.<br />
    MESSAGE i208(00) WITH text-e02. &#8220;Data não pode ser futura<br />
    LEAVE LIST-PROCESSING.<br />
  ENDIF.</p>
<p>ENDFORM.                    &#8221; VALIDA_DADA</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  SELECAO<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
FORM selecao .</p>
<p>*  Seleciona os dados para seleção<br />
  SELECT laufd laufi xvorl zbukr lifnr<br />
         kunnr empfg vblnr name1 zaldt<br />
    FROM reguh<br />
    INTO CORRESPONDING FIELDS OF TABLE tg_reguh<br />
    WHERE laufd  =  p_laufd  AND<br />
          laufi  =  p_laufi  AND<br />
          lifnr  IN s_lifnr.</p>
<p>* Se existe, seleciona os dados do email<br />
  IF sy-subrc = 0.<br />
    SORT tg_reguh BY laufd laufi xvorl zbukr lifnr<br />
                     kunnr empfg vblnr.</p>
<p>    SELECT laufd laufi xvorl zbukr lifnr<br />
           kunnr empfg vblnr bukrs belnr<br />
           gjahr buzei dmbtr xblnr<br />
      FROM regup<br />
      INTO CORRESPONDING FIELDS OF TABLE tg_regup<br />
      FOR ALL ENTRIES IN tg_reguh<br />
      WHERE laufd = tg_reguh-laufd AND<br />
            laufi = tg_reguh-laufi AND<br />
            xvorl = space          AND<br />
            zbukr = tg_reguh-zbukr AND<br />
            lifnr = tg_reguh-lifnr AND<br />
            kunnr = tg_reguh-kunnr AND<br />
            empfg = tg_reguh-empfg AND<br />
            vblnr  space.</p>
<p>    IF tg_regup IS NOT INITIAL.</p>
<p>* Seleciona o cod do fornecedor<br />
      SELECT lifnr name1 adrnr<br />
        FROM lfa1<br />
        INTO TABLE tg_lfa1<br />
        FOR ALL ENTRIES IN tg_reguh<br />
        WHERE lifnr = tg_reguh-lifnr.</p>
<p>      IF tg_lfa1 IS NOT INITIAL.</p>
<p>*   Seleciona o email (destinatário)<br />
        SELECT addrnumber persnumber date_from<br />
               consnumber smtp_addr<br />
          FROM adr6<br />
          INTO CORRESPONDING FIELDS OF TABLE tg_adr6<br />
          FOR ALL ENTRIES IN tg_lfa1<br />
          WHERE addrnumber = tg_lfa1-adrnr.</p>
<p>      ENDIF.</p>
<p>    ELSE.<br />
* Se seleção não encontrar, msg de erro<br />
      MESSAGE i208(00) WITH text-e01.<br />
      LEAVE LIST-PROCESSING.</p>
<p>    ENDIF.</p>
<p>  ELSE.<br />
* Se seleção não encontrar, msg de erro<br />
    MESSAGE i208(00) WITH text-e01.<br />
    LEAVE LIST-PROCESSING.</p>
<p>  ENDIF.</p>
<p>ENDFORM.                    &#8221; SELECAO</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  PREPARA_EMAIL<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
FORM prepara_email .</p>
<p>* Preenche dados a ser exibidos<br />
  PERFORM abastece_email.<br />
* Mostra na tela para usuario o LOG<br />
  PERFORM relatorio.</p>
<p>ENDFORM.                    &#8221; PREPARA_EMAIL</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  ABASTECE_EMAIL<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
FORM abastece_email .</p>
<p>  DATA: vl_total TYPE string.</p>
<p>  SORT tg_reguh BY name1.</p>
<p>  REFRESH: tg_saida2[].<br />
  CLEAR:   wg_saida2.<br />
  CLEAR:   vl_total.</p>
<p>  LOOP AT tg_reguh INTO wg_reguh.</p>
<p>    CLEAR: wg_saida2.<br />
*Dados para preencher o cabelho do smartforms<br />
    MOVE: wg_reguh-name1 TO wg_saida2-name1, &#8221; Nome fornecedor<br />
          wg_reguh-zaldt TO wg_saida2-zaldt. &#8221; Dt. Pagamento</p>
<p>    APPEND wg_saida2 TO tg_saida2.</p>
<p>    REFRESH : tg_saida[].<br />
    CLEAR:    wg_saida.<br />
    CLEAR:    vl_total.</p>
<p>    LOOP AT tg_regup INTO wg_regup WHERE laufd = wg_reguh-laufd AND<br />
                                         laufi = wg_reguh-laufi AND<br />
                                         xvorl = wg_reguh-xvorl AND<br />
                                         zbukr = wg_reguh-zbukr AND<br />
                                         lifnr = wg_reguh-lifnr AND<br />
                                         kunnr = wg_reguh-kunnr AND<br />
                                         empfg = wg_reguh-empfg AND<br />
                                         vblnr = wg_reguh-vblnr.</p>
<p>* Dados para preencher a tabela do smartforms<br />
      MOVE:   wg_regup-lifnr TO wg_saida-lifnr, &#8221; N° fornecedor<br />
              wg_regup-xblnr TO wg_saida-xblnr, &#8221; N° da NFe<br />
              wg_regup-dmbtr TO wg_saida-dmbtr, &#8221; Valor<br />
              wg_reguh-zaldt TO wg_saida-zaldt. &#8221; Dt. pagamento</p>
<p>      vl_total = wg_saida-dmbtr + vl_total.</p>
<p>      APPEND wg_saida TO tg_saida.</p>
<p>    ENDLOOP.</p>
<p>    SORT tg_saida BY xblnr zaldt.</p>
<p>    IF tg_saida IS NOT INITIAL.</p>
<p>      CLEAR wg_saida.<br />
      wg_saida-lifnr = &#8216;TOTAL&#8217;.<br />
      wg_saida-dmbtr = vl_total.<br />
      APPEND wg_saida TO tg_saida.</p>
<p>    ENDIF.</p>
<p>*   Trata Destinatários<br />
    PERFORM trata_destinatario.</p>
<p>*   Chama smartforms e dispara o email<br />
    PERFORM smartforms.</p>
<p>  ENDLOOP.</p>
<p>ENDFORM.                    &#8221; ABASTECE_EMAIL</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  TRATA_DESTINATARIO<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
FORM trata_destinatario .</p>
<p>  SORT tg_lfa1 BY lifnr adrnr.<br />
  SORT tg_adr6 BY addrnumber.</p>
<p>  REFRESH: tg_reclist.<br />
  CLEAR: wg_reclist.</p>
<p>  CLEAR: wg_lfa1.<br />
  READ TABLE tg_lfa1 INTO wg_lfa1 WITH KEY lifnr = wg_reguh-lifnr<br />
                                              BINARY SEARCH.</p>
<p>  CLEAR: wg_adr6.<br />
  READ TABLE tg_adr6 INTO wg_adr6 WITH KEY addrnumber = wg_lfa1-adrnr<br />
                                              BINARY SEARCH.</p>
<p>  IF sy-subrc IS INITIAL.</p>
<p>    LOOP AT tg_adr6 INTO wg_adr6 FROM sy-tabix.</p>
<p>      IF wg_adr6-addrnumber  wg_lfa1-adrnr.<br />
        EXIT.<br />
      ENDIF.<br />
      wg_reclist-receiver = vl_smtp_to = wg_adr6-smtp_addr.<br />
      wg_reclist-rec_type = c_u.<br />
*    wg_reclist-express  = c_x.<br />
      APPEND wg_reclist TO tg_reclist.<br />
    ENDLOOP.<br />
  ENDIF.</p>
<p>ENDFORM.                    &#8221; TRATA_DESTINATARIO</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  SMARTFORMS<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
FORM smartforms .</p>
<p>  DATA: wl_fmname  TYPE rs38l_fnam,<br />
        wl_return  TYPE ssfcrescl.</p>
<p>  DATA: vl_msg1 TYPE string,<br />
        vl_msg2 TYPE string.</p>
<p>* Pegar nome do programa de formulário<br />
  CALL FUNCTION &#8216;SSF_FUNCTION_MODULE_NAME&#8217;<br />
    EXPORTING<br />
      formname           = &#8216;ZFI001&#8242;<br />
    IMPORTING<br />
      fm_name            = wl_fmname<br />
    EXCEPTIONS<br />
      no_form            = 1<br />
      no_function_module = 2<br />
      OTHERS             = 3.</p>
<p>  IF sy-subrc = 0.</p>
<p>  ENDIF.</p>
<p>  IF tg_saida IS NOT INITIAL.</p>
<p>    PERFORM preencher_control.</p>
<p>*** Chama a função do Smartforms ***<br />
    CALL FUNCTION wl_fmname<br />
      EXPORTING<br />
        user_settings      = c_x<br />
        t_dados            = tg_saida<br />
        name1              = wg_saida2-name1<br />
        datapag            = wg_saida2-zaldt<br />
        control_parameters = wg_control<br />
      IMPORTING<br />
        job_output_info    = wl_return<br />
      EXCEPTIONS<br />
        formatting_error   = 1<br />
        internal_error     = 2<br />
        send_error         = 3<br />
        user_canceled      = 4<br />
        OTHERS             = 5.</p>
<p>    i_otf[] = wl_return-otfdata[].</p>
<p>*** CONVERT PARA PDF ***<br />
    CALL FUNCTION &#8216;CONVERT_OTF&#8217;<br />
      EXPORTING<br />
        format                = &#8216;PDF&#8217;<br />
        max_linewidth         = 132<br />
      IMPORTING<br />
        bin_filesize          = vl_len_in<br />
      TABLES<br />
        otf                   = i_otf<br />
        lines                 = i_tline<br />
      EXCEPTIONS<br />
        err_max_linewidth     = 1<br />
        err_format            = 2<br />
        err_conv_not_possible = 3<br />
        err_bad_otf           = 4<br />
        OTHERS                = 5.</p>
<p>    IF sy-subrc  0.<br />
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO<br />
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.<br />
    ENDIF.</p>
<p>*SX_TABLE_LINE_WIDTH_CHANGE use :-faça de cada linha 255 caracteres<br />
    CALL FUNCTION &#8216;SX_TABLE_LINE_WIDTH_CHANGE&#8217;<br />
      TABLES<br />
        content_in                  = i_tline<br />
        content_out                 = i_tline2<br />
      EXCEPTIONS<br />
        err_line_width_src_too_long = 1<br />
        err_line_width_dst_too_long = 2<br />
        err_conv_failed             = 3<br />
        OTHERS                      = 4.</p>
<p>    IF sy-subrc  0.<br />
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO<br />
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.<br />
    ENDIF.</p>
<p>    IF tg_reclist IS NOT INITIAL.</p>
<p>      PERFORM corpo_email.</p>
<p>      CALL FUNCTION &#8216;SO_NEW_DOCUMENT_ATT_SEND_API1&#8242;<br />
        EXPORTING<br />
          document_data              = wg_doc_chng<br />
          put_in_outbox              = c_x<br />
        TABLES<br />
          packing_list               = tg_objpack<br />
          object_header              = wg_objhead<br />
          contents_bin               = tg_objbin<br />
          contents_txt               = tg_objtxt<br />
          receivers                  = tg_reclist<br />
        EXCEPTIONS<br />
          too_many_receivers         = 1<br />
          document_not_sent          = 2<br />
          document_type_not_exist    = 3<br />
          operation_no_authorization = 4<br />
          parameter_error            = 5<br />
          x_error                    = 6<br />
          enqueue_error              = 7<br />
          OTHERS                     = 8.</p>
<p>      IF sy-subrc = 0.</p>
<p>        vl_msg1 = text-010. &#8220;&#8216;Email enviado com sucesso.&#8217;.</p>
<p>***Mensagem de sucesso<br />
        CLEAR: wg_relatorio.<br />
        MOVE: icon_system_okay TO wg_relatorio-status,<br />
              vl_msg1        TO wg_relatorio-msg,<br />
              wg_regup-lifnr TO wg_relatorio-lifnr,<br />
              wg_reguh-name1 TO wg_relatorio-name1.</p>
<p>        APPEND wg_relatorio TO tg_relatorio.</p>
<p>      ENDIF.</p>
<p>    ELSE.</p>
<p>      vl_msg2 = text-011. &#8220;&#8216;Campo email do Fornecedor não atualizado.&#8217;.</p>
<p>**Mensagem de erro<br />
      CLEAR: wg_relatorio.<br />
      MOVE:  icon_system_cancel TO wg_relatorio-status,<br />
             vl_msg2        TO wg_relatorio-msg,<br />
             wg_regup-lifnr TO wg_relatorio-lifnr,<br />
             wg_reguh-name1 TO wg_relatorio-name1.</p>
<p>      APPEND wg_relatorio TO tg_relatorio.</p>
<p>    ENDIF.</p>
<p>  ENDIF.</p>
<p>ENDFORM.                    &#8221; SMARTFORMS</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  PREENCHER_OUTPUT<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
FORM preencher_control .</p>
<p>*  wg_control-device    = &#8216;LOCL&#8217;.<br />
  wg_control-no_dialog = c_x.<br />
*  wg_control-preview   = c_x.<br />
  wg_control-getotf    = c_x.<br />
  wg_control-langu     = sy-langu.</p>
<p>ENDFORM.                    &#8221; PREENCHER_OUTPUT</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  CORPO_EMAIL<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*</p>
<p>  DATA: vl_assunto TYPE string.<br />
  DATA: vl_msg     TYPE string.<br />
  DATA: vl_data    TYPE char10.</p>
<p>  WRITE sy-datum TO vl_data  DD/MM/YYYY.<br />
  REPLACE &#8216;.&#8217; WITH &#8216;/&#8217; INTO vl_data.<br />
  REPLACE &#8216;.&#8217; WITH &#8216;/&#8217; INTO vl_data.</p>
<p>  vl_assunto = text-008.</p>
<p>  CONCATENATE: text-007 vl_data<br />
                INTO vl_msg SEPARATED BY space.</p>
<p>* Attachment<br />
  REFRESH:  tg_objtxt,<br />
            tg_objbin,<br />
            tg_objpack.<br />
  CLEAR wg_objhead.</p>
<p>  tg_objbin[] = i_tline2[].</p>
<p>* Mensagem no corpo do email<br />
  wg_objtxt = vl_msg.<br />
  APPEND wg_objtxt TO tg_objtxt.</p>
<p>  DESCRIBE TABLE tg_objtxt LINES vg_lines_txt.<br />
  READ TABLE tg_objtxt INTO wg_objtxt INDEX vg_lines_txt.<br />
  wg_doc_chng-obj_name = vl_assunto.<br />
  wg_doc_chng-expiry_dat = sy-datum + 10.<br />
  wg_doc_chng-obj_descr = vl_assunto.<br />
  wg_doc_chng-doc_size = vg_lines_txt * 255.</p>
<p>* Main Text<br />
  CLEAR wg_objpack-transf_bin.<br />
  wg_objpack-head_start = 1.<br />
  wg_objpack-head_num = 0.<br />
  wg_objpack-body_start = 1.<br />
  wg_objpack-body_num = vg_lines_txt.<br />
  wg_objpack-doc_type = &#8216;RAW&#8217;.<br />
  APPEND wg_objpack TO tg_objpack.</p>
<p>* Attachment (pdf-Attachment)<br />
  wg_objpack-transf_bin = &#8216;X&#8217;.<br />
  wg_objpack-head_start = 1.<br />
  wg_objpack-head_num = 0.<br />
  wg_objpack-body_start = 1.</p>
<p>* Anexo do smart forms em pdf<br />
  DESCRIBE TABLE tg_objbin LINES vg_lines_bin.<br />
  READ TABLE tg_objbin INTO wg_objbin INDEX vg_lines_bin.<br />
  wg_objpack-doc_size = vg_lines_bin * 255 .<br />
  wg_objpack-body_num = vg_lines_bin.<br />
  wg_objpack-doc_type = &#8216;PDF&#8217;.<br />
  wg_objpack-obj_name = vl_assunto.<br />
  wg_objpack-obj_descr = vl_assunto.<br />
  APPEND wg_objpack TO tg_objpack.</p>
<p>*  wg_objpack-transf_bin = space.<br />
*  wg_objpack-head_start = 000000000000001.<br />
*  wg_objpack-head_num = 000000000000001.<br />
*  wg_objpack-body_start = 000000000000002.<br />
*  wg_objpack-body_num = 000000000000010.<br />
*  wg_objpack-doc_type = &#8216;RAW&#8217;.<br />
*  APPEND wg_objpack TO tg_objpack.</p>
<p>ENDFORM.                    &#8221; CORPO_EMAIL</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  RELATORIO<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
FORM relatorio .</p>
<p>* Prepar o fieldcat<br />
  PERFORM criar_fieldcat.</p>
<p>* Imprimi Relatório<br />
  PERFORM imprimir_relatorio.</p>
<p>ENDFORM.                    &#8221; RELATORIO</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  CRIAR_FIELDCAT<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
FORM criar_fieldcat .</p>
<p>  CLEAR: vg_colpos.</p>
<p>*  Status<br />
  PERFORM preenche_fieldcat USING c_status<br />
                                  c_status<br />
                                  c_status<br />
                                  text-005<br />
                                  c_l<br />
                                  space<br />
                                  space<br />
                                  space<br />
                                  c_10<br />
                                  space.</p>
<p>*  Cód do Fornecedor<br />
  PERFORM preenche_fieldcat USING c_lifnr<br />
                                  c_lifnr<br />
                                  c_regup<br />
                                  text-002<br />
                                  c_l<br />
                                  space<br />
                                  space<br />
                                  space<br />
                                  c_10<br />
                                  space.</p>
<p>*  Nome do Fornecedor<br />
  PERFORM preenche_fieldcat USING c_name1<br />
                                  c_name1<br />
                                  c_reguh<br />
                                  text-003<br />
                                  c_l<br />
                                  space<br />
                                  space<br />
                                  space<br />
                                  c_35<br />
                                  space.</p>
<p>*  Msg do Sistema<br />
  PERFORM preenche_fieldcat USING c_msg<br />
                                  c_msg<br />
                                  c_string<br />
                                  text-004<br />
                                  c_l<br />
                                  space<br />
                                  space<br />
                                  space<br />
                                  c_30<br />
                                  space.</p>
<p>ENDFORM.                    &#8221; CRIAR_FIELDCAT<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  PREENCHE_FIELDCAT<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*       text<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
*      &#8211;&gt;P_C_NAME1  text<br />
*      &#8211;&gt;P_C_NAME1  text<br />
*      &#8211;&gt;P_C_REGUH  text<br />
*      &#8211;&gt;P_TEXT_003  text<br />
*      &#8211;&gt;P_C_L  text<br />
*      &#8211;&gt;P_SPACE  text<br />
*      &#8211;&gt;P_SPACE  text<br />
*      &#8211;&gt;P_SPACE  text<br />
*      &#8211;&gt;P_C_4  text<br />
*      &#8211;&gt;P_SPACE  text<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*<br />
FORM preenche_fieldcat   USING p_fieldname<br />
                          p_ref_fieldname<br />
                          p_ref_tabname<br />
                          seltext_l<br />
                          p_ddictxt<br />
                          p_key<br />
                          p_do_sum<br />
                          p_no_out<br />
                          p_outputlen<br />
                          p_inttype.</p>
<p>  ADD 1 TO vg_colpos.</p>
<p>  CLEAR: wg_fieldcat.</p>
<p>  wg_fieldcat-fieldname     = p_fieldname.<br />
  wg_fieldcat-ref_fieldname = p_ref_fieldname.<br />
  wg_fieldcat-ref_tabname   = p_ref_tabname.<br />
  wg_fieldcat-seltext_l     = seltext_l.<br />
  wg_fieldcat-ddictxt       = p_ddictxt.<br />
  wg_fieldcat-key           = p_key.<br />
  wg_fieldcat-col_pos       = vg_colpos.<br />
  wg_fieldcat-do_sum        = p_do_sum.<br />
  wg_fieldcat-no_out        = p_no_out.<br />
  wg_fieldcat-outputlen     = p_outputlen.<br />
  wg_fieldcat-inttype       = p_inttype.</p>
<p>  APPEND wg_fieldcat TO tg_fieldcat.</p>
<p>ENDFORM.                    &#8221; PREENCHE_FIELDCAT</p>
<p>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br />
*&amp;      Form  IMPRIMIR_RELATORIO<br />
*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*</p>
<p>FORM imprimir_relatorio .</p>
<p>  DATA: wl_slis        TYPE slis_layout_alv,<br />
        wl_variant     TYPE disvariant.</p>
<p>* Opções do ALV<br />
  CLEAR: wl_slis,<br />
         wl_variant.</p>
<p>  wl_slis-zebra             = c_x.<br />
  wl_slis-numc_sum          = c_x.<br />
  wl_slis-colwidth_optimize = c_x.<br />
  wl_slis-totals_text       = c_x.<br />
  wl_slis-subtotals_text    = c_x.<br />
  wl_slis-coltab_fieldname  = c_tabcolor.</p>
<p>  wl_variant-variant = &#8216;/STD&#8217;.</p>
<p>  CALL FUNCTION &#8216;REUSE_ALV_GRID_DISPLAY&#8217;<br />
    EXPORTING<br />
      i_callback_program      = &#8216;ZFIR016&#8242;<br />
*      i_callback_top_of_page  = &#8216;GERA_CABECALHO&#8217;<br />
      i_callback_user_command = &#8216;USER_COMMAND&#8217;<br />
      it_fieldcat             = tg_fieldcat[]<br />
*      it_sort                 = tg_sort[]<br />
      it_events               = tg_events[]<br />
      is_layout               = wl_slis<br />
      is_variant              = wl_variant<br />
      i_save                  = c_x<br />
    TABLES<br />
      t_outtab                = tg_relatorio<br />
    EXCEPTIONS<br />
      program_error           = 1<br />
      OTHERS                  = 2.</p>
<p>ENDFORM.                    &#8221; IMPRIMIR_RELATORIO</p>
<p>*Text elements<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
* 001 Parâmetros de Seleção<br />
* 002 Número do Fornecedor<br />
* 003 Nome do Fornecedor<br />
* 004 Mensagem do Sistema<br />
* 005 Status<br />
* 006 Informativo de Pagamento Dicico<br />
* 007 Segue em anexo faturas liquidadas pela empresa Dicico na data de<br />
* 008 Informativo de Pagamento Dicico<br />
* 010 Email enviado com sucesso.<br />
* 011 Campo email do Fornecedor não atualizado.<br />
* E01 Não existem dados para o Critério de Seleção<br />
* E02 Data não pode ser futura.<br />
* E03 Campo email do Fornecedor não atualizado.</p>
<p>*Selection texts<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
* P_LAUFD         Dia de Execução<br />
* P_LAUFI         Identificação<br />
* S_LIFNR         Código do Fornecedor</p>
<p>*Messages<br />
*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
*<br />
* Message class: 00<br />
*208   &amp;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Extracted by Direct Download Enterprise version 1.3.1 &#8211; E.G.Mellodew. 1998-2005 UK. Sap Release 700</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/e2BY3PfBozs" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/02/relatorio-por-email/comment-page-1/#comment-4500</feedburner:origLink></item>
	<item>
		<title>Comment on Ó Tempo Volta Para Trás by admin</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/NmNkPnsse3Y/</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 18 Apr 2012 22:19:27 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1583#comment-4499</guid>
		<description>Mágica ;)</description>
		<content:encoded><![CDATA[<p>Mágica ;)</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/NmNkPnsse3Y" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/04/o-tempo-volta-para-tras/comment-page-1/#comment-4499</feedburner:origLink></item>
	<item>
		<title>Comment on Ó Tempo Volta Para Trás by Bruno Filipa</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/Cq7UhC54q_0/</link>
		<dc:creator>Bruno Filipa</dc:creator>
		<pubDate>Wed, 18 Apr 2012 17:13:24 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1583#comment-4498</guid>
		<description>Excelente dica! Vai poupar muito tempo em debug!

Obrigado! Abraço! :)</description>
		<content:encoded><![CDATA[<p>Excelente dica! Vai poupar muito tempo em debug!</p>
<p>Obrigado! Abraço! :)</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/Cq7UhC54q_0" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/04/o-tempo-volta-para-tras/comment-page-1/#comment-4498</feedburner:origLink></item>
	<item>
		<title>Comment on Mete botões no ecrã de selecção by Custodio</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/Mz_kFs0TyV4/</link>
		<dc:creator>Custodio</dc:creator>
		<pubDate>Mon, 16 Apr 2012 22:50:25 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1612#comment-4497</guid>
		<description>Muito bom. Lembrando que podemos deixar os botoes mais bonitos, usando a mesma dica do post anterior.

initialization.
p_but1 = '@G1@ qualquer texto'(001).

Abraco!</description>
		<content:encoded><![CDATA[<p>Muito bom. Lembrando que podemos deixar os botoes mais bonitos, usando a mesma dica do post anterior.</p>
<p>initialization.<br />
p_but1 = &#8216;@G1@ qualquer texto&#8217;(001).</p>
<p>Abraco!</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/Mz_kFs0TyV4" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/04/botoes-no-ecra-de-seleccao/comment-page-1/#comment-4497</feedburner:origLink></item>
	<item>
		<title>Comment on Ó Tempo Volta Para Trás by Jocelio</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/zszVJg7cdMc/</link>
		<dc:creator>Jocelio</dc:creator>
		<pubDate>Thu, 12 Apr 2012 13:49:36 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1583#comment-4492</guid>
		<description>Muito bom!!! Essa eu nem imaginava que existia</description>
		<content:encoded><![CDATA[<p>Muito bom!!! Essa eu nem imaginava que existia</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/zszVJg7cdMc" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/04/o-tempo-volta-para-tras/comment-page-1/#comment-4492</feedburner:origLink></item>
	<item>
		<title>Comment on Como sabotar tabelas by admin</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/CGtYjGSXYE4/</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Thu, 05 Apr 2012 11:29:19 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1520#comment-4485</guid>
		<description>Oi Renato! Obrigado! Tu não és só seguidor, também contribuis ;) Abraço</description>
		<content:encoded><![CDATA[<p>Oi Renato! Obrigado! Tu não és só seguidor, também contribuis ;) Abraço</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/CGtYjGSXYE4" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/03/como-sabotar-tabelas/comment-page-1/#comment-4485</feedburner:origLink></item>
	<item>
		<title>Comment on Como sabotar tabelas by Renato Oliveira</title>
		<link>http://feedproxy.google.com/~r/blogabapinhocomentarios/~3/kEzekSk_KHs/</link>
		<dc:creator>Renato Oliveira</dc:creator>
		<pubDate>Thu, 05 Apr 2012 11:20:48 +0000</pubDate>
		<guid isPermaLink="false">http://abapinho.com/?p=1520#comment-4484</guid>
		<description>Olá Nuno,

É com grande satisfação que acompanho o abapinho.

Sempre com excelentes dicas.

Saudades das nossas tertúlias de abap (e outras) quando estivemos a trabalhar na ICA.

Até ao próximo projeto.

Grande abraço,

Renato Oliveira</description>
		<content:encoded><![CDATA[<p>Olá Nuno,</p>
<p>É com grande satisfação que acompanho o abapinho.</p>
<p>Sempre com excelentes dicas.</p>
<p>Saudades das nossas tertúlias de abap (e outras) quando estivemos a trabalhar na ICA.</p>
<p>Até ao próximo projeto.</p>
<p>Grande abraço,</p>
<p>Renato Oliveira</p>
<img src="http://feeds.feedburner.com/~r/blogabapinhocomentarios/~4/kEzekSk_KHs" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://abapinho.com/2012/03/como-sabotar-tabelas/comment-page-1/#comment-4484</feedburner:origLink></item>
</channel>
</rss><!-- Dynamic page generated in 2.306 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-16 14:04:52 -->

