Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Rotina Mensal
Data/Hora da Publicação: 21/03/2007 00:00:00
Data/Hora Última Alteração: 10/03/2010 14:34:11
Descrição da Nota: ROTINA MENSAL - CAMPO TAXA - MONTANTE CONVERTE
Sintoma
Ao rodar a rotina mensal de estorno para um contrato de Pré pagto, o programa não está trazendo a
taxa de conversão na tela, logo, os valores em reais não são passados para a tela.
Solução
Ajuste efetuado, sendo que foi substituida a consistencia de taxa, que antes era selecionada pela
tabela tcurr, e agora é feita pela função MONTANTE_CONVERTE
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 03289 Data: 21/03/2007 Hora: 13:37:29
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 03289
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00026
Agrupamento : 00156
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
ROTINA MENSAL - CAMPO TAXA - MONTANTE CONVERTE
----------------------------------------------------------------------------------------------------
Palavras Chave:
ROTINA MENSAL - CAMPO TAXA - MONTANTE CONVERTE
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/ZYCBI003
REPS /PWS/ZYCBR003
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCBI003
...
v_agkon LIKE /pws/zycbe033-agkon,
v_newko LIKE /pws/zycbe033-d_newko,
v_data LIKE /pws/zycbt154-dtcont,
v_totac LIKE /pws/zycbt001-vlme,
v_premio LIKE /pws/zycbt136-vlprinc,
v_dias TYPE i,
v_dias3 TYPE i,
v_feriado TYPE c,
v_dia_semana TYPE p,
v_txc LIKE itab_relat-txc,
* >> Início da inclusão:
v_taxac LIKE itab_relat-txc,
* << Fim da inclusão
v_vlme_par LIKE /pws/zycbt006-vlme.
FORM processa_calculo_juros USING value(p_vlme)
value(p_txj)
value(p_tptxjur)
value(p_dtde)
value(p_dtate)
value(p_moeda)
value(p_ctmoeda)
value(p_tpjuros).
DATA: v_vlmeaux LIKE /pws/zycbt001-vlme,
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCBR003
...
gsberf NE itab_zycbt006-gsberf OR
dtvincul NE itab_zycbt006-dtvincul OR
dtvencto NE itab_zycbt006-dtvencto ).
v_saldo_inicial = v_saldo_inicial - itab_zycbt006_aux-vlme.
ENDLOOP.
v_saldo_inicial = v_saldo_inicial - itab_zycbt006-vlme.
CLEAR v_saldo_aux.
ENDIF.
itab_relat-vlmej = v_juros.
PERFORM seleciona_taxa.
* >> Início da exclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = itab_tcurr-ukurs.
* << Fim da exclusão
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = v_taxac.
* << Fim da inclusão
itab_relat-vlmij = itab_relat-vlmej * itab_relat-txc.
PERFORM preenche_itab_relat.
APPEND itab_relat.
CLEAR v_cont.
ENDLOOP.
IF sy-subrc EQ 0.
IF itab_zycbt002j-dtfinal < s_dtentr.
v_per_dias = itab_zycbt002j-dtfinal - v_inicio.
ELSE.
v_per_dias = s_dtentr - v_inicio.
...
...
* ( v_per_dias / v_base_dias ).
itab_relat-vlmej = v_juros.
itab_relat-vlme = v_saldo_inicial.
itab_relat-dtde = v_inicio.
IF itab_zycbt002j-dtfinal < s_dtentr.
itab_relat-dtate = itab_zycbt002j-dtfinal.
ELSE.
itab_relat-dtate = s_dtentr.
ENDIF.
PERFORM seleciona_taxa.
* >> Início da exclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = itab_tcurr-ukurs.
* << Fim da exclusão
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = v_taxac.
* << Fim da inclusão
itab_relat-vlmij = itab_relat-vlmej * itab_relat-txc.
PERFORM preenche_itab_relat.
APPEND itab_relat.
ELSE.
DESCRIBE TABLE itab_zycbt002j_aux LINES v_linha.
IF v_linha2 EQ v_linha.
IF itab_zycbt002j-dtfinal < p_dtfim.
v_per_dias = itab_zycbt002j-dtfinal - v_inicio.
v_juros = ( v_saldo_final * itab_zycbt002j-txjtotal / 100 )
* ( v_per_dias / v_base_dias )
...
...
itab_relat-vlmej = v_juros.
itab_relat-vlme = v_saldo_final.
itab_relat-dtde = v_inicio.
IF itab_zycbt002j-dtfinal < s_dtentr.
itab_relat-dtate = itab_zycbt002j-dtfinal.
ELSE.
itab_relat-dtate = s_dtentr.
ENDIF.
ENDIF.
PERFORM seleciona_taxa.
* >> Início da exclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = itab_tcurr-ukurs.
* << Fim da exclusão
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = v_taxac.
* << Fim da inclusão
itab_relat-vlmij = itab_relat-vlmej * itab_relat-txc.
PERFORM preenche_itab_relat.
APPEND itab_relat.
ENDIF.
ELSE.
IF s_dtentr < itab_zycbt002j-dtfinal.
v_per_dias = s_dtentr - itab_zycbt002j-dtinicio.
v_juros = ( v_saldo_inicial * itab_zycbt002j-txjtotal / 100 )
* ( v_per_dias / v_base_dias ).
itab_relat-vlmej = v_juros.
itab_relat-vlme = v_saldo_inicial.
itab_relat-dtde = itab_zycbt002j-dtinicio.
itab_relat-dtate = s_dtentr.
PERFORM seleciona_taxa.
* >> Início da exclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = itab_tcurr-ukurs.
* << Fim da exclusão
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = v_taxac.
* << Fim da inclusão
itab_relat-vlmij = itab_relat-vlmej * itab_relat-txc.
PERFORM preenche_itab_relat.
APPEND itab_relat.
ELSE.
v_per_dias = itab_zycbt002j-dtfinal - itab_zycbt002j-dtinicio.
v_juros = ( v_saldo_inicial * itab_zycbt002j-txjtotal / 100 )
* ( v_per_dias / v_base_dias ).
itab_relat-vlmej = v_juros.
itab_relat-vlme = v_saldo_inicial.
itab_relat-dtde = itab_zycbt002j-dtinicio.
itab_relat-dtate = itab_zycbt002j-dtfinal.
PERFORM seleciona_taxa.
* >> Início da exclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = itab_tcurr-ukurs.
* << Fim da exclusão
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = v_taxac.
* << Fim da inclusão
itab_relat-vlmij = itab_relat-vlmej * itab_relat-txc.
PERFORM preenche_itab_relat.
APPEND itab_relat.
ENDIF.
ENDIF.
CLEAR v_cont.
ENDLOOP.
v_saldo_final = itab_zycbt001-vlme.
LOOP AT itab_zycbt006 WHERE dtpagto < s_dtentr
AND nrseqc = itab_zycbt001-nrseqc.
...
...
IF s_dtentr > itab_relat-dtate
AND v_deduz EQ 'X'.
v_per_dias = s_dtentr - itab_relat-dtate.
v_juros = ( v_saldo_final * itab_zycbt002j-txjtotal / 100 )
* ( v_per_dias / v_base_dias ).
itab_relat-vlmej = v_juros.
itab_relat-vlme = v_saldo_final.
itab_relat-dtde = itab_relat-dtate.
itab_relat-dtate = s_dtentr.
PERFORM seleciona_taxa.
* >> Início da exclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = itab_tcurr-ukurs.
* << Fim da exclusão
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = v_taxac.
* << Fim da inclusão
itab_relat-vlmij = itab_relat-vlmej * itab_relat-txc.
PERFORM preenche_itab_relat.
APPEND itab_relat.
ELSEIF s_dtentr > itab_relat-dtate.
v_per_dias = s_dtentr - itab_relat-dtate.
v_juros = ( v_saldo_final * itab_zycbt002j-txjtotal / 100 )
* ( v_per_dias / v_base_dias ).
itab_relat-vlmej = v_juros.
itab_relat-vlme = v_saldo_final.
itab_relat-dtde = itab_relat-dtate.
itab_relat-dtate = s_dtentr.
PERFORM seleciona_taxa.
* >> Início da exclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = itab_tcurr-ukurs.
* << Fim da exclusão
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
itab_relat-txc = v_taxac.
* << Fim da inclusão
itab_relat-vlmij = itab_relat-vlmej * itab_relat-txc.
PERFORM preenche_itab_relat.
APPEND itab_relat.
ENDIF.
CLEAR v_contr.
ENDFORM.
FORM seleciona_taxa.
DATA: v_data LIKE sy-datum,
v_dtbudat LIKE sy-datum,
v_kurst LIKE /pws/zycbt009-kurst.
...
...
WHERE bukrs IN s_bukrs.
ENDSELECT.
SELECT kurst
UP TO 1 ROWS
FROM /pws/zycbt009
INTO v_kurst
WHERE codpadr = wa_zycbt011-ctmoed.
ENDSELECT.
v_data = s_dtentr.
CONVERT DATE v_data INTO INVERTED-DATE v_dtbudat.
* >> Início da exclusão: FORM SELECIONA_TAXA
SELECT *
FROM tcurr
INTO TABLE itab_tcurr
WHERE kurst = v_kurst AND
fcurr = itab_zycbt001-waers AND
tcurr = wa_zycbt007-waersb AND
gdatu GE v_dtbudat.
READ TABLE itab_tcurr INDEX 1.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_TAXA
CALL FUNCTION '/PWS/ZYCB_MONTANTE_CONVERTE'
EXPORTING
i_montante = '1'
i_demoeda = itab_zycbt001-waers
i_paramoeda = wa_zycbt007-waersb
i_ctmoeda = v_kurst
i_dtbase = sy-datum
IMPORTING
e_txc = v_taxac
EXCEPTIONS
i_demoeda_nao_encontrado = 1
i_paramoeda_nao_encontrado = 2
i_ctmoeda_nao_encontrado = 3
i_dtbase_nao_encontrada = 4
taxa_nao_encontrada = 5
fator_nao_encontrado = 6
i_montante_nao_encontrado = 7
OTHERS = 8.
* << Fim da inclusão
ENDFORM.
FORM mapeia_transacao.
itab_zycbe033-tcode = 'FB08'.
itab_zycbe033-tabela = '/PWS/ZYCBT154'.
CONCATENATE itab_zycbt154-codmodul itab_zycbt154-tpcontr
itab_zycbt154-bco itab_zycbt154-dtcont
itab_zycbt154-bukrs itab_zycbt154-gsber
itab_zycbt154-waers itab_zycbt154-d_newko
itab_zycbt154-c_newko INTO itab_zycbe033-cpochv.
itab_zycbe033-belnr = itab_zycbt154-belnr_pr.
...