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
7.0
Produto:
Nota
Descrição
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'
...