Tempo aproximado para leitura: 00:02:00 min
Dúvida
Assim como por meio da interface gráfica é possível fazer o envio de um relatório via e-mail em formato planilha, é possível fazê-lo apenas utilizando a classe TReport()?
Ambiente
Cross Segmento - TOTVS Backoffice Linha Protheus – ADVPL – A partir da versão 12.1.17
Solução
- Atribua a propriedade
lExcelByEmailcom valor.T. - Defina um nome para o arquivo com a propriedade
cFile - Utilize o método
Print()com conteúdo.F. - Informe a constante
IMP_EXCELno métodoSetDevice() - Adicione um ou mais e-mails (separado por ponto e vírgula) na propriedade
cEmail
Exemplo
// BIBLIOTECAS NECESSÁRIAS
#Include "TOTVS.ch"
#Include "REPORT.ch"
// SIMULA A EXECUÇÃO VIA JOB
User Function T248START()
StartJob("U_T248XMLRPT", GetEnvServer(), .T.)
Return (NIL)
// FUNÇÃO PRINCIPAL
User Function T248XMLRPT()
Local oReport := NIL // OBJETO TREPORT
Local oSA1 := NIL // SEÇÃO SA1
Local oBreak := NIL // QUEBRA DE PÁGINA
RPCSetEnv("99", "01", /*cUserId*/, /*cPasswd*/, "FIN") // PREPARAÇÃO DE AMBIENTE (COMENTAR SE VIA GUI)
// INSTANCIAÇÃO DE VARIÁVEL OREPORT
DEFINE REPORT oReport NAME "REPORT1" TITLE "Relatorio de Clientes" PARAMETER "REPORT" ACTION {|oReport| PrintReport(oReport)}
// DEFINIÇÃO DA SEÇÃO OSA1
DEFINE SECTION oSA1 OF oReport TITLE "Cliente" TABLES "SA1"
DEFINE CELL NAME "A1_COD" OF oSA1 ALIAS "SA1"
DEFINE CELL NAME "A1_NOME" OF oSA1 ALIAS "SA1"
DEFINE CELL NAME "A1_VEND" OF oSA1 ALIAS "SA1"
DEFINE BREAK oBreak OF oSA1 WHEN oSA1:Cell("A1_VEND")
DEFINE FUNCTION FROM oSA1:Cell("A1_COD") FUNCTION COUNT BREAK oBreak
oReport:nRemoteType := NO_REMOTE
oReport:lExcelByEmail := .T.
oReport:cEmail := "guilherme.bigois@totvs.com.br"
oReport:cFile := "RELATORIO"
oReport:SetDevice(IMP_EXCEL)
oReport:SetPreview(.F.)
oReport:Print(.F.)
RPCClearEnv() // ENCERRRA AMBIENTE (COMENTAR SE VIA GUI)
Return (NIL)
// DADOS DE EXIBIÇÃO
Static Function PrintReport(oReport)
Local cAlias := Space(0) // ALIAS TEMPORÁRIO
// SE AMBIENTE IGUAL A TOPCONNECT
#IFDEF TOP
cAlias := GetNextAlias() // RECUPERA O PRÓXIMO ALIAS TEMPORÁRIO DO SISTEMA
MakeSQLExp("REPORT")
// INICIA QUERY PARA RETORNO DE DADOS
BEGIN REPORT QUERY oReport:Section(1)
BEGINSQL ALIAS cAlias
SELECT A1_COD, A1_NOME, A1_VEND
FROM %Table:SA1% SA1
WHERE A1_FILIAL = %XFilial:SA1% AND SA1.%NotDel%
ORDER BY A1_FILIAL, A1_VEND
ENDSQL
END REPORT QUERY oReport:Section(1)
oReport:Section(1):Print(.F.)
#ENDIF
Return (NIL)
Saiba mais
TReport
1 Comentários