CE PLUS - Nota 005006

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Custo Efetivo

Data/Hora da Publicação: 17/10/2007 00:00:00

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

Descrição da Nota: AJUSTE PARA MELHORIA DE PERFORMANCE DO CUSTO

Sintoma

Ajuste para melhoria de performance do custo efetivo, quando o processo tem muitos itens.

 

 

Solução

Ajuste para melhoria de performance do custo

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

ERRO AO LEVAR FATURA DE FRETE PARA O CUSTO.

FATURA, COM DATA DE INCLUSÃO DIFERENTE DA DATA DO DOCUMENTO

NECESSÁRIA CHAMADA DE EXIT PARA MOVIMENTADO - RETORNO VARIÁVEL V_RUB

CUSTO EFETIVO CALCULA ERRADO QUANDO POSSUI MAIS DE UMA FATURA.

AGREGAR OS CUSTOS EFETIVOS DA ADMISSÃO NA NACIONALIZAÇÃO DA MERCADORIA

ERRO NA EXIBIÇÃO DO ENCERRAMENTO DE PROCESSO SEM EURO

Informações Complementares

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

Nota Número 05006 Data: 17/10/2007 Hora: 10:12:36

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

 

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

Nota Número              : 05006

Categoria                : Melhoria

Prioridade               : Baixa

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00020

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

Referência às notas relacionadas:

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

 

01417  - 00001 - 6.0    - 00023  - AGREGAR OS CUSTOS EFETIVOS DA ADMISSÃO NA NACIONALIZAÇÃO DA MERCA

01438  - 00002 - 6.0    - 00023  - ERRO NA EXIBIÇÃO DO ENCERRAMENTO DE PROCESSO SEM EURO

02065  - 00003 - 6.0    - 00024  - ERRO AO LEVAR FATURA DE FRETE PARA O CUSTO.

02162  - 00004 - 6.0    - 00025  - CUSTO EFETIVO CALCULA ERRADO QUANDO POSSUI MAIS DE UMA FATURA.

03037  - 00005 - 6.0    - 00026  - NECESSÁRIA CHAMADA DE EXIT PARA MOVIMENTADO - RETORNO VARIÁVEL V_

03258  - 00006 - 6.0    - 00026  - FATURA, COM DATA DE INCLUSÃO DIFERENTE DA DATA DO DOCUMENTO

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

AJUSTE PARA MELHORIA DE PERFORMANCE DO CUSTO

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

Palavras Chave:

PERFORMANCE - CUSTO - EFETIVO

/PWS/SAPMZYCI010 - /PWS/ZYCIR006 - /PWS/ZYCIR035

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

Objetos da nota:

REPS /PWS/MZYCI010F01

REPS /PWS/MZYCI010F03

REPS /PWS/MZYCI010X01

REPS /PWS/ZYCIR006

REPS /PWS/ZYCIR035

 

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

Modificações efetuadas em REPS /PWS/MZYCI010F01

 

...

ENDFORM.

FORM custear_itens.

  DATA: v_descon,

        v_vlplan  LIKE /pws/zycie036-vlreal,

        v_vlplant LIKE /pws/zycie036-vlreal,

        v_vlreal  LIKE /pws/zycie036-vlreal,

        v_vlmov   LIKE /pws/zycie036-vlreal,

        v_vldif   LIKE /pws/zycie036-vlreal.

  CLEAR : v_trea, v_tmov, v_tplan, v_sdif.

  IF NOT itab_zycit003[] IS INITIAL.

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

    READ TABLE itab_zycit003 INDEX 1.

* << Fim da inclusão

    SELECT * FROM /pws/zycit042

      INTO TABLE itab_zycit042

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

      FOR ALL ENTRIES IN itab_zycit003

      WHERE nrseq = itab_zycit003-nrseq

        AND ebeln = itab_zycit003-ebeln

        AND ebelp = itab_zycit003-ebelp.

    READ TABLE itab_zycit003 INDEX 1.

* << Fim da exclusão

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

      WHERE nrseq = itab_zycit003-nrseq.

* << Fim da inclusão

    SELECT SINGLE * FROM /pws/zycit442

     WHERE nrseqda EQ itab_zycit003-nrseqda.

    IF NOT sy-subrc IS INITIAL.

      SELECT SINGLE *

             INTO  wa_zycit443

             FROM  /pws/zycit443

             WHERE nrseq EQ itab_zycit003-nrseq

             AND   ebeln EQ itab_zycit003-ebeln

             AND   ebelp EQ itab_zycit003-ebelp.

      SELECT SINGLE *

...

 

...

             WHERE nrseqda EQ wa_zycit443-nrseqda.

    ENDIF.

  ENDIF.

  SELECT SINGLE * FROM t001w

    WHERE werks = /pws/zycie001-werks.

  FREE itab_zycit033.

  SELECT * FROM /pws/zycit033

    INTO TABLE itab_zycit033

    WHERE clnf  EQ 'G'

      AND bukrs EQ /pws/zycie001-bukrs.

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

  itab_zycit036_per[] = itab_zycit036_aux2[].

  DELETE ADJACENT DUPLICATES FROM itab_zycit036_per COMPARING nrseqori.

* << Fim da inclusão

  FREE it_fat.

  SELECT * FROM /pws/zycit006 INTO TABLE it_fat

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

    FOR ALL ENTRIES IN itab_zycit036_aux2

    WHERE nrseq EQ itab_zycit036_aux2-nrseqori.

* << Fim da exclusão

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

    FOR ALL ENTRIES IN itab_zycit036_per

    WHERE nrseq EQ itab_zycit036_per-nrseqori.

* << Fim da inclusão

  FREE it_dc.

  SELECT * FROM /pws/zycit008 INTO TABLE it_dc

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

    FOR ALL ENTRIES IN itab_zycit036_aux2

    WHERE nradto EQ itab_zycit036_aux2-nrseqori.

* << Fim da exclusão

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

    FOR ALL ENTRIES IN itab_zycit036_per

    WHERE nradto EQ itab_zycit036_per-nrseqori.

* << Fim da inclusão

  FREE it_pc.

  SELECT * FROM /pws/zycit026 INTO TABLE it_pc

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

    FOR ALL ENTRIES IN itab_zycit036_aux2

    WHERE nrpres EQ itab_zycit036_aux2-nrseqori.

* << Fim da exclusão

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

    FOR ALL ENTRIES IN itab_zycit036_per

    WHERE nrpres EQ itab_zycit036_per-nrseqori.

* << Fim da inclusão

  FREE it_nf.

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

  SELECT * FROM /pws/zycit042 INTO TABLE it_nf

    FOR ALL ENTRIES IN itab_zycit036_aux2

    WHERE nrseq EQ itab_zycit036_aux2-nrseq.

* << Fim da exclusão

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

  it_nf[] = itab_zycit042[].

* << Fim da inclusão

  SORT itab_zycit036_aux BY nrseq ebeln ebelp.

...

 

...

                    CHANGING v_vlplan.

      ELSE.

        v_vlplan = itab_zycit036_plan-netpr.

      ENDIF.

      /pws/zycie001-vlplan     =  v_vlplan + /pws/zycie001-vlplan.

      /pws/zycie001-waers_plan = /pws/zycie001-waers.

    ENDIF.

  ENDLOOP.

  CLEAR itab_zycit036a.

  FREE it_fat.

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

  SELECT * FROM /pws/zycit006

  INTO TABLE it_fat

  FOR ALL ENTRIES IN itab_zycit036_aux2

  WHERE nrseq EQ itab_zycit036_aux2-nrseqori.

* << Fim da exclusão

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

  itab_zycit036_per[] = itab_zycit036_aux2[].

  DELETE ADJACENT DUPLICATES FROM itab_zycit036_per COMPARING nrseqori.

  SELECT * FROM /pws/zycit006 INTO TABLE it_fat

     FOR ALL ENTRIES IN itab_zycit036_per

     WHERE nrseq EQ itab_zycit036_per-nrseqori.

* << Fim da inclusão

  LOOP AT itab_zycit036_aux2.

    CLEAR: v_vlreal, v_vlreal_t.

    IF v_erro_conv NE 'S'.

      IF itab_zycit036_aux2-waers_real NE /pws/zycie001-waers AND

         NOT itab_zycit036_aux2-waers_real IS INITIAL.

        v_vlreal_t = itab_zycit036_aux2-vlreal.

        IF itab_zycit036_aux2-origem EQ 'FAT'.

          CLEAR it_fat.

          READ TABLE it_fat WITH KEY

                                 nrseq = itab_zycit036_aux2-nrseqori.

...

 

...

  READ TABLE itab_zycit036_aux INDEX 1.

  SELECT SINGLE * FROM /pws/zycit100

    WHERE nrseq = itab_zycit036_aux-nrseq.

  SELECT * FROM /pws/zycit085 INTO TABLE itab_zycit085

    WHERE nrseqdi = /pws/zycit100-nrseqdi.

  PERFORM exit_movimentado TABLES itab_zycit036_aux2

                           CHANGING v_rub.

  SELECT SINGLE * FROM /pws/zycbt007 INTO wa_zycbt007

                  WHERE bukrs EQ /pws/zycit001-bukrs.

  IF NOT itab_zycit003[] IS INITIAL.

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

    itab_zycit036_per[] = itab_zycit036_aux2[].

   DELETE ADJACENT DUPLICATES FROM itab_zycit036_per COMPARING nrseqori.

* << Fim da inclusão

    SELECT * FROM /pws/zycit006

      INTO TABLE it_zycit006_aux2

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

      FOR ALL ENTRIES IN itab_zycit036_aux2

      WHERE nrseq = itab_zycit036_aux2-nrseqori

* << Fim da exclusão

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

      FOR ALL ENTRIES IN itab_zycit036_per

      WHERE nrseq EQ itab_zycit036_per-nrseqori

* << Fim da inclusão

        AND eliminado EQ space.

  ENDIF.

  IF NOT it_zycit006_aux2[] IS INITIAL

    AND it_bkpf_aux[] IS INITIAL.

    DATA: BEGIN OF itab_zycit006_year OCCURS 0.

            INCLUDE STRUCTURE /pws/zycit006.

    DATA: END OF itab_zycit006_year.

    DATA: v_tabix LIKE sy-tabix,

          v_year  LIKE t009b-bdatj.

    MOVE it_zycit006_aux2[] TO itab_zycit006_year[].

...

 

...

    ENDLOOP.

    it_zycit006_aux2[] = itab_zycit006_year[].

    SELECT *

      FROM bkpf

      INTO TABLE it_bkpf

      FOR ALL ENTRIES IN it_zycit006_aux2

      WHERE bukrs EQ it_zycit006_aux2-bukrs

        AND belnr EQ it_zycit006_aux2-belnr_p

        AND gjahr EQ it_zycit006_aux2-dt_belnrp(04).

  ENDIF.

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

  SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263

           WHERE

           nrseq = /pws/zycie001-nrseq.

  REFRESH itab_zycit263t .

  itab_zycit263t[] = itab_zycit263[].

  DELETE ADJACENT DUPLICATES FROM itab_zycit263t COMPARING nrseq_pgfat.

  SELECT * FROM /pws/zycit006 INTO TABLE itab_zycit006

      FOR ALL ENTRIES IN itab_zycit263t

     WHERE nrseq_pgfat = itab_zycit263t-nrseq_pgfat.

  DELETE itab_zycit006 WHERE frpagto NE 'A'

                         OR tpfatura EQ '99'

                         OR eliminado EQ 'X'.

* << Fim da inclusão

  LOOP AT itab_zycit036_aux2.

    PERFORM move_plan_mov_aux.

  ENDLOOP.

  SORT itab_zycit036_aux2 BY nrseq ebeln ebelp codigo origem.

ENDFORM.

FORM conversao_aux.

  IF /pws/zycie001-regime NE '14'.

    IF itab_zycit036_aux2-waers_real NE /pws/zycbt007-waersb.

      IF NOT /pws/zycit085-dttax IS INITIAL.

        PERFORM taxa_converte

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI010F03

 

...

    MOVE itab_zycit044[] TO itab_itens_nf[].

  ELSEIF NOT itab_zycit042[] IS INITIAL.

    LOOP AT itab_zycit042.

      MOVE-CORRESPONDING itab_zycit042 TO itab_itens_nf.

      APPEND itab_itens_nf.

    ENDLOOP.

  ENDIF.

  v_clnf = 'G'.

  IF itab_zycit042[] IS INITIAL AND NOT

     itab_zycit003[] IS INITIAL.

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

    read table itab_zycit003 index 1.

* << Fim da inclusão

    SELECT * FROM /pws/zycit042

           INTO TABLE itab_zycit042

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

           FOR ALL ENTRIES IN itab_zycit003

           WHERE nrseq EQ itab_zycit003-nrseq

             AND ebeln EQ itab_zycit003-ebeln

             AND ebelp EQ itab_zycit003-ebelp.

* << Fim da exclusão

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

           WHERE nrseq EQ itab_zycit003-nrseq.

* << Fim da inclusão

  ENDIF.

  CLEAR itab_zycit398.

  REFRESH itab_zycit398 .

  SELECT * FROM /pws/zycit398

      INTO TABLE itab_zycit398.

  LOOP AT itab_zycit042.

    CLEAR itab_zycit033.

    READ TABLE itab_zycit033 WITH KEY clnf  = v_clnf

                                      tpnf  = itab_zycit042-tpnf

                                      regio = t001w-regio.

...

 

...

          itab_zycit036_aux-vlmov = ' '.

          itab_zycit036_aux-vldif = ' '.

          MODIFY itab_zycit036_aux.

        ENDIF.

      ENDIF.

    ENDLOOP.

  ENDLOOP.

  DATA: it_zycit265 TYPE /pws/zycit265 OCCURS 0 WITH HEADER LINE.

  IF it_zycit265[] IS INITIAL AND NOT

     itab_zycit003[] IS INITIAL.

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

    read table itab_zycit003 index 1.

* << Fim da inclusão

    SELECT * FROM /pws/zycit265 INTO TABLE it_zycit265

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

             FOR ALL ENTRIES IN itab_zycit003

             WHERE nrseq EQ itab_zycit003-nrseq

               AND ebeln EQ itab_zycit003-ebeln

               AND ebelp EQ itab_zycit003-ebelp.

* << Fim da exclusão

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

             WHERE nrseq EQ itab_zycit003-nrseq.

* << Fim da inclusão

  ELSEIF it_zycit265[] IS INITIAL

     AND NOT itab_zycit003[] IS INITIAL.

    SELECT * FROM /pws/zycit265 INTO TABLE it_zycit265

             WHERE nrseq EQ itab_zycit001-nrseq.

  ENDIF.

  IF NOT it_zycit265[] IS INITIAL.

    v_clnf = 'C'.

    LOOP AT it_zycit265.

      CLEAR itab_zycit033.

      READ TABLE itab_zycit033 WITH KEY clnf  = v_clnf

...

 

...

    ENDIF.

  ENDLOOP.

  SORT itab_zycit036_aux2 BY nrseq ebeln ebelp codigo origem.

ENDFORM.

FORM delete_custos.

  FREE itab_zycit033.

  SELECT *

    FROM /pws/zycit033

    INTO TABLE itab_zycit033

    WHERE bukrs EQ /pws/zycie001-bukrs.

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

  READ TABLE itab_zycit044 WITH KEY nrseq = /pws/zycie001-nrseq.

  IF sy-subrc EQ 0.

    IF sy-subrc = 0.

      v_remessa = 'X'.

    ELSE.

      READ TABLE itab_zycit042 WITH KEY nrseq = /pws/zycie001-nrseq.

      IF sy-subrc NE 0.

* << Fim da inclusão

  REFRESH: itab_zycit044, itab_zycit042.

  CLEAR v_remessa.

  SELECT * FROM /pws/zycit044 INTO TABLE itab_zycit044

         WHERE nrseq = /pws/zycie001-nrseq.

  IF sy-subrc = 0.

    v_remessa = 'X'.

  ELSE.

    SELECT * FROM /pws/zycit042 INTO TABLE itab_zycit042

       WHERE nrseq = /pws/zycie001-nrseq.

  ENDIF.

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

      ENDIF.

    ENDIF.

  ENDIF.

* << Fim da inclusão

  DATA: it_036_tmp LIKE itab_zycit036_aux OCCURS 0 WITH HEADER LINE,

        v_idx      LIKE sy-index     .

  CLEAR: itab_zycit140. FREE: itab_zycit140.

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

  SELECT * FROM /pws/zycit140 INTO TABLE itab_zycit140

       WHERE codmod EQ 'D'

        AND  land1 EQ t001-land1.

  CLEAR: it_036_tmp. FREE: it_036_tmp.

  it_036_tmp[] = itab_zycit036_aux[].

  LOOP AT it_036_tmp.

...

 

...

  MOVE itab_zycit036_aux[] TO itab_zycit036_ori2[].

ENDFORM.

FORM move_plan_mov_aux.

  DATA: v_vlreal LIKE /pws/zycit036-vlmov,

        v_valor LIKE /pws/zycit036-vlmov.

  DATA: v_arred LIKE /pws/zycit036-vlmov,

        v_arre2 LIKE /pws/zycit036-vlmov.

  v_arre2 = v_arred = '00.01'.

  CLEAR:  v_taxa, s_msg1,

          v_valor.

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

  IF /pws/zycie001-bukrs NE wa_zycbt007-bukrs.

* << Fim da inclusão

  SELECT SINGLE land1

    FROM t001

    INTO t001-land1

    WHERE bukrs EQ /pws/zycie001-bukrs.

  SELECT SINGLE * FROM /pws/zycbt007 INTO wa_zycbt007

    WHERE bukrs = /pws/zycie001-bukrs.

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

  ENDIF.

* << Fim da inclusão

  IF itab_zycit029[] IS INITIAL.

...

 

...

    CLEAR itab_zycit029.

  ENDIF.

  CLEAR: /pws/zycit006, v_livre.

  IF itab_zycit036_aux2-codigo = 'FOB' OR

     itab_zycit036_aux2-codigo = 'CIF' OR

     itab_zycit036_aux2-codigo = 'C&F'.

    READ TABLE itab_zycit003 WITH KEY nrseq = itab_zycit036_aux2-nrseq

                                      ebeln = itab_zycit036_aux2-ebeln

                                      ebelp = itab_zycit036_aux2-ebelp.

    IF sy-subrc = 0.

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

      SELECT SINGLE * FROM /pws/zycit263

               WHERE

               nrseq = itab_zycit003-nrseq AND

               ebeln = itab_zycit003-ebeln AND

* << Fim da exclusão

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

      CLEAR: itab_zycit263, itab_zycit006.

      READ TABLE itab_zycit263 INTO /pws/zycit263 WITH KEY

               nrseq = itab_zycit003-nrseq

               ebeln = itab_zycit003-ebeln

* << Fim da inclusão

               ebelp = itab_zycit003-ebelp.

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

      SELECT SINGLE * FROM /pws/zycit006

        WHERE nrseq_pgfat = /pws/zycit263-nrseq_pgfat

          AND frpagto = 'A'

          AND tpfatura NE '99'

          AND eliminado NE 'X'.

* << Fim da exclusão

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

      IF sy-subrc EQ 0.

        READ TABLE itab_zycit006 INTO /pws/zycit006 WITH KEY

          nrseq_pgfat = /pws/zycit263-nrseq_pgfat.

      ENDIF.

* << Fim da inclusão

      IF sy-subrc = 0.

        v_livre = 'X'.

      ENDIF.

    ENDIF.

  ENDIF.

  IF ( itab_zycit036_aux2-codigo = 'II' OR

     itab_zycit036_aux2-codigo = 'IPI' OR

     itab_zycit036_aux2-codigo = 'ICMS' ) OR

     itab_zycit029-estatistico = 'X' OR

     v_rub = 'X' OR

...

 

...

                     ebeln = itab_zycit036_plan-ebeln

                     ebelp = itab_zycit036_plan-ebelp

                     codigo = itab_zycit036_plan-codigo

                     origem = 'PED'.

    IF sy-subrc NE 0.

      MOVE itab_zycit036_plan TO itab_zycit036_aux.

      APPEND itab_zycit036_aux.

      MODIFY /pws/zycit036 FROM itab_zycit036_plan.

    ENDIF.

  ENDLOOP.

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

  LOOP AT itab_zycit036_aux.

    READ TABLE itab_zycit036_plan WITH KEY

                     nrseq = itab_zycit036_aux-nrseq

                     ebeln = itab_zycit036_aux-ebeln

                     ebelp = itab_zycit036_aux-ebelp

                     codigo = itab_zycit036_aux-codigo.

* << Fim da exclusão

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

  PERFORM delete_custos.

  CLEAR v_remessa.

  READ TABLE itab_zycit044 WITH KEY nrseq = /pws/zycie001-nrseq.

* << Fim da inclusão

    IF sy-subrc NE 0.

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

      IF itab_zycit036_aux-origem = 'FAT'.

        UPDATE /pws/zycit036 SET netpr = itab_zycit036_plan-netpr

                                 waers = itab_zycit036_plan-waers

          WHERE nrseq = itab_zycit036_plan-nrseq AND

                ebeln = itab_zycit036_plan-ebeln AND

                ebelp = itab_zycit036_plan-ebelp AND

                codigo = itab_zycit036_plan-codigo AND

                origem = 'FAT'.

* << Fim da exclusão

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

    READ TABLE itab_zycit042 WITH KEY nrseq = /pws/zycie001-nrseq.

* << Fim da inclusão

      ENDIF.

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

  IF sy-subrc NE 0.

    REFRESH: itab_zycit044, itab_zycit042.

* << Fim da inclusão

    ENDIF.

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

  ENDLOOP.

  PERFORM delete_custos.

  CLEAR v_remessa.

* << Fim da exclusão

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

  IF itab_zycit044[] IS INITIAL AND

     itab_zycit042[] IS INITIAL.

* << Fim da inclusão

  SELECT * FROM /pws/zycit044 INTO TABLE itab_zycit044

   WHERE nrseq = /pws/zycie001-nrseq.

  IF sy-subrc = 0.

    v_remessa = 'X'.

  ELSE.

    SELECT * FROM /pws/zycit042 INTO TABLE itab_zycit042

     WHERE nrseq = /pws/zycie001-nrseq.

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

    ENDIF.

  ELSE.

    READ TABLE itab_zycit044 WITH KEY nrseq = /pws/zycie001-nrseq.

    IF sy-subrc EQ 0.

      v_remessa = 'X'.

* << Fim da inclusão

  ENDIF.

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

  ENDIF.

* << Fim da inclusão

  FREE itab_zycit033.

  SELECT *

    FROM /pws/zycit033

    INTO TABLE itab_zycit033

    WHERE bukrs EQ /pws/zycie001-bukrs.

  PERFORM retira_imposto.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI010X01

 

...

data: end of itab_zycit398.

data: begin of itab_zycit036_aux occurs 0.

        include structure /pws/zycit036.

data: end of itab_zycit036_aux.

data: begin of itab_zycit036_aux3 occurs 0.

        include structure /pws/zycit036.

data: end of itab_zycit036_aux3.

data: begin of itab_zycit036_aux2 occurs 0.

        include structure /pws/zycit036.

data: end of itab_zycit036_aux2.

* >> Início da inclusão:

DATA: BEGIN OF itab_zycit036_per OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit036.

DATA: END OF itab_zycit036_per.

DATA: itab_zycit263t LIKE /pws/zycit263 OCCURS 0 WITH HEADER LINE.

* << Fim da inclusão

data itab_zycit036_rub like /pws/zycit036 occurs 0 with header line.

data: begin of itab_zycit036_plan occurs 0.

        include structure /pws/zycit036.

data: end of itab_zycit036_plan.

data v_rub.

DATA: END OF COMMON PART b.

 

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

Modificações efetuadas em REPS /PWS/ZYCIR006

 

...

DATA: END OF itab_custo_condition.

DATA: BEGIN OF itab_zycit006 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit006.

DATA: END OF itab_zycit006.

DATA: BEGIN OF itab_zycit007 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit007.

DATA: END OF itab_zycit007.

DATA: BEGIN OF itab_tcurc OCCURS 0.

        INCLUDE STRUCTURE tcurc.

DATA: END OF itab_tcurc.

* >> Início da inclusão:

DATA: itab_tcurx TYPE tcurx OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF itab_taxob08 OCCURS 0.

DATA: waerso TYPE /pws/zycit003-waers,

      waersd TYPE /pws/zycit003-waers,

      taxa   TYPE /pws/zycit245-qtd_iten.

DATA: END OF itab_taxob08.

* << Fim da inclusão

DATA: BEGIN OF itab_zycit443 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit443.

DATA: END OF itab_zycit443.

DATA: wa_t001w LIKE t001w,

      wa_bseg  LIKE bseg OCCURS 0.

DATA:

  v_netpr  LIKE ekpo-netpr,

  v_porcent LIKE konv-kbetr,

  v_tpeso  LIKE /pws/zycit003-ntgew,

  v_dfator LIKE  tcurr-ffact,

...

 

...

        v_val_tots  LIKE /pws/zycit036-vlreal ,

        v_linf TYPE i,

        v_lins TYPE i,

        v_ebeln TYPE /pws/zycit003-ebeln,

        v_ebelp TYPE /pws/zycit003-ebelp,

        v_tot_lins TYPE i,

        v_tot_linf TYPE i,

        v_valor_mi LIKE /pws/zycit036-vlreal,

        v_val     LIKE /pws/zycit100-vlseg  ,

        v_linha  TYPE i.

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

  DATA: itab_zycit036t TYPE /pws/zycit036 OCCURS 0 WITH HEADER LINE,

        itab_zycit263t TYPE /pws/zycit263 OCCURS 0 WITH HEADER LINE.

* << Fim da inclusão

  IF itab_zycit036[] IS INITIAL .

    v_importou = 'S'.

    indx-aedat = sy-datum.

    indx-usera = sy-uname.

    IMPORT itab_zycit036_auxiliar[] FROM MEMORY ID 'I006A'.

    MOVE-CORRESPONDING itab_zycit036_auxiliar TO itab_zycit036.

  ENDIF.

  READ TABLE itab_zycit036 INDEX 1.

  IF pa_nrseq IS INITIAL.

    pa_nrseq = itab_zycit036-nrseq.

...

 

...

       FOR ALL ENTRIES IN itab_zycit036

       WHERE waers EQ itab_zycit036-waers_real.

    SELECT * FROM tcurc APPENDING TABLE itab_tcurc

       WHERE waers = /pws/zycit085-waersfob.

    SELECT * FROM /pws/zycit174 INTO TABLE itab_zycit174

    WHERE vigen_inicio <= /pws/zycit085-dttax AND

          vigen_fim    >= /pws/zycit085-dttax AND

          land1       = t001-land1.

    IF itab_zycit003[] IS INITIAL.

      SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003

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

        FOR ALL ENTRIES IN itab_zycit036

        WHERE nrseq = itab_zycit036-nrseq

          AND ebeln = itab_zycit036-ebeln

          AND ebelp = itab_zycit036-ebelp.

* << Fim da exclusão

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

        WHERE nrseq = /pws/zycit001-nrseq.

* << Fim da inclusão

    ENDIF.

    IF itab_zycit263[] IS INITIAL.

      SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263

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

         FOR ALL ENTRIES IN itab_zycit036

         WHERE nrseq = itab_zycit036-nrseq

           AND ebeln = itab_zycit036-ebeln

           AND ebelp = itab_zycit036-ebelp

* << Fim da exclusão

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

        WHERE nrseq = /pws/zycit001-nrseq

* << Fim da inclusão

           AND eliminado NE 'X'.

    ENDIF.

    IF itab_zycit006[] IS INITIAL.

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

      REFRESH itab_zycit036t.

      itab_zycit036t[] = itab_zycit036[].

      SORT itab_zycit036t BY nrseqori.

      DELETE ADJACENT DUPLICATES FROM itab_zycit036t COMPARING nrseqori.

* << Fim da inclusão

      SELECT *

        FROM /pws/zycit006

        INTO TABLE itab_zycit006

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

        FOR ALL ENTRIES IN itab_zycit036

        WHERE nrseq = itab_zycit036-nrseqori

* << Fim da exclusão

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

        FOR ALL ENTRIES IN itab_zycit036t

        WHERE nrseq = itab_zycit036t-nrseqori

* << Fim da inclusão

          AND eliminado EQ space.

    ENDIF.

  ENDIF.

  IF NOT itab_zycit006[] IS INITIAL.

    DATA: BEGIN OF itab_zycit006_year OCCURS 0.

            INCLUDE STRUCTURE /pws/zycit006.

    DATA: END OF itab_zycit006_year.

    DATA: v_tabix LIKE sy-tabix,

          v_year  LIKE t009b-bdatj.

    MOVE itab_zycit006[] TO itab_zycit006_year[].

...

 

...

          ENDIF.

          itab_zycit036-waers_real = /pws/zycit085-waersfob.

        ENDIF.

      ENDIF.

      MODIFY itab_zycit036 INDEX v_index.

    ENDLOOP.

  ENDIF.

  LOOP AT itab_zycit140 WHERE origem = 'NF'.

    LOOP AT itab_zycit036 WHERE nrseqori <> '9999999999' AND

                                      codigo = itab_zycit140-codigo.

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

      EXIT.

* << Fim da inclusão

    ENDLOOP.

    IF sy-subrc = 0.

      DELETE itab_zycit036 WHERE codigo = itab_zycit140-codigo AND

                                 nrseqori = '9999999999'.

    ENDIF.

  ENDLOOP.

  CLEAR: v_tot_linf, v_tot_lins, v_linf, v_lins.

  SORT itab_zycit036 BY ebeln ebelp origem codigo.

  LOOP AT itab_zycit036 WHERE codigo EQ 'FRETEI'

                          AND origem NE 'PED'.

...

 

...

    ENDIF.

  ENDLOOP.

  LOOP AT itab_zycit036 WHERE codigo EQ 'SEGURO'

                          AND origem NE 'PED'.

    v_tot_lins = v_tot_lins + 1.

  ENDLOOP.

  DATA : BEGIN OF itab_zycit006_fat OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit006.

  DATA : END OF itab_zycit006_fat.

  IF NOT itab_zycit263[] IS INITIAL.

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

    itab_zycit263t[] = itab_zycit263[].

    SORT itab_zycit263t BY nrseq_pgfat.

    DELETE ADJACENT DUPLICATES FROM itab_zycit263t

                                COMPARING nrseq_pgfat.

* << Fim da inclusão

    SELECT * FROM /pws/zycit006 INTO TABLE itab_zycit006_fat

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

      FOR ALL ENTRIES IN itab_zycit263

      WHERE nrseq_pgfat = itab_zycit263-nrseq_pgfat

* << Fim da exclusão

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

      FOR ALL ENTRIES IN itab_zycit263t

      WHERE nrseq_pgfat = itab_zycit263t-nrseq_pgfat

* << Fim da inclusão

        AND frpagto = 'A'

...

 

...

        IF itab_zycit036-origem = 'FAT'.

          READ TABLE itab_zycit003 WITH KEY

                      nrseq = itab_zycit036-nrseq

                      ebeln = itab_zycit036-ebeln

                      ebelp = itab_zycit036-ebelp.

          IF sy-subrc = 0.

            READ TABLE itab_zycit263 WITH KEY

                                 nrseq = itab_zycit003-nrseq

                                 ebeln = itab_zycit003-ebeln

                                 ebelp = itab_zycit003-ebelp.

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

            SELECT SINGLE nrseq belnr_p dtincl FROM /pws/zycit006

                   INTO (v_nrseq_fat,v_belnr_p,v_dtincl)

                   WHERE nrseq_pgfat = itab_zycit263-nrseq_pgfat.

* << Fim da exclusão

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

            CLEAR: itab_zycit006.

            READ TABLE itab_zycit006

                    WITH KEY  nrseq_pgfat = itab_zycit263-nrseq_pgfat.

            v_nrseq_fat = itab_zycit006-nrseq.

            v_belnr_p = itab_zycit006-belnr_p.

            v_dtincl  = itab_zycit006-dtincl .

* << Fim da inclusão

            IF sy-subrc EQ 0 AND v_belnr_p IS INITIAL.

              SELECT SINGLE belnr_p FROM /pws/zycit132

                     INTO (v_belnr_p)

                     WHERE nrseq EQ v_nrseq_fat.

            ENDIF.

          ENDIF.

          IF sy-subrc = 0.

            READ TABLE itab_zycit006

                    WITH KEY nrseq_pgfat = itab_zycit263-nrseq_pgfat.

            IF sy-subrc NE 0 OR itab_zycit006-dt_belnrp IS INITIAL.

            ELSE.

              v_dtincl = itab_zycit006-dt_belnrp.

            ENDIF.

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

            READ TABLE itab_bkpf WITH KEY

                              bukrs = /pws/zycit001-bukrs

                              belnr = v_belnr_p

                              gjahr = v_dtincl+0(4).

            IF sy-subrc EQ 0.

              v_kursf = itab_bkpf-kursf.

            ELSE.

* << Fim da inclusão

            SELECT SINGLE kursf FROM bkpf INTO v_kursf

                       WHERE bukrs  = /pws/zycit001-bukrs

                       AND   belnr  = v_belnr_p

                       AND   gjahr  = v_dtincl+0(4).

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

            ENDIF.

* << Fim da inclusão

          ENDIF.

        ENDIF.

        IF itab_zycit036-vlreal GT 0         AND

...

 

...

    indx-usera = sy-uname.

    EXPORT itab_zycit036[] TO MEMORY ID 'I006A'.

  ENDIF.

ENDFORM.

FORM converter_moeda USING    p_vlorig

                              p_meorig

                              p_medest

                     CHANGING p_vldest.

  DATA: v_ctmoeda LIKE tcurr-kurst VALUE 'M',

        v_dfact LIKE  tcurr-ffact,

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

        v_erro_tax,

* << Fim da inclusão

    v_kurst LIKE /pws/zycit000-kurst.

  IF p_vlorig NE 0.

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

    CLEAR: v_erro_tax.

    READ TABLE itab_taxob08 WITH KEY waerso = p_meorig

                                     waersd = p_medest.

    IF sy-subrc EQ 0.

      p_vldest = p_vlorig * itab_taxob08-taxa.

      EXIT.

    ENDIF.

    IF /pws/zycit001-bukrs NE t001-bukrs OR /pws/zycit000 IS INITIAL.

* << Fim da inclusão

    SELECT SINGLE *

      FROM t001

      WHERE bukrs EQ /pws/zycit001-bukrs.

    SELECT SINGLE *

      FROM /pws/zycit000

      WHERE land1 EQ t001-land1.

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

    ENDIF.

* << Fim da inclusão

    IF /pws/zycit000-kurst IS INITIAL.

...

 

...

       EXCEPTIONS

             i_demoeda_nao_encontrado   = 1

             i_paramoeda_nao_encontrado = 2

             fator_nao_encontrado       = 3

             i_ctmoeda_nao_encontrado   = 4

             i_dtbase_nao_encontrada    = 5

             taxa_nao_encontrada        = 6

             i_montante_nao_encontrado  = 7.

    IF sy-subrc NE 0.

      MESSAGE i061 WITH text-013 p_meorig 'para' p_medest.

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

      v_erro_tax = 'X'.

* << Fim da inclusão

    ENDIF.

  ENDIF.

  IF p_meorig = 'JPY'.

    p_vldest = p_vldest * v_dfact.

  ENDIF.

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

  IF v_erro_tax IS INITIAL.

    itab_taxob08-waerso = p_meorig.

    itab_taxob08-waersd = p_medest.

    itab_taxob08-taxa = p_vldest / p_vlorig.

    APPEND itab_taxob08.

  ENDIF.

* << Fim da inclusão

ENDFORM.

FORM trata_decimais USING    p_moeda

                    CHANGING p_valor.

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

  READ TABLE itab_tcurx INTO tcurx WITH KEY currkey = p_moeda.

  IF sy-subrc NE 0.

  CLEAR: tcurx.

* << Fim da inclusão

  SELECT SINGLE * FROM tcurx WHERE currkey = p_moeda.

  IF sy-subrc <> 0.

    tcurx-currdec = 2.

  ENDIF.

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

    tcurx-currkey = p_moeda.

    APPEND tcurx TO itab_tcurx.

  ENDIF.

* << Fim da inclusão

  p_valor = p_valor * ( 10 ** ( tcurx-currdec - 2 ) ).

ENDFORM.

FORM desconsidera_desp_est CHANGING p_pa_nrseq.

  DATA: v_clnf(1) TYPE c VALUE space.

  CLEAR: itab_zycit029_est,

         itab_itens_nf    ,

         itab_zycit033    ,

...

 

...

    ENDLOOP.

    v_clnf = 'G'.

  ELSE.

    LOOP AT itab_zycit044.

      MOVE-CORRESPONDING itab_zycit044 TO itab_itens_nf.

      APPEND itab_itens_nf.

    ENDLOOP.

    v_clnf = 'R'.

  ENDIF.

  LOOP AT itab_itens_nf.

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

    IF wa_t001w-werks NE itab_itens_nf-werks.

* << Fim da inclusão

    CLEAR wa_t001w.

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

    SELECT * UP TO 1 ROWS FROM t001w INTO wa_t001w

* << Fim da exclusão

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

      SELECT SINGLE * FROM t001w INTO wa_t001w

* << Fim da inclusão

           WHERE werks = itab_itens_nf-werks.

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

    ENDSELECT.

* << Fim da exclusão

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

    ENDIF.

* << Fim da inclusão

    CLEAR itab_zycit033.

    READ TABLE itab_zycit033 WITH KEY clnf  = v_clnf

                                      tpnf  = itab_itens_nf-tpnf

                                      regio = wa_t001w-regio.

    IF sy-subrc NE 0.

      READ TABLE itab_zycit033 WITH KEY clnf = v_clnf

                                        tpnf = itab_itens_nf-tpnf.

    ENDIF.

    LOOP AT itab_zycit036 WHERE nrseq = itab_itens_nf-nrseq

                            AND ebeln = itab_itens_nf-ebeln

...

 

...

    ENDIF.

  ELSE.

    CONCATENATE p_data+6(2) '/' p_data+4(2) '/' p_data+0(4)

    INTO v_msgd.

    CONCATENATE p_waers text-022 p_data INTO s_msg1 SEPARATED BY space.

    MESSAGE s015 WITH text-021 s_msg1.

  ENDIF.

ENDFORM.

FORM retorna_decimais USING    p_moeda

                      CHANGING p_valor.

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

  READ TABLE itab_tcurx INTO tcurx WITH KEY currkey = p_moeda.

  IF sy-subrc NE 0.

    CLEAR: tcurx.

* << Fim da inclusão

  SELECT SINGLE * FROM tcurx WHERE currkey = p_moeda.

  IF sy-subrc <> 0.

    tcurx-currdec = 2.

  ENDIF.

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

    tcurx-currkey = p_moeda.

    APPEND tcurx TO itab_tcurx.

  ENDIF.

* << Fim da inclusão

  p_valor = p_valor / ( 10 ** ( tcurx-currdec - 2 ) ).

ENDFORM.

...

 

 

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

Modificações efetuadas em REPS /PWS/ZYCIR035

 

...

    CLEAR fa_036-waers_real.

  ENDIF.

ENDFORM.

FORM custeando_planejado TABLES it_desp       STRUCTURE it_desp

                                itab_zycit036 STRUCTURE itab_zycit036.

  DATA: v_flag,

        v_ebelp LIKE konv-kposn,

        v_bstyp LIKE ekko-bstyp,

        v_ebeln LIKE ekpo-ebeln,

        v_valor LIKE bsak-wrbtr.

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

  DATA: itab_desp_aux LIKE it_desp OCCURS 0.

* << Fim da inclusão

  DATA: BEGIN OF itab_zycit030_aux OCCURS 0,

                   nrseq   LIKE /pws/zycie003-nrseq,

                   ebeln   LIKE /pws/zycie003-ebeln,

                   ebelp   LIKE /pws/zycie003-ebelp,

                   codigo  LIKE /pws/zycit030-codigo,

                   codmod  LIKE /pws/zycit030-codmod,

                   kschl   LIKE /pws/zycit030-kschl,

                   vtext   LIKE /pws/zycit030-vtext,

                   fator   LIKE /pws/zycit030-fator,

                   valor   TYPE /pws/zycil816 ,

...

 

...

     INTO TABLE itab_zycit030

     WHERE land1 EQ t001-land1

     AND codmod EQ 'D'.

    IF sy-subrc NE 0.

      SELECT * FROM /pws/zycit030

       INTO TABLE itab_zycit030

       WHERE codmod EQ 'D'.

    ENDIF.

  ENDIF.

  IF NOT it_desp[] IS INITIAL.

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

    itab_desp_aux[] = it_desp[].

    DELETE ADJACENT DUPLICATES FROM itab_desp_aux

            COMPARING nrseq.

    SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003

           FOR ALL ENTRIES IN itab_desp_aux

           WHERE nrseq = itab_desp_aux-nrseq.

* << Fim da inclusão

    SELECT nrseq embarca bukrs werks waers dtinicio FROM /pws/zycit001

           INTO TABLE itab_zycit001

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

           FOR ALL ENTRIES IN it_desp

           WHERE nrseq = it_desp-nrseq.

    SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003

           FOR ALL ENTRIES IN it_desp

           WHERE nrseq = it_desp-nrseq AND

                 ebeln = it_desp-ebeln AND

                 ebelp = it_desp-ebelp.

* << Fim da exclusão

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

           FOR ALL ENTRIES IN itab_desp_aux

           WHERE nrseq = itab_desp_aux-nrseq.

    SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

           FOR ALL ENTRIES IN itab_desp_aux

           WHERE nrseq = itab_desp_aux-nrseq.

* << Fim da inclusão

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

    SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

      FOR ALL ENTRIES IN it_desp

      WHERE nrseq = it_desp-nrseq.

* << Fim da exclusão

  ENDIF.

  IF /pws/zycit031-inco1_ci EQ 'FOB'.

    DELETE itab_zycit030 WHERE codigo = 'CIF'

                            OR codigo  = 'C&F'.

  ELSEIF /pws/zycit031-inco1_ci EQ 'C&F'.

    DELETE itab_zycit030 WHERE codigo = 'FOB'

                            OR codigo = 'CIF'

                            OR codigo = 'FRETEI'.

  ELSEIF /pws/zycit031-inco1_ci EQ 'CIF'.

    DELETE itab_zycit030 WHERE codigo = 'C&F'

...