CE PLUS - Nota 004750

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DI

Data/Hora da Publicação: 18/09/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 13:48:08

Descrição da Nota: ERRO RATEIO DESPESAS, VARIAÇÃO CAMBIAL, VLR DO SEGURO, GRANEL DA DI

Sintoma

- Erro no rateio das despesas dos itens da DI;

- a soma do rateio do seguro não bate com o valor total da carga 2 para processos de

Embarque CIF, granel .

- embarque CIF, rodoviário, o valor do FOB da pasta carga 2 está somando o valor do frete rodoviário

em território.A pasta aduaneira está correta.

- DI faz variação cambial para fatura do tipo P .

 

 

Solução

ajustar cálculos da DI.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

ERRO NO RATEIO DE VALOR DE DESPESAS DA DI.

FATURA DE DESPESA PARA EMBARQUES DE SERVIÇO

ERRO NO CÁLCULO DE DESPESAS E VALORES DA NF UTILIZANDO GRANEL + CIF

PROBLEMA COM O RATEIO DA DESPESA DE ARMAZENAGEM

Informações Complementares

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

Nota Número 04750 Data: 18/09/2007 Hora: 10:35:54

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

 

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

Nota Número              : 04750

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00002

Agrupamento              : 00012

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

Referência às notas relacionadas:

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

 

02396  - 00004 - 6.0    - 00025  - FATURA DE DESPESA PARA EMBARQUES DE SERVIÇO

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

03924  - 00002 - 7.0    - 00001  - ERRO NO RATEIO DE VALOR DE DESPESAS DA DI.

04009  - 00003 - 7.0    - 00001  - ERRO NO CÁLCULO DE DESPESAS E VALORES DA NF UTILIZANDO GRANEL + C

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

ERRO RATEIO DESPESAS, VARIAÇÃO CAMBIAL, VLR DO SEGURO, GRANEL DA DI

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

Palavras Chave:

RATEIO DESPESAS - VARIAÇÃO CAMBIAL - VALOR DO SEGURO

GRANEL - DI

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

Objetos da nota:

FUNC /PWS/ZYCI_RATEIO_CUSTO

REPS /PWS/MZYCI023F01

REPS /PWS/MZYCI023F03

REPS /PWS/MZYCI023F04

REPS /PWS/MZYCI023X01

 

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

Modificações efetuadas em FUNC /PWS/ZYCI_RATEIO_CUSTO

 

...

    LOOP AT itab_zycit036_aux WHERE codigo = 'FRETEI' AND

                                 origem = v_ori.

      v_tfrete = v_tfrete + itab_zycit036_aux-vlreal.

    ENDLOOP.

  ENDIF.

  LOOP AT itab_zycit003 .

    IF ( v_vinserv IS INITIAL AND

         itab_zycit003-servico IS INITIAL ) OR

         ( v_vinserv EQ 'X' AND itab_zycit003-servico EQ 'X' ) .

      v_vlfrete =  v_tfrete * ( itab_zycit003-ntgew / v_tpeso ).

* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

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

        PERFORM taxa_converte USING itab_zycit003-waers

                                        /pws/zycie085-dttax

                                                 t001-land1

                                           CHANGING  v_taxa.

        IF NOT v_taxa IS INITIAL.

          itab_zycit003-vlreal = itab_zycit003-vlreal * v_taxa.

          itab_zycit003-netpr  = itab_zycit003-netpr  * v_taxa.

        ENDIF.

        PERFORM taxa_converte USING  /pws/zycie085-waersfob

                                      /pws/zycie085-dttax

                                                 t001-land1

                                           CHANGING  v_taxa.

        IF NOT v_taxa IS INITIAL .

          itab_zycit003-vlreal = itab_zycit003-vlreal / v_taxa.

          itab_zycit003-netpr  = itab_zycit003-netpr  / v_taxa.

        ENDIF.

      ENDIF.

* << Fim da inclusão

      v_tot = v_tot + ( itab_zycit003-netpr * itab_zycit003-qtd_iten ).

      v_tot_vlreal = v_tot_vlreal + ( itab_zycit003-vlreal *

                      itab_zycit003-qtd_iten ).

    ENDIF.

  ENDLOOP.

if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

  LOOP AT itab_zycit443.

    IF NOT '356' CA itab_zycit443-codregtri .

      v_tot_ii   = itab_zycit443-vlii + v_tot_ii.

    ENDIF.

...

 

...

  ENDIF.

  endif.

  DESCRIBE TABLE itab_zycit003 LINES v_linha.

  IF v_programa EQ 'DC' OR v_programa EQ 'PC' OR

     v_programa EQ 'DI' OR

     ( v_programa EQ 'FAT' AND v_parametro(2) EQ '04' ).

    MOVE itab_zycit036[] TO itab_zycit036_aux[].

    LOOP AT itab_despesa WHERE netpr NE 0.

      CLEAR: v_tot_desp.

      LOOP AT itab_zycit003 .

* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

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

        PERFORM taxa_converte USING itab_zycit003-waers

                                        /pws/zycie085-dttax

                                                 t001-land1

                                           CHANGING  v_taxa.

        IF NOT v_taxa IS INITIAL.

          itab_zycit003-vlreal = itab_zycit003-vlreal * v_taxa.

          itab_zycit003-netpr  = itab_zycit003-netpr  * v_taxa.

        ENDIF.

        PERFORM taxa_converte USING  /pws/zycie085-waersfob

                                      /pws/zycie085-dttax

                                                 t001-land1

                                           CHANGING  v_taxa.

        IF NOT v_taxa IS INITIAL .

          itab_zycit003-vlreal = itab_zycit003-vlreal / v_taxa.

          itab_zycit003-netpr  = itab_zycit003-netpr  / v_taxa.

        ENDIF.

      ENDIF.

* << Fim da inclusão

        IF ( v_vinserv IS INITIAL AND

             itab_zycit003-servico IS INITIAL ) OR

             ( v_vinserv EQ 'X' AND itab_zycit003-servico EQ 'X' ) .

          CLEAR itab_zycit036_aux.

          IF  NOT itab_despesa-matuse IS INITIAL.

            READ TABLE itab_ekpo WITH KEY ebeln = itab_zycit003-ebeln

                                          ebelp = itab_zycit003-ebelp.

            IF itab_ekpo-j_1bmatuse NE itab_despesa-matuse .

              CONTINUE.

            ENDIF.

...

 

...

                        ( itab_zycit003-vlreal * itab_zycit003-qtd_iten

                           / v_tot_vlreal  ) * itab_despesa-netpr .

                      ENDIF.

                    ELSE.

                        itab_zycit036_aux-vlreal =

                        ( itab_zycit003-vlreal * itab_zycit003-qtd_iten

                           / v_tot_vlreal  ) * itab_despesa-netpr .

                      itab_zycit036_aux-waers_real = itab_despesa-waers.

                    ENDIF.

                  ELSE.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

                    IF NOT itab_zycit003-qtd_itend IS INITIAL.

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                                  itab_zycit003-qtd_itend / v_tot ) *

                                  itab_despesa-netpr.

                    ELSE.

* << Fim da exclusão

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                                  itab_zycit003-qtd_iten / v_tot ) *

                                  itab_despesa-netpr.

 

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

                    ENDIF.

* << Fim da exclusão

                    itab_zycit036_aux-waers_real = itab_despesa-waers.

                  ENDIF.

                ENDIF.

                IF NOT itab_despesa-waers IS INITIAL.

                  itab_zycit036_aux-waers_real = itab_despesa-waers.

                ELSE.

                  itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                ENDIF.

              ENDIF.

            ENDIF.

...

 

...

                        ( itab_zycit003-vlreal * itab_zycit003-qtd_iten

                           / v_tot_vlreal  ) * itab_despesa-netpr .

                      ENDIF.

                    ELSE.

                        itab_zycit036_aux-vlreal =

                        ( itab_zycit003-vlreal * itab_zycit003-qtd_iten

                           / v_tot_vlreal  ) * itab_despesa-netpr .

                      itab_zycit036_aux-waers_real = itab_despesa-waers.

                    ENDIF.

                  ELSE.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

                    IF NOT itab_zycit003-qtd_itend IS INITIAL.

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                                  itab_zycit003-qtd_itend / v_tot ) *

                                  itab_despesa-netpr.

                    ELSE.

* << Fim da exclusão

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                                 itab_zycit003-qtd_iten / v_tot ) *

                                 itab_despesa-netpr.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

                    ENDIF.

* << Fim da exclusão

                    itab_zycit036_aux-waers_real = itab_despesa-waers.

                  ENDIF.

                ENDIF.

                IF NOT itab_despesa-waers IS INITIAL.

...

 

...

                          ENDIF.

                        ELSE.

                          v_tfre = /pws/zycie085-vlfre.

                        ENDIF.

                        v_vtot = /pws/zycie085-vlfob + v_tfre  + v_tseg.

                        IF NOT v_vtot IS INITIAL.

                       itab_zycit036_aux-vlreal =  itab_despesa-netpr *

                         ( ( v_vfob +  v_vfre + v_vseg )  /  v_vtot  ) .

                        ENDIF.

                      ENDIF.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

                    ELSE.

                      IF NOT itab_zycit003-qtd_itend IS INITIAL.

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                                    itab_zycit003-qtd_itend / v_tot ) *

                                                     itab_despesa-netpr.

* << Fim da exclusão

                      ELSE.

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                                     itab_zycit003-qtd_iten / v_tot ) *

                                                     itab_despesa-netpr.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

                      ENDIF.

* << Fim da exclusão

                      itab_zycit036_aux-waers_real = itab_despesa-waers.

                    ENDIF.

                  ELSE.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

                    IF NOT itab_zycit003-qtd_itend IS INITIAL.

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                                  itab_zycit003-qtd_itend / v_tot ) *

                                  itab_despesa-netpr.

                    ELSE.

* << Fim da exclusão

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                                 itab_zycit003-qtd_iten / v_tot ) *

                                 itab_despesa-netpr.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

                    ENDIF.

* << Fim da exclusão

                    itab_zycit036_aux-waers_real = itab_despesa-waers.

                  ENDIF.

                ENDIF.

                IF NOT itab_despesa-waers IS INITIAL.

...

 

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

Modificações efetuadas em REPS /PWS/MZYCI023X01

 

...

 

* >> Início da inclusão:

        vlreal_dest   LIKE /pws/zycie003-vlreal,

* << Fim da inclusão

        mark,

END OF itab_it.

 

 

DATA: BEGIN OF itab_zycit049 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycie049.

DATA:   tipo      LIKE /pws/zycit019-tipo,

        coddesp   LIKE /pws/zycit000-cod_sisc,

        codigo    LIKE /pws/zycit019-codigo,

        baseicms  LIKE /pws/zycit020-baseicms,

        baseii    LIKE /pws/zycit020-baseii,

        reduz     LIKE /pws/zycie122-descricao_reduz,

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F01

 

...

  DATA v_desp_fren LIKE /pws/zycit049-vldp.

  DATA t_dif_seg LIKE /pws/zycit100-vlseg.

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

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

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

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

            PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                       /pws/zycie085-waersfob

                                     CHANGING  itab_zycit003-netpr.

          ENDIF.

          t_ivdes2 =

        ( ( itab_zycit003-netpr * itab_zycit003-qtd_iten ) /

            v_tot_plan  ) * itab_zycit049-vlreal.

        ENDIF.

      ENDIF.

* << Fim da inclusão

    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.

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

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

            PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                       /pws/zycie085-waersfob

                                     CHANGING  itab_zycit003-vlreal.

          ENDIF.

* << Fim da inclusão

          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.

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

      MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.

* << Fim da exclusão

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

      MODIFY itab_zycit049 TRANSPORTING vldp_aux.

* << Fim da inclusão

    ENDIF.

    IF t_ivdes2 > 0.

      t_ivdesp = t_ivdesp + t_ivdes2.

    ENDIF.

  ENDLOOP.

  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.

        t_ivmle2 = t_vmle2 * itab_it-dttaxbem.

        t_ivadu = t_ivmle2 + t_ivseg + t_ivdesp.

      WHEN 'CIF'.

        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.

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

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

* << Fim da exclusão

            t_vmle =

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

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

* << Fim da exclusão

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

                    itab_it-vlreal * itab_it-qtd_itend.

* << Fim da inclusão

            itab_it-vlfob = t_vmle.

            /pws/zycie100a-vlfob = t_vmle.

            t_vmle_d2 = t_vmle = t_vmle + v_tot_fre  + v_tot_seg .

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

            v_difgran = v_difgran * /pws/zycie085-ukursfob.

            v_diftern =  v_diftern * /pws/zycie085-ukursfob .

* << Fim da exclusão

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

            t_ivmle  = (  itab_it-vlreal  * itab_it-qtd_itend ) *

                        /pws/zycie085-ukursfob  .

            t_ivmle_d2 = t_ivmle .

* << Fim da inclusão

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

            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 exclusão

          ENDIF.

        ELSE.

          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 .

...

 

...

        ( itab_it-vlfre_fat / itab_zycit003-qtd_iten ).

      CLEAR itab_it-vlfre_fat.

    ENDIF.

    IF NOT itab_it-vlseg_fat IS INITIAL and

       not itab_zycit003-qtd_iten is initial.

      itab_it-vlreal = itab_it-vlreal +

        ( itab_it-vlseg_fat / itab_zycit003-qtd_iten ).

      CLEAR itab_it-vlseg_fat.

    ENDIF.

   endif.

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

        itab_it-vlreal_dest = itab_it-vlreal.

* << Fim da inclusão

    MODIFY itab_it.

  ENDLOOP.

ENDFORM.

FORM fill_it115b.

  CLEAR:   itab_zycit115b[].

  REFRESH: itab_zycit115b[].

  LOOP AT itab_zycit115    WHERE

       nrseq = wa_it-nrseq AND

       ebeln = wa_it-ebeln AND

       ebelp = wa_it-ebelp.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F03

 

FORM calc_init USING p_tipo.

  CLEAR v_tcif_fat.

  CLEAR v_tot_real.

  DATA: v_qtd_iten LIKE /pws/zycie003-qtd_iten.

  DATA: v_diffrete LIKE v_tdif ,

        v_diffrete_aux LIKE v_tdif .

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

 DATA:  v_calc_seg LIKE /pws/zycit003-vlreal ,

         v_perc_seg LIKE /pws/zycie085-per_seg.

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

      v_tabix = sy-tabix.

      IF NOT itab_zycit049-vldp   IS INITIAL.

        IF itab_zycit049-waers  NE wa_zycbt007-waersb.

          PERFORM taxa_converte USING   itab_zycit049-waers

...

 

...

          PERFORM trata_decimais USING itab_zycit049-waers

                                    itab_zycit049-vlreal.

        ENDIF.

      ENDIF.

      CLEAR itab_zycit049-vldp_aux.

      MODIFY itab_zycit049 INDEX v_tabix TRANSPORTING vlreal vldp_aux.

    ENDLOOP.

  ENDIF.

  DESCRIBE TABLE itab_it LINES v_ipt.

  LOOP AT itab_it.

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

    READ TABLE itab_zycit003 WITH KEY ebeln = itab_it-ebeln

                                      ebelp = itab_it-ebelp.

* << Fim da inclusão

    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.

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

  v_calc_seg = v_calc_seg + ( itab_it-vlreal_dest *

itab_zycit003-qtd_iten ).

* << Fim da inclusão

  ENDLOOP.

  IF v_dit = 'N'.

    v_bltofat = /pws/zycie093-prepaid +

    /pws/zycie093-collect.

    v_sgtofat = /pws/zycie085-vlseg.

    IF NOT v_sgtofat IS INITIAL .

      PERFORM retorna_decimais USING /pws/zycie085-waersseg

                                     v_sgtofat             .

    ENDIF.

    CASE s_inco1_ci.

...

 

...

        v_bltofat = /pws/zycie093-prepaid +

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

        PERFORM calc_conv_frete CHANGING v_bltofat.

      WHEN 'CIF'.

        PERFORM: calc_conv_frete CHANGING v_bltofat,

                 calc_conv_seg   CHANGING v_sgtofat.

        IF NOT v_sgtofat IS INITIAL .

          PERFORM trata_decimais USING /pws/zycie085-waersseg

                                         v_sgtofat             .

        ENDIF.

        v_tdif = v_tfrefat - v_bltofat .

 

        v_bltofat = /pws/zycie093-prepaid +

        /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

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

      PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                 /pws/zycie085-waersfob

                               CHANGING  itab_zycit003-vlreal.

      PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                 /pws/zycie085-waersfob

                               CHANGING  itab_zycit003-netpr.

    ENDIF.

* << Fim da inclusão

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

  ENDLOOP.

  LOOP AT itab_it.

    READ TABLE itab_zycit003 WITH KEY

                              nrseq = itab_it-nrseq

                              ebeln = itab_it-ebeln

                              ebelp = itab_it-ebelp.

...

 

...

      ELSE.

        v_diffrete = ( ( v_tdif * - 1 ) *

              ( itab_zycit003-ntgew / v_ntgew ) ).

      ENDIF.

      IF /pws/zycie093-waersfre NE itab_zycit003-waers .

        v_diffrete_aux = v_diffrete .

        PERFORM calc_conv_moeda USING  /pws/zycie093-waersfre

                                       itab_zycit003-waers

                                       CHANGING v_diffrete_aux.

        itab_it-vlreald =

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

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

* << Fim da exclusão

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

        (  ( ( itab_zycit003-qtd_iten *  itab_it-vlreal_dest ) -

* << Fim da inclusão

            v_diffrete_aux ) / itab_zycit003-qtd_iten ) .

      ELSE.

        itab_it-vlreald =

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

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

* << Fim da exclusão

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

        (  ( ( itab_zycit003-qtd_iten *  itab_it-vlreal_dest ) -

* << Fim da inclusão

            v_diffrete ) / itab_zycit003-qtd_iten ) .

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

      ENDIF.

      IF  s_inco1_ci EQ 'CIF'.

        IF NOT v_calc_seg IS INITIAL.

          itab_it-vlreald =

            ( ( itab_zycit003-qtd_iten *  itab_it-vlreald ) -

       ( ( itab_it-vlreal_dest * itab_zycit003-qtd_iten ) * ( v_sgtofat

   / v_calc_seg   ) ) )

               / itab_zycit003-qtd_iten .

        ENDIF.

* << Fim da inclusão

      ENDIF.

      MODIFY itab_it.

    ENDIF.

  ENDLOOP.

  LOOP AT itab_it.

    IF p_tipo = 'I'.

      itab_it-seq = sy-tabix.

    ENDIF.

    READ TABLE itab_zycit003 WITH KEY

                              nrseq = itab_it-nrseq

...

 

...

      ENDIF.

    ENDIF.

    IF s_inco1_ci EQ 'CIF'.

      v_tcif_fat = v_tcif_fat + ( ( itab_zycit003-vlreal *

              itab_it-qtd_iten )

                   + itab_it-vlfre_fat + itab_it-vlseg_fat ).

    ENDIF.

  ENDLOOP.

  CASE s_inco1_ci.

    WHEN 'CIF'.

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

      v_bltofat = /pws/zycie093-prepaid +

      /pws/zycie093-collect.

      PERFORM: calc_conv_frete CHANGING v_bltofat.

* << Fim da inclusão

      v_tdif = v_tfrefat - v_bltofat +

               v_tsegfat - v_sgtofat.

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

      v_bltofat = /pws/zycie093-prepaid +

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

      PERFORM calc_conv_frete CHANGING v_bltofat.

* << Fim da inclusão

  ENDCASE.

  READ TABLE itab_zycit003 INDEX 1.

  IF sy-subrc EQ 0 .

...

 

...

       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.

          ELSEIF itab_zycit049-peso EQ 'X'.

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

          ELSEIF itab_zycit049-proporplan EQ 'X'.

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

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

                  PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                             /pws/zycie085-waersfob

                                          CHANGING  itab_zycit003-netpr.

                ENDIF.

       t_ivdes2 =  ( ( itab_zycit003-netpr * itab_zycit003-qtd_iten ) /

                                   v_tot_plan  ) * itab_zycit049-vlreal.

              ENDIF.

            ENDIF.

* << Fim da inclusão

          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.

              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.

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

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

                  PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                               /pws/zycie085-waersfob

                                         CHANGING  itab_zycit003-vlreal.

                  ENDIF.

* << Fim da inclusão

                  t_ivdes2 =  ( itab_zycit003-vlreal *

                      itab_zycit003-qtd_iten

                     / v_tot_real  ) * itab_zycit049-vlreal.

                ENDIF.

              ENDIF.

            ENDIF.

          ENDIF.

          IF p_tipo = 'I'.

            itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.

            MODIFY itab_zycit049 TRANSPORTING vldp_aux.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F04

 

...

      ENDLOOP.

    ENDIF.

  ENDIF.

ENDFORM.

FORM reclassificacao_ia_funcao.

  DATA: BEGIN OF itab_variacao OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit085.

  DATA: END OF itab_variacao.

  CHECK NOT /pws/zycie085-dtreg IS INITIAL AND

        NOT /pws/zycie085-nrdi  IS INITIAL.

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

  LOOP AT ITAB_ZYCIT006.

       IF ITAB_ZYCIT006-FRPAGTO EQ 'P' or

          itab_zycit006-FRPAGTO eq 'A' .

          delete itab_zycit006.

       endif.

  ENDLOOP.

  LOOP AT ITAB_ZYCIT006.

  ENDLOOP.

  if sy-subrc ne 0 .

     exit.

  endif.

* << Fim da inclusão

  IF v_modo_bi IS INITIAL .

    v_modo_bi = 'N'.

  ENDIF.

  CLEAR: v_dele.

  IF /pws/zycie085-belnr_0 IS INITIAL AND

     NOT /pws/zycie085-belnr_0_f05 IS INITIAL.

    v_text = text-208.

    PERFORM executa_fb08 USING /pws/zycie085-belnr_0_f05

       /pws/zycie085-budat_0.

    IF v_dele IS INITIAL.

...