Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 20/05/2009 00:00:00
Data/Hora Última Alteração: 20/06/2011 12:01:23
Descrição da Nota: AJUSTE PARA MELHORIA DE PERFORMANCE DO EMBARQUE DE NACIONALIZAÇÃO DE DA
Sintoma
Ajuste para melhoria de performance do embarque de nacionalização de DA
Solução
Ajuste para melhoria de performance do embarque de nacionalização de DA
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 08424 Data: 20/05/2009 Hora: 15:36:11
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 08424
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00009
Agrupamento : 00098
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01516 - 00001 - 6.0 - 00023 - DUMP NO EMBARQUE DE RECOF
05941 - 00002 - 7.0 - 00004 - PERFORMANCE EMBARQUE DE NACIONALIZAÇÃO RC
----------------------------------------------------------------------------------------------------
AJUSTE PARA MELHORIA DE PERFORMANCE DO EMBARQUE DE NACIONALIZAÇÃO DE DA
----------------------------------------------------------------------------------------------------
Palavras Chave:
PERFORMANCE - EMBARQUE - NACIONALIZAÇÃO - DA
/PWS/SAPMZYCI001
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI001F01
REPS /PWS/MZYCI001F03
REPS /PWS/MZYCI001I01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F01
...
/pws/zycie263-qtd_iten = itab_zycit003-invoiced.
/pws/zycie003-dtremessa = itab_zycit003-dtremessa.
REFRESH itab_zycit003_aux.
MOVE itab_zycit003[] TO itab_zycit003_aux[].
CHECK /pws/zycie001-regime EQ '16' OR
( /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.
* >> Início da inclusão: FORM CARREGA_ZYCBE003
IF itab_zycit482[] IS INITIAL.
* << Fim da inclusão
SELECT * FROM /pws/zycit482 INTO TABLE itab_zycit482
WHERE processo = '1'.
* >> Início da inclusão: FORM CARREGA_ZYCBE003
ENDIF.
* << Fim da inclusão
READ TABLE itab_zycit482 WITH KEY
processo = '1'.
IF sy-subrc = 0 AND /pws/zycie001-regime EQ '16'.
IF NOT itab_zycit003[] IS INITIAL AND
v_atualrc IS INITIAL.
...
...
v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten .
ENDIF.
ENDLOOP.
MOVE itab_zycit003-menge TO itab_zycit443-qtd_da.
itab_zycit003-sld_da = itab_zycit443-qtd_da -
( v_qtdutil_da + itab_zycit003-qtd_iten ).
MODIFY itab_zycit003 INDEX v_tabix.
ENDLOOP.
ENDIF.
ELSE.
* >> Início da exclusão: FORM CARREGA_ZYCBE003
IF NOT itab_zycit003[] IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM CARREGA_ZYCBE003
IF NOT itab_zycit003[] IS INITIAL
AND v_atualrc IS INITIAL.
* << Fim da inclusão
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.
READ TABLE itab_zycit467 INDEX 1.
IF sy-subrc EQ 0 AND
itab_zycit467-nrseq NE /pws/zycie001-nrseq..
REFRESH itab_zycit467.
ENDIF.
IF itab_zycit467[] IS INITIAL.
SELECT * FROM /pws/zycit467 "#EC CI_NOFIRST
INTO TABLE itab_zycit467
WHERE nrseq EQ /pws/zycie001-nrseq.
* >> Início da exclusão: FORM CARREGA_ZYCBE003
ENDIF.
* << Fim da exclusão
ENDIF.
IF NOT itab_zycit443[] IS INITIAL.
* >> Início da exclusão: FORM CARREGA_ZYCBE003
SELECT * FROM /pws/zycit003 "#EC CI_NOFIELD
INTO TABLE itab_zycit003_saldo "#EC CI_NOFIRST
* << Fim da exclusão
* >> Início da inclusão: FORM CARREGA_ZYCBE003
v_atualrc = 'X'.
SELECT * FROM /pws/zycit003 "#EC CI_NOFIRST
INTO TABLE itab_zycit003_saldo
* << Fim da inclusão
FOR ALL ENTRIES IN itab_zycit443
WHERE ebeln EQ itab_zycit443-ebeln
* >> Início da exclusão: FORM CARREGA_ZYCBE003
AND ebelp EQ itab_zycit443-ebelp
AND nrseqda EQ itab_zycit443-nrseqda.
ENDIF.
LOOP AT itab_zycit003.
v_tabix = sy-tabix.
IF NOT itab_zycit003_saldo[] IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM CARREGA_ZYCBE003
AND ebelp EQ itab_zycit443-ebelp .
IF sy-subrc EQ 0.
* << Fim da inclusão
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
* >> Início da exclusão: FORM CARREGA_ZYCBE003
AND tpdecl EQ 'DI'.
* << Fim da exclusão
* >> Início da inclusão: FORM CARREGA_ZYCBE003
AND tpdecl EQ 'DI'.
* << Fim da inclusão
LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.
DELETE itab_zycit003_saldo
WHERE nrseq EQ itab_zycit001_saldo-nrseq.
ENDLOOP.
* >> Início da inclusão: FORM CARREGA_ZYCBE003
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM CARREGA_ZYCBE003
ENDIF.
LOOP AT itab_zycit003.
v_tabix = sy-tabix.
* << Fim da inclusã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.
READ TABLE itab_zycit443 WITH KEY
ebeln = itab_zycit003-ebeln
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F03
...
/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.
IF NOT itab_zycit003[] IS INITIAL AND
v_atualrc IS INITIAL.
v_atualrc = 'X'.
* >> Início da exclusão: FORM VERIFICA_ITENS_DA
SELECT * FROM /pws/zycit003 "#EC CI_NOFIRST
* << Fim da exclusão
* >> Início da inclusão: FORM VERIFICA_ITENS_DA
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
FOR ALL ENTRIES IN itab_zycit443
WHERE ebeln EQ itab_zycit443-ebeln
AND ebelp EQ itab_zycit443-ebelp .
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'.
LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.
DELETE itab_zycit003_saldo
WHERE nrseq EQ itab_zycit001_saldo-nrseq.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
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
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 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.
* >> Início da inclusão: FORM VERIFICA_ITENS_DA
ENDIF.
ENDIF.
IF NOT itab_zycit003[] IS INITIAL.
SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263
WHERE nrseq = /pws/zycie001-nrseq
AND eliminado = space.
* << Fim da inclusão
ENDIF.
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.
* >> Início da inclusão: FORM VERIFICA_ITENS_DA
READ TABLE itab_zycit100_per WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF itab_zycit003-tpnf IS INITIAL.
READ TABLE itab_zycit100 WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc EQ 0.
* << Fim da inclusão
SELECT SINGLE j_1bmatuse INTO ekpo-j_1bmatuse
FROM ekpo
WHERE ebeln EQ itab_zycit003-ebeln
AND ebelp EQ itab_zycit003-ebelp.
SELECT SINGLE tpnf tpnf_ld tpnf_db tpnf_icms INTO
CORRESPONDING FIELDS OF /pws/zycit012
FROM /pws/zycit012
WHERE j_1bmatuse EQ ekpo-j_1bmatuse.
* >> Início da exclusão: FORM VERIFICA_ITENS_DA
READ TABLE itab_zycit100_per WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF itab_zycit003-tpnf IS INITIAL.
READ TABLE itab_zycit100 WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc EQ 0.
* << Fim da exclusão
IF NOT itab_zycit003-nrseqd IS INITIAL
AND NOT /pws/zycit012-tpnf_db IS INITIAL.
itab_zycit003-tpnf = /pws/zycit012-tpnf_db.
ELSEIF /pws/zycit100-icms_dif EQ 'X'
AND NOT /pws/zycit012-tpnf_icms IS INITIAL.
itab_zycit003-tpnf = /pws/zycit012-tpnf_icms.
ELSE.
itab_zycit003-tpnf = /pws/zycit012-tpnf.
REFRESH itab_zycit263.
* >> Início da exclusão: FORM VERIFICA_ITENS_DA
IF NOT itab_zycit003[] IS INITIAL.
SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263
WHERE nrseq = /pws/zycie001-nrseq
AND eliminado = space.
ENDIF.
* << Fim da exclusão
READ TABLE itab_zycit263 WITH KEY ebeln = itab_zycit263-ebeln
ebelp = itab_zycit263-ebelp.
IF sy-subrc EQ 0.
SELECT SINGLE frpagto INTO /pws/zycit006-frpagto
FROM /pws/zycit006 "#EC CI_NOFIELD
WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.
IF sy-subrc EQ 0.
IF /pws/zycit006-frpagto EQ 'A'.
itab_zycit003-tpnf = /pws/zycit012-tpnf_ld.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
...
...
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc EQ 0.
IF itab_zycit003-ntgew IS INITIAL AND
itab_zycit443_aux-gewei = 'G' AND NOT
itab_zycit003-qtd_iten IS INITIAL.
itab_zycit003-ntgew = 1 / 1000.
ENDIF.
ENDIF.
CLEAR itab_zycit482.
* >> Início da inclusão: FORM VERIFICA_ITENS_DA
IF itab_zycit482[] IS INITIAL.
* << Fim da inclusão
SELECT * FROM /pws/zycit482 INTO TABLE itab_zycit482
WHERE processo = '1'.
* >> Início da inclusão: FORM VERIFICA_ITENS_DA
ENDIF.
* << Fim da inclusão
READ TABLE itab_zycit482 WITH KEY
processo = '1'.
IF sy-subrc = 0 AND /pws/zycie001-regime EQ '16'.
CLEAR v_qtdutil_da.
LOOP AT itab_zycit003_saldo
...
...
IF itab_zycit003_saldo-nrseq NE /pws/zycie001-nrseq.
v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten .
ENDIF.
ENDLOOP.
itab_zycit003-sld_da = itab_zycit003-menge -
( v_qtdutil_da + itab_zycit003-qtd_iten ).
ELSE.
IF /pws/zycie001-regime EQ '14' OR
/pws/zycie001-regime EQ '16'.
IF NOT itab_zycit443[] IS INITIAL.
* >> 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_zycit443
WHERE ebeln EQ itab_zycit443-ebeln
AND ebelp EQ itab_zycit443-ebelp .
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'.
LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.
DELETE itab_zycit003_saldo
WHERE nrseq EQ itab_zycit001_saldo-nrseq.
ENDLOOP.
ENDIF.
* << 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.
READ TABLE itab_zycit443 WITH KEY
ebeln = itab_zycit003-ebeln
...
...
WHERE ebeln EQ itab_zycit455-ebeln
AND ebelp EQ itab_zycit455-ebelp.
ENDIF.
IF itab_zycit443[] IS INITIAL AND
sy-ucomm NE 'DELP' AND
itab_zycit003_del[] IS INITIAL.
SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443
WHERE nrseqda EQ /pws/zycit442-nrseqda.
ENDIF.
DELETE itab_zycit443_saldo WHERE nrseqda NE /pws/zycit442-nrseqda.
* >> Início da exclusão: FORM CALCULA_SALDO_DA
IF NOT itab_zycit443[] IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_SALDO_DA
IF NOT itab_zycit443[] IS INITIAL
AND v_atualrc IS INITIAL.
v_atualrc = 'X'.
* << Fim da inclusão
SELECT * FROM /pws/zycit003 "#EC CI_NOFIRST
INTO TABLE itab_zycit003_saldo
FOR ALL ENTRIES IN itab_zycit443
WHERE ebeln EQ itab_zycit443-ebeln
AND ebelp EQ itab_zycit443-ebelp .
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
...
...
WHERE nrseq EQ itab_zycit001_saldo-nrseq.
ENDLOOP.
ELSEIF /pws/zycie001-regime EQ '16'
AND /pws/zycie001-tpdecl EQ 'DI'.
LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.
DELETE itab_zycit003_saldo
WHERE nrseq EQ itab_zycit001_saldo-nrseq.
ENDLOOP.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM CALCULA_SALDO_DA
ENDIF.
* << Fim da inclusão
LOOP AT itab_zycit443.
CLEAR v_qtdutil_da.
v_index = sy-tabix.
LOOP AT itab_zycit003_saldo WHERE ebeln EQ itab_zycit443-ebeln
AND ebelp EQ itab_zycit443-ebelp .
IF itab_zycit003_saldo-nrseq NE /pws/zycie001-nrseq.
v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten.
ENDIF.
ENDLOOP.
itab_zycit443-qtd_util = v_qtdutil_da.
MODIFY itab_zycit443 INDEX v_index.
ENDLOOP.
* >> Início da exclusão: FORM CALCULA_SALDO_DA
ENDIF.
* << Fim da exclusão
ENDFORM.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001I01
...
WHEN 'DA'.
IF v_status_s NE 0.
PERFORM grava_tabelas.
ENDIF.
PERFORM call_da.
SELECT SINGLE status
FROM /pws/zycit001
INTO /pws/zycie001-status
WHERE nrseq = /pws/zycie001-nrseq.
WHEN 'SELE_DA'.
* >> Início da inclusão: MODULE USER_COMMAND_0050
CLEAR: v_atualrc.
* << Fim da inclusão
IF /pws/zycie001-regime = '16'.
PERFORM verifica_rc.
ENDIF.
SELECT * FROM /pws/zycit482 INTO TABLE itab_zycit482
WHERE processo = '1'.
IF v_manual EQ 'N'.
CALL SELECTION-SCREEN '0701'.
ELSE.
CALL SELECTION-SCREEN '0700'.
ENDIF.
...
...
MODULE mod_374 INPUT.
READ TABLE itab_zycit003 WITH KEY ebeln = /pws/zycie374-ebeln
ebelp = /pws/zycie374-ebelp.
* >> Início da exclusão: MODULE MOD_374
SELECT SINGLE nrseq FROM /pws/zycit100 "#EC CI_NOFIRST
* << Fim da exclusão
* >> Início da inclusão: MODULE MOD_374
SELECT SINGLE nrseq FROM /pws/zycit100 "#EC CI_NOFIRST
* << Fim da inclusão
INTO itab_zycit003-nrseq
WHERE nrseq EQ /pws/zycie001-nrseq.
IF sy-subrc EQ 0.
EXIT.
ENDIF.
CLEAR: itab_zycit003.
MODIFY itab_zycit003 TRANSPORTING advalii advalipi advalicms
WHERE ebeln = /pws/zycie374-ebeln
AND ebelp = /pws/zycie374-ebelp.
ENDMODULE.
...