Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Recebimento
Data/Hora da Publicação: 27/02/2007 00:00:00
Data/Hora Última Alteração: 23/02/2011 09:53:06
Descrição da Nota: AJUSTADO PREENCHIMENTO DAS TABELAS DE DRAWBACK NO RECEBIMENTO COM LOTE
Sintoma
Quando está parametrizado para utilizar lote os itens que não possuem lote não são adicionados asa
tabelas de drawback e não está controlando corretamente o saldo dos itens quando utiliza nota de
remessa.
Solução
Corrigir calculo da proporsão dos itens com remessa e ajuste para não descartar itens que não são
sujeitos a lote.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 03154 Data: 27/02/2007 Hora: 10:05:05
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 03154
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 6.0
Pacote : 00026
Agrupamento : 00154
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02156 - 00001 - 6.0 - 00025 - AJUSTE NO RECEBIMENTO VINCULADO AO ATO CONCESSÓRIO
02469 - 00002 - 6.0 - 00025 - AJUSTE PARA SALVAR A NF GLOBAL AO INVÉS DA NF DE REMESSA
----------------------------------------------------------------------------------------------------
AJUSTADO PREENCHIMENTO DAS TABELAS DE DRAWBACK NO RECEBIMENTO COM LOTE
----------------------------------------------------------------------------------------------------
Palavras Chave:
RECEBIMENTO - LOTE - DRAWBACK - PREENCHIMENTO - TABELA
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI017F02
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI017F02
...
DELETE it_zycit270 WHERE belnr EQ it_zycit270-belnr.
ENDIF.
LOOP AT it_zycit270.
INSERT INTO /pws/zycit270 VALUES it_zycit270.
ENDLOOP.
CLEAR it_zycit270. REFRESH it_zycit270.
ENDFORM.
FORM adiciona_saldo_ato.
DATA: v_qtdpropor LIKE /pws/zycit245-qtd_iten,
v_qtd_nftp TYPE /pws/zycit044-qtd_item,
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
v_meins TYPE /pws/zycit003-meins,
* << Fim da inclusão
v_variacfob TYPE /pws/zycit376-vlfob,
wa_zycit279 TYPE /pws/zycit279,
v_cob_camb TYPE c.
DATA: itab_zycit078 LIKE /pws/zycit078 OCCURS 0 WITH HEADER LINE.
DATA: itab_zycit376 LIKE /pws/zycit376 OCCURS 0 WITH HEADER LINE.
DATA: itab_zycit245 LIKE /pws/zycit245 OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF itab_matuse1 OCCURS 0.
INCLUDE STRUCTURE itab_matuse.
DATA: ntgew LIKE ekpo-ntgew,
gewei LIKE ekpo-gewei.
...
...
AND ebeln = itab_itens_nf-ebeln
AND ebelp = itab_itens_nf-ebelp.
ENDIF.
IF NOT itab_zycit042[] IS INITIAL.
SELECT *
FROM j_1bnfdoc
INTO TABLE itab_j_1bnfdoc
FOR ALL ENTRIES IN itab_zycit042
WHERE docnum = itab_zycit042-docnum.
ENDIF.
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
IF itab_zycit100[] IS INITIAL.
* << Fim da exclusão
SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100
WHERE nrseqdi EQ /pws/zycit085-nrseqdi.
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
ENDIF.
* << Fim da exclusão
IF NOT itab_zycit003[] IS INITIAL.
FREE itab_matuse1.
SELECT ebeln ebelp matnr bwtar j_1bmatuse
knttp werks umrez umren lmein ntgew gewei
FROM ekpo INTO CORRESPONDING FIELDS OF TABLE itab_matuse1
...
...
ebelp = itab_itens_nf-ebelp.
READ TABLE itab_j_1bnfdoc WITH KEY docnum = itab_zycit042-docnum.
v_qtd_nftp = itab_itens_nf-qtd_item.
READ TABLE itab_matuse1 WITH KEY ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
itab_matuse1-ntgew = itab_matuse1-ntgew * itab_zycit003-qtd_iten.
READ TABLE itab_zycit078 WITH KEY nrseqli = itab_zycit003-nrseqli.
READ TABLE itab_zycit100 WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
v_meins = itab_itens_nf-meins.
* << Fim da inclusão
PERFORM carrega_umncm_real USING itab_zycit003-matnr
CHANGING itab_itens_nf-meins
itab_itens_nf-qtd_item.
PERFORM carrega_umncm_real USING itab_zycit003-matnr
CHANGING itab_zycit003-meins
itab_zycit003-qtd_iten.
READ TABLE itab_zycit279 WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc = 0 AND /pws/zycit321-lote EQ space.
...
...
.
.
PERFORM taxa_converte USING /pws/zycit001-waers
/pws/zycit085-dttax
CHANGING v_taxa.
itab_zycit279-valor = ( itab_zycit100-vlfob * v_taxa ) /
itab_zycit003-qtd_iten.
IF /pws/zycit321-lote IS INITIAL.
APPEND itab_zycit279.
ELSE.
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
READ TABLE itab_zycit223 WITH KEY
nrseqnf = itab_itens_nf-nrseqnf
nrseq = itab_itens_nf-nrseq
nfglobal = itab_itens_nf-nfglobal
nfremessa = itab_itens_nf-nfremessa
ebeln = itab_itens_nf-ebeln
ebelp = itab_itens_nf-ebelp .
IF sy-subrc NE 0.
READ TABLE itab_zycit279 WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc = 0.
itab_zycit279-slqtde =
itab_zycit279-slqtde + itab_itens_nf-qtd_item.
IF itab_zycit279-slqtde > 0.
itab_zycit279-esgotado = space.
ENDIF.
MODIFY itab_zycit279 INDEX sy-tabix.
ENDIF.
IF /pws/zycit321-lote EQ '1'.
SELECT SINGLE charg FROM mseg
INTO itab_zycit279-lote
WHERE mblnr EQ /pws/zycie041-mblnr_mb01
AND ebeln EQ itab_itens_nf-ebeln
AND ebelp EQ itab_itens_nf-ebelp.
ENDIF.
APPEND itab_zycit279.
CONTINUE.
ENDIF.
* << Fim da inclusão
wa_zycit279 = itab_zycit279.
LOOP AT itab_zycit223 WHERE
nrseqnf EQ itab_itens_nf-nrseqnf
AND nrseq EQ itab_itens_nf-nrseq
AND nfglobal EQ itab_itens_nf-nfglobal
AND nfremessa EQ itab_itens_nf-nfremessa
AND ebeln EQ itab_itens_nf-ebeln
AND ebelp EQ itab_itens_nf-ebelp .
IF /pws/zycit321-lote EQ '1'.
wa_zycit279-lote = itab_zycit223-lote.
ELSE.
wa_zycit279-lote = itab_zycit223-lote_forn.
ENDIF.
READ TABLE itab_zycit279 WITH KEY nrseq = itab_zycit279-nrseq
ebeln = itab_zycit279-ebeln
ebelp = itab_zycit279-ebelp
lote = wa_zycit279-lote.
IF sy-subrc EQ 0.
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_zycit279-qtd_iten = itab_zycit279-qtd_iten +
itab_zycit223-qtde.
* << Fim da inclusão
PERFORM carrega_umncm_real USING itab_zycit003-matnr
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
CHANGING itab_itens_nf-meins
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
CHANGING v_meins
* << Fim da inclusão
itab_zycit223-qtde.
itab_zycit279-slqtde =
itab_zycit279-slqtde + itab_zycit223-qtde.
IF itab_zycit279-slqtde > 0.
itab_zycit279-esgotado = space.
ENDIF.
MODIFY itab_zycit279 TRANSPORTING slqtde esgotado
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
qtd_iten
* << Fim da inclusão
WHERE nrseq = itab_zycit279-nrseq
AND ebeln = itab_zycit279-ebeln
AND ebelp = itab_zycit279-ebelp
AND lote = wa_zycit279-lote.
ELSE.
itab_zycit279 = wa_zycit279.
itab_zycit279-qtd_iten = itab_zycit223-qtde.
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
PERFORM carrega_umncm_real USING itab_zycit003-matnr
CHANGING v_meins
itab_zycit223-qtde.
* << Fim da inclusão
itab_zycit279-ntgew = itab_zycit279-ntgew *
( itab_zycit223-qtde /
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
itab_zycit003-qtd_iten ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_itens_nf-qtd_item ).
* << Fim da inclusão
itab_zycit279-vltot = itab_zycit279-vltot *
( itab_zycit223-qtde /
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
itab_zycit003-qtd_iten ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_itens_nf-qtd_item ).
* << Fim da inclusão
itab_zycit279-vlseg = itab_zycit279-vlseg *
( itab_zycit223-qtde /
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
itab_zycit003-qtd_iten ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_itens_nf-qtd_item ).
* << Fim da inclusão
itab_zycit279-vlfrete = itab_zycit279-vlfrete *
( itab_zycit223-qtde /
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
itab_zycit003-qtd_iten ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_itens_nf-qtd_item ).
* << Fim da inclusão
itab_zycit279-slqtde = itab_zycit279-slqtde *
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
( itab_zycit223-qtde / v_qtd_nftp ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
( itab_zycit223-qtde /
itab_itens_nf-qtd_item ).
* << Fim da inclusão
itab_zycit279-menge = itab_zycit279-menge *
( itab_zycit223-qtde /
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
itab_zycit003-qtd_iten ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_itens_nf-qtd_item ).
* << Fim da inclusão
itab_zycit279-baseii = itab_zycit279-baseii *
( itab_zycit223-qtde /
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
itab_zycit003-qtd_iten ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_itens_nf-qtd_item ).
* << Fim da inclusão
itab_zycit279-baseipi = itab_zycit279-baseipi *
( itab_zycit223-qtde /
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
itab_zycit003-qtd_iten ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_itens_nf-qtd_item ).
* << Fim da inclusão
itab_zycit279-basecofins = itab_zycit279-basecofins *
( itab_zycit223-qtde /
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
itab_zycit003-qtd_iten ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_itens_nf-qtd_item ).
* << Fim da inclusão
itab_zycit279-basepis = itab_zycit279-basepis *
( itab_zycit223-qtde /
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
itab_zycit003-qtd_iten ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_itens_nf-qtd_item ).
* << Fim da inclusão
itab_zycit279-baseicms = itab_zycit279-baseicms *
( itab_zycit223-qtde /
* >> Início da exclusão: FORM ADICIONA_SALDO_ATO
itab_zycit003-qtd_iten ).
* << Fim da exclusão
* >> Início da inclusão: FORM ADICIONA_SALDO_ATO
itab_itens_nf-qtd_item ).
* << Fim da inclusão
COLLECT itab_zycit279.
ENDIF.
...
...
WHERE nrseqd EQ itab_zycit376d-nrseqd
AND nritem EQ itab_zycit376d-nritem.
ENDIF.
ENDIF.
LOOP AT itab_itens_nf.
READ TABLE itab_matuse WITH KEY ebeln = itab_itens_nf-ebeln
ebelp = itab_itens_nf-ebelp.
READ TABLE itab_zycit279 WITH KEY nrseq = itab_itens_nf-nrseq
ebeln = itab_itens_nf-ebeln
ebelp = itab_itens_nf-ebelp.
* >> Início da exclusão: FORM ESTORNA_SALDO_ATO
IF sy-subrc = 0.
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_SALDO_ATO
IF sy-subrc = 0 .
* << Fim da inclusão
v_tabix1 = sy-tabix.
READ TABLE itab_zycit376d WITH KEY ebeln = itab_itens_nf-ebeln
ebelp = itab_itens_nf-ebelp.
READ TABLE itab_zycit245d WITH KEY nrseqd = itab_zycit376d-nrseqd
nritem = itab_zycit376d-nritem.
READ TABLE itab_zycit003 WITH KEY nrseq = itab_itens_nf-nrseq
ebeln = itab_itens_nf-ebeln
ebelp = itab_itens_nf-ebelp.
CLEAR: v_variacfobd.
v_variacfobd = itab_zycit279-menge *
( ( itab_zycit376d-vlfob / itab_zycit376d-qtd_apro ) -
( itab_zycit279-vltot / itab_zycit279-menge ) ).
itab_zycit245d-vlvinc = itab_zycit245d-vlvinc + v_variacfobd.
UPDATE /pws/zycit245 SET vlvinc = itab_zycit245d-vlvinc
WHERE nrseqd EQ itab_zycit245d-nrseqd
AND nritem EQ itab_zycit245d-nritem.
* >> Início da inclusão: FORM ESTORNA_SALDO_ATO
IF /pws/zycit321-lote EQ space OR
itab_zycit279-lote IS INITIAL.
* << Fim da inclusão
* >> Início da exclusão: FORM ESTORNA_SALDO_ATO
IF /pws/zycit321-lote EQ space.
* << Fim da exclusão
PERFORM carrega_umncm_real USING itab_zycit003-matnr
CHANGING itab_itens_nf-meins
itab_itens_nf-qtd_item.
itab_zycit279-slqtde =
itab_zycit279-slqtde - itab_itens_nf-qtd_item.
IF itab_zycit279-slqtde < 0.
itab_zycit279-slqtde = 0.
ENDIF.
IF itab_zycit279-slqtde = 0.
DELETE FROM /pws/zycit279 WHERE nrseq = itab_itens_nf-nrseq
...
...
ENDIF.
MODIFY itab_zycit279 INDEX v_tabix1.
ELSE.
LOOP AT itab_zycit223 WHERE
nrseqnf EQ itab_itens_nf-nrseqnf
AND nrseq EQ itab_itens_nf-nrseq
AND nfglobal EQ itab_itens_nf-nfglobal
AND nfremessa EQ itab_itens_nf-nfremessa
AND ebeln EQ itab_itens_nf-ebeln
AND ebelp EQ itab_itens_nf-ebelp .
* >> Início da exclusão: FORM ESTORNA_SALDO_ATO
PERFORM carrega_umncm_real USING itab_zycit003-matnr
CHANGING itab_itens_nf-meins
itab_zycit223-qtde.
* << Fim da exclusão
IF /pws/zycit321-lote EQ '1'.
READ TABLE itab_zycit279 WITH KEY nrseq = itab_itens_nf-nrseq
ebeln = itab_itens_nf-ebeln
ebelp = itab_itens_nf-ebelp
lote = itab_zycit223-lote.
ELSE.
READ TABLE itab_zycit279 WITH KEY nrseq = itab_itens_nf-nrseq
ebeln = itab_itens_nf-ebeln
ebelp = itab_itens_nf-ebelp
lote = itab_zycit223-lote_forn.
ENDIF.
* >> Início da inclusão: FORM ESTORNA_SALDO_ATO
v_tabix = sy-tabix.
itab_zycit279-qtd_iten = itab_zycit279-qtd_iten -
itab_zycit223-qtde.
PERFORM carrega_umncm_real USING itab_zycit003-matnr
CHANGING itab_itens_nf-meins
itab_zycit223-qtde.
* << Fim da inclusão
itab_zycit279-slqtde =
itab_zycit279-slqtde - itab_zycit223-qtde.
IF itab_zycit279-slqtde < 0.
itab_zycit279-slqtde = 0.
ENDIF.
IF itab_zycit279-slqtde = 0.
IF /pws/zycit321-lote EQ '1'.
DELETE FROM /pws/zycit279 WHERE nrseq = itab_itens_nf-nrseq
AND ebeln = itab_itens_nf-ebeln
AND ebelp = itab_itens_nf-ebelp
...
...
AND ebelp = itab_itens_nf-ebelp
AND lote = itab_zycit223-lote_forn.
DELETE itab_zycit279 WHERE nrseq = itab_itens_nf-nrseq
AND ebeln = itab_itens_nf-ebeln
AND ebelp = itab_itens_nf-ebelp
AND lote = itab_zycit223-lote_forn.
ENDIF.
CLEAR itab_zycit279.
CONTINUE.
ENDIF.
* >> Início da exclusão: FORM ESTORNA_SALDO_ATO
MODIFY itab_zycit279 INDEX sy-tabix.
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_SALDO_ATO
MODIFY itab_zycit279 INDEX v_tabix .
* << Fim da inclusão
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
IF NOT itab_zycit279[] IS INITIAL.
MODIFY /pws/zycit279 FROM TABLE itab_zycit279.
ENDIF.
ENDFORM.
FORM lock_record.
CLEAR v_lock.
...