Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal
Data/Hora da Publicação: 10/05/2007 00:00:00
Data/Hora Última Alteração: 23/02/2011 09:14:11
Descrição da Nota: AO GERAR A NOTA FISCAL OS VALORES DO CUSTO FICAM INCORRETOS.
Sintoma
Ocorreu um erro que ao usuario apagar a fatura o registro da tabela /pws/zycit036 não foi eleiminado
e quando é gerada a nota fiscal acaba duplicando os registros.
Solução
Ajustar o programa para eliminar os registros da tabela /pws/zycit036 quando a fatura referente
aquela entrada for eliminada.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 03654 Data: 10/05/2007 Hora: 14:02:29
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 03654
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00001
Agrupamento : 00165
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
03089 - 00001 - 6.0 - 00026 - SISTEMA ESTÁ SE PERDENDO E SELECIONANDO FATURAS ELIMINADAS NO EMB
03346 - 00002 - 7.0 - 00001 - ERRO NO CUSTO EFETIVO, VALOR DA FATURA
----------------------------------------------------------------------------------------------------
AO GERAR A NOTA FISCAL OS VALORES DO CUSTO FICAM INCORRETOS.
----------------------------------------------------------------------------------------------------
Palavras Chave:
CUSTO - EFETIVO - FATURA - NOTA - FISCAL - DUPLICADOS - VALORES
/PWS/SAPMZYCI003 - /PWS/SAPMZYCI016
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI003F01
REPS /PWS/MZYCI003F02
REPS /PWS/MZYCI003O01
REPS /PWS/MZYCI016F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F01
...
SELECT * FROM /pws/zycit006
INTO TABLE itab_zycit006
FOR ALL ENTRIES IN itab_zycit263
WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.
LOOP AT itab_zycit263.
v_tabix = sy-tabix.
READ TABLE itab_zycit006 WITH KEY
nrseq_pgfat = itab_zycit263-nrseq_pgfat
eliminado = space.
IF sy-subrc NE 0.
* >> Início da exclusão: FORM SELECIONAR_ITENS
DELETE itab_zycit263 INDEX v_tabix.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONAR_ITENS
itab_zycit263-eliminado = 'X'.
MODIFY itab_zycit263 INDEX v_tabix.
MODIFY /pws/zycit263 FROM itab_zycit263 .
* << Fim da inclusão
ENDIF.
ENDLOOP.
* >> Início da inclusão: FORM SELECIONAR_ITENS
LOOP AT itab_zycit006.
v_tabix = sy-tabix.
READ TABLE itab_zycit263 WITH KEY
nrseq_pgfat = itab_zycit006-nrseq_pgfat
eliminado = space.
IF sy-subrc NE 0.
itab_zycit006-eliminado = 'X'.
MODIFY itab_zycit006 INDEX v_tabix.
MODIFY /pws/zycit006 FROM itab_zycit006 .
ENDIF.
ENDLOOP.
DELETE itab_zycit006 WHERE eliminado = 'X'.
DELETE itab_zycit263 WHERE eliminado = 'X'.
* << Fim da inclusão
ENDIF.
ENDIF.
CLEAR v_flag_saldo.
LOOP AT itab_zycit003_aux.
CLEAR vsaldo.
LOOP AT itab_zycit263_aux WHERE
nrseq = itab_zycit003_aux-nrseq AND
ebeln = itab_zycit003_aux-ebeln AND
ebelp = itab_zycit003_aux-ebelp AND
eliminado = space.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F02
...
SELECT * FROM /pws/zycit006
INTO TABLE itab_zycit006
FOR ALL ENTRIES IN itab_zycit263
WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.
LOOP AT itab_zycit263.
v_tabix = sy-tabix.
READ TABLE itab_zycit006 WITH KEY
nrseq_pgfat = itab_zycit263-nrseq_pgfat
eliminado = space.
IF sy-subrc NE 0.
* >> Início da exclusão: FORM CALC_VLREAL
itab_zycit263-eliminado = 'X' .
* << Fim da exclusão
* >> Início da inclusão: FORM CALC_VLREAL
itab_zycit263-eliminado = 'X'.
* << Fim da inclusão
MODIFY itab_zycit263 INDEX v_tabix.
* >> Início da inclusão: FORM CALC_VLREAL
MODIFY /pws/zycit263 FROM itab_zycit263 .
* << Fim da inclusão
ENDIF.
ENDLOOP.
* >> Início da inclusão: FORM CALC_VLREAL
LOOP AT itab_zycit006.
v_tabix = sy-tabix.
READ TABLE itab_zycit263 WITH KEY
nrseq_pgfat = itab_zycit006-nrseq_pgfat
eliminado = space.
IF sy-subrc NE 0.
itab_zycit006-eliminado = 'X'.
MODIFY itab_zycit006 INDEX v_tabix.
MODIFY /pws/zycit006 FROM itab_zycit006 .
ENDIF.
ENDLOOP.
DELETE itab_zycit006 WHERE eliminado = 'X'.
DELETE itab_zycit263 WHERE eliminado = 'X'.
* << Fim da inclusão
ENDIF.
ENDIF.
LOOP AT itab_zycit003.
v_idx = sy-tabix.
CLEAR: tqtd, tvlr, tntg, tfre, tseg.
LOOP AT itab_zycit263 WHERE ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp.
tfre = tfre + itab_zycit263-vlfre_fat.
tseg = tseg + itab_zycit263-vlseg_fat.
tntg = tntg + itab_zycit263-ntgew.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003O01
...
SELECT matnr mfrpn FROM mara
INTO TABLE itab_mara
FOR ALL ENTRIES IN itab_matuse
WHERE matnr EQ itab_matuse-matnr.
ENDIF.
REFRESH itab_zycit263.
SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263
FOR ALL ENTRIES IN itab_zycit003 WHERE
nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
* >> Início da exclusão: MODULE LOAD_DATA
ebelp = itab_zycit003-ebelp AND
eliminado = space.
* << Fim da exclusão
* >> Início da inclusão: MODULE LOAD_DATA
ebelp = itab_zycit003-ebelp .
* << Fim da inclusão
IF NOT itab_zycit263[] IS INITIAL.
SELECT * FROM /pws/zycit006
INTO TABLE itab_zycit006
FOR ALL ENTRIES IN itab_zycit263
WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.
LOOP AT itab_zycit263.
v_tabix = sy-tabix.
READ TABLE itab_zycit006 WITH KEY
nrseq_pgfat = itab_zycit263-nrseq_pgfat
eliminado = space.
IF sy-subrc NE 0.
* >> Início da exclusão: MODULE LOAD_DATA
DELETE itab_zycit263 INDEX v_tabix.
* << Fim da exclusão
* >> Início da inclusão: MODULE LOAD_DATA
itab_zycit263-eliminado = 'X'.
modify itab_zycit263 index v_tabix.
modify /pws/zycit263 from itab_zycit263 .
ENDIF.
ENDLOOP.
loop at itab_zycit006.
v_tabix = sy-tabix.
read table itab_zycit263 with key
nrseq_pgfat = itab_zycit006-nrseq_pgfat
eliminado = space.
if sy-subrc ne 0.
itab_zycit006-eliminado = 'X'.
modify itab_zycit006 index v_tabix.
modify /pws/zycit006 from itab_zycit006 .
* << Fim da inclusão
ENDIF.
ENDLOOP.
* >> Início da inclusão: MODULE LOAD_DATA
delete itab_zycit006 where eliminado = 'X'.
delete itab_zycit263 where eliminado = 'X'.
* << Fim da inclusão
ENDIF.
LOOP AT itab_zycit003.
READ TABLE itab_matuse WITH KEY ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
...
INTO TABLE itab_zycit036
FOR ALL ENTRIES IN itab_zycit100
WHERE nrseq = itab_zycit100-nrseq
AND ebeln = itab_zycit100-ebeln
AND ebelp = itab_zycit100-ebelp
AND origem = 'FAT'
AND ( codigo = 'FOB' OR
codigo = 'CIF' OR
codigo = 'C&F' ).
ENDIF.
* >> Início da exclusão: FORM MONTAR_CUSTO_DI
IF itab_zycit036[] IS INITIAL.
* << Fim da exclusão
PERFORM atualiza_custos.
* >> Início da exclusão: FORM MONTAR_CUSTO_DI
ENDIF.
* << Fim da exclusão
MOVE itab_zycit036[] TO itab_zycit036_di[].
MOVE itab_zycit036[] TO itab_zycit036_atual[].
IF v_libera = 'X' AND v_modalidade = '99'.
IF NOT itab_zycit100[] IS INITIAL.
SELECT * FROM /pws/zycit036
INTO TABLE itab_zycit036
...
...
it_erro-branch = wa_zycit001-j_1bbranch.
it_erro-msg = it_zycet005-msg.
APPEND it_erro.
ENDIF.
ENDIF.
ENDFORM.
FORM atualiza_custos .
DATA: BEGIN OF itab_zycit006 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit006.
DATA: END OF itab_zycit006.
* >> Início da inclusão: FORM ATUALIZA_CUSTOS
DATA: BEGIN OF itab_zycit036_aux OCCURS 0.
INCLUDE STRUCTURE /pws/zycit036.
DATA: END OF itab_zycit036_aux.
* << Fim da inclusão
IF NOT itab_zycit003[] IS INITIAL.
SELECT * FROM /pws/zycit263
INTO TABLE itab_zycit263
FOR ALL ENTRIES IN itab_zycit003
WHERE nrseq EQ itab_zycit003-nrseq
AND ebeln EQ itab_zycit003-ebeln
* >> Início da exclusão: FORM ATUALIZA_CUSTOS
AND ebelp EQ itab_zycit003-ebelp
AND eliminado NE 'X'.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_CUSTOS
AND ebelp EQ itab_zycit003-ebelp .
* << Fim da inclusão
IF NOT itab_zycit263[] IS INITIAL.
SELECT * FROM /pws/zycit006
INTO TABLE itab_zycit006
FOR ALL ENTRIES IN itab_zycit263
* >> Início da exclusão: FORM ATUALIZA_CUSTOS
WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat
AND eliminado NE 'X'.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_CUSTOS
WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat .
* << Fim da inclusão
ENDIF.
ENDIF.
READ TABLE itab_zycit003 INDEX 1.
SELECT SINGLE * FROM /pws/zycit001
INTO /pws/zycie001
WHERE nrseq EQ itab_zycit003-nrseq.
* >> Início da inclusão: FORM ATUALIZA_CUSTOS
SELECT * FROM /pws/zycit036
INTO TABLE itab_zycit036_aux
WHERE nrseq EQ /pws/zycie001-nrseq
AND codigo EQ /pws/zycit031-inco1_ci
AND origem EQ 'FAT' .
LOOP AT itab_zycit036_aux.
READ TABLE itab_zycit006 WITH KEY
nrseq = itab_zycit036_aux-nrseqori.
IF sy-subrc NE 0.
DELETE FROM /pws/zycit036
WHERE nrseq = itab_zycit036_aux-nrseq
AND ebeln = itab_zycit036_aux-ebeln
AND ebelp = itab_zycit036_aux-ebelp
AND nrseqori = itab_zycit006-nrseq.
ELSE.
READ TABLE itab_zycit263 WITH KEY
nrseq = itab_zycit036_aux-nrseq
ebeln = itab_zycit036_aux-ebeln
ebelp = itab_zycit036_aux-ebelp
nrseq_pgfat = itab_zycit006-nrseq_pgfat
eliminado = space .
IF sy-subrc NE 0.
DELETE FROM /pws/zycit036
WHERE nrseq = itab_zycit036_aux-nrseq
AND ebeln = itab_zycit036_aux-ebeln
AND ebelp = itab_zycit036_aux-ebelp
AND nrseqori = itab_zycit006-nrseq.
DELETE itab_zycit036
WHERE nrseq = itab_zycit036_aux-nrseq
AND ebeln = itab_zycit036_aux-ebeln
AND ebelp = itab_zycit036_aux-ebelp
AND nrseqori = itab_zycit006-nrseq.
ENDIF.
ENDIF.
ENDLOOP.
* << Fim da inclusão
* >> Início da exclusão: FORM ATUALIZA_CUSTOS
LOOP AT itab_zycit263.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_CUSTOS
LOOP AT itab_zycit263 WHERE eliminado NE 'X'.
* << Fim da inclusão
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_zycit263-nrseq
ebeln = itab_zycit263-ebeln
ebelp = itab_zycit263-ebelp.
IF sy-subrc EQ 0.
LOOP AT itab_zycit006
* >> Início da exclusão: FORM ATUALIZA_CUSTOS
WHERE nrseq_pgfat = itab_zycit263-nrseq_pgfat.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_CUSTOS
WHERE nrseq_pgfat = itab_zycit263-nrseq_pgfat
AND eliminado NE 'X'.
* << Fim da inclusão
IF NOT itab_zycit006-belnr_p IS INITIAL.
itab_zycit036-mandt = sy-mandt .
itab_zycit036-nrseq = itab_zycit003-nrseq.
itab_zycit036-ebeln = itab_zycit003-ebeln.
itab_zycit036-ebelp = itab_zycit003-ebelp.
itab_zycit036-werks = itab_zycit003-werks.
itab_zycit036-nrseqori = itab_zycit006-nrseq.
itab_zycit036-embarca = /pws/zycie001-embarca.
itab_zycit036-codigo = /pws/zycit031-inco1_ci.
itab_zycit036-netpr =
...
...
( itab_zycit003-vlreal * itab_zycit263-qtd_iten ) +
itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.
itab_zycit036-bukrs = itab_zycit006-bukrs.
itab_zycit036-codmod = 'D'.
itab_zycit036-status = 'M'.
itab_zycit036-vlreal_emb = itab_zycit006-vltotal.
itab_zycit036-waers_emb = itab_zycit006-waers.
itab_zycit036-origem = 'FAT'.
itab_zycit036-waers_dif = /pws/zycie001-waers.
MODIFY /pws/zycit036 FROM itab_zycit036.
* >> Início da inclusão: FORM ATUALIZA_CUSTOS
READ TABLE itab_zycit036 TRANSPORTING NO FIELDS WITH KEY
nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp
nrseqori = itab_zycit006-nrseq
origem = 'FAT'
codigo = /pws/zycit031-inco1_ci.
IF sy-subrc EQ 0.
MODIFY itab_zycit036 INDEX sy-tabix.
ELSE.
* << Fim da inclusão
APPEND itab_zycit036.
* >> Início da inclusão: FORM ATUALIZA_CUSTOS
ENDIF.
* << Fim da inclusão
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM.