CE PLUS - Nota 004019

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DSI

Data/Hora da Publicação: 22/06/2007 00:00:00

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

Descrição da Nota: CORREÇÃO NO CALCULO DA BASE DE CÁLCULO AO ENTRAR DO DETALHE DO ITEM

Sintoma

Quando entra na DSI pela primeira vez, no detalhe do ítem pasta carga 3, os valores das bases dos

impostos e dos valores a recolher dos impostos estão errados. Não estão somando as despesas base de

impostos. Somente quando sai do detalhe do item e entra novamente que atualiza, mas quando saímos da

DSI e entramos novamente o erro continua.

O valor da base de cálculo e o valor a recolher do ICMS ficam errados no momento que entra na DSI.

É necessário sair do detalhe do item e entrar novamente para atualizar os valores

 

 

Solução

Ajuste feito na DSI para calcular corretamente ao entrar na DSI

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

INCLUIR PERDA DA VALIDADE DA MP252 NA TABELA DE PARÂMETROS /PWS/ZYCIT438

DSI VALORES SE MODIFICAM TODA ATUALIZAÇÃO

AJUSTES DSI MUNDANÇA SISCOMEX

Informações Complementares

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

Nota Número 04019 Data: 22/06/2007 Hora: 14:58:39

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

 

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

Nota Número              : 04019

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00001

Agrupamento              : 00171

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

Referência às notas relacionadas:

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

 

00185  - 00001 - 6.0    - 00021  - INCLUIR PERDA DA VALIDADE DA MP252 NA TABELA DE PARÂMETROS /PWS/Z

02022  - 00002 - 6.0    - 00024  - AJUSTES DSI MUNDANÇA SISCOMEX

02718  - 00003 - 6.0    - 00025  - DSI VALORES SE MODIFICAM TODA ATUALIZAÇÃO

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

CORREÇÃO NO CALCULO DA BASE DE CÁLCULO AO ENTRAR DO DETALHE DO ITEM

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

Palavras Chave:

PROPOE_ADVAL, ITAB_IT, /PWS/ZYCBT007, V_TOT_REAL

 

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

Objetos da nota:

REPS /PWS/MZYCI058F01

REPS /PWS/MZYCI058F03

REPS /PWS/MZYCI058I01

REPS /PWS/MZYCI058O01

 

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

Modificações efetuadas em REPS /PWS/MZYCI058F01

 

...

  IF NOT v_tcfr IS INITIAL.

    t_ivseg = itab_it-vlseg = ( v_cfr / ( v_tcfr ) ) * s_stvr.

    v_tot_seg = ( v_cfr / ( v_tcfr ) ) * v_sgtofat.

  ENDIF.

  IF p_tipo = 'I'.

    s_stvr_aux = s_stvr_aux + t_ivseg.

    s_stvr_aux1 = s_stvr_aux1 + v_tot_seg.

  ENDIF.

  CLEAR: t_ivdesp.

  LOOP AT itab_zycit049 WHERE baseii EQ 'X' AND NOT vlreal IS initial.

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

    IF v_idx EQ v_ipt AND v_ipt NE 1.

* << Fim da exclusão

      IF itab_zycit049-divabs  = 'X'.

        IF NOT v_ipt IS INITIAL.

          t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.

        ENDIF.

      ELSEIF itab_zycit049-peso = 'X'.

        IF NOT v_tntgew IS INITIAL.

          t_ivdes2 = ( wa_it-ntgew / v_tntgew )  *

                         itab_zycit049-vlreal.

        ENDIF.

      ELSEIF itab_zycit049-proporplan = 'X'.

        IF NOT v_tot_plan IS INITIAL.

          t_ivdes2 = ( v_it_plan / v_tot_plan  ) * itab_zycit049-vlreal.

        ENDIF.

      ELSE.

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

        IF NOT v_tot_plan IS INITIAL.

          t_ivdes2 = ( v_it_plan / v_tot_plan  ) * itab_zycit049-vlreal.

* << Fim da exclusão

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

      IF NOT v_tot_real IS INITIAL.

        READ TABLE itab_zycit003 WITH KEY

                    nrseq = itab_it-nrseq

                    ebeln = itab_it-ebeln

                    ebelp = itab_it-ebelp.

        IF sy-subrc EQ 0.

          t_ivdes2 =  ( itab_zycit003-vlreal *

                        itab_zycit003-qtd_iten

             / v_tot_real  ) * itab_zycit049-vlreal.

* << Fim da inclusão

        ENDIF.

      ENDIF.

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

      IF p_tipo = 'I'.

        itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.

        MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.

      ENDIF.

    ELSE.

      IF itab_zycit049-divabs  = 'X'.

        IF NOT v_ipt IS INITIAL.

          t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.

        ENDIF.

      ELSEIF itab_zycit049-peso = 'X'.

        IF NOT v_tntgew IS INITIAL.

          t_ivdes2 = ( wa_it-ntgew / v_tntgew )  *

                         itab_zycit049-vlreal.

        ENDIF.

      ELSEIF itab_zycit049-proporplan = 'X'.

        IF NOT v_tot_plan IS INITIAL.

          t_ivdes2 = ( v_it_plan / v_tot_plan  ) * itab_zycit049-vlreal.

        ENDIF.

      ELSE.

        IF NOT v_tot_plan IS INITIAL.

          t_ivdes2 = ( v_it_plan / v_tot_plan  ) * itab_zycit049-vlreal.

        ENDIF.

* << Fim da exclusão

      ENDIF.

      IF p_tipo = 'I'.

        itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.

        MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.

      ENDIF.

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

    ENDIF.

    IF itab_zycit049-divabs  = 'X'.

      IF NOT v_ipt IS INITIAL.

        t_ivdes3 = ( 1 / v_ipt ) * itab_zycit049-vldp.

      ENDIF.

    ELSEIF itab_zycit049-peso = 'X'.

      IF NOT v_tntgew IS INITIAL.

        t_ivdes3 = ( wa_it-ntgew / v_tntgew )  * itab_zycit049-vldp.

      ENDIF.

    ELSEIF itab_zycit049-proporplan = 'X'.

      IF NOT v_tot_plan IS INITIAL.

        t_ivdes3 = ( v_it_plan / v_tot_plan  ) * itab_zycit049-vlreal.

      ENDIF.

    ELSE.

      IF NOT v_tot_plan IS INITIAL.

        t_ivdes3 = (  v_it_plan / v_tot_plan   ) * itab_zycit049-vldp.

      ENDIF.

    ENDIF.

    IF itab_zycit049-tipo = 'D'.

      t_ivdes2 = t_ivdes2 * -1.

      t_ivdes3 = t_ivdes3 * -1.

    ENDIF.

* << Fim da exclusão

    IF t_ivdes2 > 0.

      t_ivdesp = t_ivdesp + t_ivdes2.

    ENDIF.

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

    IF p_tipo = 'I'.

      IF /pws/zycie085-mdadicao = 'S'.

        IF /pws/zycie085-waersfob EQ itab_zycit049-waers.

        ENDIF.

      ENDIF.

      IF itab_zycit049-tipo = 'D'.

        CLEAR s_fbvr_s_d.

        IF t_ivdes2 LT 0.

          s_fbvr_s_d = s_fbvr.

        ELSE.

          s_fbvr_s_d = s_fbvr.

        ENDIF.

      ELSEIF itab_zycit049-tipo = 'A'.

      ENDIF.

    ELSEIF p_tipo = 'A'.

      IF itab_zycit049-tipo = 'A'.

        READ TABLE itab_zycit049b WITH KEY

                                  coddesp = itab_zycit049-coddesp.

        IF sy-subrc EQ 0.

          itab_zycit049b-vlreal = itab_zycit049b-vlreal + t_ivdes2.

          itab_zycit049b-vldp   = itab_zycit049b-vldp   + t_ivdes3.

          MODIFY itab_zycit049b INDEX sy-tabix TRANSPORTING

                 vldp vlreal.

        ENDIF.

      ELSEIF itab_zycit049-tipo = 'D'.

        READ TABLE itab_zycit049c WITH KEY

                                  coddesp = itab_zycit049-coddesp.

        IF sy-subrc EQ 0.

          itab_zycit049c-vlreal = itab_zycit049c-vlreal + t_ivdes2.

          itab_zycit049c-vldp   = itab_zycit049c-vldp   + t_ivdes3.

          MODIFY itab_zycit049c INDEX sy-tabix TRANSPORTING

                 vldp vlreal.

        ENDIF.

      ENDIF.

    ENDIF.

* << Fim da exclusão

  ENDLOOP.

  CASE s_inco1_ci.

    WHEN 'CIF'.

      t_dif_seg =  v_tsegfat - v_sgtofat.

      t_dif_seg = ( v_cfr / ( v_tcfr ) ) * t_dif_seg.

  ENDCASE.

  CASE s_inco1_ci.

    WHEN 'FOB'.

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

      t_ivadu = t_ivmle.

* << Fim da exclusão

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

      t_ivadu = t_ivmle + t_ivseg + t_ivfre + t_ivdesp.

* << Fim da inclusão

    WHEN 'C&F'.

      t_ivmle = t_ivmle.

      t_vmle = t_vmle + v_tot_fre.

      t_vmle_d2 = t_vmle.

      t_ivmle_d2 =   t_vmle_d2 * /pws/zycie100a-dttaxbem.

      t_ivadu = t_ivmle + t_ivseg + t_ivdesp + t_ivfre.

      t_vmle2 = t_vmle.

    WHEN 'CIF'.

      t_ivmle = t_ivmle + ( t_dif_seg * /pws/zycie085-ukursseg ).

      t_ivmle_d2 = t_ivmle + t_ivfre + t_ivseg .

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI058F03

 

FORM calc_init USING p_tipo.

  DATA: v_qtd_iten LIKE /pws/zycie003-qtd_iten,

        v_ntgew LIKE /pws/zycit003-ntgew.

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

  clear v_tot_real.

* << Fim da inclusão

  IF itab_zycit049[] IS INITIAL.

    SELECT * FROM /pws/zycit049 INTO TABLE itab_zycit049

             WHERE nrseq   = /pws/zycie085-nrseqdi.

  ENDIF.

  IF p_tipo = 'I'.

    LOOP AT itab_zycit049.

      CLEAR itab_zycit049-vldp_aux.

      MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.

    ENDLOOP.

    PERFORM data_sort.

...

 

...

    READ TABLE itab_zycit003 WITH KEY

                              nrseq = itab_it-nrseq

                              ebeln = itab_it-ebeln

                              ebelp = itab_it-ebelp.

    IF itab_it-qtd_itend NE '' AND v_dit = 'N'

       AND itab_it-vlreald IS INITIAL.

      itab_it-vlreald = itab_it-vlreal + ( ( v_tdif *

       itab_zycit003-ntgew / v_ntgew ) / itab_zycit003-qtd_iten ).

      MODIFY itab_it.

    ENDIF.

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

       v_tot_real = v_tot_real +

    ( itab_zycit003-vlreal * itab_zycit003-qtd_iten ).

    v_tot_plan = v_tot_plan +

      (   itab_zycit003-qtd_iten * itab_zycit003-netpr ).

* << Fim da inclusão

  ENDLOOP.

  LOOP AT itab_it.

    IF NOT itab_it-vlreald IS INITIAL.

      itab_it-vlreal = itab_it-vlreald.

    ENDIF.

    CLEAR: v_tvaln, v_qtd_iten.

    v_qtd_iten = itab_it-qtd_iten.

    v_tntgew = v_tntgew + itab_it-ntgew.

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

    v_tot_plan = v_tot_plan + (   v_qtd_iten * itab_it-netpr ).

* << Fim da exclusão

    v_tmle   = v_tmle   + ( ( v_qtd_iten * itab_it-vlreal ) *

                              itab_it-dttaxbem ).

    v_tfrefat = v_tfrefat + itab_it-vlfre_fat.

    v_rfrefat = v_rfrefat + ( itab_it-vlfre_fat * itab_it-dttaxbem ).

    v_tsegfat = v_tsegfat + itab_it-vlseg_fat.

    v_rsegfat = v_rsegfat + ( itab_it-vlseg_fat * itab_it-dttaxbem ).

    IF p_tipo = 'I'.

      itab_it-seq = sy-tabix.

      MODIFY itab_it INDEX sy-tabix TRANSPORTING seq vlreal.

    ENDIF.

...

 

...

       WHERE regio = ' '

       AND   lei = 'MP255'.

  ENDIF.

  CLEAR v_nova.

  IF /pws/zycie085-dtuserc IS INITIAL.

    /pws/zycie085-dtuserc = sy-datum.

  ENDIF.

  LOOP AT itab_zycit049 WHERE baseicms EQ 'X' AND NOT vlreal IS initial.

    IF /pws/zycit000-flag_txsisc IS INITIAL OR

       wa_it000-cod_sisc NE itab_zycit049-tpdesp.

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

      IF v_idx EQ v_ipt AND v_ipt NE 1.

        t_ivdes2 = itab_zycit049-vlreal - itab_zycit049-vldp_aux.

      ELSE.

* << Fim da exclusão

        IF itab_zycit049-divabs EQ 'X'.

          t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.

        ELSEIF itab_zycit049-peso EQ 'X'.

          t_ivdes2 = ( wa_it-ntgew / v_tntgew ) * itab_zycit049-vlreal.

        ELSEIF itab_zycit049-proporplan EQ 'X'.

          t_ivdes2 = ( v_it_plan / v_tot_plan  ) * itab_zycit049-vlreal.

        ELSE.

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

          t_ivdes2 = ( v_it_plan / v_tot_plan  ) * itab_zycit049-vlreal.

* << Fim da exclusão

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

      IF NOT v_tot_real IS INITIAL.

        READ TABLE itab_zycit003 WITH KEY

                    nrseq = itab_it-nrseq

                    ebeln = itab_it-ebeln

                    ebelp = itab_it-ebelp.

        IF sy-subrc EQ 0.

          t_ivdes2 =  ( itab_zycit003-vlreal *

                        itab_zycit003-qtd_iten

             / v_tot_real  ) * itab_zycit049-vlreal.

        ENDIF.

* << Fim da inclusão

        ENDIF.

        IF p_tipo = 'I'.

          itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.

          MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.

        ENDIF.

      ENDIF.

      t_ivdesp = t_ivdesp + t_ivdes2.

    ENDIF.

  ENDLOOP.

  CLEAR: v_nr_itens, v_desp. CLEAR: itab_zycit100_temp.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI058I01

 

...

  ENDCASE.

  CLEAR: sy-ucomm.

ENDMODULE.

MODULE modi_data049 INPUT.

  itab_zycit049-tpdesp = /pws/zycie049-tpdesp.

  itab_zycit049-descr  = /pws/zycie049-descr.

  itab_zycit049-vldp   = /pws/zycie049-vldp.

  itab_zycit049-waers  = /pws/zycie049-waers.

  IF NOT itab_zycit049-vldp   IS INITIAL.

    if /pws/zycbt007-waersb is initial.

* >> Início da exclusão: MODULE MODI_DATA049

  SELECT SINGLE * FROM /pws/zycbt007 INTO wa_zycbt007

* << Fim da exclusão

* >> Início da inclusão: MODULE MODI_DATA049

    SELECT SINGLE *

      FROM /pws/zycbt007

* << Fim da inclusão

                  WHERE bukrs EQ /pws/zycie085-bukrs.

    endif.

    IF itab_zycit049-waers  NE  /pws/zycbt007-waersb.

      PERFORM taxa_converte USING    /pws/zycie049-waers

 /pws/zycie085-dttax

                            CHANGING s_tax.

      itab_zycit049-vlreal = itab_zycit049-vldp * s_tax.

    ELSE.

      itab_zycit049-vlreal = itab_zycit049-vldp.

    ENDIF.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI058O01

 

...

ENDMODULE.

MODULE fill_consist OUTPUT.

  PERFORM fill_codfun.

  PERFORM fill_clas.

ENDMODULE.

MODULE medida_estatistica OUTPUT.

  v_medida = /pws/zycie003-meinsest.

ENDMODULE.

MODULE propoe_adval OUTPUT.

  IF v_propoe IS INITIAL.

* >> Início da exclusão: MODULE PROPOE_ADVAL

    IF v_dit = 'S'.

* << Fim da exclusão

      LOOP AT itab_it.

        IF sy-tcode = '/PWS/ZYCI058_C'.

          SELECT SINGLE * FROM t001 WHERE bukrs = /pws/zycie085-bukrs.

          SELECT SINGLE * FROM lfa1 WHERE lifnr = /pws/zycie003-lifnr

                                      AND land1 = t001-land1.

          IF sy-subrc EQ 0.

            SELECT SINGLE * FROM j_1btregc INTO j_1btregc

               WHERE land1 = 'BR'

                 AND country = lfa1-land1.

            SELECT SINGLE * FROM /pws/zycit107

              INTO /pws/zycit107

               WHERE land1 = lfa1-land1

                 AND mercosul = 'X'.

            IF sy-subrc = 0.

              CLEAR /pws/zycie003-advalii.

            ELSE.

              /pws/zycie003-advalii = itab_it-aliqii.

            ENDIF.

          ENDIF.

        ENDIF.

* >> Início da exclusão: MODULE PROPOE_ADVAL

        IF sy-tcode = '/PWS/ZYCI058_C'

        AND NOT itab_it-aliqipi IS INITIAL.

          /pws/zycie003-advalipi = itab_it-aliqipi.

        ENDIF.

        IF sy-tcode = '/PWS/ZYCI058_C'.

          /pws/zycie003-advalicms = itab_it-aliqicms.

        ENDIF.

* << Fim da exclusão

        MODIFY itab_it.

      ENDLOOP.

* >> Início da exclusão: MODULE PROPOE_ADVAL

    ELSEIF v_dit = 'N'.

      IF sy-tcode = '/PWS/ZYCI023_C' AND /pws/zycie003-advalii IS

 INITIAL.

        SELECT SINGLE * FROM t001 WHERE bukrs = /pws/zycie085-bukrs.

        SELECT SINGLE * FROM lfa1 WHERE lifnr = /pws/zycie003-lifnr

                                  AND   land1 = t001-land1.

        IF sy-subrc EQ 0.

          SELECT SINGLE * FROM j_1btregc INTO j_1btregc

             WHERE land1 = 'BR'

               AND country = lfa1-land1.

          SELECT SINGLE * FROM /pws/zycit107

            INTO /pws/zycit107

             WHERE land1 = lfa1-land1

               AND mercosul = 'X'.

          IF sy-subrc = 0.

            CLEAR /pws/zycie003-advalii.

          ELSE.

            /pws/zycie003-advalii = /pws/zycie003-aliqii.

          ENDIF.

        ENDIF.

      ENDIF.

      IF sy-tcode = '/PWS/ZYCI023_C' AND /pws/zycie003-advalipi IS

 INITIAL.

        /pws/zycie003-advalipi = /pws/zycie003-aliqipi.

      ENDIF.

      IF sy-tcode = '/PWS/ZYCI023_C' AND /pws/zycie003-advalicms IS

 INITIAL.

        /pws/zycie003-advalicms = /pws/zycie003-aliqicms.

      ENDIF.

    ENDIF.

* << Fim da exclusão

  ENDIF.

  v_propoe = 'X'.

  IF NOT wa_it-ebeln IS INITIAL AND NOT wa_it-ebelp IS INITIAL.

    READ TABLE itab_it WITH KEY ebelp = wa_it-ebelp

                                ebeln = wa_it-ebeln.

    IF sy-subrc EQ 0.

      IF itab_it-advalii NE /pws/zycie003-advalii.

        itab_it-advalii  = /pws/zycie003-advalii.

        MODIFY itab_it INDEX sy-tabix.

      ENDIF.

...