Módulo: DOC. IMPORTAÇÃO
Funcionalidade: DI
Data/Hora da Publicação: 29/05/2009 00:00:00
Data/Hora Última Alteração: 22/02/2011 14:04:31
Descrição da Nota: DUMP DE OVERFLOW AO TENTAR CRIAR A DI
Sintoma
Ao tentar criar a DI para itens com quantidade a partir de 1.000.000 ocorre dump por Overflow.
Solução
Ajustado tratamento de casas decimais para utilizar campo com tamanho maior para não ocorrer o DUMP.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 08467 Data: 29/05/2009 Hora: 11:48:23
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 08467
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00009
Agrupamento : 00099
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
08288 - 00001 - 7.0 - 00009 - DUMP DE DIVISÃO POR ZERO NA CRIAÇÃO DA DI.
08456 - 00001 - 7.0 - 00009 - AO SALVAR DI, MUDA RATEIO DE VALORES DE DESPESA, ALTERANDO OS IMP
----------------------------------------------------------------------------------------------------
DUMP DE OVERFLOW AO TENTAR CRIAR A DI
----------------------------------------------------------------------------------------------------
Palavras Chave:
DUMP - OVERFLOW - DI - CRIAR
/PWS/SAPMZYCI023
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI023F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI023F01
...
FORM load_ifre USING p_tipo.
* >> Início da inclusão: FORM LOAD_IFRE
DATA: v_decim1 TYPE /pws/zycit245-qtd_tot,
v_decim2 TYPE /pws/zycit245-qtd_tot.
* << Fim da inclusão
...
...
ebelp = /pws/zycie003-ebelp.
IF sy-subrc NE 0.
SELECT SINGLE qtd_iten ntgewd FROM /pws/zycit003 INTO
(/pws/zycie003-qtd_iten, /pws/zycie003-ntgewd)
WHERE nrseq EQ /pws/zycie003-nrseq
AND ebeln EQ /pws/zycie003-ebeln
AND ebelp EQ /pws/zycie003-ebelp.
ELSE.
/pws/zycie003-qtd_iten = wa_zycit003-qtd_iten.
/pws/zycie003-ntgewd = wa_zycit003-ntgewd .
ENDIF.
v_vlreal = /pws/zycie003-vlreal.
* >> Início da exclusão: FORM LOAD_IFRE
v_qtd_c3 = /pws/zycie003-qtd_iten * 10000.
v_qtd_dc3 = /pws/zycie003-qtd_itend * 10000.
v_qtd_c3 = trunc( v_qtd_c3 ) / 10000.
v_qtd_dc3 = trunc( v_qtd_dc3 ) / 10000.
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_IFRE
v_decim1 = /pws/zycie003-qtd_iten * 10000.
v_decim2 = /pws/zycie003-qtd_itend * 10000.
v_qtd_c3 = trunc( v_decim1 ) / 10000.
v_qtd_dc3 = trunc( v_decim2 ) / 10000.
* << Fim da inclusão
IF NOT /pws/zycie003-qtd_itend IS INITIAL.
t_vmle3 = t_vmle_d2 = t_vmle = v_vlreal *
v_qtd_dc3.
t_vmle2 = /pws/zycie003-vlreal * v_qtd_dc3.
ELSE.
t_vmle3 = t_vmle_d2 = t_vmle = v_vlreal * v_qtd_c3.
t_vmle2 = /pws/zycie003-vlreal * v_qtd_c3.
ENDIF.
v_it_plan = /pws/zycie003-netpr * v_qtd_c3.
v_frete_nm = v_bltofat.
...
...
FORM fill_itabit.
* >> Início da inclusão: FORM FILL_ITABIT
DATA: v_decim1 TYPE /pws/zycit245-qtd_tot,
v_decim2 TYPE /pws/zycit245-qtd_tot.
* << Fim da inclusão
...
...
WHERE pais EQ 'BR'.
ENDIF.
IF /pws/zycie085-j_1bbranch IS INITIAL.
READ TABLE itab_zycit001 INDEX 1.
/pws/zycie085-j_1bbranch = itab_zycit001-j_1bbranch.
ENDIF.
PERFORM find_region.
/pws/zycie085-mdadicao = 'S'.
CLEAR: v_tntgew, v_tval, v_tmle, v_waers, v_tsegfat.
LOOP AT itab_zycit003.
* >> Início da exclusão: FORM FILL_ITABIT
itab_zycit003-qtd_itendc3 = itab_zycit003-qtd_itend
* 10000.
itab_zycit003-qtd_itenc3 = itab_zycit003-qtd_iten
* 10000.
itab_zycit003-qtd_itendc3 =
trunc( itab_zycit003-qtd_itendc3 ) / 10000.
itab_zycit003-qtd_itenc3 =
trunc( itab_zycit003-qtd_itenc3 ) / 10000.
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_ITABIT
v_decim1 = itab_zycit003-qtd_itend * 10000.
v_decim2 = itab_zycit003-qtd_iten * 10000.
itab_zycit003-qtd_itendc3 = trunc( v_decim1 ) / 10000.
itab_zycit003-qtd_itenc3 = trunc( v_decim2 ) / 10000.
* << Fim da inclusão
MODIFY itab_zycit003 .
READ TABLE itab_zycit013 WITH KEY
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
MOVE: itab_zycit013-slqtde TO itab_zycit003-slqtde,
itab_zycit013-uebto TO itab_zycit003-uebto,
itab_zycit013-uebtk TO itab_zycit003-uebtk,
'X' TO itab_zycit003-noinitial.
CLEAR itab_it.
READ TABLE itab_it WITH KEY
...