CE PLUS - Nota 003477

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DA

Data/Hora da Publicação: 17/04/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 14:40:57

Descrição da Nota: TAXA DE CONVERSÃO PARA MOEDA LOCAL NA DI/DA

Sintoma

Ocorre dump no draft da DI do embarque de RECOF regime 16. E o frete está sendo levado

incorretamente.

Não estava levando os dados do B/L do embarque de regime 04 para o B/L do embarque do regime 16.

ao entrar no B/L para visualização e dar um back, some o número do B/L da tela da DI.

 

 

Solução

Ajustar o programa para verificar se a moeda a ser convertida é diferente da moeda local, caso seja

igual move o valor um para a taxa de conversão.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

DI COM REGIME 16 CALCULA VALORES ERRADOS AO CRIAR.

ERRO NA PASTA PAGAMENTO E VALOR DE FRETE DE DI DE NACIONALIZAÇÃO

Informações Complementares

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

Nota Número 03477 Data: 17/04/2007 Hora: 10:59:19

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

 

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

Nota Número              : 03477

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00001

Agrupamento              : 00164

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

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

01357  - 00001 - 6.0    - 00023  - ERRO NA PASTA PAGAMENTO E VALOR DE FRETE DE DI DE NACIONALIZAÇÃO

01757  - 00002 - 6.0    - 00024  - DI COM REGIME 16 CALCULA VALORES ERRADOS AO CRIAR.

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

TAXA DE CONVERSÃO PARA MOEDA LOCAL NA DI/DA

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

Palavras Chave:

TAXA - CONVERSÃO - MOEDA - LOCAL - DA - DI

/PWS/SAPMZYCI023 - /PWS/SAPMZYCI070 - /PWS/ZYCIR331 - /PWS/ZYCIR332

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

Objetos da nota:

REPS /PWS/MZYCI023F01

REPS /PWS/MZYCI070F01

REPS /PWS/MZYCI001F01

REPS /PWS/ZYCIR331

REPS /PWS/ZYCIR332

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F01

 

...

      WRITE v_tot_ntgew TO v_tot_peso UNIT itab_zycit003-gewei.

      MESSAGE ID '/PWS/ZYCIM' TYPE /pws/zyglt217-msgtp NUMBER '128'

        WITH v_tot_peso.

    ENDIF.

  ENDIF.

  IF /pws/zycie001-regime = '16' AND okcode = 'DI'

     AND NOT itab_zycit003[] IS INITIAL.

    SELECT * FROM /pws/zycit455 INTO TABLE itab_zycit455_aux

      WHERE nrseq = /pws/zycie001-nrseq.

    SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443_aux2

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

      FOR ALL ENTRIES IN itab_zycit455_aux

      WHERE nrseqda = itab_zycit455_aux-nrseqda AND

            ebeln = itab_zycit455_aux-ebeln AND

            ebelp = itab_zycit455_aux-ebelp.

* << Fim da exclusão

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

      FOR ALL ENTRIES IN itab_zycit003

      WHERE nrseqda = itab_zycit003-nrseqda AND

            ebeln = itab_zycit003-ebeln AND

            ebelp = itab_zycit003-ebelp.

* << Fim da inclusão

    SELECT SINGLE * FROM /pws/zycit094

      WHERE nrseq = /pws/zycie001-nrseq.

    IF sy-subrc NE 0.

      /pws/zycit093-bukrs = /pws/zycie093-bukrs = /pws/zycie001-bukrs.

      PERFORM busca_sequencial_bl.

      INSERT INTO /pws/zycit093 VALUES /pws/zycie093.

      WHILE sy-subrc NE 0.

        PERFORM busca_sequencial_bl.

        INSERT INTO /pws/zycit093 VALUES /pws/zycie093.

      ENDWHILE.

      /pws/zycit093 = /pws/zycie093.

      /pws/zycit094-nrseq = /pws/zycie001-nrseq.

      /pws/zycit094-nrseqce = /pws/zycit093-nrseqce.

      INSERT INTO /pws/zycit094 VALUES /pws/zycit094.

    ELSE.

      SELECT SINGLE * FROM /pws/zycit093

       WHERE nrseqce = /pws/zycit094-nrseqce.

    ENDIF.

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

    READ TABLE itab_zycit443_aux2 INDEX 1.

    SELECT SINGLE *

    FROM /pws/zycit442 WHERE nrseqda = itab_zycit443_aux2-nrseqda.

* << Fim da inclusão

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

    CLEAR: /pws/zycit093-collect, /pws/zycit093-brgew.

* << Fim da exclusão

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

    MOVE-CORRESPONDING /pws/zycit442 TO /pws/zycit093.

    CLEAR: /pws/zycit093-collect, /pws/zycit093-prepaid,

           /pws/zycit093-ternacion, /pws/zycit093-brgew.

* << Fim da inclusão

    LOOP AT itab_zycit443_aux2.

     READ TABLE itab_zycit003 WITH KEY ebeln = itab_zycit443_aux2-ebeln

                                       ebelp = itab_zycit443_aux2-ebelp.

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

      IF /pws/zycit442-prepaid IS INITIAL.

        IF /pws/zycit093-waersfre EQ /pws/zycbt007-waersb.

          /pws/zycit093-collect = /pws/zycit093-collect +

            ( itab_zycit443_aux2-vlfre / itab_zycit443_aux2-qtd_iten

               * itab_zycit003-qtd_iten ) .

        ELSEIF NOT /pws/zycit442-ukursfre IS INITIAL.

* << Fim da inclusão

      /pws/zycit093-collect = /pws/zycit093-collect +

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

           ( ( itab_zycit443_aux2-vlfre / itab_zycit443_aux2-qtd_iten

               * itab_zycit003-qtd_iten ) / /pws/zycit442-ukursfre ) .

        ENDIF.

      ELSE.

        IF /pws/zycit093-waersfre EQ /pws/zycbt007-waersb.

          /pws/zycit093-prepaid = /pws/zycit093-prepaid +

* << Fim da inclusão

        ( itab_zycit443_aux2-vlfre / itab_zycit443_aux2-qtd_iten

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

           * itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

               * itab_zycit003-qtd_iten ) .

        ELSEIF NOT /pws/zycit442-ukursfre IS INITIAL.

          /pws/zycit093-prepaid = /pws/zycit093-prepaid +

           ( ( itab_zycit443_aux2-vlfre / itab_zycit443_aux2-qtd_iten

               * itab_zycit003-qtd_iten ) / /pws/zycit442-ukursfre ) .

        ENDIF.

      ENDIF.

* << Fim da inclusão

      /pws/zycit093-brgew = /pws/zycit093-brgew + itab_zycit003-ntgew.

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

      /pws/zycit093-waersfre = 'BRL'.

* << Fim da exclusão

    ENDLOOP.

    MODIFY /pws/zycit093.

    LOOP AT itab_zycit003.

     READ TABLE itab_zycit443_aux2 WITH KEY ebeln = itab_zycit003-ebeln

                                            ebelp = itab_zycit003-ebelp.

      itab_zycit003-vlreal = itab_zycit443_aux2-vlreal.

...

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F01

 

...

    MODIFY itab_it INDEX v_ip.

  ENDIF.

  DELETE itab_zycit115 WHERE

             nrseq  = wa_it-nrseq AND

             ebeln  = wa_it-ebeln AND

             ebelp  = wa_it-ebelp.

  LOOP AT itab_zycit115b.

    MOVE itab_zycit115b TO itab_zycit115.

    APPEND itab_zycit115.

  ENDLOOP.

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

    CONCATENATE /pws/zycie085-nrseqdi

                   itab_it-nrseq

                   itab_it-ebeln

                   itab_it-ebelp

                   INTO v_txtki.

    xtheadi-tdobject   = '/PWS/CIDDI'.

    xtheadi-tdname     = v_txtki.

    xtheadi-tdid       = 'ZDSI'.

    xtheadi-tdspras    = sy-langu.

    xtheadi-tdlinesize = 072.

    CALL FUNCTION 'SAVE_TEXT'

         EXPORTING

              header          = xtheadi

              insert          = 'X'

              savemode_direct = 'X'

              owner_specified = 'X'

         TABLES

              lines           = rtexti

         EXCEPTIONS

              id              = 1

              language        = 2

              name            = 3

              object          = 4

              OTHERS          = 5.

    IF sy-subrc NE 0.

      CALL FUNCTION 'SAVE_TEXT'

           EXPORTING

                header          = xtheadi

                insert          = ' '

                savemode_direct = 'X'

                owner_specified = 'X'

           TABLES

                lines           = rtexti

           EXCEPTIONS

                id              = 1

                language        = 2

                name            = 3

                object          = 4

                OTHERS          = 5.

    ENDIF.

* << Fim da inclusão

ENDFORM.

FORM load_ifre USING p_tipo.

  select single qtd_iten from /pws/zycit003 into /pws/zycie003-qtd_iten

     where nrseq eq /pws/zycie003-nrseq

     and   ebeln eq /pws/zycie003-ebeln

     and   ebelp eq /pws/zycie003-ebelp.

  IF NOT /pws/zycie003-qtd_itend IS INITIAL.

      t_vmle3 = t_vmle_d2 = t_vmle  = /pws/zycie003-vlreal *

     /pws/zycie003-qtd_itend.

      v_it_plan = /pws/zycie003-netpr * /pws/zycie003-qtd_itend.

...

 

...

  endloop.

  perform load_sevl.

  LOOP AT itab_it.

    v_idx = sy-tabix.

    IF v_idx EQ v_ipt AND v_ipt NE 1.

      itab_it-vlfob = v_tval - v_aux_rateio.

    ELSE.

      IF s_inco1_ci NE 'FOB' AND itab_it-vlfre_fat IS INITIAL.

        IF NOT /pws/zycie085-ukursfre IS INITIAL.

          if s_inco1_ci = 'C&F'.

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

            if not v_tval3 is initial.

* << Fim da inclusão

            itab_it-vlfob = ( ( itab_it-qtd_iten * itab_it-vlreal )

                        / v_tval3 ) * v_tval.

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

            endif.

* << Fim da inclusão

           else.

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

             if not v_tval3 is initial or

                not /pws/zycie085-ukursseg is initial.

* << Fim da inclusão

            itab_it-vlfob = ( ( itab_it-qtd_iten * itab_it-vlreal )

                        / v_tval3 ) * v_tval -

                           ( itab_it-vlseg / /pws/zycie085-ukursseg ).

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

             endif.

* << Fim da inclusão

           endif.

        ENDIF.

      ELSE.

        itab_it-vlfob = ( ( itab_it-qtd_iten * itab_it-vlreal )

...

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F01

 

FORM load_bl.

  IF /pws/zycie085-nrbl IS INITIAL.

    CLEAR:   itab_it, itab_ita, wa_it,    wa_ad, /pws/zycie100a,

" "v_calc,

             t_blid,  v_tmle,   v_tntgew.

    REFRESH: itab_it, itab_ita.

  ELSE.

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

   if v_difora eq 'X'.

* << Fim da inclusão

 

      PERFORM verifica_bl CHANGING v_bl1.

      IF v_bl1 = '1'.

        MESSAGE i015 WITH text-237.

        CLEAR /pws/zycie085-nrbl.

        EXIT.

      ENDIF.

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

    endif.

* << Fim da inclusão

    PERFORM: verify_bl CHANGING v_bl.

    IF v_bl = '1'.

      PERFORM: load_blid.

      MOVE-CORRESPONDING /pws/zycie085 TO wa_zycit085.

      MOVE-CORRESPONDING /pws/zycie093 TO /pws/zycie085.

      /pws/zycie085-land        = /pws/zycie093-paispae.

      /pws/zycie085-identify    = wa_zycit085-identify.

      /pws/zycie085-dtuserc     = wa_zycit085-dtuserc.

      /pws/zycie085-dtusera     = wa_zycit085-dtusera.

      /pws/zycie085-usernamec   = wa_zycit085-usernamec.

      /pws/zycie085-usernamea   = wa_zycit085-usernamea.

      /pws/zycie085-tpagente    = '1'.

      IF /pws/zycie093-tpdoccheg EQ '1' OR /pws/zycie093-tpdoccheg EQ

 

 

 

...

  REFRESH itab_zycit100_temp.

  LOOP AT itab_it.

    MOVE-CORRESPONDING itab_it TO itab_zycit100_temp.

    APPEND itab_zycit100_temp.

    READ TABLE itab_inco WITH KEY ebeln = itab_it-ebeln.

    IF sy-subrc EQ 0.

      itab_it-inco_item = itab_inco-inco1.

    ENDIF.

    MODIFY itab_it.

  ENDLOOP.

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

  IF itab_zycit001-regime EQ '16'.

    /pws/zycie085-ukursfre = '1'.

  ENDIF.

* << Fim da exclusão

ENDFORM.

...

 

...

FORM taxa_converte USING    p_waers

                            p_data

                   CHANGING p_taxa.

  CLEAR: p_taxa, v_msgfre.

  DATA:  v_moeda LIKE tcurc-/pws/codmo,

         v_msgd(10),

         v_linhas TYPE i.

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

  IF p_waers EQ wa_zycbt007-waersb.

    p_taxa = 1.

    EXIT.

  ENDIF.

* << Fim da inclusão

  SELECT SINGLE /pws/codmo FROM tcurc INTO v_moeda WHERE

         waers = p_waers.

  IF sy-subrc EQ 0.

    REFRESH itab_zycit174.

    SELECT * FROM /pws/zycit174 INTO TABLE itab_zycit174 WHERE

           codconver = v_moeda    AND

           vigen_inicio <= p_data AND

           vigen_fim    >= p_data AND

           land1       = t001-land1.

    DESCRIBE TABLE itab_zycit174 LINES v_linhas.

...

 

...

        PERFORM: taxa_converte USING itab_it-waersbem

 /pws/zycie085-dttax

                               CHANGING itab_it-dttaxbem.

        MODIFY itab_it INDEX v_idx TRANSPORTING dttaxbem.

      ENDLOOP.

    ENDIF.

    IF wa_zycbt007 IS INITIAL.

      SELECT SINGLE * FROM /pws/zycbt007 INTO wa_zycbt007

                      WHERE bukrs EQ /pws/zycie085-bukrs.

    ENDIF.

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

    IF NOT /pws/zycie093-waersfre IS INITIAL

       AND NOT itab_zycit001-regime EQ '16'.

* << Fim da exclusão

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

    IF NOT /pws/zycie093-waersfre IS INITIAL.

* << Fim da inclusão

      PERFORM: taxa_converte USING    /pws/zycie093-waersfre

 /pws/zycie085-dttax

                             CHANGING /pws/zycie085-ukursfre,

               load_coll.

    ENDIF.

    IF NOT /pws/zycie085-waersseg IS INITIAL.

      PERFORM: taxa_converte USING    /pws/zycie085-waersseg

 /pws/zycie085-dttax

                             CHANGING /pws/zycie085-ukursseg,

               load_sevl.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI070F01

 

...

  ENDIF.

ENDFORM.

FORM taxa_converte

  USING    value(p_waers)

           value(p_data)

  CHANGING value(p_taxa).

  CLEAR: p_taxa, v_msgfre.

  DATA:  v_moeda LIKE tcurc-/pws/codmo,

         v_msgd(10),

         v_linhas TYPE i.

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

  IF p_waers EQ wa_zycbt007-waersb.

    p_taxa = 1.

    exit.

  ENDIF.

* << Fim da inclusão

  SELECT SINGLE /pws/codmo FROM tcurc INTO v_moeda WHERE

         waers = p_waers.

  IF sy-subrc EQ 0.

    REFRESH itab_zycit174.

    SELECT * FROM /pws/zycit174 INTO TABLE itab_zycit174 WHERE

           codconver = v_moeda    AND

           vigen_inicio <= p_data AND

           vigen_fim    >= p_data AND

           land1       = t001-land1.

    DESCRIBE TABLE itab_zycit174 LINES v_linhas.

...

 

 

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

Modificações efetuadas em REPS /PWS/ZYCIR331

 

...

      v_qtdtot    = v_qtdtot    + itab_zycit003-menge.

      v_pesotot   = v_pesotot   + itab_zycit003-ntgew.

      v_valortot  = v_valortot  + itab_zycit100-vlfob.

      v_vlicms    = v_vlicms    + itab_zycit100-vlicms.

      v_vlicms1   = v_vlicms1   + itab_zycit100-baseicms.

      v_vlpis1    = v_vlpis1    + itab_zycit100-basepis.

      v_vlcofins1 = v_vlcofins1 + itab_zycit100-basecofins.

      v_vlipi1    = v_vlipi1    + itab_zycit100-baseipi.

    ENDLOOP.

    v_vmle  =  ( v_foba * itab_zycit100-dttaxbem ).

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

    IF NOT t_zycit085-ukursfre IS INITIAL.

* << Fim da inclusão

    v_frete =  ( v_fretea / t_zycit085-ukursfre ).

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

    ENDIF.

    IF NOT t_zycit085-ukursseg IS INITIAL.

* << Fim da inclusão

    v_seg   =  ( v_sega / t_zycit085-ukursseg ).

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

    ENDIF.

* << Fim da inclusão

    DATA: v_meinsest(3).

...

 

 

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

Modificações efetuadas em REPS /PWS/ZYCIR332

 

...

      v_qtdtot    = v_qtdtot    + itab_zycit003-menge.

      v_pesotot   = v_pesotot   + itab_zycit003-ntgew.

      v_valortot  = v_valortot  + itab_zycit443-vlfob.

      v_vlicms    = v_vlicms    + itab_zycit443-vlicms.

      v_vlicms1   = v_vlicms1   + itab_zycit443-baseicms.

      v_vlpis1    = v_vlpis1    + itab_zycit443-basepis.

      v_vlcofins1 = v_vlcofins1 + itab_zycit443-basecofins.

      v_vlipi1    = v_vlipi1    + itab_zycit443-baseipi.

    ENDLOOP.

    v_vmle  =  ( v_foba * itab_zycit443-dttaxbem ).

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

    IF NOT t_zycit442-ukursfre IS INITIAL.

* << Fim da inclusão

    v_frete =  ( v_fretea / t_zycit442-ukursfre ).

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

    ENDIF.

    IF NOT t_zycit442-ukursseg IS INITIAL.

* << Fim da inclusão

    v_seg   =  ( v_sega / t_zycit442-ukursseg ).

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

    ENDIF.

* << Fim da inclusão

    DATA: v_meinsest(3).

    MOVE itab_zycit003-meinsest TO v_meinsest.

    WRITE:    068 text-101 INTENSIFIED OFF,

              120 '|',

             /001 '|',

              002 text-102 INTENSIFIED OFF,

              019 v_qtdeumest,

              068 text-103 INTENSIFIED OFF,

              085 v_meinsest,

              120 '|'.

...