CE PLUS - Nota 003289

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

Versões Tratadas

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.

...