CE PLUS - Nota 001088

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DI

Data/Hora da Publicação: 27/03/2006 00:00:00

Data/Hora Última Alteração: 20/06/2011 12:18:26

Descrição da Nota: CÁLCULO VALOR FOB ERRADO QUANDO TINHA DESPESA NA DI

Sintoma

Ao incluir qualquer tipo de despesa na pasta despesas da DI, o valor total do embarque na pasta

"Carga/2" não é atualizado e este acréscimo das despesas no FOB não deve interferir no cálculo do

seguro, as despesas não entram no cálculo do seguro.

 

 

Solução

Atualizado a rotina para conversão e soma da despesa, tanto no valor da moeda quanto em BRL, na

carga 2.

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

ERRO AO CRIAR A DSI

Informações Complementares

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

Nota Número 01088 Data: 27/03/2006 Hora: 09:34:33

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

 

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

Nota Número              : 01088

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 6.0

Pacote                   : 00023

Agrupamento              : 00106

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

Referência às notas relacionadas:

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

 

01242  - 00001 - 6.0    - 00023  - ERRO AO CRIAR A DSI

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

CÁLCULO VALOR FOB ERRADO QUANDO TINHA DESPESA NA DI

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

Palavras Chave:

VALOR FOB - CARGA 2 - DESPESAS

 

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

Objetos da nota:

REPS /PWS/MZYCI023F01

REPS /PWS/MZYCI023F03

REPS /PWS/MZYCI023F04

REPS /PWS/MZYCI023O01

REPS /PWS/MZYCI023TOP

REPS /PWS/MZYCI023X01

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

Modificações efetuadas em REPS /PWS/MZYCI023F01

 

...

    ENDIF.

  ENDIF.

  PERFORM load_fbvl.

  CLEAR: v_desp_acr, v_desp_brl.

  PERFORM load_sevl.

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

  perform soma_despesa_acr.

* << Fim da inclusão

  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.

...

 

...

    t_vlii   = /pws/zycie085-vlii.

    t_vlipi  = /pws/zycie085-vlipi.

    t_vlicms = /pws/zycie085-vlicms.

  ENDIF.

  /pws/zycie085-vlfobr = s_fbvr.

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

  perform soma_despesa_acr.

* << Fim da exclusão

ENDFORM.

FORM adic_list.

  CLEAR:   it_adi[], /pws/zycie100a, itab_itb.

  REFRESH: it_adi[].

  DATA: BEGIN OF itab_inco OCCURS 0.

...

 

...

      WHEN 'FOB'.

        itab_it-vlreal_aux2 = itab_it-vlreal -

         ( itab_it-frn / itab_it-qtd_iten ) .

    ENDCASE.

    APPEND itab_it TO itab_itb.

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

    IF ITAB_IT-QTD_ITEND IS INITIAL.

       V_ITAD_PLAN = V_ITAD_PLAN + ITAB_IT-NETPR * ITAB_IT-QTD_ITEN.

     ELSE.

        V_ITAD_PLAN = V_ITAD_PLAN + ITAB_IT-NETPR * ITAB_IT-QTD_ITEND.

    ENDIF.

* << Fim da inclusão

  ENDLOOP.

  LOOP AT itab_itb.

    a_vlrtot  = a_vlrtot + ( itab_itb-qtd_iten * itab_itb-vlreal_aux2 ).

    a_vladu  = a_vladu +  itab_itb-vlmerc_ad.

    a_vmler  = a_vladu * itab_itb-dttaxbem.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F03

 

...

               v_tsegfat - v_sgtofat.

  ENDCASE.

  IF p_tipo NE 'A'.

    READ TABLE itab_zycit003 INDEX 1.

    IF itab_zycit003-qtd_itend IS INITIAL.

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

      v_totcif = v_tval.

* << Fim da inclusão

      v_tval3 = v_tval2 = v_tval + v_tdif .

    ELSE.

      IF  s_inco1_ci = 'C&F' .

        IF v_tfrefat IS INITIAL.

          v_tval3 = v_tval2 = v_tval .

...

 

...

                            itab_zycit049-vlreal.

          ELSE.

             if /pws/zycit062-BS_RAT_ICMS eq 'CIF'.

                   t_ivdes2 = ( itab_zycit049-vlreal *

                   ( t_vmle + v_tot_fre + v_tot_seg ) )

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

                    / ( v_tval3  + v_bltofat + v_sgtofat ) .

* << Fim da exclusão

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

                    / ( v_totcif  + v_bltofat + v_sgtofat ) .

* << Fim da inclusão

             else.

                 t_ivdes2 =  ( itab_zycit003_rateio-vlreal *

                    itab_zycit003_rateio-qtd_iten

                    / v_tot_real  ) * itab_zycit049-vlreal.

             endif.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F04

 

...

             INTO /pws/zycie085-per_seg

             WHERE land1 EQ t001-land1.

      ENDIF.

  ENDIF.

endform.

* >> Início da inclusão:

FORM soma_despesa_acr.

  DATA:   v_vldp LIKE itab_zycit049-vldp.

  LOOP AT itab_zycit049 WHERE tipo = 'A' AND

          vldp > 0.

    IF itab_zycit049-tpdesp NE /pws/zycit000-flagfreten.

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

        PERFORM taxa_converte USING

                  /pws/zycie085-waersfob /pws/zycie085-dttax v_taxa.

        IF NOT v_taxa IS INITIAL.

          v_tval2 = v_tval2 + ( itab_zycit049-vldp / v_taxa ).

        ENDIF.

      ELSE.

        v_tval2 = v_tval2 + itab_zycit049-vldp.

      ENDIF.

      v_desp_acr = v_desp_acr + itab_zycit049-vldp.

      IF itab_zycit049-waers = wa_zycbt007-waersb.

        s_fbvr = s_fbvr + itab_zycit049-vldp.

        v_desp_brl = v_desp_brl + itab_zycit049-vldp.

      ELSE.

        v_vldp = itab_zycit049-vldp.

        PERFORM calc_conv_moeda

        USING  itab_zycit049-waers

               wa_zycbt007-waersb

               CHANGING v_vldp.

        s_fbvr = s_fbvr + v_vldp.

      ENDIF.

      IF itab_zycit049-waers EQ 'USD'.

        PERFORM load_sevl.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.

FORM despesa_acrescimo.

  DATA: v_vldp_aux LIKE itab_zycit049-vldp_aux.

  CLEAR: t_ivdesp.

  LOOP AT itab_zycit049 WHERE tipo EQ 'A' AND NOT vlreal IS initial.

    IF itab_zycit049-baseicms EQ 'X'.

      IF /pws/zycit000-flag_txsisc IS INITIAL OR

       wa_it000-cod_sisc NE itab_zycit049-tpdesp.

        IF v_idx EQ v_ipt AND v_ipt NE 1.

          t_vmle = t_vmle + ( itab_zycit049-vlreal - v_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'.

            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.

              t_ivdes2 =  ( itab_zycit003_rateio-vlreal *

                 itab_zycit003_rateio-qtd_iten

                 / v_tot_real  ) * itab_zycit049-vlreal.

            ENDIF.

          ENDIF.

        ENDIF.

      ENDIF.

      t_vmle = t_vmle + t_ivdes2.

      v_vldp_aux = v_vldp_aux + t_ivdes2.

    ELSE.

      IF v_idx EQ v_ipt AND v_ipt NE 1.

        t_vmle = t_vmle + ( itab_zycit049-vlreal - v_vldp_aux ) .

      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.

      ENDIF.

      t_vmle = t_vmle + t_ivdes2.

      v_vldp_aux = v_vldp_aux + t_ivdes2.

    ENDIF.

  ENDLOOP.

ENDFORM.

* << Fim da inclusão

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023O01

 

...

MODULE fill_struct049b OUTPUT.

  DATA: v_ntgew_adic      LIKE /pws/zycie006-ntgew ,

        v_wa_it122-vldp   LIKE wa_it122-vldp  ,

        v_wa_it122-vlreal LIKE wa_it122-vlreal.

  CLEAR: itab_zycit049b-vldp  , itab_zycit049b-vlreal,

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

         v_wa_it122-vldp      , v_wa_it122-vlreal    .

* << Fim da exclusão

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

         v_wa_it122-vldp      , v_wa_it122-vlreal    ,

         V_ITAD_PLAN , V_TTAD_PLAN .

LOOP AT ITAB_IT.

   IF ITAB_IT-QTD_ITEND IS INITIAL.

       V_TTAD_PLAN = V_TTAD_PLAN + ITAB_IT-NETPR * ITAB_IT-QTD_ITEN.

   ELSE.

       V_TTAD_PLAN = V_TTAD_PLAN + ITAB_IT-NETPR * ITAB_IT-QTD_ITEND.

   ENDIF.

ENDLOOP.

* << Fim da inclusão

  READ TABLE itab_zycit122 WITH KEY codigo = itab_zycit049b-coddesp.

  wa_it122-reduz = itab_zycit122-descricao_reduz.

  LOOP AT itab_zycit049 WHERE coddesp = itab_zycit049b-coddesp

                             AND tipo = 'A'

                             AND NOT vldp IS initial.

...

 

...

          CLEAR: wa_it122-vldp, wa_it122-vlreal, v_ntgew_adic.

          LOOP AT itab_it WHERE adicao = wa_it-adicao.

            v_ntgew_adic = v_ntgew_adic + itab_it-ntgew.

          ENDLOOP.

          v_wa_it122-vldp   = v_wa_it122-vldp +

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

                              ( v_ntgew_adic / v_tntgew ) *

                               itab_zycit049-vldp.

          v_wa_it122-vlreal = v_wa_it122-vlreal +

* << Fim da inclusão

                              ( v_ntgew_adic / v_tntgew ) *

                               itab_zycit049-vlreal.

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

        ELSEIF itab_zycit049-proporplan = 'X'.

          v_wa_it122-vldp   = v_wa_it122-vldp +

                ( v_itad_plan / v_ttad_plan  ) *

                itab_zycit049-vldp.

* << Fim da inclusão

          v_wa_it122-vlreal = v_wa_it122-vlreal +

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

                               ( v_ntgew_adic / v_tntgew ) *

* << Fim da exclusão

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

                ( v_itad_plan / v_ttad_plan  ) *

* << Fim da inclusão

                               itab_zycit049-vlreal.

        ELSE.

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

          CLEAR: wa_it122-vldp, wa_it122-vlreal.

          LOOP AT itab_it WHERE adicao = wa_it-adicao.

            v_wa_it122-vldp = v_wa_it122-vldp +

                       ( ( itab_zycit049-vldp / /pws/zycie006-vlmerc

) *

                       ( itab_it-vlreal * itab_it-qtd_iten ) ).

* << Fim da exclusão

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

          v_wa_it122-vldp   = v_wa_it122-vldp +

                ( v_itad_plan / v_ttad_plan  ) *

                    itab_zycit049-vldp.

* << Fim da inclusão

            v_wa_it122-vlreal = v_wa_it122-vlreal +

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

                       ( ( itab_zycit049-vlreal /

/pws/zycie006-vlmerc ) *

                       ( itab_it-vlreal * itab_it-qtd_iten ) ).

          ENDLOOP.

* << Fim da exclusão

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

                ( v_itad_plan / v_ttad_plan  ) *

                    itab_zycit049-vlreal.

* << Fim da inclusão

        ENDIF.

      ENDIF.

    ENDIF.

  ENDLOOP.

  wa_it122-vldp   = wa_it122-vldp   + v_wa_it122-vldp.

...

 

...

          v_wa_it123-vldp = v_wa_it123-vldp +

                             ( v_ntgew_adic / v_tntgew ) *

                              itab_zycit049-vldp.

          v_wa_it123-vlreal = v_wa_it123-vlreal +

                             ( v_ntgew_adic / v_tntgew ) *

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

                              itab_zycit049-vlreal.

        ELSEIF itab_zycit049-proporplan = 'X'.

          v_wa_it123-vldp   = v_wa_it123-vldp +

                ( v_itad_plan / v_ttad_plan  ) *

                itab_zycit049-vldp.

          v_wa_it123-vlreal = v_wa_it123-vlreal +

                ( v_itad_plan / v_ttad_plan  ) *

* << Fim da inclusão

                              itab_zycit049-vlreal.

        ELSE.

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

          CLEAR: wa_it123-vldp, wa_it123-vlreal.

          LOOP AT itab_it WHERE adicao = wa_it-adicao.

            v_wa_it123-vldp = v_wa_it123-vldp +

                    ( ( itab_zycit049-vldp / /pws/zycie006-vlmerc ) *

                      ( itab_it-vlreal * itab_it-qtd_iten ) ).

* << Fim da exclusão

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

          v_wa_it123-vldp   = v_wa_it123-vldp +

                ( v_itad_plan / v_ttad_plan  ) *

                    itab_zycit049-vldp.

* << Fim da inclusão

            v_wa_it123-vlreal = v_wa_it123-vlreal +

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

                    ( ( itab_zycit049-vlreal / /pws/zycie006-vlmerc ) *

                      ( itab_it-vlreal * itab_it-qtd_iten ) ).

          ENDLOOP.

* << Fim da exclusão

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

                ( v_itad_plan / v_ttad_plan  ) *

                    itab_zycit049-vlreal.

* << Fim da inclusão

        ENDIF.

      ENDIF.

    ENDIF.

  ENDLOOP.

  wa_it123-vldp   = wa_it123-vldp   + v_wa_it123-vldp.

...

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023TOP

 

*No Include /PWS/MZYCI023TOP foram criadas as seguintes variáveis:

...

* >> Início da inclusão:

  data: v_totcif    LIKE t_icms,

  v_bl1.

* << Fim da inclusão

...

 

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

Modificações efetuadas em REPS /PWS/MZYCI023X01

 

 

*No Include /PWS/MZYCI023X01 foram criadas as seguintes variáveis:

 

...

 

* >> Início da inclusão:

       data:  v_nova,

        V_ITAD_PLAN LIKE /PWS/ZYCIT003-NETPR,

        V_TTAD_PLAN LIKE /PWS/ZYCIT003-NETPR       .

* << Fim da inclusão

 

data: end of common part.

 

 

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

Modificações efetuadas em FUNC /PWS/ZYCI_RATEIO_CUSTO

 

...

 

   SELECT * FROM /pws/zycit140

           INTO TABLE itab_zycit140_aux

            WHERE codmod EQ 'D'

               AND codigo EQ 'FRETEI'

               AND custo  EQ 'X'

               AND land1  EQ t001-land1.

   IF sy-subrc EQ 0.

     SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036_aux

       WHERE nrseq = itab_zycit003-nrseq AND

             codigo = 'FRETEI'.

     LOOP AT itab_zycit140_aux.

       CLEAR itab_zycit036_aux.

       READ TABLE itab_zycit036_aux WITH KEY nrseq = /pws/zycit001-nrseq

                                      codigo = itab_zycit140_aux-codigo

                                     origem = itab_zycit140_aux-origem.

       IF sy-subrc EQ 0.

         v_ori = itab_zycit140_aux-origem.

       ENDIF.

     ENDLOOP.

     IF v_ori IS INITIAL AND /pws/zycit000-fretepres IS INITIAL.

       v_ori = 'NF'.

     ENDIF.

     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 WHERE servico IS INITIAL.

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

*<<Inicio Inclusão

     if itab_zycit003-qtd_itend is initial.

*<<Fim Inclusão

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

*<<Inicio Inclusão

     else.

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

     endif.

*<<Fim Inclusão

 

     v_tot_vlreal = v_tot_vlreal + ( itab_zycit003-vlreal *

                     itab_zycit003-qtd_iten ).

 

   ENDLOOP.

 

   LOOP AT itab_zycit100a.

     IF itab_zycit100a-codregtri NE '5' AND

        itab_zycit100a-codregtri NE '3'.

       v_tot_ii   = itab_zycit100a-vlii + v_tot_ii.

     ENDIF.

     IF itab_zycit100a-codregtriipi NE '1' AND

        itab_zycit100a-codregtriipi NE '5'.

       v_tot_ipi  = itab_zycit100a-vlipi + v_tot_ipi.

     ENDIF.

     v_tot_pis     = itab_zycit100a-vlpis + v_tot_pis.

     v_tot_cofins  = itab_zycit100a-vlcofins + v_tot_cofins.

 

...

 

 

...

 

 

 

               ELSEIF /pws/zycit019-codigo = 'COFINS'

               AND NOT v_tot_cofins IS INITIAL.

                 READ TABLE itab_zycit100a WITH KEY

                           ebeln = itab_zycit003-ebeln

                           ebelp = itab_zycit003-ebelp.

                 IF sy-subrc EQ 0. "and

                  itab_zycit036_aux-vlreal = ( itab_zycit100a-vlcofins /

                                  v_tot_cofins ) * itab_despesa-netpr.

                   itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                 ENDIF.

               ELSEIF /pws/zycit019-codigo = 'PIS'

               AND NOT v_tot_pis IS INITIAL.

                 READ TABLE itab_zycit100a WITH KEY

                           ebeln = itab_zycit003-ebeln

                           ebelp = itab_zycit003-ebelp.

                 IF sy-subrc EQ 0. "and

                   itab_zycit036_aux-vlreal = ( itab_zycit100a-vlpis /

                        v_tot_pis ) * itab_despesa-netpr.

                   itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                 ENDIF.

               ELSE.

                 READ TABLE itab_zycit100a WITH KEY

                           ebeln = itab_zycit003-ebeln

                           ebelp = itab_zycit003-ebelp.

                 IF sy-subrc EQ 0.

                   itab_zycit036_aux-vlreal = itab_zycit100a-vl_sisco.

                   itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                 ENDIF.

               ENDIF.

 

             ELSE.

               IF itab_zycit039-divabs EQ 'X'.

                 itab_zycit036_aux-vlreal = itab_despesa-netpr / v_linha.

                 itab_zycit036_aux-waers_real = itab_despesa-waers.

               ELSEIF itab_zycit039-peso EQ 'X'.

                 IF NOT v_tpeso IS INITIAL.

                   itab_zycit036_aux-vlreal = itab_despesa-netpr *

                                           itab_zycit003-ntgew / v_tpeso.

                   itab_zycit036_aux-waers_real = itab_despesa-waers.

                 ENDIF.

               ELSEIF itab_zycit039-proporplan EQ 'X'.

                 itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                  itab_zycit003-qtd_iten / v_tot ) *

                  itab_despesa-netpr.

                 itab_zycit036_aux-waers_real = itab_despesa-waers.

*<<Inicio Exclusão

              ELSEIF itab_zycit039-vlreal EQ 'X'.

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

*<<Fim Exclusão

 

*<<Inicio Inclusão

               ELSE. "IF itab_zycit039-vlreal EQ 'X'.

                 CLEAR /pws/zycit020.

                 SELECT SINGLE * FROM /pws/zycit020 WHERE

                   regio = adrc-region AND

                   codigo = /pws/zycit019-codigo AND

                   baseicms EQ 'X'  AND

                   land1 EQ t001-land1.

                 IF sy-subrc NE 0.

                   SELECT SINGLE * FROM /pws/zycit020 WHERE

                     regio = space AND

                     codigo = /pws/zycit019-codigo AND

                     baseicms EQ 'X'  AND

                    land1 EQ t001-land1.

                ENDIF.

 

 

                IF /pws/zycit020-baseicms EQ 'X'.

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

*<<Fim Inclusão

                    DATA: v_vfre LIKE /pws/zycie085-vlfre,

                          v_tfre LIKE /pws/zycie085-vlfre,

                          v_vseg LIKE /pws/zycie085-vlseg,

                          v_vfob LIKE /pws/zycie085-vlfob,

                          v_vtot LIKE /pws/zycie085-vlfob.

 

 

                    READ TABLE itab_zycit100a WITH KEY

                              ebeln = itab_zycit003-ebeln

                              ebelp = itab_zycit003-ebelp.

                    IF sy-subrc EQ 0.

                      "converter para moeda

                    PERFORM taxa_converte USING  /pws/zycie085-waersfob

                                       /pws/zycie085-dttax

                                       t001-land1

                                CHANGING  v_taxa.

                       " converter reais para moeda

                       IF NOT v_taxa IS INITIAL.

                         v_vfre = itab_zycit100a-vlfre / v_taxa.

 

                         " converter reais para moeda

                         v_vseg = itab_zycit100a-vlseg / v_taxa.

                       ENDIF.

                       "já na moeda

                       v_vfob = itab_zycit100a-vlfob.

 

                       "já na moeda

                       v_tseg = /pws/zycie085-vlseg ." * v_taxa.

 

                       IF /pws/zycie085-ukursfre

                          NE /pws/zycie085-ukursfob.

                         PERFORM taxa_converte USING

                                 /pws/zycie085-waersfre

                                       /pws/zycie085-dttax

                                       t001-land1

                                CHANGING  v_taxa.

 

                         v_tfre = /pws/zycie085-vlfre * v_taxa.

                         PERFORM taxa_converte USING

                                 /pws/zycie085-waersfob

                                       /pws/zycie085-dttax

                                       t001-land1

                                CHANGING  v_taxa.

                         IF NOT v_taxa IS INITIAL.

                           v_tfre = v_tfre / v_taxa.

                         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.

 

                   ELSE.

*<<Inicio Inclusão

                     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.

                      itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                       itab_zycit003-qtd_iten / v_tot ) *

                       itab_despesa-netpr.

                     ENDIF.

*<<Fim Inclusão

                     itab_zycit036_aux-waers_real = itab_despesa-waers.

                   ENDIF.

 

                 ELSE.

 

*<<Inicio Inclusão

                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.

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                      itab_zycit003-qtd_iten / v_tot ) *

                      itab_despesa-netpr.

                   ENDIF.

                  itab_zycit036_aux-waers_real = itab_despesa-waers.

                ENDIF.

 

*<<Fim Inclusão

              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.

          APPEND itab_zycit036_aux.

 

          v_tot_desp = v_tot_desp + itab_zycit036_aux-vlreal.

 

        ENDIF.

      ENDLOOP.

 

      DELETE itab_zycit036_aux WHERE vlreal IS INITIAL.

...

...

...

...