Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 05/06/2006 00:00:00
Data/Hora Última Alteração: 20/06/2011 12:31:39
Descrição da Nota: DUMP NO EMBARQUE DE RECOF
Sintoma
Ao vincular Pedido ao embarque de Recof dá DUMP.
Solução
Retirar pedidos sem saldo da seleção.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01516 Data: 05/06/2006 Hora: 11:13:44
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01516
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 6.0
Pacote : 00023
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
Texto Rápido:
DUMP NO EMBARQUE DE RECOF
----------------------------------------------------------------------------------------------------
Palavras Chave:
DUMP - DA - EMBARQUE - RECOF - VALOR NEGATIVO
----------------------------------------------------------------------------------------------------
Objetos da nota:
DYNP /PWS/SAPMZYCI001 0003
REPS /PWS/MZYCI001F03
REPS /PWS/MZYCI001I01
REPS /PWS/MZYCI001X01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/SAPMZYCI001 0003
*Campos inseridos na tela 0003
Nome
Ctg. Linha Coluna CmprDf CmVis Altura Format Dict Modif At.Des.Só At
Gr1 Gr2 Gr3 Gr4 SPA GPA ID parâm Cód.F TCmp TpoLoopExbLoop
Outros atributos
- %#AUTOTEXT001
Texto 1 8 2 3 1 CHAR
Título de coluna TC
- ITAB_DA-RC
Check 1 8 1 3 1 CHAR Ent Off
RC
Elem.TC
* Diferenças na lógica de processamento
PROCESS BEFORE OUTPUT.
MODULE: status_0003,
set_screen .
LOOP AT itab_da WITH CONTROL tc_selda CURSOR tc_selda-current_line.
ENDLOOP .
PROCESS AFTER INPUT.
LOOP AT itab_da.
CHAIN.
FIELD itab_da-qtd_nac MODULE qtd_lote ON CHAIN-REQUEST.
*>> Início Inclusão
FIELD itab_da-rc MODULE qtd_lote ON REQUEST.
*>> Fim Inclusão
ENDCHAIN.
MODULE carrega_itab.
ENDLOOP .
MODULE user_command.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F03
...
ENDFORM.
FORM selecionar_itens_da.
DATA: itab_werks LIKE itab_zycit003 OCCURS 0 WITH HEADER LINE,
itab_t001w LIKE t001w OCCURS 0 WITH HEADER LINE.
CLEAR : /pws/zycie001-netpr.
* >> Início da inclusão: FORM SELECIONAR_ITENS_DA
IF v_caller EQ 'SELECIONAR_RC'.
DELETE itab_da WHERE rc NE 'X'.
ELSE.
* << Fim da inclusão
IF v_line GT '1'.
DELETE itab_da WHERE qtd_nac IS initial.
ENDIF.
* >> Início da inclusão: FORM SELECIONAR_ITENS_DA
ENDIF.
* << Fim da inclusão
READ TABLE itab_da INDEX 1.
IF NOT itab_da[] IS INITIAL AND ( /pws/zycie001-regime EQ '14' OR
/pws/zycie001-regime EQ '16' ).
LOOP AT itab_da.
IF NOT itab_da-lote_forn IS INITIAL.
...
...
MODIFY itab_zycit443 INDEX v_tabix.
ENDIF.
ENDLOOP.
IF /pws/zycie001-regime NE '16'.
PERFORM calcula_saldo_da.
* >> Início da exclusão: FORM SELECIONAR_ITENS_DA
.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONAR_ITENS_DA
ELSE.
IF NOT itab_zycit443[] IS INITIAL.
SELECT * FROM /pws/zycit003 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.
LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.
DELETE itab_zycit003_saldo
WHERE nrseq EQ itab_zycit001_saldo-nrseq.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
IF itab_zycit443[] IS INITIAL.
MESSAGE s015 WITH text-259 text-264.
EXIT.
* << Fim da inclusão
ENDIF.
LOOP AT itab_zycit443.
READ TABLE itab_nac WITH KEY ebeln = itab_zycit443-ebeln
ebelp = itab_zycit443-ebelp.
IF sy-subrc = 0.
...
...
itab_da-matnr TO /pws/zycie443-matnr ,
itab_da-lote_forn TO /pws/zycie463-lote_forn,
itab_da-qtd_lote TO /pws/zycie463-qtd_lote.
ENDFORM.
FORM calcula_saldo_da.
* >> Início da inclusão: FORM CALCULA_SALDO_DA
CHECK /pws/zycie001-regime NE '16'.
* << Fim da inclusão
SELECT * FROM /pws/zycit455 INTO TABLE itab_zycit455
WHERE nrseqda EQ /pws/zycit442-nrseqda.
IF sy-subrc EQ 0.
SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443_saldo
FOR ALL ENTRIES IN itab_zycit455
...
...
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.
* >> Início da inclusão: FORM CALCULA_SALDO_DA
IF /pws/zycie001-regime EQ '04'.
* << Fim da inclusão
LOOP AT itab_zycit001_saldo WHERE regime EQ '16'.
* >> Início da inclusão: FORM CALCULA_SALDO_DA
DELETE itab_zycit003_saldo
WHERE nrseq EQ itab_zycit001_saldo-nrseq.
ENDLOOP.
ELSEIF /pws/zycie001-regime EQ '16' .
LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.
* << Fim da inclusão
DELETE itab_zycit003_saldo
WHERE nrseq EQ itab_zycit001_saldo-nrseq.
ENDLOOP.
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.
...
...
WHEN 'ITAB_DA-QTD_NAC'.
IF v_caller EQ 'SELECIONAR_RC'.
wa_cols-screen-input = '0'.
ENDIF.
ENDCASE.
* >> Início da inclusão: FORM TRATA_SCREEN_0003
IF wa_cols-screen-name EQ 'ITAB_DA-RC'.
IF v_caller EQ 'SELECIONAR_RC'.
wa_cols-screen-invisible = '0'.
ELSE.
wa_cols-screen-invisible = '1'.
ENDIF.
ENDIF.
* << Fim da inclusão
MODIFY tc_selda-cols FROM wa_cols.
ENDLOOP.
ENDFORM.
FORM salva_dados_da.
data: itab_zycit463 like /pws/zycit463 occurs 0 with header line.
...
...
MODIFY itab_da FROM itab_da TRANSPORTING qtd_nac.
ENDIF.
ENDLOOP.
ENDIF.
IF NOT itab_da[] IS INITIAL.
* >> Início da inclusão: FORM SELECIONAR_RC
SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003_saldo
FOR ALL ENTRIES IN itab_da
WHERE ebeln EQ itab_da-ebeln
AND ebelp EQ itab_da-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.
LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.
DELETE itab_zycit003_saldo
WHERE nrseq EQ itab_zycit001_saldo-nrseq.
ENDLOOP.
LOOP AT itab_da.
clear v_qtdutil_da.
LOOP AT itab_zycit003_saldo where ebeln eq itab_da-ebeln
and ebelp eq itab_da-ebelp.
v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten.
ENDLOOP.
itab_da-qtd_nac = itab_da-qtd_nac - v_qtdutil_da.
IF itab_da-qtd_nac LE 0.
DELETE itab_da.
ENDIF.
ENDLOOP.
ENDIF.
* << Fim da inclusão
DESCRIBE TABLE itab_da LINES v_line.
v_caller = 'SELECIONAR_RC'.
CALL SCREEN '0003'.
ELSE.
MESSAGE s015 WITH text-259.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001I01
...
MESSAGE e015 WITH text-258.
ENDIF.
CLEAR: v_sld.
MOVE itab_da[] TO itab_da_aux[].
DESCRIBE TABLE itab_da_aux LINES v_line.
* >> Início da inclusão: MODULE QTD_LOTE
if v_caller eq 'SELECIONAR_RC'.
LOOP AT itab_da_aux WHERE NOT rc IS initial.
IF itab_da_aux-nrseqda NE itab_da-nrseqda.
v_dif = 'X'.
ENDIF.
ENDLOOP.
else.
* << Fim da inclusão
LOOP AT itab_da_aux WHERE NOT qtd_nac IS initial.
IF itab_da_aux-nrseqda NE itab_da-nrseqda.
v_dif = 'X'.
ENDIF.
ENDLOOP.
* >> Início da inclusão: MODULE QTD_LOTE
endif.
* << Fim da inclusão
IF v_dif = 'X'.
MESSAGE i015 WITH text-254.
CLEAR itab_da-qtd_nac.
CLEAR v_dif.
CLEAR : itab_da_aux, itab_da_aux2.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001X01
...
qtd_lote LIKE /pws/zycie463-qtd_lote ,
qtd_nac LIKE /pws/zycie463-qtd_lote ,
qtd_usada LIKE /pws/zycie463-qtd_lote ,
adicao TYPE /pws/zycie455-adicao ,
itseqda TYPE /pws/zycie455-itseqda ,
* >> Início da inclusão:
rc type flag,
* << Fim da inclusão
mark.
DATA: END OF itab_da.
DATA: itab_zycit443_aux LIKE itab_zycit443 OCCURS 0 WITH HEADER LINE,
itab_da_aux LIKE itab_da OCCURS 0 WITH HEADER LINE,
itab_da_aux2 LIKE itab_da OCCURS 0 WITH HEADER LINE,
...