Boa tarde Estou com um relatório desenvolvido, rodando dentro do EMS 5.06 Datasul/TOTVS. Numa das colunas, listo a data de vencimento do um título. Já tenho um totalizador por banco e agora quero colocar um somatório pelo mês de vencimento, neste relatório. Alguém pode me auxiliar ?
def var c-cod_banco-ini like operac_financ.cod_banco format "x(8)" initial "" no-undo. def var c-cod_banco-fim like operac_financ.cod_banco format "x(8)" initial "ZZZZZZZZ" no-undo. def var c-cod_empresa-ini like operac_financ.cod_empresa format "x(3)" initial "" no-undo. def var c-cod_empresa-fim like operac_financ.cod_empresa format "x(3)" initial "ZZZ" no-undo. def var c-cod_operac_financ-ini like operac_financ.cod_operac_financ format "x(10)" initial "" no-undo. def var c-cod_operac_financ-fim like operac_financ.cod_operac_financ format "x(10)" initial "ZZZZZZZZZZ" no-undo. def var c-cod_produt_financ-ini like operac_financ.cod_produt_financ format "x(8)" initial "" no-undo. def var c-cod_produt_financ-fim like operac_financ.cod_produt_financ format "x(8)" initial "ZZZZZZZZ" no-undo. def var da-dat_operac_financ-ini like operac_financ.dat_operac_financ format "99/99/9999" initial "01/01/1800" no-undo. def var da-dat_operac_financ-fim like operac_financ.dat_operac_financ format "99/99/9999" initial "12/31/9999" no-undo. def var da-dat_vencto_operac_financ-ini like operac_financ.dat_vencto_operac_financ format "99/99/9999" initial "01/01/1800" no-undo. def var da-dat_vencto_operac_financ-fim like operac_financ.dat_vencto_operac_financ format "99/99/9999" initial "12/31/9999" no-undo. def var l-show as log no-undo init false. def var c-formato as char format 'x(3)'. def var c-cal-des as deci format '->>>,>>>,>>9.99' no-undo. def var c-teste as deci format '->>>,>>>,>>9.99' no-undo. def var c-teste2 as deci format '->>,>>9.99999' no-undo. def var de-val-saldo as deci format '>>>,>>>,>>9.99' no-undo. def var de-val-saldo2 as deci format '>>>,>>>,>>9.99' no-undo. def var de-val-saldo3 as deci format '>>>,>>>,>>9.99' no-undo. def var x-parcela as char format '99' no-undo. def var de-val-saldo4 as deci format '>>>,>>>,>>9.99' no-undo. def var de-val_operac_financ-1 like operac_financ.val_operac_financ no-undo. def var de-val_operac_financ-2 like operac_financ.val_operac_financ no-undo. def var de-val_operac_financ-3 like operac_financ.val_operac_financ no-undo. def var de-val_operac_financ-4 like operac_financ.val_operac_financ no-undo. def var de-val_operac_financ-5 like operac_financ.val_operac_financ no-undo. def var de-val_operac_financ-6 like operac_financ.val_operac_financ no-undo. def var de-val_operac_indic_cta_c-1 like operac_financ.val_operac_indic_cta_corren no-undo. def var de-val_operac_indic_cta_c-2 like operac_financ.val_operac_indic_cta_corren no-undo. def var de-val_operac_indic_cta_c-3 like operac_financ.val_operac_indic_cta_corren no-undo. def var de-val_operac_indic_cta_c-4 like operac_financ.val_operac_indic_cta_corren no-undo. def var de-val_operac_indic_cta_c-5 like operac_financ.val_operac_indic_cta_corren no-undo. def var de-val_operac_indic_cta_c-6 like operac_financ.val_operac_indic_cta_corren no-undo. def var de-val_sdo_operac_financ-1 like operac_financ.val_sdo_operac_financ no-undo. def var de-val_sdo_operac_financ-2 like operac_financ.val_sdo_operac_financ no-undo. def var de-val_sdo_operac_financ-3 like operac_financ.val_sdo_operac_financ no-undo. def var de-val_sdo_operac_financ-4 like operac_financ.val_sdo_operac_financ no-undo. def var de-val_sdo_operac_financ-5 like operac_financ.val_sdo_operac_financ no-undo. def var de-val_sdo_operac_financ-6 like operac_financ.val_sdo_operac_financ no-undo. def temp-table tt-data no-undo field c-id as inte field c-cod-banco like operac_financ.cod_banco field c-nom-banco like emscad.banco.nom_banco field c-cod-empresa like operac_financ.cod_empresa field c-operac-financ like operac_financ.cod_operac_financ field c-parcela like repas_pend_apl.num_seq_repas_pend field c-produt-financ like operac_financ.cod_produt_financ field c-dat-operac-financ like operac_financ.dat_operac_financ field c-dat-vencto-operac-financ like operac_financ.dat_vencto_operac_financ field c-cod-indic-econ-orig-apl like operac_financ.cod_indic_econ_orig_apl field c-val-operac-financ like operac_financ.val_operac_financ format '>>>,>>>,>>>,>>9.99' field c-val-sdo-operac-financ like operac_financ.val_sdo_operac_financ format '>>>,>>>,>>>,>>9.99' field c-taxa as deci format '>9.9999' field c-val-operac-indic-cta-corren like operac_financ.val_operac_indic_cta_corren format '>>>,>>>,>>>,>>9.99' field c-val-tax-juros-operac-financ like indic_econ_operac_financ.val_tax_juros_operac_financ format '>>>,>>>,>>>,>>9.9999' index idx c-operac-financ. def temp-table tt-data2 no-undo field c-id as inte field c-cod-banco like operac_financ.cod_banco field c-nom-banco like emscad.banco.nom_banco field c-cod-empresa like operac_financ.cod_empresa field c-operac-financ like operac_financ.cod_operac_financ field c-parcela like repas_pend_apl.num_seq_repas_pend field c-produt-financ like operac_financ.cod_produt_financ field c-dat-operac-financ like operac_financ.dat_operac_financ field c-dat-vencto-operac-financ like operac_financ.dat_vencto_operac_financ field c-cod-indic-econ-orig-apl like operac_financ.cod_indic_econ_orig_apl field c-val-operac-financ like operac_financ.val_operac_financ format '>>>,>>>,>>>,>>9.99' field c-val-sdo-operac-financ like operac_financ.val_sdo_operac_financ format '>>>,>>>,>>>,>>9.99' field c-taxa as deci format '>9.9999' field c-val-operac-indic-cta-corren like operac_financ.val_operac_indic_cta_corren format '>>>,>>>,>>>,>>9.99' field c-val-tax-juros-operac-financ like indic_econ_operac_financ.val_tax_juros_operac_financ format '>>>,>>>,>>>,>>9.9999' field c-operacao-fin-ant as char format 'x(10)' field c-tot-desajo as deci format '>>>,>>>,>>>,>>9.99' index idx c-operac-financ. def temp-table tt-data3 no-undo field c-operac-financ as char format 'x(10)' field c-date-operacao like operac_financ.dat_operac_financ index ixd c-operac-financ. update da-dat_operac_financ-ini label 'Dt Operacao' da-dat_operac_financ-fim no-label da-dat_vencto_operac_financ-ini label 'Dt Venct. Oper. Fin' da-dat_vencto_operac_financ-fim no-label c-cod_banco-ini label 'Cod. Banco' c-cod_banco-fim no-label c-cod_empresa-ini label 'Cod. Empresa' c-cod_empresa-fim no-label c-cod_operac_financ-ini label 'Cod. Oper. Fin.' c-cod_operac_financ-fim no-label c-cod_produt_financ-ini label 'Cod. Prod. Fin.' c-cod_produt_financ-fim no-label l-show label 'Listar Sald/Zero' c-formato label 'Exibir' with 2 col width 100 down. def var Taxa as decimal label "Tx Cont". def temp-table tt-relat no-undo field oper-finac like operac_financ.cod_operac_financ field sdo-finac1 like repas_pend_apl.val_repas_pend field sdo-finac2 like repas_pend_apl.val_repas_pend field sdo-finac3 like repas_pend_apl.val_repas_pend index idx oper-finac. for each operac_financ no-lock, each repas_pend_apl no-lock where repas_pend_apl.num_id_operac_financ = operac_financ.num_id_operac_financ break by operac_financ.cod_operac_financ desc: assign de-val-saldo = de-val-saldo + repas_pend_apl.val_repas_pend when ( repas_pend_apl.ind_sit_repas_pend = 'quitada' and repas_pend_apl.ind_tip_repas_pend = 'agenda') de-val-saldo2 = de-val-saldo2 + repas_pend_apl.val_repas_pend when ( repas_pend_apl.ind_sit_repas_pend = 'pendente' and repas_pend_apl.ind_tip_repas_pend = 'vinculação') de-val-saldo3 = de-val-saldo3 + repas_pend_apl.val_repas_pend when ( repas_pend_apl.ind_sit_repas_pend = 'vinculação' and repas_pend_apl.ind_tip_repas_pend = 'estorno'). if last-of (operac_financ.cod_operac_financ) then do: create tt-relat. assign oper-finac = operac_financ.cod_operac_financ sdo-finac1 = de-val-saldo sdo-finac2 = de-val-saldo2 sdo-finac3 = de-val-saldo3. assign de-val-saldo = 0 de-val-saldo2 = 0 de-val-saldo3 = 0. end. end. for each operac_financ no-lock : create tt-data3. assign tt-data3.c-operac-financ = operac_financ.cod_operac_financ tt-data3.c-date-operacao = operac_financ.dat_operac_financ. end. output to c:\Temp\relatorio.txt. case l-show: when no then run pi-listar-no. when yes then run pi-listar-yes. end case. procedure pi-listar-no. for each operac_financ NO-LOCK where operac_financ.cod_banco >= c-cod_banco-ini and operac_financ.cod_banco <= c-cod_banco-fim and operac_financ.cod_empresa >= c-cod_empresa-ini and operac_financ.cod_empresa <= c-cod_empresa-fim and operac_financ.cod_operac_financ >= c-cod_operac_financ-ini and operac_financ.cod_operac_financ <= c-cod_operac_financ-fim and operac_financ.cod_produt_financ >= c-cod_produt_financ-ini and operac_financ.cod_produt_financ <= c-cod_produt_financ-fim and operac_financ.dat_operac_financ >= da-dat_operac_financ-ini and operac_financ.dat_operac_financ <= da-dat_operac_financ-fim and operac_financ.dat_vencto_operac_financ >= da-dat_vencto_operac_financ-ini and operac_financ.dat_vencto_operac_financ <= da-dat_vencto_operac_financ-fim, each emscad.banco no-lock where movfin.operac_financ.cod_banco = emscad.banco.cod_banco, each indic_econ_operac_financ no-lock where indic_econ_operac_financ.num_id_operac_financ = operac_financ.num_id_operac_financ and indic_econ_operac_financ.dat_fim_valid = operac_financ.dat_vencto_operac_financ break by operac_financ.cod_empresa by operac_financ.cod_banco by operac_financ.cod_produt_financ by operac_financ.dat_operac_financ by operac_financ.cod_operac_financ by operac_financ.cod_indic_econ_orig_apl: assign Taxa = operac_financ.val_operac_indic_cta_corren / operac_financ.val_operac_financ. if first-of (operac_financ.cod_operac_financ) and (operac_financ.cod_produt_financ = 'ACC-VINC') and ( operac_financ.val_sdo_operac_financ = 0) then do: create tt-data2. assign tt-data2.c-id = 1 tt-data2.c-cod-banco = operac_financ.cod_banco tt-data2.c-nom-banco = emscad.banco.nom_banco tt-data2.c-cod-empresa = operac_financ.cod_empresa tt-data2.c-operac-financ = operac_financ.cod_operac_financ tt-data2.c-produt-financ = operac_financ.cod_produt_financ tt-data2.c-dat-operac-financ = operac_financ.dat_operac_financ /* Data de quitação*/ tt-data2.c-dat-vencto-operac-financ = operac_financ.dat_vencto_operac_financ tt-data2.c-cod-indic-econ-orig-apl = operac_financ.cod_indic_econ_orig_apl tt-data2.c-val-operac-financ = operac_financ.val_operac_financ tt-data2.c-val-sdo-operac-financ = operac_financ.val_sdo_operac_financ tt-data2.c-taxa = Taxa tt-data2.c-val-operac-indic-cta-corren = operac_financ.val_operac_indic_cta_corren tt-data2.c-val-tax-juros-operac-financ = indic_econ_operac_financ.val_tax_juros_operac_financ tt-data2.c-operacao-fin-ant = substring(operac_financ.des_anot_tab,19,10). end. if first-of (operac_financ.cod_operac_financ) and (operac_financ.cod_produt_financ = 'ACE') and ( operac_financ.val_sdo_operac_financ = 0) then do: create tt-data2. assign tt-data2.c-id = 1 tt-data2.c-cod-banco = operac_financ.cod_banco tt-data2.c-nom-banco = emscad.banco.nom_banco tt-data2.c-cod-empresa = operac_financ.cod_empresa tt-data2.c-operac-financ = operac_financ.cod_operac_financ tt-data2.c-operacao-fin-ant = operac_financ.cod_operac_financ /*substring(operac_financ.des_anot_tab,19,10)*/ tt-data2.c-produt-financ = operac_financ.cod_produt_financ tt-data2.c-dat-operac-financ = operac_financ.dat_operac_financ tt-data2.c-dat-vencto-operac-financ = operac_financ.dat_vencto_operac_financ tt-data2.c-cod-indic-econ-orig-apl = operac_financ.cod_indic_econ_orig_apl tt-data2.c-val-operac-financ = operac_financ.val_operac_financ tt-data2.c-val-sdo-operac-financ = operac_financ.val_sdo_operac_financ tt-data2.c-taxa = Taxa tt-data2.c-val-operac-indic-cta-corren = operac_financ.val_operac_indic_cta_corren tt-data2.c-val-tax-juros-operac-financ = indic_econ_operac_financ.val_tax_juros_operac_financ. /* message tt-data2.c-operac-financ view-as alert-box.*/ end. if first-of (operac_financ.cod_operac_financ) and (operac_financ.cod_produt_financ = 'PRE-CONT') then do: for each repas_pend_apl where repas_pend_apl.num_id_operac_financ = operac_financ.num_id_operac_financ and repas_pend_apl.ind_sit_repas_pend = 'Quitada' and repas_pend_apl.ind_tip_repas_pend = 'Agenda' no-lock, first tt-relat where tt-relat.oper-finac = operac_financ.cod_operac_financ break by operac_financ.cod_operac_financ by repas_pend_apl.num_seq_repas_pend: assign de-val-saldo4 = repas_pend_apl.val_repas_pend. create tt-data2. assign tt-data2.c-id = 1 tt-data2.c-cod-banco = operac_financ.cod_banco tt-data2.c-nom-banco = emscad.banco.nom_banco tt-data2.c-cod-empresa = operac_financ.cod_empresa tt-data2.c-operac-financ = operac_financ.cod_operac_financ tt-data2.c-operacao-fin-ant = operac_financ.cod_operac_financ /*substring(operac_financ.des_anot_tab,19,10)*/ tt-data2.c-parcela = repas_pend_apl.num_seq_repas_pend tt-data2.c-produt-financ = operac_financ.cod_produt_financ tt-data2.c-dat-operac-financ = repas_pend_apl.dat_repas_pend tt-data2.c-dat-vencto-operac-financ = repas_pend_apl.dat_repas_pend tt-data2.c-cod-indic-econ-orig-apl = operac_financ.cod_indic_econ_orig_apl tt-data2.c-val-operac-financ = repas_pend_apl.val_repas_pend tt-data2.c-taxa = Taxa tt-data2.c-val-operac-indic-cta-corren = (repas_pend_apl.val_repas_pend * Taxa ) tt-data2.c-val-tax-juros-operac-financ = indic_econ_operac_financ.val_tax_juros_operac_financ. /*message tt-data2.c-operac-financ view-as alert-box.*/ if first-of (operac_financ.cod_operac_financ) then assign tt-data2.c-val-sdo-operac-financ = 0 /*( repas_pend_apl.val_repas_pend - (tt-relat.sdo-finac2 - tt-relat.sdo-finac1 + tt-relat.sdo-finac3 ) )*/. else assign tt-data2.c-val-sdo-operac-financ = 0. end. end. end. case c-formato: when "1" then do: for each tt-data2 no-lock, each tt-data3 where tt-data3.c-operac-financ = tt-data2.c-operacao-fin-ant break by tt-data2.c-id by tt-data2.c-cod-banco by tt-data2.c-produt-financ by tt-data2.c-operac-financ by tt-data2.c-parcela: assign de-val_operac_financ-5 = de-val_operac_financ-5 + tt-data2.c-val-operac-financ de-val_operac_indic_cta_c-5 = de-val_operac_indic_cta_c-5 + tt-data2.c-val-operac-indic-cta-corren c-cal-des = ( ( ( ( tt-data2.c-val-tax-juros-operac-financ / 100 ) / 360) * tt-data2.c-val-operac-financ ) * ( tt-data2.c-dat-operac-financ - tt-data3.c-date-operacao ) ) de-val_sdo_operac_financ-5 = de-val_sdo_operac_financ-5 + c-cal-des. /* message tt-data2.c-val-operac-financ ' e ' c-cal-des view-as alert-box. */ if (tt-data2.c-parcela = 0) then assign x-parcela = ''. else x-parcela = string (tt-data2.c-parcela). disp tt-data2.c-cod-banco column-label 'Banco' format 'x(5)' tt-data2.c-nom-banco column-label 'Nome Banco' format 'x(30)' tt-data2.c-cod-empresa column-label 'Emp' format 'x(3)' tt-data2.c-operacao-fin-ant column-label 'Op. Fin.ant' tt-data2.c-operac-financ column-label 'Op. Financ' format 'x(10)'. if tt-data2.c-parcela = 0 then disp ' ' @ tt-data2.c-parcela column-label 'P' . else disp tt-data2.c-parcela format '99' column-label 'P'. disp tt-data2.c-produt-financ column-label 'Prod Financ' format 'x(8)' tt-data3.c-date-operacao column-label 'Dt Oper.' format '99/99/99' tt-data2.c-dat-operac-financ column-label 'Dt Liq.' format '99/99/99' tt-data2.c-dat-vencto-operac-financ column-label 'Dt Venct' format '99/99/99' tt-data2.c-cod-indic-econ-orig-apl column-label 'Moeda' format 'x(8)' tt-data2.c-val-operac-financ column-label 'Vlr Operacao' format '>>>,>>>,>>9.99' tt-data2.c-taxa column-label 'Tx Cont.' format '>9.9999' tt-data2.c-val-operac-indic-cta-corren column-label 'Valor Moeda C/C' format '>>>,>>>,>>>,>>9.99' tt-data2.c-val-tax-juros-operac-financ column-label 'Taxa Juros' format '>>>9.9999' c-cal-des column-label 'Deságio' format '>>>,>>>,>>9.99' with width 210 stream-io. assign c-cal-des = 0 c-teste = 0 c-teste2 = 0. if last-of (tt-data2.c-produt-financ) then do: put '--------------' to 129 '------------------' to 157 '--------------' to 183 skip de-val_operac_financ-5 format '>>>>,>>>,>>9.99' to 129 de-val_operac_indic_cta_c-5 format '>>>>>,>>>,>>9.99' to 157 de-val_sdo_operac_financ-5 format '>>>>,>>>,>>9.99' to 183 skip(2). assign de-val_operac_financ-6 = de-val_operac_financ-6 + de-val_operac_financ-5 de-val_sdo_operac_financ-6 = de-val_sdo_operac_financ-6 + de-val_sdo_operac_financ-5 de-val_operac_indic_cta_c-6 = de-val_operac_indic_cta_c-6 + de-val_operac_indic_cta_c-5 de-val_operac_financ-4 = de-val_operac_financ-4 + de-val_operac_financ-5 de-val_sdo_operac_financ-4 = de-val_sdo_operac_financ-4 + de-val_sdo_operac_financ-5 de-val_operac_indic_cta_c-4 = de-val_operac_indic_cta_c-4 + de-val_operac_indic_cta_c-5 de-val_operac_financ-5 = 0 de-val_sdo_operac_financ-5 = 0 de-val_operac_indic_cta_c-5 = 0. end. if last-of(tt-data2.c-cod-banco) then do: put de-val_operac_financ-4 format '>>>>,>>>,>>9.99' to 129 de-val_operac_indic_cta_c-4 format '>>>>>,>>>,>>9.99' to 157 de-val_sdo_operac_financ-4 format '>>>>,>>>,>>9.99' to 183 skip(2). assign de-val_operac_financ-4 = 0 de-val_sdo_operac_financ-4 = 0 de-val_operac_indic_cta_c-4 = 0. end. if last-of(tt-data2.c-id) then do: put de-val_operac_financ-6 format '>>>>,>>>,>>9.99' to 129 de-val_operac_indic_cta_c-6 format '>>>>>,>>>,>>9.99' to 157 de-val_sdo_operac_financ-6 format '>>>>,>>>,>>9.99' to 183 skip(2). assign de-val_operac_financ-6 = 0 de-val_sdo_operac_financ-6 = 0 de-val_operac_indic_cta_c-6 = 0. end. end. end. when "2" then do: for each tt-data2 no-lock, each tt-data3 where tt-data3.c-operac-financ = tt-data2.c-operacao-fin-ant break by tt-data2.c-id by tt-data2.c-dat-vencto-operac-financ by tt-data2.c-operac-financ by tt-data2.c-parcela by tt-data2.c-cod-banco: assign de-val_operac_financ-5 = de-val_operac_financ-5 + tt-data2.c-val-operac-financ de-val_sdo_operac_financ-5 = de-val_sdo_operac_financ-5 + tt-data2.c-val-sdo-operac-financ de-val_operac_indic_cta_c-5 = de-val_operac_indic_cta_c-5 + tt-data2.c-val-operac-indic-cta-corren c-cal-des = ( ( ( tt-data2.c-val-operac-financ * ( tt-data2.c-taxa / 100 ) ) / 360) * ( tt-data2.c-dat-operac-financ - tt-data3.c-date-operacao ) ). if (tt-data2.c-parcela = 0) then assign x-parcela = ''. else x-parcela = string (tt-data2.c-parcela). disp tt-data2.c-cod-banco column-label 'Banco' format 'x(5)' tt-data2.c-nom-banco column-label 'Nome Banco' format 'x(30)' tt-data2.c-cod-empresa column-label 'Emp' format 'x(3)' tt-data2.c-operacao-fin-ant column-label 'Op. Fin.ant' tt-data2.c-operac-financ column-label 'Op. Financ' format 'x(10)'. if tt-data2.c-parcela = 0 then disp ' ' @ tt-data2.c-parcela column-label 'P' . else disp tt-data2.c-parcela format '99' column-label 'P'. disp tt-data2.c-produt-financ column-label 'Prod Financ' format 'x(8)' tt-data3.c-date-operacao column-label 'Dt Oper.' format '99/99/99' tt-data2.c-dat-operac-financ column-label 'Dt Liq.' format '99/99/99' tt-data2.c-dat-vencto-operac-financ column-label 'Dt Venct' format '99/99/99' tt-data2.c-cod-indic-econ-orig-apl column-label 'Moeda' format 'x(8)' tt-data2.c-val-operac-financ column-label 'Vlr Operacao' format '>>>,>>>,>>9.99' tt-data2.c-val-sdo-operac-financ column-label 'Saldo Operacao' format '>>>,>>>,>>9.99' tt-data2.c-taxa column-label 'Tx Cont.' format '>9.9999' tt-data2.c-val-operac-indic-cta-corren column-label 'Valor Moeda C/C' format '>>>,>>>,>>>,>>9.99' tt-data2.c-val-tax-juros-operac-financ column-label 'Taxa Juros' format '>>>9.9999' c-cal-des column-label 'Desajo' format '>>>,>>>,>>9.99' with width 210 stream-io. assign c-cal-des = 0. if last-of (tt-data2.c-dat-vencto-operac-financ) then do: put '--------------' to 109 '--------------' to 124 '------------------' to 152 skip de-val_operac_financ-5 format '>>>>,>>>,>>9.99' to 109 de-val_sdo_operac_financ-5 format '>>>>,>>>,>>9.99' to 124 de-val_operac_indic_cta_c-5 format '>>>>>,>>>,>>9.99' to 152 skip(2). assign de-val_operac_financ-6 = de-val_operac_financ-6 + de-val_operac_financ-5 de-val_sdo_operac_financ-6 = de-val_sdo_operac_financ-6 + de-val_sdo_operac_financ-5 de-val_operac_indic_cta_c-6 = de-val_operac_indic_cta_c-6 + de-val_operac_indic_cta_c-5 de-val_operac_financ-5 = 0 de-val_sdo_operac_financ-5 = 0 de-val_operac_indic_cta_c-5 = 0. end. if last-of(tt-data2.c-id) then do: put de-val_operac_financ-6 format '>>>>,>>>,>>9.99' to 109 de-val_sdo_operac_financ-6 format '>>>>,>>>,>>9.99' to 124 de-val_operac_indic_cta_c-6 format '>>>>>,>>>,>>9.99' to 152 skip(2). assign de-val_operac_financ-6 = 0 de-val_sdo_operac_financ-6 = 0 de-val_operac_indic_cta_c-6 = 0. end. end. end. end case. end procedure. procedure pi-listar-yes. for each operac_financ NO-LOCK where operac_financ.cod_banco >= c-cod_banco-ini and operac_financ.cod_banco <= c-cod_banco-fim and operac_financ.cod_empresa >= c-cod_empresa-ini and operac_financ.cod_empresa <= c-cod_empresa-fim and operac_financ.cod_operac_financ >= c-cod_operac_financ-ini and operac_financ.cod_operac_financ <= c-cod_operac_financ-fim and operac_financ.cod_produt_financ >= c-cod_produt_financ-ini and operac_financ.cod_produt_financ <= c-cod_produt_financ-fim and operac_financ.dat_operac_financ >= da-dat_operac_financ-ini and operac_financ.dat_operac_financ <= da-dat_operac_financ-fim and operac_financ.dat_vencto_operac_financ >= da-dat_vencto_operac_financ-ini and operac_financ.dat_vencto_operac_financ <= da-dat_vencto_operac_financ-fim and operac_financ.val_sdo_operac_financ > 0 , EACH emscad.banco NO-LOCK WHERE movfin.operac_financ.cod_banco = emscad.banco.cod_banco, each indic_econ_operac_financ no-lock where indic_econ_operac_financ.num_id_operac_financ = operac_financ.num_id_operac_financ and indic_econ_operac_financ.dat_fim_valid = operac_financ.dat_vencto_operac_financ break by operac_financ.cod_empresa by operac_financ.cod_banco by operac_financ.cod_produt_financ by operac_financ.dat_operac_financ by operac_financ.cod_operac_financ by operac_financ.cod_indic_econ_orig_apl: assign Taxa = operac_financ.val_operac_indic_cta_corren / operac_financ.val_operac_financ. if first-of (operac_financ.cod_operac_financ) and (operac_financ.cod_produt_financ <> 'PRE-CONT') then do: create tt-data. assign c-id = 1 c-cod-banco = operac_financ.cod_banco c-nom-banco = emscad.banco.nom_banco c-cod-empresa = operac_financ.cod_empresa c-operac-financ = operac_financ.cod_operac_financ c-produt-financ = operac_financ.cod_produt_financ c-dat-operac-financ = operac_financ.dat_operac_financ c-dat-vencto-operac-financ = operac_financ.dat_vencto_operac_financ c-cod-indic-econ-orig-apl = operac_financ.cod_indic_econ_orig_apl c-val-operac-financ = operac_financ.val_operac_financ c-val-sdo-operac-financ = operac_financ.val_sdo_operac_financ c-taxa = Taxa c-val-operac-indic-cta-corren = operac_financ.val_operac_indic_cta_corren c-val-tax-juros-operac-financ = indic_econ_operac_financ.val_tax_juros_operac_financ. end. if first-of (operac_financ.cod_operac_financ) and (operac_financ.cod_produt_financ = 'PRE-CONT') then do: for each repas_pend_apl where repas_pend_apl.num_id_operac_financ = operac_financ.num_id_operac_financ and repas_pend_apl.ind_sit_repas_pend = 'Pendente' and repas_pend_apl.ind_tip_repas_pend = 'Agenda' no-lock, first tt-relat where tt-relat.oper-finac = operac_financ.cod_operac_financ break by operac_financ.cod_operac_financ by repas_pend_apl.num_seq_repas_pend: assign de-val-saldo4 = repas_pend_apl.val_repas_pend. create tt-data. assign c-id = 1 c-cod-banco = operac_financ.cod_banco c-nom-banco = emscad.banco.nom_banco c-cod-empresa = operac_financ.cod_empresa c-operac-financ = operac_financ.cod_operac_financ c-parcela = repas_pend_apl.num_seq_repas_pend c-produt-financ = operac_financ.cod_produt_financ c-dat-operac-financ = operac_financ.dat_operac_financ c-dat-vencto-operac-financ = repas_pend_apl.dat_repas_pend c-cod-indic-econ-orig-apl = operac_financ.cod_indic_econ_orig_apl c-val-operac-financ = repas_pend_apl.val_repas_pend c-taxa = Taxa c-val-operac-indic-cta-corren = (repas_pend_apl.val_repas_pend * Taxa ) c-val-tax-juros-operac-financ = indic_econ_operac_financ.val_tax_juros_operac_financ. if first-of ( operac_financ.cod_operac_financ ) then assign c-val-sdo-operac-financ = ( repas_pend_apl.val_repas_pend - (tt-relat.sdo-finac2 - tt-relat.sdo-finac1 + tt-relat.sdo-finac3 ) ). else assign c-val-sdo-operac-financ = de-val-saldo4. end. end. end. case c-formato: when "1" then do: for each tt-data no-lock break by c-id by c-cod-banco by c-produt-financ by c-operac-financ by c-parcela: assign de-val_operac_financ-5 = de-val_operac_financ-5 + c-val-operac-financ de-val_sdo_operac_financ-5 = de-val_sdo_operac_financ-5 + c-val-sdo-operac-financ de-val_operac_indic_cta_c-5 = de-val_operac_indic_cta_c-5 + c-val-operac-indic-cta-corren. if (tt-data.c-parcela = 0) then assign x-parcela = ''. else x-parcela = string (tt-data.c-parcela). disp c-cod-banco column-label 'Banco' format 'x(5)' c-nom-banco column-label 'Nome Banco' format 'x(30)' c-cod-empresa column-label 'Emp' format 'x(3)' c-operac-financ column-label 'Op. Financ' format 'x(10)'. if c-parcela = 0 then disp ' ' @ c-parcela column-label 'P' . else disp c-parcela format '99' column-label 'P'. disp c-produt-financ column-label 'Prod Financ' format 'x(8)' c-dat-operac-financ column-label 'Dt Operac' format '99/99/99' c-dat-vencto-operac-financ column-label 'Dt Venct' format '99/99/99' c-cod-indic-econ-orig-apl column-label 'Moeda' format 'x(8)' c-val-operac-financ column-label 'Vlr Operacao' format '>>>,>>>,>>9.99' c-val-sdo-operac-financ column-label 'Saldo Operacao' format '>>>,>>>,>>9.99' c-taxa column-label 'Tx Cont.' format '>9.9999' c-val-operac-indic-cta-corren column-label 'Valor Moeda C/C' format '>>>,>>>,>>>,>>9.99' c-val-tax-juros-operac-financ column-label 'Taxa Juros' format '>>>9.9999' with width 172 stream-io. if last-of (c-produt-financ) then do: put '--------------' to 109 '--------------' to 124 '------------------' to 152 skip de-val_operac_financ-5 format '>>>>,>>>,>>9.99' to 109 de-val_sdo_operac_financ-5 format '>>>>,>>>,>>9.99' to 124 de-val_operac_indic_cta_c-5 format '>>>>>,>>>,>>9.99' to 152 skip(2). assign de-val_operac_financ-6 = de-val_operac_financ-6 + de-val_operac_financ-5 de-val_sdo_operac_financ-6 = de-val_sdo_operac_financ-6 + de-val_sdo_operac_financ-5 de-val_operac_indic_cta_c-6 = de-val_operac_indic_cta_c-6 + de-val_operac_indic_cta_c-5 de-val_operac_financ-4 = de-val_operac_financ-4 + de-val_operac_financ-5 de-val_sdo_operac_financ-4 = de-val_sdo_operac_financ-4 + de-val_sdo_operac_financ-5 de-val_operac_indic_cta_c-4 = de-val_operac_indic_cta_c-4 + de-val_operac_indic_cta_c-5 de-val_operac_financ-5 = 0 de-val_sdo_operac_financ-5 = 0 de-val_operac_indic_cta_c-5 = 0. end. if last-of(c-cod-banco) then do: put de-val_operac_financ-4 format '>>>>,>>>,>>9.99' to 109 de-val_sdo_operac_financ-4 format '>>>>,>>>,>>9.99' to 124 de-val_operac_indic_cta_c-4 format '>>>>>,>>>,>>9.99' to 152 skip(2). assign de-val_operac_financ-4 = 0 de-val_sdo_operac_financ-4 = 0 de-val_operac_indic_cta_c-4 = 0. end. if last-of(c-id) then do: put de-val_operac_financ-6 format '>>>>,>>>,>>9.99' to 109 de-val_sdo_operac_financ-6 format '>>>>,>>>,>>9.99' to 124 de-val_operac_indic_cta_c-6 format '>>>>>,>>>,>>9.99' to 152 skip(2). assign de-val_operac_financ-6 = 0 de-val_sdo_operac_financ-6 = 0 de-val_operac_indic_cta_c-6 = 0. end. end. end. when "2" then do: for each tt-data no-lock break by c-id by c-dat-vencto-operac-financ by c-operac-financ by c-parcela by c-cod-banco: assign de-val_operac_financ-5 = de-val_operac_financ-5 + c-val-operac-financ de-val_sdo_operac_financ-5 = de-val_sdo_operac_financ-5 + c-val-sdo-operac-financ de-val_operac_indic_cta_c-5 = de-val_operac_indic_cta_c-5 + c-val-operac-indic-cta-corren. if (tt-data.c-parcela = 0) then assign x-parcela = ''. else x-parcela = string (tt-data.c-parcela). disp c-cod-banco column-label 'Banco' format 'x(5)' c-nom-banco column-label 'Nome Banco' format 'x(30)' c-cod-empresa column-label 'Emp' format 'x(3)' c-operac-financ column-label 'Op. Financ' format 'x(10)'. if c-parcela = 0 then disp ' ' @ c-parcela column-label 'P' . else disp c-parcela format '99' column-label 'P'. disp c-produt-financ column-label 'Prod Financ' format 'x(8)' c-dat-operac-financ column-label 'Dt Operac' format '99/99/99' c-dat-vencto-operac-financ column-label 'Dt Venct' format '99/99/99' c-cod-indic-econ-orig-apl column-label 'Moeda' format 'x(8)' c-val-operac-financ column-label 'Vlr Operacao' format '>>>,>>>,>>9.99' c-val-sdo-operac-financ column-label 'Saldo Operacao' format '>>>,>>>,>>9.99' c-taxa column-label 'Tx Cont.' format '>9.9999' c-val-operac-indic-cta-corren column-label 'Valor Moeda C/C' format '>>>,>>>,>>>,>>9.99' c-val-tax-juros-operac-financ column-label 'Taxa Juros' format '>>>9.9999' with width 172 stream-io. if last-of (c-dat-vencto-operac-financ) then do: put '--------------' to 109 '--------------' to 124 '------------------' to 152 skip de-val_operac_financ-5 format '>>>>,>>>,>>9.99' to 109 de-val_sdo_operac_financ-5 format '>>>>,>>>,>>9.99' to 124 de-val_operac_indic_cta_c-5 format '>>>>>,>>>,>>9.99' to 152 skip(2). assign de-val_operac_financ-6 = de-val_operac_financ-6 + de-val_operac_financ-5 de-val_sdo_operac_financ-6 = de-val_sdo_operac_financ-6 + de-val_sdo_operac_financ-5 de-val_operac_indic_cta_c-6 = de-val_operac_indic_cta_c-6 + de-val_operac_indic_cta_c-5 de-val_operac_financ-5 = 0 de-val_sdo_operac_financ-5 = 0 de-val_operac_indic_cta_c-5 = 0. end. if last-of(c-id) then do: put de-val_operac_financ-6 format '>>>>,>>>,>>9.99' to 109 de-val_sdo_operac_financ-6 format '>>>>,>>>,>>9.99' to 124 de-val_operac_indic_cta_c-6 format '>>>>>,>>>,>>9.99' to 152 skip(2). assign de-val_operac_financ-6 = 0 de-val_sdo_operac_financ-6 = 0 de-val_operac_indic_cta_c-6 = 0. end. end. end. end case. end procedure. output close.
Atualmente listamos os totais por banco + produto financeiro Preciso - inverter a ordem para banco + produto financeiro + vencimento - colocar um totalizador por mês de vencimento, bem como, uma coluna que lista o mês do vencimento.
Cara, ao postar códigos use o botão CODE! Segue um exemplo: Código: FOR EACH tit_acr WHERE tit_acr.log_sdo_tit_acr BREAK BY tit_acr.cod_portador BY YEAR(tit_acr.dat_vencto_tit_acr) BY MONTH(tit_acr.dat_vencto_tit_acr) WITH STREAM-IO SCROLLABLE: ACCUMULATE tit_acr.val_sdo_tit_acr (TOTAL BY tit_acr.cod_portador). ACCUMULATE tit_acr.val_sdo_tit_acr (TOTAL BY MONTH(tit_acr.dat_vencto_tit_acr)). IF LAST-OF(MONTH(tit_acr.dat_vencto_tit_acr)) THEN DO: DISP tit_acr.cod_portador YEAR(tit_acr.dat_vencto_tit_acr) COLUMN-LABEL 'Ano' MONTH(tit_acr.dat_vencto_tit_acr) COLUMN-LABEL 'Mês' (ACCUM TOTAL BY tit_acr.cod_portador tit_acr.val_sdo_tit_acr) @ tit_acr.val_sdo_tit_acr. END. IF LAST-OF(tit_acr.cod_portador) THEN DO: UNDERLINE tit_acr.val_sdo_tit_acr. DISP (ACCUM TOTAL BY tit_acr.cod_portador tit_acr.val_sdo_tit_acr) @ tit_acr.val_sdo_tit_acr. DOWN 1. END. END.
Pelo que entendi, devo agregar seu exemplo ao meu fonte, alterando os campos. Mas devo incluir como for each em separado ? Me desculpe se a pergunta for muito "tosca". Estou iniciando nesta parte e peguei um fonte pronto.