Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 31/07/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 15:13:16
Descrição da Nota: DECLARAÇÃO DE IMPORTAÇÃO RECOF
Sintoma
Não vincula a DI de nacionalização (regime 16) a uma DA (regime 04) quando o pedido já foi utilizado
para outros embarques de mesma modalidade.
Solução
Atualização do programa da DA para verificar corretamente o saldo da DA nos embarques de regime 16.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04312 Data: 31/07/2007 Hora: 15:33:43
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04312
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00002
Agrupamento : 00006
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01383 - 00001 - 6.0 - 00023 - AJUSTES NA DA
02944 - 00002 - 6.0 - 00026 - EMBARQUE ESTÁ SE PERDENDO AO VINCULAR ITENS DO PEDIDO OU SCHEDULE
03437 - 00003 - 7.0 - 00001 - EMBARQUE ESTÁ SALVANDO ITENS COM QUANTIDADES ZERADAS.
----------------------------------------------------------------------------------------------------
DECLARAÇÃO DE IMPORTAÇÃO RECOF
----------------------------------------------------------------------------------------------------
Palavras Chave:
VÍNCULO DE DA; SALDO; QTDE. DA
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI001F01
REPS /PWS/MZYCI001F03
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F01
...
/pws/zycie003-nrlsi = /pws/zycit078-nrli.
ENDIF.
ENDIF.
ENDIF.
/pws/zycie013-slqtde = itab_zycit003-slqtde.
/pws/zycie013-meins = /pws/zycie263-meins = itab_zycit003-meins.
/pws/zycie263-qtd_iten = itab_zycit003-invoiced.
/pws/zycie003-dtremessa = itab_zycit003-dtremessa.
REFRESH itab_zycit003_aux.
MOVE itab_zycit003[] TO itab_zycit003_aux[].
* >> Início da inclusão: FORM CARREGA_ZYCBE003
CHECK /pws/zycie001-regime EQ '16'.
IF NOT itab_zycit003[] IS INITIAL.
IF itab_zycit443[] IS INITIAL.
SELECT *
INTO TABLE itab_zycit443
FROM /pws/zycit443
FOR ALL ENTRIES IN itab_zycit003
WHERE nrseqda EQ itab_zycit003-nrseqda.
ENDIF.
ENDIF.
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.
ENDIF.
LOOP AT itab_zycit003.
v_tabix = sy-tabix.
IF NOT itab_zycit003_saldo[] IS INITIAL.
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.
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
ebelp = itab_zycit003-ebelp.
IF sy-subrc IS INITIAL.
itab_zycit003-sld_da = itab_zycit443-qtd_da -
( v_qtdutil_da + itab_zycit003-qtd_iten ).
IF itab_zycit003-sld_da LT 0.
CLEAR itab_zycit443_saldo.
READ TABLE itab_zycit443_saldo WITH KEY
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
itab_zycit003-sld_da = itab_zycit443_saldo-qtd_iten -
v_qtdutil_da - itab_zycit003-qtd_iten.
ENDIF.
ENDIF.
itab_zycit003-menge = itab_zycit443-qtd_da.
MODIFY itab_zycit003 INDEX v_tabix.
ENDLOOP.
* << Fim da inclusão
ENDFORM.
FORM altera_itab_zycit003.
DATA: v_difpos LIKE ekpo-menge,
v_valor_uebto LIKE ekpo-menge,
v_difneg LIKE ekpo-menge.
EXPORT /pws/zycie003 TO MEMORY ID '025'.
MOVE:
/pws/zycie003-ebeln TO itab_zycit003-ebeln ,
/pws/zycie003-ebelp TO itab_zycit003-ebelp ,
/pws/zycie003-descr TO itab_zycit003-descr ,
...
...
ENDLOOP.
IF sy-subrc EQ 0.
v_msg = 'X' .
ENDIF.
IF v_msg EQ 'X'.
MESSAGE i015 WITH text-261 text-260.
DELETE itab_zycit003 WHERE qtd_iten EQ '0'.
ENDIF.
LOOP AT itab_zycit003.
itab_zycit003-nrseq = /pws/zycie001-nrseq.
* >> Início da inclusão: FORM GRAVA_TABELAS
IF /pws/zycie001-regime NE '16'.
* << Fim da inclusão
CLEAR /pws/zycit013.
MOVE-CORRESPONDING itab_zycit003 TO /pws/zycit013.
MODIFY /pws/zycit013.
* >> Início da inclusão: FORM GRAVA_TABELAS
ENDIF.
* << Fim da inclusão
ENDLOOP.
IF v_sair NE 'X'.
MODIFY /pws/zycit003 FROM TABLE itab_zycit003.
ELSE.
...
...
ENDIF.
LOOP AT itab_zycit003_aux2.
CLEAR itab_zycit003.
READ TABLE itab_zycit003
WITH KEY ebeln = itab_zycit003_aux2-ebeln
ebelp = itab_zycit003_aux2-ebelp.
IF sy-subrc NE 0.
itab_zycit003_aux2-slqtde = itab_zycit003_aux2-slqtde
+ itab_zycit003_aux2-qtd_iten.
itab_zycit003_aux2-qtd_iten = 0.
* >> Início da inclusão: FORM GRAVA_TABELAS
IF /pws/zycie001-regime NE '16'.
* << Fim da inclusão
CLEAR /pws/zycit013.
MOVE-CORRESPONDING itab_zycit003_aux2 TO /pws/zycit013.
MODIFY /pws/zycit013.
CLEAR itab_zycit013.
MOVE /pws/zycit013 TO itab_zycit013.
MODIFY itab_zycit013 TRANSPORTING slqtde menge
WHERE ebeln = itab_zycit003_aux2-ebeln
AND ebelp = itab_zycit003_aux2-ebelp.
* >> Início da inclusão: FORM GRAVA_TABELAS
ENDIF.
* << Fim da inclusão
DELETE FROM /pws/zycit003
WHERE nrseq = itab_zycit003_aux2-nrseq
AND ebeln = itab_zycit003_aux2-ebeln
AND ebelp = itab_zycit003_aux2-ebelp.
IF itab_zycit003_aux2-menge EQ itab_zycit003_aux2-slqtde.
DELETE itab_zycit013
WHERE ebeln = itab_zycit003_aux2-ebeln
AND ebelp = itab_zycit003_aux2-ebelp.
DELETE FROM /pws/zycit013
WHERE ebeln = itab_zycit003_aux2-ebeln
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F03
...
ebeln = itab_da-ebeln AND
ebelp = itab_da-ebelp.
MODIFY itab_da.
ENDLOOP.
DATA: itab_zycit003_saldo LIKE itab_zycit003 OCCURS 0
WITH HEADER LINE.
IF NOT itab_da[] IS INITIAL.
SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003_saldo
FOR ALL ENTRIES IN itab_da
WHERE ebeln EQ itab_da-ebeln
* >> Início da exclusão: FORM SELECIONAR_DA
AND ebelp EQ itab_da-ebelp.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONAR_DA
AND ebelp EQ itab_da-ebelp
AND nrseqda EQ itab_da-nrseqda.
* << Fim da inclusão
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 '04'
AND tpdecl EQ 'DI'.
ENDIF.
LOOP AT itab_zycit001_saldo.
DELETE itab_zycit003_saldo
...
...
ebelp = itab_zycit013-ebelp.
IF sy-subrc EQ 0.
CLEAR v_qtdemb.
LOOP AT itab_zycit003_util WHERE ebeln EQ itab_zycit013-ebeln
AND ebelp EQ itab_zycit013-ebelp.
v_qtdemb = v_qtdemb + itab_zycit003_util-qtd_iten.
ENDLOOP.
ENDIF.
v_slqtde = itab_pedido-menge - v_qtdemb.
* >> Início da inclusão: FORM CARREGA_SALDO
IF v_slqtde NE itab_zycit013-slqtde.
IF /pws/zycie001-regime NE '16'.
* << Fim da inclusão
itab_zycit013-slqtde = v_slqtde.
UPDATE /pws/zycit013 SET slqtde = itab_zycit013-slqtde
menge = itab_pedido-menge
WHERE ebeln = itab_zycit013-ebeln
AND ebelp = itab_zycit013-ebelp .
* >> Início da inclusão: FORM CARREGA_SALDO
ENDIF.
* << Fim da inclusão
itab_zycit013-menge = itab_pedido-menge.
MODIFY itab_zycit013.
* >> Início da inclusão: FORM CARREGA_SALDO
ENDIF.
* << Fim da inclusão
...