CE PLUS - Nota 004839

Módulo: DOC. EXPORTAÇÃO

Funcionalidade: Registro de Exportação (RE)

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

Data/Hora Última Alteração: 22/02/2011 10:04:49

Descrição da Nota: CORREÇÃO NO VALOR CALCULADO DO EMBARQUE E EM VALORES DO RE

Sintoma

Valor calculado do embarque e valores da Condição de Venda e Local do Embarque incorretos.

 

 

Solução

Implementação de cálculo de despesas em ambos programas.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

CODE INSPECTOR RE

CORREÇÃO NO AGRUPAMENTO DO RE PARA NCM+PREÇO FOB

Informações Complementares

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

Nota Número 04839 Data: 26/09/2007 Hora: 22:31:55

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

 

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

Nota Número              : 04839

Categoria                : Melhoria

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00014

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

Referência às notas relacionadas:

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

 

04368  - 00001 - 7.0    - 00002  - CORREÇÃO NO AGRUPAMENTO DO RE PARA NCM+PREÇO FOB

04653  - 00002 - 7.0    - 00002  - CODE INSPECTOR RE

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

CORREÇÃO NO VALOR CALCULADO DO EMBARQUE E EM VALORES DO RE

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

Palavras Chave:

VALOR CALCULADO EMBARQUE RE

 

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

Objetos da nota:

REPS /PWS/MZYCE003F01

REPS /PWS/MZYCE041F01

 

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

Modificações efetuadas em REPS /PWS/MZYCE003F01

 

...

      READ TABLE itab_zycet023 WITH KEY fkart = <fs_002>-fkart

                                        bukrs = space.

    ENDIF.

    IF NOT itab_zycet023-somaqtd IS INITIAL.

      CONTINUE.

    ENDIF.

    IF <fs_002>-vlme GT v_vlme_max.

      v_indx_max = v_index.

      v_vlme_max = <fs_002>-vlme.

    ENDIF.

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

    <fs_002>-vlme_r = <fs_002>-vlme.

* << Fim da exclusão

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

    <fs_002>-vlme_r = <fs_002>-vlfob.

* << Fim da inclusão

    v_ntgew = <fs_002>-ntgew_r.

    v_brgew = <fs_002>-brgew_r.

    v_fkimg = <fs_002>-fkimg_r.

    PERFORM converte_um USING <fs_002>-ntgew

                              <fs_002>-gewei

                              /pws/zycee001-gewei

                              <fs_002>-matnr

                     CHANGING v_ntgew.

    PERFORM converte_um USING <fs_002>-brgew

                              <fs_002>-gewei

...

 

...

                                  v_brgew ).

          <v_total> = <v_total> + ( ( <v_real> / wa_condicao-brgew ) *

                                    v_brgew ).

        WHEN 'VLR'.

          CHECK wa_condicao-vlme  GT 0.

          <v_vlme> = <v_vlme> + ( ( <v_real> / wa_condicao-vlme ) *

                                  <fs_002>-vlme ).

          <v_total> = <v_total> + ( ( <v_real> / wa_condicao-vlme ) *

                                    <fs_002>-vlme ).

      ENDCASE.

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

      CASE itab_zycet156-proccond.

        WHEN 'ACR'.

          CHECK itab_zycet065-acrescimo = 'X'.

          ADD <fs_002>-vlacrescimo_r TO <fs_002>-vlme_r.

        WHEN 'DES'.

          CHECK itab_zycet065-desconto = 'X'.

          SUBTRACT <fs_002>-vldesconto_r FROM <fs_002>-vlme_r.

        WHEN 'OUT'.

          CHECK itab_zycet065-outras_desp = 'X'.

          IF /pws/zycee001-tpcalc = '1'.

            SUBTRACT <fs_002>-vlod_r FROM <fs_002>-vlme_r.

          ELSE.

            ADD <fs_002>-vlod_r TO <fs_002>-vlme_r.

          ENDIF.

        WHEN 'COM'.

          CHECK itab_zycet065-comissao = 'X'.

          IF /pws/zycee001-tpcalc = '1'.

            SUBTRACT <fs_002>-vlagente_r FROM <fs_002>-vlme_r.

          ELSE.

            ADD <fs_002>-vlagente_r TO <fs_002>-vlme_r.

          ENDIF.

        WHEN 'FRT'.

          CHECK itab_zycet065-frete = 'X'.

          IF /pws/zycee001-tpcalc = '1'.

            SUBTRACT <fs_002>-vlfrete_r FROM <fs_002>-vlme_r.

          ELSE.

            ADD <fs_002>-vlfrete_r TO <fs_002>-vlme_r.

          ENDIF.

        WHEN 'SEG'.

          CHECK itab_zycet065-seguro = 'X'.

          IF /pws/zycee001-tpcalc = '1'.

            SUBTRACT <fs_002>-vlseguro_r FROM <fs_002>-vlme_r.

          ELSE.

            ADD <fs_002>-vlseguro_r TO <fs_002>-vlme_r.

          ENDIF.

      ENDCASE.

* << Fim da inclusão

    ENDLOOP.

  ENDLOOP.

  wa_condicao-total-vlme_fob = wa_condicao-real-vlme_fob.

  CHECK wa_condicao-real NE wa_condicao-total.

  READ TABLE itab_rateio INDEX v_indx_max ASSIGNING <fs_002>.

  IF wa_condicao-real-vlme_acr NE wa_condicao-total-vlme_acr.

    <fs_002>-vlacrescimo_r = <fs_002>-vlacrescimo_r +

                             wa_condicao-real-vlme_acr -

                             wa_condicao-total-vlme_acr.

  ENDIF.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCE041F01

 

...

             itab_zycet002-vbeln_vl TO itab_zycet118-vbeln_vl,

             itab_zycet002-posnl    TO itab_zycet118-posnl,

             itab_zycet002-posnr    TO itab_zycet118-posnr,

             itab_zycet002-aupos    TO itab_zycet118-aupos,

             itab_zycet002-ntgew_r  TO itab_zycet118-ntgew,

             itab_zycet002-brgew_r  TO itab_zycet118-brgew,

             itab_zycet002-vrkme    TO itab_zycet118-vrkme,

             itab_zycet002-arktx    TO itab_zycet118-dsmerc,

             itab_zycet002-matnr    TO itab_zycet118-matnr,

             itab_zycet002-gewei    TO itab_zycet118-gewei,

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

             itab_zycet002-vlfob    TO itab_zycet118-netpr,

             itab_zycet002-vlme_r   TO itab_zycet118-vfob,

* << Fim da inclusão

             itab_zycet002-waers    TO itab_zycet118-waers,

             itab_zycet002-waers    TO itab_zycet118-waerk,

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

             itab_zycet002-vlme_r   TO itab_zycet118-netpr,

             itab_zycet002-vlemb    TO itab_zycet118-vfob,

* << Fim da exclusão

             itab_zycet002-fkimg_r  TO itab_zycet118-fkimg,

             itab_zycet002-vlagente TO itab_zycet118-vlagente,

             'I'                    TO itab_zycet118-status,

             itab_zycet002-ntgew    TO itab_zycet118-saldordem.

...

 

...

ENDFORM.

FORM agrup_selecao.

  PERFORM funcao_agrupamento.

  IF NOT itab_zycet092[] IS INITIAL.

    PERFORM move_agrupados.

  ELSE.

    LEAVE PROGRAM.

  ENDIF.

ENDFORM.

FORM funcao_agrupamento.

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

  DATA:

    itab_zycet118_aux LIKE TABLE OF itab_zycet118,

    wa_zycet118_aux   LIKE LINE OF itab_zycet118_aux.

  itab_zycet118_aux[] = itab_zycet118[].

  PERFORM aplica_despesas.

* << Fim da inclusão

  CALL FUNCTION '/PWS/ZYCE_AGRUPA_OV_RE'

       EXPORTING

            werks         = itab_zycet116-werks

       TABLES

            itab_zycet092 = itab_zycet092

            itab_zycet118 = itab_zycet118

            itab_zycet090 = itab_zycet090

            itab_zycet002 = itab_zycet002.

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

  LOOP AT itab_zycet118.

    READ TABLE itab_zycet118_aux into wa_zycet118_aux

      WITH KEY

        codnrseq = itab_zycet118-codnrseq

        vbeln_va = itab_zycet118-vbeln_va

        aupos    = itab_zycet118-aupos

        vbeln_vl = itab_zycet118-vbeln_vl

        posnl    = itab_zycet118-posnl

        vbeln_vf = itab_zycet118-vbeln_vf

        posnr    = itab_zycet118-posnr.

    MOVE:

      itab_zycet118-seqagrupado TO wa_zycet118_aux-seqagrupado,

      wa_zycet118_aux           TO itab_zycet118.

    MODIFY itab_zycet118 INDEX sy-tabix.

  ENDLOOP.

* << Fim da inclusão

ENDFORM.

FORM move_agrupados.

  LOOP AT itab_zycet118.

    CLEAR: itab_zycet118-status,

           itab_zycet118-nrseqre.

    itab_zycet118-nrseqre = itab_zycet116-nrseqre.

    itab_zycet118-status = 'S'.

    MODIFY itab_zycet118 INDEX sy-tabix.

  ENDLOOP.

  LOOP AT itab_zycet092.

...

 

...

ENDFORM.

FORM ajusta_precos.

  FIELD-SYMBOLS: <fs_zycet118> LIKE LINE OF itab_zycet118,

                 <fs_zycet092> LIKE LINE OF itab_zycet092.

  TYPES: BEGIN OF ty_zycet065,

          inco1       TYPE /pws/zycet065-inco1,

          fob         TYPE /pws/zycet065-fob,

          frete       TYPE /pws/zycet065-frete,

          seguro      TYPE /pws/zycet065-seguro,

          outras_desp TYPE /pws/zycet065-outras_desp,

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

          desconto    TYPE /pws/zycet065-desconto,

          acrescimo   TYPE /pws/zycet065-acrescimo,

* << Fim da inclusão

          comissao    TYPE /pws/zycet065-comissao,

         END OF ty_zycet065.

  DATA: wa_zycet065   TYPE ty_zycet065,

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

        v_despesas    TYPE /pws/zycet002-vlme,

        v_totdesp     TYPE /pws/zycet002-vlme,

        v_valor_anexo TYPE /pws/zycee092-netpr.

 

  READ TABLE itab_zycet001 INDEX 1.

  CHECK sy-subrc IS INITIAL.

* << Fim da exclusão

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

        v_despesas    TYPE /pws/zycet002-vlme.

* << Fim da inclusão

  SELECT SINGLE inco1

                fob

                frete

                seguro

                outras_desp

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

                desconto

                acrescimo

* << Fim da inclusão

                comissao

   FROM /pws/zycet065

   INTO wa_zycet065

   WHERE inco1 EQ itab_zycet001-inco1.

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

  READ TABLE itab_zycet001 INDEX 1.

  CHECK sy-subrc IS INITIAL.

* << Fim da inclusão

  IF itab_zycet116-agrupado EQ 'S'.

    LOOP AT itab_zycet092 ASSIGNING <fs_zycet092>.

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

      CLEAR: v_totdesp.

* << Fim da exclusão

      LOOP AT itab_zycet118 ASSIGNING <fs_zycet118>

                            WHERE seqagrupado EQ <fs_zycet092>-codnrseq.

        CLEAR v_despesas.

        READ TABLE itab_zycet002

             WITH KEY vbeln_va = <fs_zycet118>-vbeln_va

                         aupos = <fs_zycet118>-aupos

                      vbeln_vl = <fs_zycet118>-vbeln_vl

                         posnl = <fs_zycet118>-posnl

                      vbeln_vf = <fs_zycet118>-vbeln_vf

                         posnr = <fs_zycet118>-posnr

                      TRANSPORTING vlfrete_r

                                   vlseguro_r

                                   vlod_r

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

                                   vlagente_r.

* << Fim da exclusão

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

                                   vlagente_r

                                   vlacrescimo_r

                                   vldesconto_r.

* << Fim da inclusão

        CHECK sy-subrc IS INITIAL.

        PERFORM ajustes_re_termo USING itab_zycet116-perc_re_termo

                                 CHANGING <fs_zycet118>-fkimg

                                          <fs_zycet118>-ntgew

                                          <fs_zycet118>-brgew

                                          <fs_zycet118>-netpr

                                          <fs_zycet118>-vfob.

        IF NOT wa_zycet065-frete IS INITIAL AND

           NOT itab_zycet002-vlfrete_r IS INITIAL.

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

          IF /pws/zycee001-tpcalc = '0'.

* << Fim da inclusão

          ADD itab_zycet002-vlfrete_r TO v_despesas.

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

          ELSE.

            SUBTRACT itab_zycet002-vlfrete_r FROM v_despesas.

          ENDIF.

* << Fim da inclusão

        ENDIF.

        IF NOT wa_zycet065-seguro IS INITIAL AND

           NOT itab_zycet002-vlseguro_r IS INITIAL.

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

          IF /pws/zycee001-tpcalc = '0'.

* << Fim da inclusão

          ADD itab_zycet002-vlseguro_r TO v_despesas.

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

          ELSE.

            SUBTRACT itab_zycet002-vlseguro_r FROM v_despesas.

          ENDIF.

* << Fim da inclusão

        ENDIF.

        IF NOT wa_zycet065-outras_desp IS INITIAL AND

           NOT itab_zycet002-vlod_r IS INITIAL.

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

          IF /pws/zycee001-tpcalc = '0'.

* << Fim da inclusão

          ADD itab_zycet002-vlod_r TO v_despesas.

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

          ELSE.

            SUBTRACT itab_zycet002-vlod_r FROM v_despesas.

          ENDIF.

* << Fim da inclusão

        ENDIF.

        IF NOT wa_zycet065-comissao IS INITIAL AND

           NOT itab_zycet002-vlagente_r IS INITIAL.

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

          IF /pws/zycee001-tpcalc = '0'.

* << Fim da inclusão

          ADD itab_zycet002-vlagente_r TO v_despesas.

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

          ELSE.

            SUBTRACT itab_zycet002-vlagente_r FROM v_despesas.

          ENDIF.

        ENDIF.

        IF NOT wa_zycet065-desconto IS INITIAL AND

           NOT itab_zycet002-vldesconto_r IS INITIAL.

          SUBTRACT itab_zycet002-vldesconto_r FROM v_despesas.

* << Fim da inclusão

        ENDIF.

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

        IF NOT wa_zycet065-acrescimo IS INITIAL AND

           NOT itab_zycet002-vlacrescimo_r IS INITIAL.

          ADD itab_zycet002-vlacrescimo_r TO v_despesas.

        ENDIF.

* << Fim da inclusão

        IF NOT v_despesas IS INITIAL.

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

          <fs_zycet118>-vfob = <fs_zycet118>-netpr - v_despesas.

          v_totdesp = v_totdesp + v_despesas.

* << Fim da exclusão

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

          IF /pws/zycee001-tpcalc = '0'.

            <fs_zycet118>-vfob =

              <fs_zycet118>-netpr -

              itab_zycet002-vldesconto_r +

              itab_zycet002-vlacrescimo_r.

            <fs_zycet118>-netpr = <fs_zycet118>-netpr + v_despesas.

          ELSE.

            <fs_zycet118>-vfob = <fs_zycet118>-netpr + v_despesas.

            <fs_zycet118>-netpr =

              <fs_zycet118>-netpr -

              itab_zycet002-vldesconto_r +

              itab_zycet002-vlacrescimo_r.

          ENDIF.

* << Fim da inclusão

        ELSE.

          <fs_zycet118>-vfob = <fs_zycet118>-netpr.

        ENDIF.

      ENDLOOP.

      CHECK sy-subrc IS INITIAL.

      PERFORM ajustes_re_termo USING itab_zycet116-perc_re_termo

                               CHANGING <fs_zycet092>-fkimg

                                        <fs_zycet092>-ntgew

                                        <fs_zycet092>-brgew

                                        <fs_zycet092>-netpr

                                        <fs_zycet092>-vfob.

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

      v_valor_anexo = <fs_zycet092>-netpr.

      IF NOT v_totdesp IS INITIAL.

        v_valor_anexo      = v_valor_anexo - v_totdesp.

        <fs_zycet092>-vfob = v_valor_anexo.

      ELSE.

        <fs_zycet092>-vfob = v_valor_anexo.

      ENDIF.

* << Fim da exclusão

    ENDLOOP.

  ELSE.

    LOOP AT itab_zycet118 ASSIGNING <fs_zycet118>.

      CLEAR v_despesas.

    READ TABLE itab_zycet002 WITH KEY vbeln_va = <fs_zycet118>-vbeln_va

                                            aupos = <fs_zycet118>-aupos

                                      vbeln_vl = <fs_zycet118>-vbeln_vl

                                            posnl = <fs_zycet118>-posnl

                                      vbeln_vf = <fs_zycet118>-vbeln_vf

                                            posnr = <fs_zycet118>-posnr

                                                 TRANSPORTING vlfrete_r

                                                             vlseguro_r

                                                                 vlod_r

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

                                                             vlagente_r.

* << Fim da exclusão

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

                                                             vlagente_r

                                                          vlacrescimo_r

                                                           vldesconto_r.

* << Fim da inclusão

      CHECK sy-subrc IS INITIAL.

      PERFORM ajustes_re_termo USING itab_zycet116-perc_re_termo

                               CHANGING <fs_zycet118>-fkimg

                                        <fs_zycet118>-ntgew

                                        <fs_zycet118>-brgew

                                        <fs_zycet118>-netpr

                                        <fs_zycet118>-vfob.

      IF NOT wa_zycet065-frete IS INITIAL AND

         NOT itab_zycet002-vlfrete_r IS INITIAL.

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

        IF /pws/zycee001-tpcalc = '0'.

* << Fim da inclusão

        ADD itab_zycet002-vlfrete_r TO v_despesas.

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

        ELSE.

          SUBTRACT itab_zycet002-vlfrete_r FROM v_despesas.

        ENDIF.

* << Fim da inclusão

      ENDIF.

      IF NOT wa_zycet065-seguro IS INITIAL AND

         NOT itab_zycet002-vlseguro_r IS INITIAL.

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

        IF /pws/zycee001-tpcalc = '0'.

* << Fim da inclusão

        ADD itab_zycet002-vlseguro_r TO v_despesas.

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

        ELSE.

          SUBTRACT itab_zycet002-vlseguro_r FROM v_despesas.

        ENDIF.

* << Fim da inclusão

      ENDIF.

      IF NOT wa_zycet065-outras_desp IS INITIAL AND

         NOT itab_zycet002-vlod_r IS INITIAL.

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

        IF /pws/zycee001-tpcalc = '0'.

* << Fim da inclusão

        ADD itab_zycet002-vlod_r TO v_despesas.

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

        ELSE.

          SUBTRACT itab_zycet002-vlod_r FROM v_despesas.

        ENDIF.

* << Fim da inclusão

      ENDIF.

      IF NOT wa_zycet065-comissao IS INITIAL AND

         NOT itab_zycet002-vlagente_r IS INITIAL.

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

        IF /pws/zycee001-tpcalc = '0'.

* << Fim da inclusão

        ADD itab_zycet002-vlagente_r TO v_despesas.

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

        ELSE.

          SUBTRACT itab_zycet002-vlagente_r FROM v_despesas.

        ENDIF.

      ENDIF.

      IF NOT wa_zycet065-desconto IS INITIAL AND

         NOT itab_zycet002-vldesconto_r IS INITIAL.

        SUBTRACT itab_zycet002-vldesconto_r FROM v_despesas.

      ENDIF.

      IF NOT wa_zycet065-acrescimo IS INITIAL AND

         NOT itab_zycet002-vlacrescimo_r IS INITIAL.

        ADD itab_zycet002-vlacrescimo_r TO v_despesas.

* << Fim da inclusão

      ENDIF.

      IF NOT v_despesas IS INITIAL.

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

        <fs_zycet118>-vfob = <fs_zycet118>-netpr - v_despesas.

* << Fim da exclusão

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

        IF /pws/zycee001-tpcalc = '0'.

          <fs_zycet118>-vfob =

            <fs_zycet118>-netpr -

            itab_zycet002-vldesconto_r +

            itab_zycet002-vlacrescimo_r.

          <fs_zycet118>-netpr = <fs_zycet118>-netpr + v_despesas.

        ELSE.

          <fs_zycet118>-vfob = <fs_zycet118>-netpr + v_despesas.

          <fs_zycet118>-netpr =

            <fs_zycet118>-netpr -

            itab_zycet002-vldesconto_r +

            itab_zycet002-vlacrescimo_r.

        ENDIF.

* << Fim da inclusão

      ELSE.

        <fs_zycet118>-vfob = <fs_zycet118>-netpr.

      ENDIF.

    ENDLOOP.

  ENDIF.

  PERFORM busca_parcelas.

ENDFORM.

FORM verifica_naladi.

  DATA: v_cont(3) TYPE n.

  IF refresh IS INITIAL.

...

 

...

    IF sy-subrc IS INITIAL.

      MOVE itab_zycet118_aux-dsmerc TO <fs_zycet118>-dsmerc.

    ENDIF.

    READ TABLE itab_zycet092_aux

                WITH KEY codnrseq = <fs_zycet118>-seqagrupado

                TRANSPORTING dsmerc.

    CHECK sy-subrc IS INITIAL.

    MOVE itab_zycet092_aux-dsmerc TO <fs_zycet118>-dsmerc.

  ENDLOOP.

ENDFORM.

* >> Início da inclusão:

FORM aplica_despesas.

  TYPES: BEGIN OF ty_zycet065,

          inco1       TYPE /pws/zycet065-inco1,

          fob         TYPE /pws/zycet065-fob,

          frete       TYPE /pws/zycet065-frete,

          seguro      TYPE /pws/zycet065-seguro,

          outras_desp TYPE /pws/zycet065-outras_desp,

          desconto    TYPE /pws/zycet065-desconto,

          acrescimo   TYPE /pws/zycet065-acrescimo,

          comissao    TYPE /pws/zycet065-comissao,

         END OF ty_zycet065.

  DATA: wa_zycet065   TYPE ty_zycet065,

        v_despesas    TYPE /pws/zycet002-vlme.

  SELECT SINGLE inco1

                fob

                frete

                seguro

                outras_desp

                desconto

                acrescimo

                comissao

   FROM /pws/zycet065

   INTO wa_zycet065

   WHERE inco1 EQ /pws/zycee001-inco1.

  FIELD-SYMBOLS: <fs_itemanexo> LIKE LINE OF itab_zycet118.

  LOOP AT itab_zycet118 ASSIGNING <fs_itemanexo>.

    CLEAR v_despesas.

    READ TABLE itab_zycet002 WITH KEY

        vbeln_va = <fs_itemanexo>-vbeln_va

        aupos    = <fs_itemanexo>-aupos

        vbeln_vl = <fs_itemanexo>-vbeln_vl

        posnl    = <fs_itemanexo>-posnl

        vbeln_vf = <fs_itemanexo>-vbeln_vf

        posnr    = <fs_itemanexo>-posnr

      TRANSPORTING

        vlfrete_r

        vlseguro_r

        vlod_r

        vlagente_r

        vlacrescimo_r

        vldesconto_r.

    CHECK sy-subrc IS INITIAL.

    IF NOT wa_zycet065-frete IS INITIAL AND

       NOT itab_zycet002-vlfrete_r IS INITIAL.

      IF /pws/zycee001-tpcalc = '0'.

        ADD itab_zycet002-vlfrete_r TO v_despesas.

      ELSE.

        SUBTRACT itab_zycet002-vlfrete_r FROM v_despesas.

      ENDIF.

    ENDIF.

    IF NOT wa_zycet065-seguro IS INITIAL AND

       NOT itab_zycet002-vlseguro_r IS INITIAL.

      IF /pws/zycee001-tpcalc = '0'.

        ADD itab_zycet002-vlseguro_r TO v_despesas.

      ELSE.

        SUBTRACT itab_zycet002-vlseguro_r FROM v_despesas.

      ENDIF.

    ENDIF.

    IF NOT wa_zycet065-outras_desp IS INITIAL AND

       NOT itab_zycet002-vlod_r IS INITIAL.

      IF /pws/zycee001-tpcalc = '0'.

        ADD itab_zycet002-vlod_r TO v_despesas.

      ELSE.

        SUBTRACT itab_zycet002-vlod_r FROM v_despesas.

      ENDIF.

    ENDIF.

    IF NOT wa_zycet065-comissao IS INITIAL AND

       NOT itab_zycet002-vlagente_r IS INITIAL.

      IF /pws/zycee001-tpcalc = '0'.

        ADD itab_zycet002-vlagente_r TO v_despesas.

      ELSE.

        SUBTRACT itab_zycet002-vlagente_r FROM v_despesas.

      ENDIF.

    ENDIF.

    IF NOT wa_zycet065-desconto IS INITIAL AND

       NOT itab_zycet002-vldesconto_r IS INITIAL.

      SUBTRACT itab_zycet002-vldesconto_r FROM v_despesas.

    ENDIF.

    IF NOT wa_zycet065-acrescimo IS INITIAL AND

       NOT itab_zycet002-vlacrescimo_r IS INITIAL.

      ADD itab_zycet002-vlacrescimo_r TO v_despesas.

    ENDIF.

    IF NOT v_despesas IS INITIAL.

      IF /pws/zycee001-tpcalc = '0'.

        <fs_itemanexo>-vfob =

          <fs_itemanexo>-netpr -

          itab_zycet002-vldesconto_r +

          itab_zycet002-vlacrescimo_r.

        <fs_itemanexo>-netpr = <fs_itemanexo>-netpr + v_despesas.

      ELSE.

        <fs_itemanexo>-vfob = <fs_itemanexo>-netpr + v_despesas.

        <fs_itemanexo>-netpr =

          <fs_itemanexo>-netpr -

          itab_zycet002-vldesconto_r +

          itab_zycet002-vlacrescimo_r.

      ENDIF.

    ELSE.

      <fs_itemanexo>-vfob = <fs_itemanexo>-netpr.

    ENDIF.

  ENDLOOP.

ENDFORM.

* << Fim da inclusão