Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 15/02/2008 00:00:00
Data/Hora Última Alteração: 22/02/2011 15:20:48
Descrição da Nota: PERFORMANCE EMBARQUE DE NACIONALIZAÇÃO RC
Sintoma
PERFORMANCE EMBARQUE DE NACIONALIZAÇÃO RC
Solução
Atualizado embarque de nacionalização para melhoria de performance nos itens
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 05941 Data: 15/02/2008 Hora: 14:20:29
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 05941
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00004
Agrupamento : 00034
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01383 - 00001 - 6.0 - 00023 - AJUSTES NA DA
04848 - 00002 - 7.0 - 00003 - DUMP SALDO DA SLD_DA "VALOR NEGATIVO NO SALDO DA DA" NO EMBARQUE
----------------------------------------------------------------------------------------------------
PERFORMANCE EMBARQUE DE NACIONALIZAÇÃO RC
----------------------------------------------------------------------------------------------------
Palavras Chave:
PERFORMANCE - NACIONALIZAÇÃO - EMBARQUE - RC -
/PWS/SAPMZYCI001
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI001F01
REPS /PWS/MZYCI001F03
REPS /PWS/MZYCI001I01
REPS /PWS/MZYCI001X01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F01
...
( /pws/zycie001-regime EQ '14' AND
sy-tcode EQ '/PWS/ZYCI001_A' ) OR
( /pws/zycie001-regime EQ '14' AND
sy-tcode EQ '/PWS/ZYCI001_E' ).
CLEAR itab_zycit482.
SELECT * FROM /pws/zycit482 INTO TABLE itab_zycit482
WHERE processo = '1'.
READ TABLE itab_zycit482 WITH KEY
processo = '1'.
IF sy-subrc = 0 AND /pws/zycie001-regime EQ '16'.
* >> Início da exclusão: FORM CARREGA_ZYCBE003
SELECT * FROM /pws/zycit003 "#EC CI_NOFIRST
* << Fim da exclusão
* >> Início da inclusão: FORM CARREGA_ZYCBE003
IF NOT itab_zycit003[] IS INITIAL AND
v_atualrc IS INITIAL.
v_atualrc = 'X'.
SELECT * FROM /pws/zycit003 "#EC CI_NOFIRST
* << Fim da inclusão
INTO TABLE itab_zycit003_saldo
FOR ALL ENTRIES IN itab_zycit003
WHERE ebeln EQ itab_zycit003-ebeln
AND ebelp EQ itab_zycit003-ebelp
* >> Início da exclusão: FORM CARREGA_ZYCBE003
AND nrseqda EQ itab_zycit003-nrseqda.
* << Fim da exclusão
* >> Início da inclusão: FORM CARREGA_ZYCBE003
AND nrseq NE /pws/zycie003-nrseq.
IF sy-subrc EQ 0.
SELECT nrseq regime FROM /pws/zycit001
INTO TABLE itab_zycit001_saldo
FOR ALL ENTRIES IN itab_zycit003_saldo
WHERE nrseq EQ itab_zycit003_saldo-nrseq
AND tpdecl EQ 'DI'
AND regime EQ '16'.
LOOP AT itab_zycit003_saldo.
READ TABLE itab_zycit001_saldo WITH KEY
nrseq = itab_zycit003_saldo-nrseq.
IF sy-subrc NE 0 .
DELETE itab_zycit003_saldo WHERE
nrseq EQ itab_zycit003_saldo-nrseq.
ENDIF.
ENDLOOP.
ENDIF.
* << Fim da inclusão
LOOP AT itab_zycit003.
v_tabix = sy-tabix.
CLEAR v_qtdutil_da.
LOOP AT itab_zycit003_saldo
WHERE ebeln = itab_zycit003-ebeln
AND ebelp = itab_zycit003-ebelp.
IF itab_zycit003_saldo-nrseq NE /pws/zycie001-nrseq.
v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten .
ENDIF.
ENDLOOP.
* >> Início da exclusão: FORM CARREGA_ZYCBE003
SELECT SINGLE * FROM /pws/zycit100
WHERE ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp AND
nrseqdi = itab_zycit003-nrseqda.
SELECT SINGLE qtd_iten
FROM /pws/zycit003 INTO itab_zycit443-qtd_da
WHERE nrseq = /pws/zycit100-nrseq AND
ebeln = /pws/zycit100-ebeln AND
ebelp = /pws/zycit100-ebelp.
IF sy-subrc EQ 0 .
* << Fim da exclusão
* >> Início da inclusão: FORM CARREGA_ZYCBE003
MOVE itab_zycit003-menge TO itab_zycit443-qtd_da.
* << Fim da inclusão
itab_zycit003-sld_da = itab_zycit443-qtd_da -
( v_qtdutil_da + itab_zycit003-qtd_iten ).
* >> Início da exclusão: FORM CARREGA_ZYCBE003
ENDIF.
itab_zycit003-menge = itab_zycit443-qtd_da.
* << Fim da exclusão
MODIFY itab_zycit003 INDEX v_tabix.
ENDLOOP.
* >> Início da inclusão: FORM CARREGA_ZYCBE003
ENDIF.
* << Fim da inclusão
ELSE.
IF NOT itab_zycit003[] IS INITIAL.
FREE itab_zycit443.
REFRESH itab_zycit443.
SELECT *
INTO TABLE itab_zycit443
FROM /pws/zycit443
FOR ALL ENTRIES IN itab_zycit003
WHERE nrseqda EQ itab_zycit003-nrseqda.
ENDIF.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F03
...
v_waers_diferente = 'X'.
ENDLOOP.
IF sy-subrc NE 0.
/pws/zycie001-waers = v_moeda.
ELSE.
/pws/zycie001-waers = /pws/zycbt007-waersa.
IF /pws/zycbt007-waersa IS INITIAL.
MESSAGE e015 WITH text-213.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM VERIFICA_ITENS_DA
IF NOT itab_zycit003[] IS INITIAL AND
v_atualrc IS INITIAL.
v_atualrc = 'X'.
SELECT * FROM /pws/zycit003 "#EC CI_NOFIRST
INTO TABLE itab_zycit003_saldo
FOR ALL ENTRIES IN itab_zycit003
WHERE ebeln EQ itab_zycit003-ebeln
AND ebelp EQ itab_zycit003-ebelp
AND nrseq NE /pws/zycie003-nrseq.
IF sy-subrc EQ 0.
SELECT nrseq regime FROM /pws/zycit001
INTO TABLE itab_zycit001_saldo
FOR ALL ENTRIES IN itab_zycit003_saldo
WHERE nrseq EQ itab_zycit003_saldo-nrseq
AND tpdecl EQ 'DI'
AND regime EQ '16'.
LOOP AT itab_zycit003_saldo.
READ TABLE itab_zycit001_saldo WITH KEY
nrseq = itab_zycit003_saldo-nrseq.
IF sy-subrc NE 0 .
DELETE itab_zycit003_saldo WHERE
nrseq EQ itab_zycit003_saldo-nrseq.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
* << Fim da inclusão
LOOP AT itab_zycit003.
v_tabix = sy-tabix.
v_netpr = v_netpr +
( itab_zycit003-netpr * itab_zycit003-qtd_iten ).
/pws/zycie001-netpr = v_netpr.
IF /pws/zycie001-netpr < 0.
CLEAR /pws/zycie001-netpr.
MESSAGE e061 WITH text-235 text-236.
ENDIF.
SELECT SINGLE j_1bmatuse INTO ekpo-j_1bmatuse
...
...
itab_zycit003-qtd_iten IS INITIAL.
itab_zycit003-ntgew = 1 / 1000.
ENDIF.
ENDIF.
CLEAR itab_zycit482.
SELECT * FROM /pws/zycit482 INTO TABLE itab_zycit482
WHERE processo = '1'.
READ TABLE itab_zycit482 WITH KEY
processo = '1'.
IF sy-subrc = 0 AND /pws/zycie001-regime EQ '16'.
* >> Início da exclusão: FORM VERIFICA_ITENS_DA
SELECT * FROM /pws/zycit003 "#EC CI_NOFIRST
INTO TABLE itab_zycit003_saldo
FOR ALL ENTRIES IN itab_zycit003
WHERE ebeln EQ itab_zycit003-ebeln
AND ebelp EQ itab_zycit003-ebelp
AND nrseqda EQ itab_zycit003-nrseqda.
* << Fim da exclusão
CLEAR v_qtdutil_da.
LOOP AT itab_zycit003_saldo
WHERE ebeln = itab_zycit003-ebeln
AND ebelp = itab_zycit003-ebelp.
IF itab_zycit003_saldo-nrseq NE /pws/zycie001-nrseq.
v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten .
ENDIF.
ENDLOOP.
* >> Início da exclusão: FORM VERIFICA_ITENS_DA
SELECT SINGLE * FROM /pws/zycit100
WHERE ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp AND
nrseqdi = itab_zycit003-nrseqda.
SELECT SINGLE qtd_iten
FROM /pws/zycit003 INTO itab_zycit443-qtd_da
WHERE nrseq = /pws/zycit100-nrseq AND
ebeln = /pws/zycit100-ebeln AND
ebelp = /pws/zycit100-ebelp.
IF sy-subrc EQ 0 .
itab_zycit003-sld_da = itab_zycit443-qtd_da -
* << Fim da exclusão
* >> Início da inclusão: FORM VERIFICA_ITENS_DA
itab_zycit003-sld_da = itab_zycit003-menge -
* << Fim da inclusão
( v_qtdutil_da + itab_zycit003-qtd_iten ).
* >> Início da exclusão: FORM VERIFICA_ITENS_DA
ENDIF.
* << Fim da exclusão
ELSE.
IF /pws/zycie001-regime EQ '14' OR
/pws/zycie001-regime EQ '16'.
IF NOT itab_zycit443[] IS INITIAL.
SELECT * FROM /pws/zycit003 "#EC CI_NOFIRST
INTO TABLE itab_zycit003_saldo
...
...
IF itab_da-werks IS INITIAL.
itab_da-werks = itab_zycit003_da-werks.
ELSE.
IF itab_da-werks NE itab_zycit003_da-werks.
v_centro_dif = c_sim.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT itab_zycit100_da.
* >> Início da inclusão: FORM SELECIONAR_ITENS_DA
CLEAR: v_atualrc.
* << Fim da inclusão
READ TABLE itab_zycit003_da WITH KEY
ebeln = itab_zycit100_da-ebeln
ebelp = itab_zycit100_da-ebelp
nrseq = itab_zycit100_da-nrseq.
CLEAR v_qtd_util.
LOOP AT itab_zycit003_saldo
WHERE ebeln = itab_zycit100_da-ebeln
AND ebelp = itab_zycit100_da-ebelp
AND nrseq NE itab_zycit100_da-nrseq.
v_qtd_util = v_qtd_util + itab_zycit003_saldo-qtd_iten.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001I01
MODULE user_command_0001 INPUT.
WRITE /pws/zycie001-nrseq TO /pws/zycie001-nrseq RIGHT-JUSTIFIED.
OVERLAY /pws/zycie001-nrseq WITH '0000000000'.
CASE okcode.
WHEN 'ENTE'.
* >> Início da inclusão: MODULE USER_COMMAND_0001
CLEAR: v_atualrc.
* << Fim da inclusão
SELECT SINGLE *
FROM /pws/zycit001
INTO /pws/zycie001
WHERE nrseq = /pws/zycie001-nrseq.
IF sy-subrc NE 0.
MESSAGE w015 WITH text-031.
ELSE.
MOVE /pws/zycie001 TO wa_zycit001.
PERFORM lock_record.
PERFORM recuperando_itens.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001X01
...
v_belnr LIKE /pws/zycbt032-belnr ,
v_nrpres LIKE /pws/zycit026-nrpres ,
v_nradto LIKE /pws/zycit008-nradto ,
v_nrseqori LIKE /pws/zycit036-nrseqori.
DATA: v_value(10) TYPE n ,
v_registro ,
v_tipo_1 LIKE /pws/zycit036-origem ,
v_belnr_ant LIKE /pws/zycie006-belnr_p ,
v_cpochv1 LIKE /pws/zycbe033-cpochv ,
v_tabela LIKE /pws/zycbe033-tabela .
* >> Início da inclusão:
data: v_atualrc type c.
* << Fim da inclusão
DATA:
itab_zycbt032 LIKE /pws/zycbt032 OCCURS 10 WITH HEADER LINE,
it_zycbe033 LIKE /pws/zycbe033 OCCURS 10 WITH HEADER LINE,
it_zycbt034 LIKE /pws/zycbt034 OCCURS 0 WITH HEADER LINE ,
it_zycbt011 LIKE /pws/zycbt011 OCCURS 10 WITH HEADER LINE,
it_zycbt012 LIKE /pws/zycbt012 OCCURS 10 WITH HEADER LINE,
it_zycbt013 LIKE /pws/zycbt013 OCCURS 10 WITH HEADER LINE.
DATA: BEGIN OF it_zycbe035 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbe035.
DATA: END OF it_zycbe035.
...