Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

A partir da release 12.1.2205, estão disponíveis três métodos para efetuar geração de um relatório padrão do Framework, para utiliza-los, deve-se incluir o template rel_framework_test (disponível em ../webapps/totvs-report/WEB-INF/classes) no diretório de templates do BIRT (Propriedades Relatório - https://tdn.totvs.com/pages/viewpagereleaseview.action?pageId=601702111), pasta fnd.

Exemplo:

Template "rel_framework_test"

...

  • Clicar no botão "Send" ou "Send and Download", de acordo com a opção escolhida, o relatório devidamente preenchido é exibido como retorno do Body no Postman ou efetuado o download do arquivo.

Image Modified

Client Progress

O segundo método para efetuar a geração do relatório de tempatetemplate, é efetuado com a utilização de um Client Progress (_edit.p) devidamente aberto com a sessão do produto.

A seguir é apresentado o exemplo.p que é similar ao apresentado em https://tdn.totvs.com/pages/releaseview.action?pageId=271181100, com a diferença da Procedure printTest executada, no qual todo o fluxo de execução é o mesmo da Procedure print, com a diferença da chamada ao endpoint /totvs-report/printTest apresentado anteriormente na execução direta do Postman.

Bloco de código
languagegroovy
titleexemplo.p
linenumberstrue
 
/* Definição das variáveis de testes para geração do relatório. */
Bloco de código
languagegroovy
titleexemplo.p
linenumberstrue
collapsetrue
 
/* Definição das variáveis de testes para geração do relatório. */
DEFINE VARIABLE c_report          AS CHARACTER NO-UNDO INITIAL "fnd/rel_framework_test".
DEFINE VARIABLE c_program         AS CHARACTER NO-UNDO INITIAL "".
DEFINE VARIABLE c_formatreport          AS CHARACTER NO-UNDO INITIAL "pdffnd/rel_framework_test".
DEFINE VARIABLE c_dialectprogram         AS CHARACTER NO-UNDO INITIAL "pt".
DEFINE VARIABLE lc_publishformat          AS LOGICALCHARACTER   NO-UNDO INITIAL FALSE"pdf".
DEFINE VARIABLE lc_downloaddialect         AS LOGICAL CHARACTER  NO-UNDO INITIAL TRUE"pt".
 
DEFINE VARIABLE hl_report publish         AS HANDLE LOGICAL   NO-UNDO INITIAL FALSE.
 
DEFINE VARIABLE lcl_contentdownload        AS LOGICAL LONGCHAR  NO-UNDO INITIAL TRUE.
 
DEFINE VARIABLE c_query_paramsh_report          AS CHARACTERHANDLE    NO-UNDO.
 
DEFINE VARIABLE i_response_codelc_content        AS INTEGER LONGCHAR  NO-UNDO.
DEFINE VARIABLE c_responsequery_statusparams    AS CHARACTER NO-UNDO.
 
DEFINE VARIABLE i_response_code   AS INTEGER   NO-UNDO.
DEFINE VARIABLE c_response_status AS CHARACTER NO-UNDO.
DEFINE VARIABLE mptr_response     AS MEMPTR    NO-UNDO.
 
/* Ajuste do CODEPAGE para UTF-8 */
FIX-CODEPAGE(lc_content) = "UTF-8".
 
/* Adiciona os parâmetros de query para o relatório, os parâmetros complexos como temp-tables e datasets devem ser passamos como JSON na variável lc_content. */
ASSIGN c_query_params = "".

/* Dados para a geração do relatório */
RUN getReportData IN THIS-PROCEDURE(OUTPUT lc_content).
 
/* Para fins de testes gera um arquivo de dump com os dados a serem enviados para o Datasul Report Service */
COPY-LOB FROM lc_content TO FILE SESSION:TEMP-DIRECTORY + "lc_content.json"  NO-CONVERT.
 
IF NOT VALID-HANDLE(h_report) THEN
    RUN utp/ut-report-api.p PERSISTENT SET h_report.
 
/* Executa a procedure de geração do relatório de teste */
RUN printTest IN h_report (INPUT c_report, 
                       INPUT c_program,
                       INPUT c_format, 
                       INPUT c_dialect,
                       INPUT l_publish,
                       INPUT l_download,
                       INPUT lc_content,
                       INPUT c_query_params,  
                       OUTPUT mptr_response,  
                       OUTPUT i_response_code,
                       OUTPUT c_response_status).   

IF VALID-HANDLE(h_report) THEN DO:
    DELETE PROCEDURE h_report.
END.

/* Exibe o status de retorno da requisição ao totvs-report */
MESSAGE i_response_code VIEW-AS ALERT-BOX.

IF i_response_code = 200 THEN DO:
    DEFINE VARIABLE ms      AS DECIMAL     NO-UNDO.
    DEFINE VARIABLE endTime AS DATETIME-TZ NO-UNDO INIT NOW.
     
    ASSIGN ms = INTERVAL(endTime, DATETIME-TZ (1, 1, 1970,0, 0, 0, 0, 0), "milliseconds").
     
    /* Gera o relatório no diretóridiretório temporário com o nome rel_framework_test_<MILLISECONDS> */
    COPY-LOB FROM mptr_response TO FILE SESSION:TEMP-DIRECTORY + 'rel_framework_test_' + STRING(ms) + "." + c_format NO-CONVERT.
END.

/* Dados fixos para a geração do relatório */
PROCEDURE getReportData:
    DEFINE OUTPUT PARAM lc_data      AS LONGCHAR NO-UNDO.
    
    ASSIGN LC_data = "~{
                        ~"ttData~": ~[~{
                            ~"titulo_1~": ~"TÍTULO DO RELATÓRIO~",
                            ~"conteudo_1~": ~"Conteúdo 1~",
                            ~"conteudo_2~": ~"Conteúdo 2~",
                            ~"conteudo_3~": 3,
                                     
                            ~"ttList~": ~[~{
                                ~"item_1~": ~"14272~",
                                ~"item_2~": ~"Teste Item 2.1~"
                            ~} ,
                            ~{
                                ~"item_1~": ~"15273~",
                                ~"item_2~": ~"Teste Item 2.2~"
                            ~} ,
                            ~{
                                ~"item_1~": ~"16274~",
                                ~"item_2~": ~"Teste Item 2.3~"
                            ~} ~]
                        ~} ~]
                    ~} ".

    RETURN "OK":U.
END PROCEDURE.

...

 ".

    RETURN "OK":U.
END PROCEDURE.

Informações
titleInformação

O exemplo.p efetuará a geração do relatório com a utilização do utilitário ut-report-api.p, onde efetuará as comunicações entre as camadas Progress → Java.

  • Verificar no diretório temporário o arquivo .pdf gerado (nome rel_framework_test_<MILLISECONDS>);
  • Também no diretório temporário, é gerado o arquivo lc_content.json que contém os dados enviados ao template; 
  • O retorno 200 indicará que o arquivo foi criado com sucesso, caso contrário, analise no clientlog as possíveis inconsistências no fluxo de geração do arquivo.

AppServer

O terceiro método para a geração do relatório de teste é executada no AppServer, para isto, foi disponibilizado em Propriedades → Relatório um botão "Teste BIRT" que realiza a geração do relatório padrão do Framework.

Internamente será executada a rotina apresentada anteriormente em "exemplo.p", com a diferença da possibilidade de alterar o diretório onde o arquivo .pdf será gerado.

Caso não seja informado um diretório, o arquivo é gerado no diretório temporário parametrizado no AppServer.

Image Added

Dica
titleDica
  • Caso não tenha acesso ao diretório temporário do AppServer, informe no campo apresentado anteriormente um diretório compartilhado para visualizar os arquivos; 
  • Como a rotina é similar ao executado no Client Progress, os mesmos artefatos para análise (.pdf e .json) serão gerados no diretório temporário ou indicado na parametrização;
  • Acompanhe a execução no arquivo de log "server" do AppServer; 
  • Não é necessário reiniciar o Tomcat caso altere o diretório para a geração.