CE PLUS - Nota 003924

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DI

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

Data/Hora Última Alteração: 22/02/2011 13:41:56

Descrição da Nota: ERRO NO RATEIO DE VALOR DE DESPESAS DA DI.

Sintoma

Erro no rateio de valor de despesas.

 

 

Solução

Ajuste na declaração de tabelas.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

PROBLEMAS COM O VALOR DO RATEIO

VISUALIZAÇÃO DO RATEIO DE DESPESAS DA DI ESTÁ INCORRETO

PROBLEMA COM O RATEIO DA DESPESA DE ARMAZENAGEM

Informações Complementares

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

Nota Número 03924 Data: 14/06/2007 Hora: 14:57:58

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

 

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

Nota Número              : 03924

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00001

Agrupamento              : 00170

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

Referência às notas relacionadas:

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

 

00759  - 00001 - 6.0    - 00022  - PROBLEMAS COM O VALOR DO RATEIO

01227  - 00002 - 6.0    - 00023  - VISUALIZAÇÃO DO RATEIO DE DESPESAS DA DI ESTÁ INCORRETO

03916  - 00003 - 7.0    - 00001  - PROBLEMA COM O RATEIO DA DESPESA DE ARMAZENAGEM

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

ERRO NO RATEIO DE VALOR DE DESPESAS DA DI.

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

Palavras Chave:

ERRO - VALOR DE RATEIO - DESPESAS - DI

 

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

Objetos da nota:

REPS /PWS/MZYCI023F03

REPS /PWS/MZYCI023F01

REPS /PWS/MZYCI023X01

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

Modificações efetuadas em REPS /PWS/MZYCI023F01

...

  CLEAR v_vlreal.

  SELECT SINGLE qtd_iten ntgewd FROM /pws/zycit003 INTO

(/pws/zycie003-qtd_iten, /pws/zycie003-ntgewd)

     WHERE nrseq EQ /pws/zycie003-nrseq

     AND   ebeln EQ /pws/zycie003-ebeln

     AND   ebelp EQ /pws/zycie003-ebelp.

  v_vlreal  = /pws/zycie003-vlreal.

  IF NOT /pws/zycie003-qtd_itend IS INITIAL.

    t_vmle3 = t_vmle_d2 = t_vmle  = v_vlreal * /pws/zycie003-qtd_itend.

    t_vmle2 = /pws/zycie003-vlreal *  /pws/zycie003-qtd_itend.

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

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

* << Fim da exclusão

  ELSE.

    t_vmle3 = t_vmle_d2 = t_vmle  = v_vlreal * /pws/zycie003-qtd_iten.

    t_vmle2 = /pws/zycie003-vlreal *  /pws/zycie003-qtd_iten.

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

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

* << Fim da exclusão

  ENDIF.

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

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

* << Fim da inclusão

  v_frete_nm  = v_bltofat.

  IF NOT v_ntgewd IS INITIAL.

    t_ivfre = ( /pws/zycie003-ntgewd / v_ntgewd ) * s_frvr.

    v_tot_fre = ( /pws/zycie003-ntgewd / v_ntgewd ) * v_frete_nm.

  ELSE.

    t_ivfre = ( /pws/zycie003-ntgew / v_ntgew ) * s_frvr.

    v_tot_fre = ( /pws/zycie003-ntgew / v_ntgew ) * v_frete_nm.

  ENDIF.

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

    IF /pws/zycie093-waersfre NE itab_it-waersbem.

...

 

...

    v_ntgewd IS INITIAL.

    IF NOT /pws/zycie093-ternacion IS INITIAL.

      v_ternacion = /pws/zycie093-ternacion.

      PERFORM trata_decimais USING /pws/zycie085-waersfre

                                   v_ternacion   .

      IF /pws/zycie085-waersfob NE /pws/zycie093-waersfre .

        PERFORM: calc_conv_moeda:

                 USING    /pws/zycie093-waersfre

                          /pws/zycie085-waersfob

                 CHANGING v_ternacion.

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

        t_vmle = t_vmle - ( ( /pws/zycie003-ntgew / v_tntgew )

* << Fim da exclusão

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

        endif.

        v_diftern =  ( ( /pws/zycie003-ntgew / v_tntgew )

* << Fim da inclusão

                         * v_ternacion ).

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

      ELSE.

        t_vmle = t_vmle - ( ( /pws/zycie003-ntgew / v_tntgew )

                         * v_ternacion ).

* << Fim da exclusão

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

        t_vmle = t_vmle - v_diftern .

* << Fim da inclusão

      ENDIF.

    ENDIF.

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

  ENDIF.

* << Fim da exclusão

  IF itab_zycit003-qtd_itend IS INITIAL.

    t_vmle_d2 = t_vmle = t_vmle + t_vldif.

  ENDIF.

  itab_it-vlfob = t_vmle.

  /pws/zycie100a-vlfob = t_vmle.

ENDFORM.

FORM load_itax USING p_tipo.

  DATA v_desp_fren LIKE /pws/zycit049-vldp.

  DATA t_dif_seg LIKE /pws/zycit100-vlseg.

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

  CLEAR: t_ivdesp.

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

    IF itab_zycit049-divabs  = 'X'.

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

    ELSEIF itab_zycit049-peso = 'X'.

      t_ivdes2 = ( wa_it-ntgew / v_tntgew )  *

                     itab_zycit049-vlreal.

    ELSEIF itab_zycit049-proporplan = 'X'.

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

    ELSE.

      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.

      ENDIF.

    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.

    IF t_ivdes2 > 0.

      t_ivdesp = t_ivdesp + t_ivdes2.

    ENDIF.

  ENDLOOP.

* << Fim da inclusão

  IF /pws/zycie100a-dttaxbem IS INITIAL.

    MOVE itab_it-dttaxbem TO /pws/zycie100a-dttaxbem.

  ENDIF.

  IF p_tipo NE 'B' OR t_ivmle IS INITIAL OR v_dit = 'N'.

    t_ivmle_d2 = t_ivmle = t_vmle * /pws/zycie100a-dttaxbem.

  ENDIF.

  PERFORM valor_cfr USING p_tipo.

  IF /pws/zycit000-rat_seg_fob IS INITIAL.

    CASE s_inco1_ci.

      WHEN 'C&F'.

...

 

...

    ENDCASE.

  ELSE.

    IF s_inco1_ci EQ 'CIF'.

    ELSEIF s_inco1_ci EQ 'C&F'.

      v_cfr = t_ivmle + t_ivfre.

    ELSE.

      v_cfr = t_ivmle.

    ENDIF.

  ENDIF.

  IF s_inco1_ci EQ 'CIF'.

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

    IF NOT itab_it-qtd_itend 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.

        v_cif_fat = ( itab_zycit003-vlreal * itab_it-qtd_itend ) +

        itab_it-vlfre_fat + itab_it-vlseg_fat .

      ENDIF.

    ELSE.

* << Fim da inclusão

    v_cif_fat = ( itab_it-vlreal * itab_it-qtd_iten ) +

        itab_it-vlfre_fat + itab_it-vlseg_fat .

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

    ENDIF.

* << Fim da inclusão

    IF NOT v_tcif_fat IS INITIAL.

      t_ivseg = itab_it-vlseg = ( v_cif_fat / v_tcif_fat ) *

                s_stvr.

      v_tot_seg = ( v_cif_fat / v_tcif_fat ) * v_sgtofat.

    ENDIF.

  ELSE.

    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.

  ENDIF.

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

  CLEAR: t_ivdesp.

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

    IF v_idx EQ v_ipt AND v_ipt NE 1.

      IF itab_zycit049-divabs  = 'X'.

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

      ELSEIF itab_zycit049-peso = 'X'.

        t_ivdes2 = ( wa_it-ntgew / v_tntgew )  *

                       itab_zycit049-vlreal.

      ELSEIF itab_zycit049-proporplan = 'X'.

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

      ELSE.

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

      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.

    ELSE.

      IF itab_zycit049-divabs  = 'X'.

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

      ELSEIF itab_zycit049-peso = 'X'.

        t_ivdes2 = ( wa_it-ntgew / v_tntgew )  *

                       itab_zycit049-vlreal.

      ELSEIF itab_zycit049-proporplan = 'X'.

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

      ELSE.

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

      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.

    IF itab_zycit049-divabs  = 'X'.

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

    ELSEIF itab_zycit049-peso = 'X'.

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

    ELSEIF itab_zycit049-proporplan = 'X'.

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

    ELSE.

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

    ENDIF.

    IF t_ivdes2 > 0.

      t_ivdesp = t_ivdesp + t_ivdes2.

    ENDIF.

    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.

  ENDLOOP.

* << Fim da exclusão

  CASE s_inco1_ci.

    WHEN 'CIF'.

      t_dif_seg   = /pws/zycie003-vlseg_fat - v_tot_seg  .

  ENDCASE.

  IF v_dit EQ 'N'.

    CASE s_inco1_ci.

      WHEN 'FOB'.

        t_ivadu = t_ivmle + t_ivseg + t_ivdesp + t_ivfre.

      WHEN 'C&F'.

        t_ivmle_d2 = t_ivmle = t_ivmle + t_ivfre + v_desp_fren.

...

 

...

          IF NOT itab_it-qtd_itend IS INITIAL.

            t_vmle_d2 = t_vmle2 = t_vmle2 + v_tot_fre.

          ELSE.

            t_vmle_d2 = t_vmle = t_vmle + v_tot_fre.

            t_vmle2 = t_vmle.

          ENDIF.

        ENDIF.

        t_ivmle2 = t_vmle2 * itab_it-dttaxbem.

        t_ivadu = t_ivmle2 + t_ivseg + t_ivdesp.

      WHEN 'CIF'.

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

        t_ivmle_d2 = t_ivmle = t_ivmle +  v_desp_fren +

                t_ivfre  + t_ivseg +

                      ( t_dif_seg * /pws/zycie085-ukursfob ).

        IF NOT v_desp_fren IS INITIAL.

          IF NOT /pws/zycie085-ukursfob IS INITIAL.

            t_vmle_d2 = t_vmle = t_vmle + v_tot_fre + v_tot_seg +

                   ( v_desp_fren / /pws/zycie085-ukursfob ) + t_dif_seg.

          ELSE.

            MESSAGE i015 WITH text-221.

* << Fim da exclusão

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

        clear v_difgran .

        IF NOT itab_it-qtd_itend 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.

            v_difgran =

            ( ( ( ( itab_zycit003-vlreal * itab_zycit003-qtd_iten ) +

                    itab_it-vlfre_fat + itab_it-vlseg_fat ) -

                    v_tot_fre - v_tot_seg -   v_diftern )  /

                    itab_zycit003-qtd_iten ) *

                   ( itab_zycit003-qtd_iten - itab_zycit003-qtd_itend ).

            t_vmle =

           ( ( ( (   itab_zycit003-vlreal * itab_zycit003-qtd_iten ) +

                     itab_it-vlfre_fat + itab_it-vlseg_fat ) -

               ( v_tot_fre + v_tot_seg + v_diftern ) ) - v_difgran ).

          itab_it-vlfob = t_vmle.

          /pws/zycie100a-vlfob = t_vmle.

            t_vmle_d2 = t_vmle = t_vmle + v_tot_fre  + v_tot_seg .

            v_difgran = v_difgran * /pws/zycie085-ukursfob.

            v_diftern =  v_diftern * /pws/zycie085-ukursfob .

            t_ivmle  =

            ( ( (  ( itab_zycit003-vlreal *

                  /pws/zycie085-ukursfob ) * itab_zycit003-qtd_iten ) +

                     ( itab_it-vlfre_fat * /pws/zycie085-ukursfob ) +

                ( itab_it-vlseg_fat * /pws/zycie085-ukursfob ) ) -

              ( itab_it-vlfre + itab_it-vlseg + v_diftern ) ) -

             v_difgran  .

              t_ivmle_d2 = t_ivmle  =

              t_ivmle + v_desp_fren +  t_ivfre  + t_ivseg .

* << Fim da inclusão

          ENDIF.

        ELSE.

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

          t_vmle_d2 = t_vmle = t_vmle +  v_tot_fre +

                    v_tot_seg + t_dif_seg.

* << Fim da exclusão

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

            t_vmle =

           ( ( (   itab_it-vlreal * itab_it-qtd_iten ) +

               itab_it-vlfre_fat + itab_it-vlseg_fat  ) -

                     ( v_tot_fre + v_tot_seg + v_diftern ) ) .

          itab_it-vlfob = t_vmle.

          /pws/zycie100a-vlfob = t_vmle.

            t_vmle_d2 = t_vmle = t_vmle + v_tot_fre  + v_tot_seg .

            v_diftern =  v_diftern * /pws/zycie085-ukursfob .

            t_ivmle_d2 =  t_ivmle  =

             ( ( (  ( itab_it-vlreal *

                  /pws/zycie085-ukursfob ) * itab_it-qtd_iten ) +

                      ( itab_it-vlfre_fat * /pws/zycie085-ukursfob ) +

                     ( itab_it-vlseg_fat * /pws/zycie085-ukursfob ) ) -

              ( itab_it-vlfre + itab_it-vlseg + v_diftern ) ).

              t_ivmle_d2 = t_ivmle  =

              t_ivmle + v_desp_fren +  t_ivfre  + t_ivseg .

* << Fim da inclusão

        ENDIF.

        t_vmle2 = t_vmle.

        t_ivmle2 = t_vmle2 * itab_it-dttaxbem.

        t_ivadu = t_ivmle2 + t_ivdesp - v_desp_fren.

    ENDCASE.

  ELSE.

    CASE s_inco1_ci.

      WHEN 'FOB'.

        t_ivadu = t_ivmle + t_ivseg + t_ivfre + t_ivdesp.

      WHEN 'C&F'.

...

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F03

 

FORM calc_init USING p_tipo.

  CLEAR v_tcif_fat.

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

  CLEAR v_tot_real.

* << Fim da inclusão

  DATA: v_qtd_iten LIKE /pws/zycie003-qtd_iten.

  DATA: v_diffrete LIKE v_tdif ,

        v_diffrete_aux LIKE v_tdif .

  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.

      v_tabix = sy-tabix.

...

 

...

        /pws/zycie093-collect - /pws/zycie093-ternacion.

        PERFORM calc_conv_frete CHANGING v_bltofat.

    ENDCASE.

  ENDIF.

  CLEAR v_ntgew.

  CLEAR v_tfrefat  .

  CLEAR v_ntgewd.

  LOOP AT itab_zycit003.

    v_ntgew = v_ntgew + itab_zycit003-ntgew.

    v_ntgewd = v_ntgewd + itab_zycit003-ntgewd.

* >> 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.

    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'.

      IF NOT v_ntgewd IS INITIAL.

        v_diffrete =  ( v_tdif * - 1 ) *

              ( itab_zycit003-ntgewd / v_ntgewd ).

...

 

...

    IF NOT itab_zycit003-ntgewd IS INITIAL.

      itab_it-ntgew = itab_zycit003-ntgewd.

    ENDIF.

    CLEAR: v_tvaln, v_qtd_iten.

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

      v_qtd_iten = itab_it-qtd_itend.

    ELSE.

      v_qtd_iten = itab_it-qtd_iten.

    ENDIF.

    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 ).

    IF /pws/zycie085-waersfob NE itab_it-waers.

      PERFORM: calc_conv_moeda USING    itab_it-waers

                                        /pws/zycie085-waersfob

                               CHANGING itab_it-vlfre_fat.

      v_tfrefat = v_tfrefat + itab_it-vlfre_fat.

    ELSE.

      v_tfrefat = v_tfrefat + itab_it-vlfre_fat.

    ENDIF.

...

 

...

        /pws/zycie085-ukursfob  = v_taxa.

      ENDIF.

    ELSE.

      IF NOT itab_it-vlreald IS INITIAL.

        v_tval   = v_tval   + (  itab_it-qtd_itend * itab_it-vlreal ).

      ELSE.

        v_tval   = v_tval   + (  itab_it-qtd_iten * itab_it-vlreal ).

      ENDIF.

    ENDIF.

    IF s_inco1_ci EQ 'CIF'.

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

      v_tcif_fat = v_tcif_fat + ( ( itab_it-vlreal * itab_it-qtd_iten )

* << Fim da exclusão

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

      v_tcif_fat = v_tcif_fat + ( ( itab_zycit003-vlreal *

              itab_it-qtd_iten )

* << Fim da inclusão

                   + itab_it-vlfre_fat + itab_it-vlseg_fat ).

    ENDIF.

  ENDLOOP.

  CASE s_inco1_ci.

    WHEN 'CIF'.

      v_tdif = v_tfrefat - v_bltofat +

               v_tsegfat - v_sgtofat.

  ENDCASE.

  IF p_tipo NE 'A'.

    READ TABLE itab_zycit003 INDEX 1.

...

 

...

    IF itab_zycit003-qtd_itend IS INITIAL.

      v_tval3 = v_tval2 = v_tval + v_tdif .

    ELSE.

      v_tval3 = v_tval2 = v_tval.

    ENDIF.

  ENDIF.

ENDFORM.

FORM load_iicms USING p_tipo.

  CLEAR: t_ivdesp, v_advii, v_advipi, v_advicms,

          v_advpis, v_advcof, v_desp.

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

 DATA itab_zycit003_rateio LIKE /pws/zycit003 OCCURS 0 WITH HEADER LINE.

* << Fim da exclusão

  SELECT  * FROM /pws/zycit438 INTO TABLE itab_zycit438

     WHERE regio = v_region

     AND   lei = 'MP252'.

  IF sy-subrc NE 0.

    SELECT  * FROM /pws/zycit438 INTO TABLE itab_zycit438

       WHERE regio = ' '

       AND   lei = 'MP252'.

  ENDIF.

  SELECT  * FROM /pws/zycit438 APPENDING TABLE itab_zycit438

     WHERE regio = v_region

     AND   lei = 'MP255'.

  IF sy-subrc NE 0.

    SELECT  * FROM /pws/zycit438 APPENDING TABLE itab_zycit438

       WHERE regio = ' '

       AND   lei = 'MP255'.

  ENDIF.

  CLEAR v_nova.

  IF /pws/zycie085-dtuserc IS INITIAL.

    /pws/zycie085-dtuserc = sy-datlo.

  ENDIF.

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

  IF NOT itab_it[] IS INITIAL.

    SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003_rateio

      FOR ALL ENTRIES IN itab_it

      WHERE nrseq = itab_it-nrseq AND

            ebeln = itab_it-ebeln AND

            ebelp = itab_it-ebelp.

  ENDIF.

  CLEAR v_tot_real.

  LOOP AT itab_zycit003_rateio.

    v_tot_real = v_tot_real +

    ( itab_zycit003_rateio-vlreal * itab_zycit003_rateio-qtd_iten ).

  ENDLOOP.

  READ TABLE itab_zycit003_rateio

                        WITH KEY nrseq = itab_it-nrseq

                                 ebeln = itab_it-ebeln

                                 ebelp = itab_it-ebelp.

* << Fim da exclusão

  CLEAR : v_fatx, v_xa , v_xb , v_xc, v_faty, v_fatpc.

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

    IF /pws/zycit000-flag_txsisc IS INITIAL OR v_dit NE 'N' OR

       wa_it000-cod_sisc NE itab_zycit049-tpdesp.

      IF NOT itab_zycit049-tipo EQ 'D'.

        IF v_idx EQ v_ipt AND v_ipt NE 1.

          t_ivdes2 = itab_zycit049-vlreal - itab_zycit049-vldp_aux.

        ELSE.

          IF itab_zycit049-divabs EQ 'X'.

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

...

 

...

           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.

            IF /pws/zycit062-bs_rat_icms EQ 'CIF'.

              t_ivdes2 = ( itab_zycit049-vlreal *

              ( itab_it-vlfob + v_tot_fre + v_tot_seg ) )

               / ( /pws/zycie085-vlfob  + v_bltofat + v_sgtofat ) .

            ELSE.

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

              t_ivdes2 =  ( itab_zycit003_rateio-vlreal *

                 itab_zycit003_rateio-qtd_iten

* << 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

* << Fim da inclusão

                 / v_tot_real  ) * itab_zycit049-vlreal.

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

                  endif.

              ENDIF.

* << Fim da inclusão

            ENDIF.

          ENDIF.

          IF p_tipo = 'I'.

            itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.

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

            MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.

* << Fim da exclusão

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

            MODIFY itab_zycit049 TRANSPORTING vldp_aux.

* << Fim da inclusão

          ENDIF.

        ENDIF.

      ENDIF.

      t_ivdesp = t_ivdesp + t_ivdes2.

    ENDIF.

  ENDLOOP.

  CLEAR: v_nr_itens, v_desp. CLEAR: itab_zycit100_temp.

  REFRESH itab_zycit100_temp.

  MOVE itab_it[] TO itab_zycit100_temp[].

  IF itab_it-adicao IS INITIAL AND NOT /pws/zycit000-flag_txsisc IS

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F04

 

...

    /pws/zycie100a-basredpis = '0'.

  ENDIF.

  IF /pws/zycie100a-basredcof >= '100'.

    /pws/zycie100a-basredcof = '0'.

  ENDIF.

  IF /pws/zycie100a-codregtri EQ '4'.

    v_advii =  /pws/zycie100a-reduzida / 100 .

    IF  /pws/zycie100a-reduzida IS INITIAL.

      v_advii = /pws/zycie003-advalii / 100 .

    ENDIF.

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

  elseif /pws/zycie100a-codregtri eq '3' .

    clear v_advii.

* << Fim da inclusão

  ENDIF.

  IF /pws/zycie100a-codregtriipi EQ '2'.

    v_advipi =  /pws/zycie100a-reduzidaipi / 100.

    IF /pws/zycie100a-reduzidaipi IS INITIAL.

      v_advipi =  /pws/zycie003-advalipi / 100.

    ENDIF.

  ELSEIF /pws/zycie100a-codregtriipi EQ '4' AND

      /pws/zycie003-advalipi IS INITIAL.

    v_advipi = itab_it-ipi_recolher / itab_it-baseipi .

  ELSEIF /pws/zycie100a-codregtriipi EQ '1' .

...

 

...

            screen-input = '0'.

            CLEAR: /pws/zycie100a-aladi, a_aladi.

          ENDIF.

        ELSEIF screen-name EQ '/PWS/ZYCIE100A-ACORDORATE'.

          IF /pws/zycie100a-acordo IS INITIAL.

            screen-input = '0'.

            CLEAR: /pws/zycie100a-acordorate.

          ENDIF.

        ELSEIF screen-name EQ '/PWS/ZYCIE100A-REDUZIDA'.

          IF NOT /pws/zycie100a-percreduz IS INITIAL OR

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

             '12369' CA /pws/zycie100a-codregtri.

* << Fim da exclusão

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

             '123569' CA /pws/zycie100a-codregtri.

* << Fim da inclusão

            screen-input = '0'.

            CLEAR: /pws/zycie100a-reduzida.

          ENDIF.

        ELSEIF screen-name EQ '/PWS/ZYCIE100A-PERCREDUZ'.

          IF NOT /pws/zycie100a-reduzida IS INITIAL OR

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

             '12369' CA /pws/zycie100a-codregtri.

* << Fim da exclusão

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

             '123569' CA /pws/zycie100a-codregtri.

* << Fim da inclusão

            screen-input = '0'.

            CLEAR: /pws/zycie100a-percreduz.

          ENDIF.

        ELSEIF screen-name EQ '/PWS/ZYCIE100A-CODFUNLEG'.

          IF ' 178' CA /pws/zycie100a-codregtri.

            screen-input = '0'.

            CLEAR: /pws/zycie100a-codfunleg, t_fundes.

          ENDIF.

          IF v_existe_li EQ 'X'.

            screen-input = '0'.

...

 

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

Modificações efetuadas em REPS /PWS/MZYCI023X01

 

...

 

*>> Inicio Inclusão

DATA itab_zycit003_rateio LIKE /pws/zycit003 OCCURS 0 WITH HEADER LINE.

DATA: v_difgran LIKE /pws/zycie085-vlfob.

data: v_diftern type /pws/zycit085-vlfob.

*>> Fim inclusão

DATA: END OF COMMON PART.

 

 

 

...