CE PLUS - Nota 003371

Módulo: CÂMBIO IMPORTAÇÃO

Funcionalidade: Rotina de Pagamento

Data/Hora da Publicação: 30/03/2007 00:00:00

Data/Hora Última Alteração: 04/03/2010 13:40:50

Descrição da Nota: PROCESSAR BOLETO - DESPESAS - VALOR MI - JPY

Sintoma

 

Ao efetuar a Saída de Pagamento de um boleto de despesa-importação-regime caixa-fecha câmbio não, o

valor MI esta diferente do documento de origem, gerando variação cambial.

 

Solução

 

Fazer o cálculo do valor MI considerando fator de conversão, categoria da moeda e passar o mesmo ao

batch-input, gravando na tabela /pws/zycbt031, campo vlmi.

Versões Tratadas

6.0

Informações Complementares

 

----------------------------------------------------------------------------------------------------

Nota Número 03371 Data: 30/03/2007 Hora: 17:56:21

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 03371

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

 

----------------------------------------------------------------------------------------------------

PROCESSAR BOLETO - DESPESAS - VALOR MI - JPY

----------------------------------------------------------------------------------------------------

Palavras Chave:

PROCESSAR BOLETO DESPESAS VALOR MI SAÍDA DE PAGAMENTO

VARIAÇÃO CAMBIAL DIFERENÇA REAIS JPY

----------------------------------------------------------------------------------------------------

Objetos da nota:

REPS /PWS/ZYCBN102

REPS /PWS/ZYCBR102

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/ZYCBN102

 

...

      /pws/zycbt031-belnr_p = /pws/zycbt004-belnr.

      /pws/zycbt031-dtcredpr = /pws/zycbt004-dtvencto.

      IF NOT /pws/zycbt004-txcneg IS INITIAL.

        /pws/zycbt031-kursf  = /pws/zycbt004-txcneg.

      ENDIF.

      PERFORM calcula_vlmi

        USING

          /pws/zycbt004-vlme

          /pws/zycbt004-waers

          /pws/zycbt031-kursf

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

          'M'

          sy-datum

* << Fim da inclusão

        CHANGING

          /pws/zycbt031-vlmi.

      SELECT SINGLE * FROM bkpf

         WHERE belnr = /pws/zycbt004-belnr

           AND bukrs = /pws/zycbt004-bukrs

           AND gjahr = /pws/zycbt004-dtincl(4).

      IF sy-subrc = 0.

        IF bkpf-bstat = 'V'.

          /pws/zycbt031-statusp = 'P'.

        ELSEIF bkpf-bstat = ' '.

...

 

...

      /pws/zycbt031-belnr_p = wa_despesa-belnr.

      /pws/zycbt031-dtcredpr = wa_despesa-dtincl.

      IF NOT wa_despesa-txcneg IS INITIAL.

        /pws/zycbt031-kursf  = wa_despesa-txcneg.

      ENDIF.

      PERFORM calcula_vlmi

        USING

          wa_despesa-vlme

          wa_despesa-waers

          /pws/zycbt031-kursf

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

          'M'

          sy-datum

* << Fim da inclusão

        CHANGING

          /pws/zycbt031-vlmi.

      SELECT SINGLE * FROM bkpf

         WHERE belnr = wa_despesa-belnr

           AND bukrs = wa_despesa-bukrs

           AND gjahr = wa_despesa-dtincl(4).

      IF sy-subrc = 0.

        IF bkpf-bstat = 'V'.

          /pws/zycbt031-statusp = 'P'.

        ELSEIF bkpf-bstat = ' '.

...

 

...

                                              v_datalanc

                                              p_wa_despesa-txcneg

                                              wa_zycbt011-bukrs

                                     CHANGING v_taxa

                                              v_sai.

        IF v_sai EQ 'X'.

          EXIT.

        ENDIF.

        itab_zycbe033-kursf = v_taxa.

        v_taxacambial       = v_taxa.

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

        v_ftaxa = wa_zycbt011-ctmoed.

* << Fim da inclusão

      ELSE.

        SELECT SINGLE * FROM /pws/zycbt009

          WHERE codpadr EQ p_wa_despesa-ftaxa.

        v_ftaxa = /pws/zycbt009-kurst.

        PERFORM obtem_taxa_cambial.

        itab_zycbe033-kursf  = v_taxacambial.

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

        v_ftaxa = p_wa_despesa-ftaxa.

* << Fim da inclusão

      ENDIF.

...

 

...

                                              v_datalanc

                                           p_wa_despesa-kursf

                                              wa_zycbt011-bukrs

                                     CHANGING v_taxa

                                              v_sai.

        IF v_sai EQ 'X'.

          EXIT.

        ENDIF.

        itab_zycbe033-kursf = v_taxa.

        v_taxacambial       = v_taxa.

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

        v_ftaxa = wa_zycbt011-ctmoed.

* << Fim da inclusão

      ELSE.

        SELECT SINGLE * FROM /pws/zycbt009

          WHERE codpadr EQ p_wa_despesa-ftaxa.

        v_ftaxa = /pws/zycbt009-kurst.

        PERFORM obtem_taxa_cambial.

        itab_zycbe033-kursf = v_taxacambial.

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

        v_ftaxa = p_wa_despesa-ftaxa.

* << Fim da inclusão

      ENDIF.

...

 

...

    itab_zycbe033-d_kostl = p_wa_despesa-kostl.

    itab_zycbe033-d_prctr = p_wa_despesa-prctr.

    itab_zycbe033-d_fipos = p_wa_despesa-fipos.

    itab_zycbe033-d_fictr = p_wa_despesa-fictr.

    itab_zycbe033-c_gsber = p_wa_despesa-gsber.

    itab_zycbe033-c_kostl = p_wa_despesa-kostl.

    itab_zycbe033-c_prctr = p_wa_despesa-prctr.

    itab_zycbe033-c_fipos = p_wa_despesa-fipos.

    itab_zycbe033-c_fictr = p_wa_despesa-fictr.

    itab_zycbe033-werks   = p_wa_despesa-werks.

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

    clear bkpf.

    IF itab_selreg_aux-frpagto EQ 'C'  AND

       ( itab_selreg_aux-fmd   EQ 'ID' OR

         itab_selreg_aux-fmd   EQ 'CD' ).

      SELECT SINGLE * FROM bkpf

                      WHERE belnr = wa_despesa-belnrdesp

                        AND bukrs = wa_despesa-bukrs

                        AND gjahr = wa_despesa-dtincl(4).

      IF sy-subrc = 0.

        itab_zycbe033-kursf    = bkpf-kursf.

      ENDIF.

    ENDIF.

    PERFORM calcula_vlmi

      USING

        itab_zycbe033-wrbtr

        itab_zycbe033-waers

        itab_zycbe033-kursf

        v_ftaxa

        v_datalanc

      CHANGING

        itab_zycbe033-dmbtr.

* << Fim da inclusão

    APPEND itab_zycbe033.

    IF itab_selreg_aux-frpagto = 'C'.

      CLEAR itab_zycbt034.

    ENDIF.

    IF /pws/zycbt031-frgzu = '2'.

      LOOP AT itab_zycbt034.

        MESSAGE i016 WITH itab_zycbt034-descricao.

        PERFORM limpa_selreg.

        PERFORM retorna_flag.

      ENDLOOP.

...

 

...

                                              tpmsg  = 'S'.

            IF sy-subrc = 0.

              PERFORM get_zycbt031.

              /pws/zycbt031-belnr_p  = itab_zycbt032-belnr.

              /pws/zycbt031-statusp  = 'C'.

              IF /pws/zycbt031-dtcredpr = '00000000' OR

                 /pws/zycbt031-dtcredpr = '        '.

                /pws/zycbt031-dtcredpr = wa_despesa-dtincl.

              ENDIF.

              /pws/zycbt031-kursf    = itab_zycbe033-kursf.

* >> Início da exclusão: FORM DADOS_BATCH_DESPESA

              /pws/zycbt031-vlmi     = itab_zycbe033-wrbtr *

                                       itab_zycbe033-kursf.

* << Fim da exclusão

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

              /pws/zycbt031-vlmi     = itab_zycbe033-dmbtr.

* << Fim da inclusão

              MODIFY /pws/zycbt031 FROM /pws/zycbt031.

              IF sy-subrc = 0.

                MESSAGE i061 WITH text-109 /pws/zycbe031-nrseq

                                  text-107.

                IF NOT sy-binpt IS INITIAL.

                  IMPORT itab_boleto[] FROM MEMORY ID 'AGIL'.

                  itab_boleto-nrseq = /pws/zycbt031-nrseq.

                  APPEND itab_boleto.

                  EXPORT itab_boleto[] TO MEMORY ID 'AGIL'.

                ENDIF.

...

 

...

            PERFORM limpa_selreg.

            PERFORM retorna_flag.

          ENDIF.

        ELSE.

          PERFORM get_zycbt031.

          IF /pws/zycbt031-dtcredpr = '00000000' OR

             /pws/zycbt031-dtcredpr = '        '.

            /pws/zycbt031-dtcredpr = wa_despesa-dtincl.

          ENDIF.

          /pws/zycbt031-kursf    = itab_zycbe033-kursf.

* >> Início da exclusão: FORM DADOS_BATCH_DESPESA

          /pws/zycbt031-vlmi     = itab_zycbe033-wrbtr *

                                   itab_zycbe033-kursf.

* << Fim da exclusão

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

          /pws/zycbt031-vlmi     = itab_zycbe033-dmbtr.

* << Fim da inclusão

          MODIFY /pws/zycbt031 FROM /pws/zycbt031.

          IF sy-subrc = 0.

            MESSAGE i061 WITH text-109 /pws/zycbe031-nrseq text-107.

            IF NOT sy-binpt IS INITIAL.

              IMPORT itab_boleto[] FROM MEMORY ID 'AGIL'.

              itab_boleto-nrseq = /pws/zycbt031-nrseq.

              APPEND itab_boleto.

              EXPORT itab_boleto[] TO MEMORY ID 'AGIL'.

            ENDIF.

          ENDIF.

...

 

...

             ( itab_selreg_aux-fmd   EQ 'ID' OR

               itab_selreg_aux-fmd   EQ 'CD' ).

        /pws/zycbt118-belnr_p = wa_despesa-belnrdesp.

        /pws/zycbt118-dtpagto = v_datalanc.

        UPDATE /pws/zycbt118 SET statusp = /pws/zycbt118-statusp

                            belnr_p = /pws/zycbt118-belnr_p

                            dtpagto = /pws/zycbt118-dtpagto

                      WHERE nrseq   = itab_selreg_aux-nrchave.

        PERFORM get_zycbt031.

        /pws/zycbt031-belnr_p = wa_despesa-belnrdesp.

* >> Início da exclusão: FORM DADOS_BATCH_DESPESA

        SELECT SINGLE * FROM bkpf

                        WHERE belnr = wa_despesa-belnrdesp

                          AND bukrs = wa_despesa-bukrs

                          AND gjahr = wa_despesa-dtincl(4).

        IF sy-subrc = 0.

* << Fim da exclusão

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

        if not bkpf is initial.

* << Fim da inclusão

          IF bkpf-bstat = 'V'.

            /pws/zycbt031-statusp = 'P'.

          ELSEIF bkpf-bstat = ' '.

            /pws/zycbt031-statusp = 'C'.

          ENDIF.

          IF /pws/zycbt031-dtcredpr = '00000000' OR

             /pws/zycbt031-dtcredpr = '        '.

            /pws/zycbt031-dtcredpr = wa_despesa-dtincl.

          ENDIF.

          /pws/zycbt031-kursf    = bkpf-kursf.

* >> Início da exclusão: FORM DADOS_BATCH_DESPESA

          /pws/zycbt031-vlmi     = itab_zycbe033-wrbtr *

                                   bkpf-kursf.

* << Fim da exclusão

* >> Início da inclusão: FORM DADOS_BATCH_DESPESA

          /pws/zycbt031-vlmi     = itab_zycbe033-dmbtr.

* << Fim da inclusão

        ENDIF.

        MODIFY /pws/zycbt031 FROM /pws/zycbt031.

        v_boleto = /pws/zycbe031-nrseq.

        IF sy-subrc = 0.

          MESSAGE i061 WITH text-109 v_boleto text-107.

          IF NOT sy-binpt IS INITIAL.

            IMPORT itab_boleto[] FROM MEMORY ID 'AGIL'.

            itab_boleto-nrseq = /pws/zycbt031-nrseq.

            APPEND itab_boleto.

            EXPORT itab_boleto[] TO MEMORY ID 'AGIL'.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/ZYCBR102

 

...

        EXIT.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.

FORM calcula_vlmi

  USING

    value(p_vlme)    TYPE /pws/zycbt031-vlme

    value(p_waers)   TYPE /pws/zycbt031-waers

    value(p_taxa)    TYPE /pws/zycbt031-kursf

* >> Início da inclusão: FORM CALCULA_VLMI

    value(p_ctmoeda) TYPE /pws/zycbt011-ctmoed

    value(p_data)    type sy-datum

* << Fim da inclusão

  CHANGING p_vlmi    TYPE /pws/zycbt031-vlmi.

  DATA: v_vlmeaux TYPE /pws/zycbt031-vlme,

        v_ctmoed  TYPE /pws/zycbt011-ctmoed,

        v_dfact   TYPE tcurr-ffact,

        v_pfact   TYPE tcurr-ffact,

        v_currdec TYPE tcurx-currdec.

* >> Início da exclusão: FORM CALCULA_VLMI

  v_ctmoed = 'M'.

* << Fim da exclusão

* >> Início da inclusão: FORM CALCULA_VLMI

  SELECT SINGLE kurst FROM /pws/zycbt009 INTO v_ctmoed

                       WHERE codpadr = p_ctmoeda.

  IF sy-subrc NE 0 OR v_ctmoed IS INITIAL.

    v_ctmoed = p_ctmoeda.

  ENDIF.

* << Fim da inclusão

  CALL FUNCTION '/PWS/ZYCB_MONTANTE_CONVERTE'

       EXPORTING

            i_montante                   = p_vlme

            i_demoeda                    = p_waers

            i_paramoeda                  = /pws/zycbt007-waersb

            i_ctmoeda                    = v_ctmoed

* >> Início da exclusão: FORM CALCULA_VLMI

            i_dtbase                     = sy-datum

* << Fim da exclusão

* >> Início da inclusão: FORM CALCULA_VLMI

            i_dtbase                     = p_data

* << Fim da inclusão

       IMPORTING

            e_defator                    = v_dfact

            e_parafator                  = v_pfact

       TABLES

            t_ctgmoeda                   = itab_zycbt009

       EXCEPTIONS

            i_demoeda_nao_encontrado     = 1

            i_paramoeda_nao_encontrado   = 2

            fator_nao_encontrado         = 3

            i_ctmoeda_nao_encontrado     = 4

...