Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 31/05/2006 00:00:00
Data/Hora Última Alteração: 20/06/2011 12:25:44
Descrição da Nota: CONTROLE DE SALDO DA DA POR LOTE
Sintoma
O sistema está se perdendo ao desvincular pedidos do embarque pois não retorna saldo aos lotes.
Solução
Foi criada a tabela /PWS/ZYCIT467 onde podemos identificar o embarque vinculado, quantidade
vinculada e o lote de origem.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01468 Data: 31/05/2006 Hora: 10:09:04
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01468
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 6.0
Pacote : 00023
Agrupamento : 00116
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01268 - 00001 - 6.0 - 00023 - DESENVOLVIMENTO ENTREPOSTO ADUANEIRO
01417 - 00002 - 6.0 - 00023 - AGREGAR OS CUSTOS EFETIVOS DA ADMISSÃO NA NACIONALIZAÇÃO DA MERCA
----------------------------------------------------------------------------------------------------
CONTROLE DE SALDO DA DA POR LOTE
----------------------------------------------------------------------------------------------------
Palavras Chave:
SALDO DA DA - LOTE DA DA - CONTROLE DE SALDO
VINCULAÇÃO EMBARQUE - /PWS/ZYCIT467
----------------------------------------------------------------------------------------------------
Objetos da nota:
DYNP /PWS/SAPMZYCI001 0003
REPS /PWS/MZYCI001F03
REPS /PWS/MZYCI001TOP
REPS /PWS/MZYCI001X01
REPT /PWS/SAPMZYCI001
TABL /PWS/ZYCIT467
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/SAPMZYCI001 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
Outros atributos
*campos eliminado da tela
- ITAB_DA-LOTE
I/O 1 5 15 15 1 CHAR Off
Elem.TC
*campos inserido na tela
- ITAB_DA-LOTE_FORN
I/O 1 5 15 15 1 CHAR Off
Elem.TC
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F03
...
MODIFY tc_ped-cols FROM wa_cols.
ENDLOOP.
ENDIF.
ENDFORM.
FORM selecionar_da.
* >> Início da inclusão: FORM SELECIONAR_DA
clear itab_zycit467.
refresh itab_zycit467.
* << Fim da inclusão
IF /pws/zycie001-regime NE '14'.
SELECT /pws/zycit442~nrseqda /pws/zycit442~nrdi /pws/zycit442~bukrs
/pws/zycit442~dtdesemb /pws/zycit443~ebeln
/pws/zycit443~ebelp /pws/zycit443~matnr /pws/zycit443~qtd_iten
/pws/zycit443~qtd_iten
...
...
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_lote = itab_da-qtd_lote - v_qtdutil_da.
* >> Início da exclusão: FORM SELECIONAR_DA
IF itab_da-qtd_lote EQ 0.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONAR_DA
IF itab_da-qtd_lote le 0.
* << Fim da inclusão
DELETE itab_da.
ENDIF.
CLEAR v_qtdutil_da.
MODIFY itab_da INDEX v_index.
ENDLOOP.
ENDIF.
ELSE.
* >> Início da inclusão: FORM SELECIONAR_DA
if not so_lifn is initial.
* << Fim da inclusão
SELECT /pws/zycit442~nrseqda /pws/zycit442~nrdi /pws/zycit442~bukrs
/pws/zycit442~dtdesemb /pws/zycit460~lifnr /pws/zycit443~ebeln
/pws/zycit443~ebelp /pws/zycit443~matnr
* >> Início da inclusão: FORM SELECIONAR_DA
/pws/zycit463~nrseqlote
* << Fim da inclusão
/pws/zycit463~lote_forn
/pws/zycit463~numfatura /pws/zycit463~qtd_lote
/pws/zycit463~qtd_nac
FROM ( /pws/zycit442 INNER JOIN /pws/zycit460 ON
/pws/zycit442~nrseqda = /pws/zycit460~nrseqda
INNER JOIN /pws/zycit443 ON
/pws/zycit442~nrseqda = /pws/zycit443~nrseqda
INNER JOIN /pws/zycit463 ON
/pws/zycit463~nrseqda = /pws/zycit443~nrseqda )
* >> Início da exclusão: FORM SELECIONAR_DA
INTO TABLE itab_da
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONAR_DA
INTO CORRESPONDING FIELDS OF TABLE itab_da
* << Fim da inclusão
WHERE /pws/zycit442~bukrs EQ pa_buk
AND /pws/zycit460~lifnr IN so_lifn
* >> Início da inclusão: FORM SELECIONAR_DA
AND /pws/zycit442~nrseqda IN so_nrseq
AND /pws/zycit442~nrdi IN so_nrda
AND /pws/zycit443~ebeln IN so_beln
AND /pws/zycit443~ebelp IN so_belp
AND /pws/zycit443~matnr IN so_matn.
else.
SELECT /pws/zycit442~nrseqda /pws/zycit442~nrdi /pws/zycit442~bukrs
/pws/zycit442~dtdesemb /pws/zycit443~ebeln
/pws/zycit443~ebelp /pws/zycit443~matnr
/pws/zycit463~nrseqlote
/pws/zycit463~lote_forn
/pws/zycit463~numfatura /pws/zycit463~qtd_lote
/pws/zycit463~qtd_nac
FROM ( /pws/zycit442 INNER JOIN /pws/zycit443 ON
/pws/zycit442~nrseqda = /pws/zycit443~nrseqda
INNER JOIN /pws/zycit463 ON
/pws/zycit463~nrseqda = /pws/zycit443~nrseqda )
INTO CORRESPONDING FIELDS OF TABLE itab_da
WHERE /pws/zycit442~bukrs EQ pa_buk
* << Fim da inclusão
AND /pws/zycit442~nrseqda IN so_nrseq
AND /pws/zycit442~nrdi IN so_nrda
AND /pws/zycit443~ebeln IN so_beln
AND /pws/zycit443~ebelp IN so_belp
AND /pws/zycit443~matnr IN so_matn.
* >> Início da inclusão: FORM SELECIONAR_DA
endif.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM SELECIONAR_DA
SORT itab_da BY nrseqda ebeln ebelp matnr lote .
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONAR_DA
SORT itab_da BY nrseqda ebeln ebelp matnr lote_forn .
* << Fim da inclusão
DELETE ADJACENT DUPLICATES FROM itab_da COMPARING
* >> Início da exclusão: FORM SELECIONAR_DA
nrseqda ebeln ebelp matnr lote.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONAR_DA
nrseqda ebeln ebelp matnr lote_forn.
* << Fim da inclusão
IF NOT itab_da[] IS INITIAL.
MOVE itab_da[] TO itab_da_aux[].
IF /pws/zycie001-regime EQ '14'.
LOOP AT itab_da.
IF itab_da-qtd_lote IS INITIAL.
DELETE itab_da.
* >> Início da exclusão: FORM SELECIONAR_DA
ELSEIF itab_da-qtd_nac EQ itab_da-qtd_lote AND
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONAR_DA
ELSEIF itab_da-qtd_nac GE itab_da-qtd_lote AND
* << Fim da inclusão
NOT itab_da-qtd_nac IS INITIAL .
DELETE itab_da .
ELSE.
IF NOT itab_da-qtd_nac IS INITIAL.
itab_da-qtd_lote = itab_da-qtd_lote - itab_da-qtd_nac.
...
...
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
DESCRIBE TABLE itab_da LINES v_line.
* >> Início da inclusão: FORM SELECIONAR_DA
if itab_da[] is initial.
MESSAGE s015 WITH text-259 text-264.
exit.
endif.
* << Fim da inclusão
v_caller = 'SELECIONAR_DA'.
CALL SCREEN '0003'.
ELSE.
* >> Início da exclusão: FORM SELECIONAR_DA
MESSAGE s015 WITH text-259.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONAR_DA
MESSAGE s015 WITH text-259 text-264.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM trata_delp.
CASE ts_embar-activetab.
WHEN 'FC_PED' .
...
...
itab_zycit003-ebelp TO itab_zycit455_del-ebelp,
space TO itab_zycit455_del-nrseq,
itab_zycit003-nrseqda TO itab_zycit455_del-nrseqda.
APPEND itab_zycit455_del.
ENDIF.
* >> Início da inclusão: FORM TRATA_DELP
MOVE:itab_zycit003-nrseqda TO itab_zycit467_del-nrseqda,
itab_zycit003-nrseq TO itab_zycit467_del-nrseq ,
itab_zycit003-ebeln TO itab_zycit467_del-ebeln ,
itab_zycit003-ebelp TO itab_zycit467_del-ebelp .
append itab_zycit467_del.
delete itab_da_aux where nrseqda eq itab_zycit003-nrseqda
and ebeln eq itab_zycit003-ebeln
and ebelp eq itab_zycit003-ebelp.
* << Fim da inclusão
DELETE itab_zycit003 INDEX v_tabix.
CLEAR itab_zycit003.
ELSE.
MESSAGE w015 WITH text-190.
EXIT.
...
...
DELETE itab_da WHERE qtd_nac IS initial.
ENDIF.
READ TABLE itab_da INDEX 1.
IF NOT itab_da[] IS INITIAL AND ( /pws/zycie001-regime EQ '14' OR
/pws/zycie001-regime EQ '16' ).
* >> Início da inclusão: FORM SELECIONAR_ITENS_DA
LOOP AT itab_da.
IF NOT itab_da-lote_forn IS INITIAL.
MOVE : itab_da-nrseqda TO itab_zycit467-nrseqda ,
itab_da-nrseqlote TO itab_zycit467-nrseqlote,
itab_da-ebeln TO itab_zycit467-ebeln ,
itab_da-ebelp TO itab_zycit467-ebelp ,
/pws/zycie001-nrseq TO itab_zycit467-nrseq ,
itab_da-qtd_nac TO itab_zycit467-qtd_nac .
APPEND itab_zycit467.
ENDIF.
ENDLOOP.
* << Fim da inclusão
SELECT SINGLE *
FROM /pws/zycit442
WHERE nrseqda EQ itab_da-nrseqda
AND ( codreg EQ '02' OR
codreg EQ '04' ).
...
...
ENDLOOP.
CLEAR itab_nac.
REFRESH itab_nac.
MOVE itab_da[] TO itab_da_aux[].
CLEAR itab_da. REFRESH itab_da.
* >> Início da inclusão: FORM SELECIONAR_ITENS_DA
loop at itab_da_aux.
delete itab_zycit467_del where nrseqda eq itab_da_aux-nrseqda
and ebeln eq itab_zycit003-ebeln
and ebelp eq itab_zycit003-ebelp.
endloop.
* << Fim da inclusão
READ TABLE itab_zycit003 INDEX 1 .
MOVE: itab_zycit003-lifnr TO v_lifnr,
itab_zycit003-waers TO v_waers,
itab_zycit003-waers TO /pws/zycie000-waers,
itab_zycit003-lifnr TO /pws/zycie000-lifnr.
...
...
MOVE :
itab_da-nrseqda TO /pws/zycie442-nrseqda ,
itab_da-ebeln TO /pws/zycie443-ebeln ,
itab_da-ebelp TO /pws/zycit443-ebelp ,
itab_da-matnr TO /pws/zycie443-matnr ,
* >> Início da exclusão: FORM CARREGA_ESTRUTURA_0003
itab_da-lote TO /pws/zycie463-lote_forn,
* << Fim da exclusão
* >> Início da inclusão: FORM CARREGA_ESTRUTURA_0003
itab_da-lote_forn TO /pws/zycie463-lote_forn,
* << Fim da inclusão
itab_da-qtd_lote TO /pws/zycie463-qtd_lote.
ENDFORM.
FORM calcula_saldo_da.
SELECT * FROM /pws/zycit455 INTO TABLE itab_zycit455
WHERE nrseqda EQ /pws/zycit442-nrseqda.
...
...
ENDCASE.
MODIFY tc_selda-cols FROM wa_cols.
ENDLOOP.
ENDFORM.
FORM salva_dados_da.
* >> Início da inclusão: FORM SALVA_DADOS_DA
data: itab_zycit463 like /pws/zycit463 occurs 0 with header line.
data: itab_zycit467_aux like /pws/zycit467 occurs 0 with header line.
* << Fim da inclusão
LOOP AT itab_zycit003_del.
DELETE itab_zycit455 WHERE nrseq = /pws/zycie001-nrseq
AND ebeln = itab_zycit003_del-ebeln
AND ebelp = itab_zycit003_del-ebelp .
* >> Início da inclusão: FORM SALVA_DADOS_DA
ENDLOOP.
if not itab_zycit467_del[] is initial.
select * from /pws/zycit467 into table itab_zycit467_aux
for all entries in itab_zycit467_del
where NRSEQDA eq itab_zycit467_del-nrseqda
and nrseq eq itab_zycit467_del-nrseq
and ebeln eq itab_zycit467_del-ebeln
and ebelp eq itab_zycit467_del-ebelp.
if not itab_zycit467_aux[] is initial.
select * from /pws/zycit463 into table itab_zycit463
for all entries in itab_zycit467_aux
where NRSEQDA eq itab_zycit467_aux-nrseqda
and NRSEQLOTE eq itab_zycit467_aux-nrseqlote.
endif.
loop at itab_zycit467_aux.
read table itab_zycit463 with key
nrseqda = itab_zycit467_aux-nrseqda
nrseqlote = itab_zycit467_aux-nrseqlote.
if sy-subrc eq 0.
clear v_qtdutil_da.
v_qtdutil_da = itab_zycit463-qtd_nac -
itab_zycit467_aux-qtd_nac .
UPDATE /pws/zycit463 SET qtd_nac = v_qtdutil_da
WHERE nrseqda = itab_zycit467_aux-nrseqda
AND nrseqlote = itab_zycit467_aux-nrseqlote.
endif.
delete from /pws/zycit467
where nrseqda = itab_zycit467_aux-nrseqda
and nrseqlote = itab_zycit467_aux-nrseqlote
and nrseq = itab_zycit467_aux-nrseq.
* << Fim da inclusão
ENDLOOP.
* >> Início da inclusão: FORM SALVA_DADOS_DA
endif.
clear : itab_zycit467_del, itab_zycit463.
refresh: itab_zycit467_del, itab_zycit463.
if not itab_zycit003[] is initial.
if not itab_da_aux[] is initial.
select * from /pws/zycit463 into table itab_zycit463
for all entries in itab_da_aux
where NRSEQDA eq itab_da_aux-nrseqda
and NRSEQLOTE eq itab_da_aux-nrseqlote
and matnr eq itab_da_aux-matnr
and lote_forn eq itab_da_aux-lote_forn.
endif.
* << Fim da inclusão
LOOP AT itab_da_aux.
* >> Início da exclusão: FORM SALVA_DADOS_DA
UPDATE /pws/zycit463 SET qtd_nac = itab_da_aux-qtd_nac
* << Fim da exclusão
* >> Início da inclusão: FORM SALVA_DADOS_DA
read table itab_zycit463 with key
NRSEQDA = itab_da_aux-nrseqda
NRSEQLOTE = itab_da_aux-nrseqlote
matnr = itab_da_aux-matnr
lote_forn = itab_da_aux-lote_forn.
if sy-subrc eq 0.
clear v_qtdutil_da.
v_qtdutil_da = itab_zycit463-qtd_nac +
itab_da_aux-qtd_nac .
endif.
UPDATE /pws/zycit463 SET qtd_nac = v_qtdutil_da
* << Fim da inclusão
WHERE nrseqda = itab_da_aux-nrseqda
* >> Início da exclusão: FORM SALVA_DADOS_DA
AND lote_forn = itab_da_aux-lote.
* << Fim da exclusão
* >> Início da inclusão: FORM SALVA_DADOS_DA
AND lote_forn = itab_da_aux-lote_forn.
* << Fim da inclusão
ENDLOOP.
LOOP AT itab_zycit003.
UPDATE /pws/zycit455 SET nrseq = itab_zycit003-nrseq
WHERE nrseqda = /pws/zycit442-nrseqda
AND ebeln = itab_zycit003-ebeln
AND ebelp = itab_zycit003-ebelp .
ENDLOOP.
* >> Início da inclusão: FORM SALVA_DADOS_DA
endif.
modify /pws/zycit467 from table itab_zycit467[].
clear: itab_zycit463, itab_zycit467, itab_zycit467_aux, itab_da_aux.
refresh : itab_zycit463, itab_zycit467, itab_zycit467_aux, itab_da_aux.
* << Fim da inclusão
COMMIT WORK.
ENDFORM.
FORM salva_dados_rc.
FIELD-SYMBOLS:
<fs_tabrc> TYPE STANDARD TABLE,
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001TOP
...
/pws/zycie396,
/pws/zycit395,
/pws/zycie442,
/pws/zycie443,
/pws/zycie463,
* >> Início da inclusão:
/pws/zycit467,
* << Fim da inclusão
eket.
DATA: BEGIN OF itab_zycit013 OCCURS 0.
INCLUDE STRUCTURE /pws/zycie013.
DATA: END OF itab_zycit013.
DATA: BEGIN OF itab_zycit395 OCCURS 0.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001X01
...
dtdesemb LIKE /pws/zycie442-dtdesemb ,
agente LIKE /pws/zycie460-lifnr ,
ebeln LIKE /pws/zycie443-ebeln ,
ebelp LIKE /pws/zycie443-ebelp ,
matnr LIKE /pws/zycie443-matnr ,
* >> Início da exclusão:
lote LIKE /pws/zycie463-lote_forn,
* << Fim da exclusão
* >> Início da inclusão:
nrseqlote like /pws/zycie463-nrseqlote,
lote_forn LIKE /pws/zycie463-lote_forn,
* << Fim da inclusão
numfatura LIKE /pws/zycie463-numfatura,
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 ,
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,
* >> Início da exclusão:
itab_da_aux2 LIKE itab_da OCCURS 0 WITH HEADER LINE.
* << Fim da exclusão
* >> Início da inclusão:
itab_da_aux2 LIKE itab_da OCCURS 0 WITH HEADER LINE,
itab_zycit467 like /pws/zycit467 occurs 0 with header line,
itab_zycit467_del like /pws/zycit467 occurs 0 with header line.
* << Fim da inclusão
DATA: BEGIN OF itab_nac OCCURS 0.
DATA: ebeln LIKE /pws/zycit443-ebeln,
ebelp LIKE /pws/zycit443-ebelp,
qtd_nac LIKE /pws/zycit443-qtd_iten.
DATA: END OF itab_nac.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPT /PWS/SAPMZYCI001
------------------------------------------------------------------------
Modificado símbolo de texto:
Idioma: PT
Símbolo: 259
Texto: (32 caracteres)
"Não foram encontrados itens para"
Comprimento máximo: 53
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: PT
Símbolo: 264
Texto: (20 caracteres)
"critério de seleção."
Comprimento máximo: 20
----------------------------------------------------------------------------------------------------
Modificações efetuadas em TABL /PWS/ZYCIT467
* Criada a tabela /pws/zycit467
CRIAR TABELA TRANSPARENTE: /PWS/ZYCIT467
DESCRIÇÃO BREVE: CI - Saldo de Lote da DA
CARACTERÍSTICAS
CATEGORIA DA TABELA: Tabela transparente
CLASSE DE ENTREGA: A
(X) AUTUALIZAÇÃO DE TABELAS PERMITIDA
CAMPOS NOVOS
CAMPOS: TP. CAMPO CH: INI: TAB.VERIF.: TAB.REF.: CPO.RE
MANDT MANDT X X T000
NRSEQDA /PWS/ZYCIL831 X X /PWS/ZYCIT463
NRSEQLOTE NUMC3 X X
NRSEQ /PWS/ZYCIL001 X X /PWS/ZYCIT001
EBELN EBELN X X
EBELP EBELP X X
QTD_NAC BMENGEV
OPÇÕES TÉCNICAS
TIPO DE DADOS: APPL0
CATEGOR. TAMANHO: 0
(X) - AR. BUFFER NÃO PERMITIDO
Nº DE CPOS CHAVE: 0