Relatório em TReport não mostra os dados no relatório

Galera, já dei manutenção de ponta a ponta nesse fonte e debuguei todo, ele está exportando para os tipos de arquivos, mas não está trazendo nenhum dado no relatório, alguém passou por isso ou tem alguma dica para ajudar?

#Include "Totvs.ch" 
#Include "TopConn.ch"
#include "Report.ch"
/*{Protheus.doc} MTRFAT07
Pedido pendente de aprovação x aprovador
@author Tauani Vitória
@since  28/11/2023
@version 1.0
@type function
*/

User Function MTRFAT07()
    Local oReport := NIL 
    Local aPergs   := {} 
    Local aResps   := {} 
    Local dDataDe  := FirstDate(Date())
    Local dDataAt  := LastDate(Date())

    //Adicionando os parametros No ParamBox
    aAdd(aPergs, {1, "Data De",  dDataDe,  , , , , 80,  .F.})
    aAdd(aPergs, {1, "Data Até", dDataAt,  , , , , 80,  .T.})

    //cria o parambox
    If ParamBox(aPergs, 'Informe os parâmetros',@aResps, /*bOk*/, /*aButtons*/, /*lCentered*/, /*nPosx*/, /*nPosy*/, /*oDlgWizard*/, /*cLoad*/, .F., .F.)
        oReport := ReportDef(aResps)
        oReport:PrintDialog()
    EndIf

Return

/*/{Protheus.doc} ReportDef
Definições da estrutura - ReportDef
@author Tauani Vitória
@since 28/11/2023
@version 1.0
@type function
/*/

Static Function ReportDef(aResps)

    Local oSection  := Nil
    Local oReport   := Nil
    Local cAliasTop := ""
    Local cNomeArq  := "MTRFAT07"
    Local cTitulo   := "Pedidos Pendentes de Aprovacao"


    //Criacao do componente de impressao
    oReport := TReport():New(cNomeArq, cTitulo, "" ,{|oReport| PrintReport(oReport, @cAliasTop, aResps)})
    //Orientacao do Relatorio - paisagem
    oReport:SetLandscape()

    //Criando a secao de dados
    oSection := TRSection():New(oReport, cTitulo, {"SCR", "SC7", "SA2", "SF1"})

    //Colunas do relatorio
    //Clase de colunas, objetos da seção, nome do alias, tabela, nome da coluna, picture, tamanho do campo
    //TRCell():New(objeto da seção, 'nome do alias'    , 'tabela' , 'nome da coluna'  ,'picture', TamSX3('tamanho do campo')[1])
    TRCell():New(oSection, "DATADISPONIBILIZADA"        , cAliasTop , "Data Disponibilizada" , , , , {||(cAliasTop)->DATADISPONIBILIZADA})
    TRCell():New(oSection, "DATA_RECEBIMENTO"            , cAliasTop , "DATA_RECEBIMENTO"     , , , , {||(cAliasTop)->DATA_RECEBIMENTO})
    TRCell():New(oSection, "COD_FORNECEDOR"                , cAliasTop , "COD_FORNECEDOR"             , , , , {||(cAliasTop)->COD_FORNECEDOR})
    TRCell():New(oSection, "RAZAO_SOCIAL"                , cAliasTop , "RAZAO_SOCIAL"             , , , , {||(cAliasTop)->RAZAO_SOCIAL})
    TRCell():New(oSection, "NOTA"                        , cAliasTop , "NOTA"                  , , , , {||(cAliasTop)->NOTA})
    TRCell():New(oSection, "VALOR"                        , cAliasTop , "VALOR"                  , , , , {||(cAliasTop)->VALOR})
    TRCell():New(oSection, "NUM_PEDIDO"                    , cAliasTop , "NUM_PEDIDO"           , , , , {||(cAliasTop)->NUM_PEDIDO})
    TRCell():New(oSection, "APROVADOR"                    , cAliasTop , "APROVADOR"             , , , , {||(cAliasTop)->APROVADOR})    
    TRCell():New(oSection, "STATUS"                        , cAliasTop , "STATUS"                 , , , , {||(cAliasTop)->STATUS})    

Return oReport

/*/{Protheus.doc} PrintReport
Impressao do relatorio MTRFAT07
@author Tauani Vitória
@since 28/11/2023
@version 1.0
@type function
/*/

Static Function PrintReport(oReport, cAliasTop, aResps)
    Local oSection       := oReport:Section(1)
    Local cQryReport  := ""
    Local dDataDe     := aResps[1]
    Local dDataAt     := aResps[2]

    cQryReport := " SELECT " + CRLF
    cQryReport += " SC7.C7_EMISSAO AS DATA_DISPONIBILIZADA, "        + CRLF
    cQryReport += " SCR.CR_DATALIB AS DATA_RECEBIMENTO, "                    + CRLF
    cQryReport += " SA2.A2_NOME AS RAZAO_SOCIAL, "                            + CRLF
    cQryReport += " SC7.C7_FORNECE AS COD_FORNECEDOR, "                        + CRLF
    cQryReport += " SF1.F1_DOC AS NOTA, "                                    + CRLF
    cQryReport += " SCR.CR_TOTAL AS VALOR, "                                + CRLF
    cQryReport += " SCR.CR_NUM AS NUM_PEDIDO, "        + CRLF
    cQryReport += " USR.USR_NOME AS APROVADOR, "        + CRLF
    cQryReport += " SCR.CR_STATUS STATUS_APROV, "        + CRLF
    cQryReport += " CASE "        + CRLF
    cQryReport += " WHEN SCR.CR_STATUS = 1 THEN 'Aguardando nível anterior' "        + CRLF
    cQryReport += " WHEN SCR.CR_STATUS = 2 THEN 'Pendente' "        + CRLF
    cQryReport += " WHEN SCR.CR_STATUS = 3 THEN 'Liberado' "        + CRLF
    cQryReport += " WHEN SCR.CR_STATUS = 4 THEN 'Bloqueado' "        + CRLF
    cQryReport += " WHEN SCR.CR_STATUS = 5 THEN 'Liberado por outro aprovador' "        + CRLF
    cQryReport += " WHEN SCR.CR_STATUS = 6 THEN 'Rejeitado' "        + CRLF
    cQryReport += " WHEN SCR.CR_STATUS = 7 THEN 'Rejeitado/Bloqueado por outro aprovador' "        + CRLF
    cQryReport += " ELSE 'SEM STATUS' "        + CRLF
    cQryReport += " END as STATUS "        + CRLF
    cQryReport += " FROM " + RetSqlName("SC7")+" SC7"+ CRLF
    cQryReport += " INNER JOIN " + RetSqlName("SCR")  + " SCR ON SC7.C7_NUM = SCR.CR_NUM AND SC7.D_E_L_E_T_ = '' AND SCR.D_E_L_E_T_ ='' "        + CRLF
    cQryReport += " INNER JOIN " + RetSqlName("SA2") +" SA2 ON A2_COD = SC7.C7_FORNECE AND SA2.D_E_L_E_T_ = '' "        + CRLF
    cQryReport += " INNER JOIN SYS_USR USR ON USR.USR_ID = SCR.CR_USER AND USR.D_E_L_E_T_ = '' "        + CRLF
    cQryReport += " INNER JOIN " + RetSqlName("SF1")  +" SF1 ON SF1.F1_FORNECE = SC7.C7_FORNECE AND SF1.F1_LOJA =  SC7.C7_LOJA AND SF1.D_E_L_E_T_ = '' "        + CRLF
    cQryReport += " WHERE SCR.CR_STATUS IN ('2', '3')"     + CRLF 
    cQryReport += " AND SC7.C7_EMISSAO BETWEEN '" + DToS(dDataDe) + "'  AND '"+ DToS(dDataAt) +"'" + CRLF
    cAliasTop  := MPSysOpenQuery(cQryReport)

    oSection:Init()

    While (cAliasTop)->(!EOF())
        oSection:PrintLine()
        (cAliasTop)->(DBSkip())
    ENDDO

    (cAliasTop)->(DBCloseArea())

    oSection:Finish()

Return
compartilhar
  • Quando você roda esse script no SQL, ele retorna os dados?

    Lucas de Paulo Santos   3 months ago
  • retorna, mas acho que descobri o que estava ocorrendo...era um caso na minha base de homologação que não estava batendo com os parâmetros que coloquei na query.

    Tauani Vitória   2 months ago
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags protheus advpl treport ou faça a sua própria pergunta.