Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal
Data/Hora da Publicação: 15/02/2006 00:00:00
Data/Hora Última Alteração: 20/06/2011 12:16:03
Descrição da Nota: PROBLEMA DE PERFORMANCE NA GERAÇÃO DA NF
Sintoma
Problema de performance na geração da NF.
Solução
Inseridas condições nas seleções das tabelas com for all entries.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 00882 Data: 15/02/2006 Hora: 11:45:07
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 00882
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00022
Agrupamento : 00101
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
PROBLEMA DE PERFORMANCE NA GERAÇÃO DA NF
----------------------------------------------------------------------------------------------------
Palavras Chave:
PERFORMANCE - GERAÇÃO - NOTA - FISCAL
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCI_RATEIO_CUSTO
REPS /PWS/MZYCI016F01
REPS /PWS/ZYCIR035
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCI_RATEIO_CUSTO
...
IF sy-subrc NE 0.
v_erro = '2'.
v_resposta = 'S'.
ENDIF.
DELETE itab_zycit036 WHERE vlreal IS initial.
* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
PERFORM custeando_planejado(/pws/zycir035) TABLES it_desp
itab_zycit036_plan.
* << Fim da inclusão
IF v_erro IS INITIAL AND sy-binpt IS INITIAL.
EXPORT itab_zycit036 TO MEMORY ID 'r145'.
EXPORT v_parametro TO MEMORY ID '145p'.
EXPORT v_visualiza TO MEMORY ID '145v'.
EXPORT v_programa TO MEMORY ID '145r'.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
...
PERFORM visualiza_rateio.
IF v_resp NE 'S'.
EXIT.
ENDIF.
ENDIF.
* >> Início da exclusão: FORM MONTAR_CUSTO_DI
PERFORM cria_despesas(/pws/zycir035) TABLES it_desp
itab_zycit036.
PERFORM custeando_planejado(/pws/zycir035) TABLES it_desp
itab_zycit036_plan.
* << Fim da exclusão
MOVE itab_zycit036[] TO itab_zycit036_di[].
LOOP AT itab_zycit036 WHERE origem = 'DI'.
READ TABLE itab_zycit036_di WITH KEY nrseq = itab_zycit036-nrseq
ebeln = itab_zycit036-ebeln
ebelp = itab_zycit036-ebelp
...
...
PERFORM visualiza_rateio.
IF v_resp NE 'S'.
EXIT.
ENDIF.
ENDIF.
* >> Início da exclusão: FORM MONTAR_CUSTO_DI
PERFORM cria_despesas(/pws/zycir035) TABLES it_desp
itab_zycit036.
PERFORM custeando_planejado(/pws/zycir035) TABLES it_desp
itab_zycit036_plan.
* << Fim da exclusão
MOVE itab_zycit036[] TO itab_zycit036_di[].
ENDIF.
ENDIF.
MOVE itab_zycit036[] TO itab_zycit036_di[].
PERFORM calcular_outros_custos(/pws/zycir006) TABLES itab_zycit036.
...
...
v_resposta = v_resp
v_erro = v_erro
TABLES
itab_zycit036 = itab_zycit036
itab_zycit003 = itab_zycit003_aux
* >> Início da exclusão: FORM VISUALIZA_RATEIO
itab_zycit100 = itab_zycit100aux.
* << Fim da exclusão
* >> Início da inclusão: FORM VISUALIZA_RATEIO
itab_zycit100 = itab_zycit100aux
itab_zycit036_plan = itab_zycit036_plan.
* << Fim da inclusão
ELSE.
CALL FUNCTION '/PWS/ZYCI_RATEIO_CUSTO'
EXPORTING
v_programa = v_programa
v_visualiza = v_visualiza
...
...
v_resposta = v_resp
v_erro = v_erro
TABLES
itab_zycit036 = itab_zycit036
itab_zycit003 = itab_zycit003
* >> Início da exclusão: FORM VISUALIZA_RATEIO
itab_zycit100 = itab_zycit100aux.
* << Fim da exclusão
* >> Início da inclusão: FORM VISUALIZA_RATEIO
itab_zycit100 = itab_zycit100aux
itab_zycit036_plan = itab_zycit036_plan.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM ver_rateio.
DATA: v_programa LIKE /pws/zycit036-origem VALUE 'NF'.
SELECT * FROM /pws/zycit100
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCIR035
report /pws/zycir035 message-id /pws/zycim
line-count 65
line-size 132
no standard page heading.
* >> Início da exclusão:
data: v_origem(3) value 'DI ',
v_codmod value 'D',
v_ok,
v_netpr type /pws/zycil816 .
* << Fim da exclusão
tables: /pws/zycit085, /pws/zycie085,
/pws/zycit003,
/pws/zycie093,
/pws/zycit100,
/pws/zycit001,
...
...
/pws/zycit093,
ekko,
tcurx,
konv,
t001.
* >> Início da inclusão:
DATA: v_origem(3) VALUE 'DI ',
v_codmod VALUE 'D',
v_ok,
v_netpr TYPE /pws/zycil816 .
* << Fim da inclusão
data: begin of it_desp occurs 0,
nrseq like /pws/zycie003-nrseq,
ebeln like /pws/zycie003-ebeln,
ebelp like /pws/zycie003-ebelp,
netpr like /pws/zycie003-netpr,
...
...
vlcofins like /pws/zycit100-vlcofins,
end of it_desp.
data: itab_zycit036 like /pws/zycit036 occurs 0 with header line,
it_zycit100 like /pws/zycit100 occurs 0 with header line,
itab_zycit100 like /pws/zycit100 occurs 0 with header line.
* >> Início da inclusão:
DATA: BEGIN OF itab_zyglt100 OCCURS 10.
INCLUDE STRUCTURE /pws/zyglt100.
DATA: END OF itab_zyglt100.
* << Fim da inclusão
data: it_zycit085 like /pws/zycie085,
wa_desp like it_desp,
wa_036 like itab_zycit036.
selection-screen begin of block di with frame title text-001.
parameter: pa_nrseq like /pws/zycie085-nrseqdi,
...
...
where inco1 = it_desp-inco1
and land1 eq t001-land1.
select * from /pws/zycit029 into table itab_zycit029
where codmod eq 'D'
and land1 eq t001-land1.
* >> Início da inclusão: FORM CUSTEANDO_PLANEJADO
IF NOT itab_zycit029[] IS INITIAL.
* << Fim da inclusão
select * from /pws/zycit030
into table itab_zycit030
for all entries in itab_zycit029
where land1 eq t001-land1
and codmod eq 'D'
and codigo eq itab_zycit029-codigo.
* >> Início da inclusão: FORM CUSTEANDO_PLANEJADO
ENDIF.
IF NOT it_desp[] IS INITIAL.
* << Fim da inclusão
select nrseq embarca bukrs werks waers dtinicio from /pws/zycit001
into table itab_zycit001
for all entries in it_desp
where nrseq = it_desp-nrseq.
select * from /pws/zycit003 into table itab_zycit003
...
...
ebeln = it_desp-ebeln and
ebelp = it_desp-ebelp.
select * from /pws/zycit100 into table itab_zycit100
for all entries in it_desp
where nrseq = it_desp-nrseq.
* >> Início da inclusão: FORM CUSTEANDO_PLANEJADO
ENDIF.
* << Fim da inclusão
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'
...
...
v_ebeln = it_desp-ebeln.
read table itab_zycit001 with key nrseq = it_desp-nrseq.
select single bstyp from ekko into v_bstyp where
ebeln = it_desp-ebeln.
if v_bstyp eq 'L'.
* >> Início da inclusão: FORM CUSTEANDO_PLANEJADO
PERFORM verifica_exit USING 'D'
'/PWS/ZYCIR035'
'CST001'.
CLEAR: itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY zexit = 'CST001'.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) TABLES IT_DESP
CHANGING ITAB_KONP.
ENDIF.
ELSE.
* << Fim da inclusão
select * from a016 into table itab_a016
for all entries in it_desp where
evrtn = it_desp-ebeln and
evrtp = it_desp-ebelp and
datbi GE itab_zycit001-dtinicio AND
...
...
read table itab_a016 with key knumh = itab_konp-knumh.
itab_konp-ebeln = itab_a016-evrtn.
itab_konp-ebelp = itab_a016-evrtp.
modify itab_konp transporting ebeln ebelp.
endloop.
* >> Início da inclusão: FORM CUSTEANDO_PLANEJADO
ENDIF.
* << Fim da inclusão
endif.
else.
free itab_custo_condition.
select single * from ekko
into ekko
...
...
tcurx-currdec = 2.
endif.
p_itab_zycit036_vlreal =
p_itab_zycit036_vlreal / ( 10 ** ( tcurx-currdec - 2 ) ).
endform.
* >> Início da inclusão:
FORM verifica_exit USING p_modulo
p_func
p_exit.
CLEAR itab_zyglt100.
REFRESH itab_zyglt100.
CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'
EXPORTING
i_codmod = p_modulo
i_func = p_func
i_zexit = p_exit
TABLES
itab_zyglt100 = itab_zyglt100
EXCEPTIONS
i_codmod_nao_encontrado = 1
i_func_nao_encontrado = 2
i_zexit_nao_encontrado = 3
OTHERS = 4.
ENDFORM.
* << Fim da inclusão