Tuesday, September 23, 2008

Envio de e-mail com anexo .PDF

A maioria dos usuarios nao tem acesso ou nao sabem utilizar o Submitted Jobs para buscar o resultado de algum relatorio.
Para otimizar a consulta do usuario aos resultados dos relatorios e auxilia-los para encaminhar essa informacao aos seus superiores, o JDE possibilita que os arquivos (.PDF ou .CSV) sejam anexados e enviados por e-mail.

Segue abaixo um passo a passo desde configuracao do JDE.INI ate o envio de e-mail com o anexo.

Passo 01 – JDE.INI
A configuracao do JDE.INI é a maior responsavel pelo envio de e-mail enviados pelo JDE.

§ JDE.INI – Fat Client and Server – Valores Default
[JDEMAIL]
mailProfile="Default Exchange Profile"
Rule1=90OPTMAILSERVER=mail.jdedwards.com
Rule2=100DEFAULTOWMON=OWMON@jdedwards.com
Rule3=110DEFAULTJDE_SYSTEM=JDE_System@jdedwards.com
Rule4=120DEFAULTWORKFLOW_SYSTEM=Workflow@jdedwards.com
Rule5=130OPTMERGELOCAL=1
Rule6=140OPTUPDATELOCAL=0

§ Substitua a linha grifada com o endereco de SMTP que é utilizado na empresa:
[JDEMAIL]
Rule1=90OPTMAILSERVER=smtp-relay.JDEFUSION.com
Rule2=100DEFAULTOWMON=OWMON@jdedwards.com
Rule3=110DEFAULTJDE_SYSTEM=JDE_System@jdedwards.com
Rule4=120DEFAULTWORKFLOW_SYSTEM=Workflow@jdedwards.com
Rule5=130OPTMERGELOCAL=1
Rule6=140OPTUPDATELOCAL=0



Passo 02 – Criacao de relatorio “DRIVER “
O relatorio “Driver” é o responsavel pela chamada do segundo relatorio (relatorio que possui a base de dados) e atraves de comandos (inseridos no codigo) conseguira buscar o .PDF ou .CSV no servidor e enviá-lo por e-mail.


§ 1. Relatorio “DRIVER” – responsavel pela chamada do segundo relatorio, verifica a finalizacao do Relatorio “B”, busca arquivo .PDF no servidor e envia e-mail ao usuario final.
§ 2. Relatorio “B” – le a tabela F03B11 (ou qualquer outra tabela) e cria o .PDF ou .CSV
§ 3. Servidor – armazena os resultados dos relatorios.
§ Usuario Final



Passo 03 – Set up
1. Opcao de Processamento:
1.1. Campos de e-mail: FROM, TO e Cc (caso necessario).


1.2. Campo para a verificacao do processo no servidor: Job Queue


1.3. Campo com o endereco do servidor: File Address (Server)


2. Seguranca :
Verificar se o JDE possui um usuario interno que pode acessar os arquivos .PDF no servidor e pode enviar e-mail.

Passo 04 – Funcoes Utilizadas :
N98305 - Fetch UBE Mapping from OCM B9861101 - F986110 DS OVERRIDE B9861107 - Read Active Queue INI Value B9800207 - Get Current Environment B0500190 - Send E-Mail - HRM

Passo 05 – Relatorio “DRIVER” :
O relatorio “DRIVER” executa o relatorio”B”.
Faz uma busca na tabela F986110 para buscar o JOB Number, JOB Status e o JOB Detail Information (é o nome do relatorio que esta no servidor).
Busca o arquivo no servidor.
Envia e-mail.

Código:
Busca o Nome do Servidor : VA evt_szServerName_SERVER_DL010 = ""
Fetch UBE Mapping from OCM
"" -> szReport
VA evt_szServerName_SERVER_DL010 <- szLogicalDataSource


Habilita a visualizacao da tabela F986110: F986110 DS OVERRIDE
VA evt_szServerName_SERVER_DL010 -> szDatabasepath
Read Active Queue INI value
"" -> cActiveQueue


Busca o Ambiente que o relatorio esta sendo executado: Get Current Environment VA evt_szCodePath_SERVER_PATHCD <- szEnvironmentname


Comando EQUIVALENTE no Select na tabela F986110: VA evt_szFoundFutureUse2_FNDFUF2 = "R550001A_HON0001_%"
F986110.Select
PO szJobQueue_JOBQUE = TK Job Queue
VA evt_szCodePath_SERVER_PATHCD = TK Environment Name
VA rpt_szUserId_USER = TK User ID
VA rpt_jdDateUpdated_UPMJ = TK Date - Job Submitted
VA rpt_mnTimeLastUpdated_UPMT <= TK Time Job Submitted VA evt_szServerName_SERVER_DL010 = TK Execution Host Name VA rpt_szWorkStationId_JOBN = TK Origination Host Name VA rpt_jdDateUpdated_UPMJ = TK Date - Last Activity VA rpt_mnTimeLastUpdated_UPMT <= TK Time - Last Activity VA evt_szFoundFutureUse2_FNDFUF2 is Like TK Foundation - Future Use2



Recupera o JOB Status, O JOB Number e o JOB Detail: F986110.Fetch Next
VA evt_szJobStatus_SERVER_JOBSTS <- TK Job Status VA evt_mnJobNumber_SERVER_JOBNBR <- TK Server Job Number VA evt_szFoundFutureUse2_FNDFUF2 <- TK Foundation - Future Use 2


Comando WHILE com Fetch Single para verificar o Status: While VA evt_szJobStatus_SERVER_JOBSTS is not equal to "D,E"
F986110.Fetch Single
VA evt_szJobStatus_SERVER_JOBSTS <- TK Job Status VA evt_mnJobNumber_SERVER_JOBNBR = TK Server Job Number VA evt_szCodePath_SERVER_PATHCD = TK Execution Host Name End While


Ajuste no nome do arquivo .PDF : VA evt_szFoundFutureUse2_FNDFUF2 = ltrim(rtrim( [VA evt_szFoundFutureUse2_FNDFUF2],' ' ),' ' )
VA evt_szFile_SERVER_NFLF = concat(concat([PO szFileAddressServer_NFLF],[VA evt_szFoundFutureUse2_FNDFUF2]) , '.pdf')


Envio de E-mail : Send E-Mail - HRM
PO szEmailFrom_EMAL -> szFrom
PO szEmailTo_EMAL -> szTo
PO szEmailCc_EMAL -> szCC
"Titulo do E-mail" -> szSubject
Corpo do E-mail -> szMessageTextChar256
"1" -> cIncludeAttachmentFlag01
VA evt_szFile_SERVER_NFLF -> szNameOfAttachmentFile
UNDEFINED -> szAttachmentDisplayText
UNDEFINED -> cSendCopyOfEMailToSelfFlag01
UNDEFINED -> cSetOneWorldErrorFlag01
UNDEFINED -> cRecordOperInLogFileFlag01
UNDEFINED -> cAppenOrOverwriteLogFile01
UNDEFINED -> szNameOfLogFile UNDEFINED <- mnErrorCodeReturned






Valeu!
Quem me ajudou nesse trabalho foi o MV!
Abraços, Rodrigo Uzeda

2 comments:

Thanks for your comment!