Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Fatura Mercadoria
Data/Hora da Publicação: 24/09/2008 00:00:00
Data/Hora Última Alteração: 22/02/2011 16:16:10
Descrição da Nota: FORAM FEITAS 2 FATURAS DE SERVIÇO MAS APENAS 1 É EXIBIDA NO CUSTO
Sintoma
Embarque Serviço. Quando criamos 2 faturas (2 itens), somente uma aparece no custo efetivo.
Em embarque com itens de serviço e materiais, após criar a fatura de mercadoria está eliminando os
itens das faturas de serviço e marcando as faturas como eliminadas.
Solução
Atualização do programa de fatura para que o sistema leve corretamente os valores realizado e
movimentado para o custo efetivo.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 07356 Data: 24/09/2008 Hora: 15:32:58
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 07356
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00007
Agrupamento : 00066
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02951 - 00001 - 6.0 - 00026 - RELATORIO /PWS/ZTCIR986 - AJUSTE TABELA 036
03958 - 00002 - 7.0 - 00001 - ERRO AO EXCLUIR O BL, MESMO SENDO FATURAS DO TIPO SEVIÇO
05027 - 00003 - 7.0 - 00003 - AJUSTADO RATEIO DO VALOR NA FATURA E A ATUALIZAÇÃO DO CUSTO EFETI
06673 - 00004 - 7.0 - 00005 - CORREÇÃO DA VERIFICAÇÃO DE ESTORNO POR FORA DA FATURA
07271 - 00005 - 7.0 - 00006 - DIFERENÇA DE CENTAVOS NO RATEIO DO DÉBITO EM CONTA
07279 - 00006 - 7.0 - 00006 - QUANDO FATURA DE SERVIÇO LIVRE DE DÉBITO RECLAMA DE QUE NÃO POSSU
----------------------------------------------------------------------------------------------------
FORAM FEITAS 2 FATURAS DE SERVIÇO MAS APENAS 1 É EXIBIDA NO CUSTO
----------------------------------------------------------------------------------------------------
Palavras Chave:
FATURA - SERVIÇO - CUSTO - ITENS - EMBARQUE - ELIMINANDO
/PWS/SAPMZYCI003 - /PWS/SAPMZYCI001
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI001F01
REPS /PWS/MZYCI001I01
REPS /PWS/MZYCI003F02
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F01
...
WHERE nrseq = /pws/zycie001-nrseq
AND eliminado = space.
ENDIF.
IF NOT itab_zycit263[] IS INITIAL.
REFRESH itab_temp_seq_pgfat.
LOOP AT itab_zycit263.
itab_temp_seq_pgfat-nrseq_pgfat = itab_zycit263-nrseq_pgfat.
COLLECT itab_temp_seq_pgfat.
ENDLOOP.
IF NOT itab_temp_seq_pgfat[] IS INITIAL.
* >> Início da inclusão: FORM VERIFICA_ITENS
REFRESH itab_zycit006.
* << Fim da inclusão
SELECT * FROM /pws/zycit006 "#EC CI_NOFIELD
INTO TABLE itab_zycit006
FOR ALL ENTRIES IN itab_temp_seq_pgfat
WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat
AND nrseqce = /pws/zycit094-nrseqce.
* >> Início da exclusão: FORM VERIFICA_ITENS
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit006 "#EC CI_NOFIELD
INTO TABLE itab_zycit006
* << Fim da exclusão
* >> Início da inclusão: FORM VERIFICA_ITENS
SELECT * FROM /pws/zycit006 "#EC CI_NOFIELD
APPENDING TABLE itab_zycit006
* << Fim da inclusão
FOR ALL ENTRIES IN itab_temp_seq_pgfat
WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat
AND tpfatura = '11'.
ENDIF.
* >> Início da exclusão: FORM VERIFICA_ITENS
ENDIF.
* << Fim da exclusão
LOOP AT itab_zycit263.
v_tabix = sy-tabix.
READ TABLE itab_zycit006 WITH KEY
...
...
IF NOT itab_zycit003[] IS INITIAL.
SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263
WHERE nrseq = /pws/zycie001-nrseq.
IF NOT itab_zycit263[] IS INITIAL.
REFRESH itab_temp_seq_pgfat.
LOOP AT itab_zycit263.
itab_temp_seq_pgfat-nrseq_pgfat = itab_zycit263-nrseq_pgfat.
COLLECT itab_temp_seq_pgfat.
ENDLOOP.
IF NOT itab_temp_seq_pgfat[] IS INITIAL.
* >> Início da inclusão: FORM CALL_FATURA
REFRESH itab_zycit006.
* << Fim da inclusão
SELECT * FROM /pws/zycit006 "#EC CI_NOFIELD
INTO TABLE itab_zycit006
FOR ALL ENTRIES IN itab_temp_seq_pgfat
WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat
AND nrseqce = /pws/zycit094-nrseqce.
* >> Início da inclusão: FORM CALL_FATURA
SELECT * FROM /pws/zycit006 "#EC CI_NOFIELD
APPENDING TABLE itab_zycit006
FOR ALL ENTRIES IN itab_temp_seq_pgfat
WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat
AND tpfatura = '11'.
* << Fim da inclusão
ENDIF.
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.
DELETE itab_zycit263 INDEX v_tabix.
ENDIF.
ENDLOOP.
...
...
/pws/zycie006-nrseq
e_status
TO MEMORY ID '003'.
EXPORT itab_sele[]
TO MEMORY ID 'IP003B'.
IF v_status_s = 1.
IF NOT /pws/zycie001-modalidade EQ '02'.
IF ( /pws/zycie001-modalidade EQ '03' AND
itab_zycit003-servico EQ 'X' ) .
ELSE.
* >> Início da exclusão: FORM CALL_FATURA
SELECT SINGLE * FROM /pws/zycit094 "#EC CI_NOFIRST
* << Fim da exclusão
* >> Início da inclusão: FORM CALL_FATURA
SELECT SINGLE * FROM /pws/zycit094 "#EC CI_NOFIRST
* << Fim da inclusão
WHERE nrseq = /pws/zycie001-nrseq.
IF sy-subrc NE 0.
MESSAGE s061 WITH text-026 text-027.
EXIT.
ENDIF.
ENDIF.
ENDIF.
PERFORM valida_trans USING '/PWS/ZYCI003_C' ''.
ELSE.
MESSAGE s015 WITH text-073.
...
...
ENDIF.
ENDIF.
ENDIF.
REFRESH itab_zycit006. CLEAR itab_zycit006.
REFRESH itab_temp_seq_pgfat.
LOOP AT itab_zycit263.
itab_temp_seq_pgfat-nrseq_pgfat = itab_zycit263-nrseq_pgfat.
COLLECT itab_temp_seq_pgfat.
ENDLOOP.
IF NOT itab_temp_seq_pgfat[] IS INITIAL.
* >> Início da inclusão: FORM RECUPERANDO_ITENS
REFRESH itab_zycit006.
* << Fim da inclusão
SELECT * FROM /pws/zycit006 "#EC CI_NOFIELD
INTO TABLE itab_zycit006
FOR ALL ENTRIES IN itab_temp_seq_pgfat
WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat
AND nrseqce = /pws/zycit094-nrseqce.
* >> Início da exclusão: FORM RECUPERANDO_ITENS
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit006 "#EC CI_NOFIELD
INTO TABLE itab_zycit006
* << Fim da exclusão
* >> Início da inclusão: FORM RECUPERANDO_ITENS
SELECT * FROM /pws/zycit006 "#EC CI_NOFIELD
APPENDING TABLE itab_zycit006
* << Fim da inclusão
FOR ALL ENTRIES IN itab_temp_seq_pgfat
WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat
AND tpfatura = '11'.
* >> Início da exclusão: FORM RECUPERANDO_ITENS
ENDIF.
* << Fim da exclusão
ENDIF.
LOOP AT itab_zycit263.
IF itab_zycit263-nrseq_pgfat IS INITIAL.
DELETE FROM /pws/zycit263
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001I01
...
WHERE nrseq = /pws/zycie001-nrseq
AND eliminado = space.
ENDIF.
IF NOT itab_zycit263[] IS INITIAL.
REFRESH itab_temp_seq_pgfat.
LOOP AT itab_zycit263.
itab_temp_seq_pgfat-nrseq_pgfat = itab_zycit263-nrseq_pgfat.
COLLECT itab_temp_seq_pgfat.
ENDLOOP.
IF NOT itab_temp_seq_pgfat[] IS INITIAL.
* >> Início da inclusão: MODULE ATUALIZA_ITENS
REFRESH itab_zycit006.
* << Fim da inclusão
SELECT * FROM /pws/zycit006 "#EC CI_NOFIELD
INTO TABLE itab_zycit006
FOR ALL ENTRIES IN itab_temp_seq_pgfat
WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat
AND nrseqce = /pws/zycit094-nrseqce.
* >> Início da inclusão: MODULE ATUALIZA_ITENS
SELECT * FROM /pws/zycit006 "#EC CI_NOFIELD
APPENDING TABLE itab_zycit006
FOR ALL ENTRIES IN itab_temp_seq_pgfat
WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat
AND tpfatura = '11'.
* << Fim da inclusão
ENDIF.
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.
DELETE itab_zycit263 INDEX v_tabix.
ENDIF.
ENDLOOP.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F02
...
MODIFY itab_zycit003 INDEX v_idx
TRANSPORTING ntgew vlseg_fat vlfre_fat vlreal.
ENDLOOP.
MODIFY /pws/zycit003 FROM TABLE itab_zycit003.
ENDFORM.
FORM dele_custo USING pcodigo ptype.
DATA: lt LIKE /pws/zycit036-vlreal,
lvlr LIKE /pws/zycit036-vlreal,
ld LIKE /pws/zycit036-vlreal,
ln LIKE /pws/zycie003-ntgew.
* >> Início da exclusão: FORM DELE_CUSTO
CHECK /pws/zycie006-tpfatura EQ '01'.
* << Fim da exclusão
REFRESH: itab_zycit036, itab_zycit263, it003.
* >> Início da inclusão: FORM DELE_CUSTO
IF /pws/zycie006-tpfatura EQ '01'.
* << Fim da inclusão
IF NOT itab_zycit003[] IS INITIAL.
SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036
FOR ALL ENTRIES IN itab_zycit003 WHERE
nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp AND
...
...
nrseq = it003-nrseq AND
ebeln = it003-ebeln AND
ebelp = it003-ebelp AND
nrseq_pgfat = /pws/zycie006-nrseq.
ENDIF.
ENDIF.
IF sy-subrc NE 0.
DELETE FROM /pws/zycit036
WHERE codigo = pcodigo
AND origem = 'FAT'
* >> Início da exclusão: FORM DELE_CUSTO
AND nrseqori = /pws/zycie006-nrseq. "#EC CI_NOFIRST
* << Fim da exclusão
* >> Início da inclusão: FORM DELE_CUSTO
AND nrseqori = /pws/zycie006-nrseq. "#EC CI_NOFIRST
* << Fim da inclusão
ENDIF.
ENDLOOP.
IF sy-subrc NE 0.
DELETE FROM /pws/zycit036
WHERE codigo = pcodigo
AND origem = 'FAT'
* >> Início da exclusão: FORM DELE_CUSTO
AND nrseqori = /pws/zycie006-nrseq. "#EC CI_NOFIRST
* << Fim da exclusão
* >> Início da inclusão: FORM DELE_CUSTO
AND nrseqori = /pws/zycie006-nrseq. "#EC CI_NOFIRST
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM DELE_CUSTO
ELSEIF /pws/zycie006-tpfatura EQ '11'.
IF NOT itab_zycit003[] IS INITIAL.
SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036
FOR ALL ENTRIES IN itab_zycit003 WHERE
nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp AND
codigo = pcodigo AND
nrseqori = /pws/zycie006-nrseq AND
origem = 'FAT'.
ENDIF.
MOVE itab_zycit003_ini[] TO it003[].
DESCRIBE TABLE it003 LINES v_line.
LOOP AT it003.
v_idx = sy-tabix.
READ TABLE itab_zycit036 WITH KEY ebeln = it003-ebeln
ebelp = it003-ebelp.
IF sy-subrc EQ 0.
lvlr = ( it003-vlreal * it003-toinv ) +
it003-vlfre_fat + it003-vlseg_fat.
PERFORM trata_decimais USING itab_zycit036-waers
CHANGING lvlr.
itab_zycit036-vlreal = itab_zycit036-vlreal - lvlr.
DELETE FROM /pws/zycit036
WHERE nrseq = it003-nrseq
AND ebeln = it003-ebeln
AND ebelp = it003-ebelp
AND codigo = pcodigo
AND origem = 'FAT'
AND nrseqori = /pws/zycie006-nrseq.
IF ptype = 'X'.
UPDATE /pws/zycit263 SET eliminado = 'X' WHERE
nrseq = it003-nrseq AND
ebeln = it003-ebeln AND
ebelp = it003-ebelp AND
nrseq_pgfat = /pws/zycie006-nrseq.
ENDIF.
ENDIF.
IF sy-subrc NE 0.
DELETE FROM /pws/zycit036
WHERE codigo = pcodigo
AND origem = 'FAT'
AND nrseqori = /pws/zycie006-nrseq. "#EC CI_NOFIRST
ENDIF.
ENDLOOP.
IF sy-subrc NE 0.
DELETE FROM /pws/zycit036
WHERE codigo = pcodigo
AND origem = 'FAT'
AND nrseqori = /pws/zycie006-nrseq. "#EC CI_NOFIRST
ENDIF.
ENDIF.
* << Fim da inclusão
IF ptype = 'X'.
CLEAR /pws/zycie006.
ENDIF.
COMMIT WORK.
ENDFORM.
FORM executa_recebimento.
DATA: v_lfsnr_old LIKE /pws/zycie006-lfsnr,
v_lfsnr LIKE /pws/zycie006-lfsnr,
v_indice(02) TYPE n ,
v_erro ,
...
...
MESSAGE e039 WITH text-171.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
FORM atualiza_fb08_fat.
PERFORM verifica_ano_contabil USING /pws/zycie006-dtincl
CHANGING v_ano.
IF v_parcela = 'X'.
* >> Início da exclusão: FORM ATUALIZA_FB08_FAT
SELECT SINGLE *
FROM bkpf
WHERE belnr EQ itab_zycit132-belnr_p
AND gjahr EQ v_ano
AND bukrs EQ /pws/zycie006-bukrs.
* << Fim da exclusão
READ TABLE itab_zycbt032 WITH KEY tcode = 'FB08'
tabela = '/PWS/ZYCIT132'
cpochv = /pws/zycie006-nrseq
tpmsg = 'S'.
* >> Início da exclusão: FORM ATUALIZA_FB08_FAT
IF sy-subrc EQ 0 AND NOT bkpf-stblg IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_FB08_FAT
IF sy-subrc = 0.
* << Fim da inclusão
MESSAGE i030 WITH v_belnr_ant.
IF okcode NE 'DELE'.
CLEAR: /pws/zycie006-statusp , /pws/zycie006-belnr_p.
MODIFY /pws/zycit006 FROM /pws/zycie006.
v_rev = 'X'.
PERFORM clear_date_batch.
IF v_estorno IS INITIAL.
IF itab_zycit132-mark NE 'X' AND itab_zycit132-status NE 'X'.
PERFORM dele_custo USING /pws/zycit031-inco1_ci space.
PERFORM fill_date_f-43_f-02.
...
...
itab_zycit132-status = 'X'.
itab_zycit132-eliminado = 'X'.
MODIFY itab_zycit132.
ENDIF.
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
PERFORM clear_date_batch.
* >> Início da inclusão: FORM ATUALIZA_FB08_FAT
PERFORM verifica_estorno_r3 CHANGING v_erro
v_answer.
IF v_erro = 'S'.
v_erro = 'X'.
EXIT.
ENDIF.
IF v_answer = 'J'.
* << Fim da inclusão
CLEAR: /pws/zycie006-belnr_p, /pws/zycie006-statusp.
MODIFY /pws/zycit006 FROM /pws/zycie006.
COMMIT WORK.
PERFORM dele_custo USING /pws/zycit031-inco1_ci space.
PERFORM fill_date_f-43_f-02.
* >> Início da inclusão: FORM ATUALIZA_FB08_FAT
ELSE.
v_erro = 'X'.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM ATUALIZA_FB08_FAT
ENDIF.
* << Fim da inclusão
ELSE.
* >> Início da exclusão: FORM ATUALIZA_FB08_FAT
SELECT SINGLE *
FROM bkpf
WHERE belnr EQ /pws/zycie006-belnr_p
AND gjahr EQ v_ano
AND bukrs EQ /pws/zycie006-bukrs.
* << Fim da exclusão
READ TABLE itab_zycbt032 WITH KEY tcode = 'FB08'
tabela = '/PWS/ZYCIT006'
cpochv = /pws/zycie006-nrseq
tpmsg = 'S'.
* >> Início da exclusão: FORM ATUALIZA_FB08_FAT
IF sy-subrc EQ 0 AND NOT bkpf-stblg IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_FB08_FAT
IF sy-subrc = 0.
* << Fim da inclusão
MESSAGE i030 WITH v_belnr_ant.
IF okcode NE 'DELE'.
CLEAR: /pws/zycie006-statusp , /pws/zycie006-belnr_p.
MODIFY /pws/zycit006 FROM /pws/zycie006.
PERFORM clear_date_batch.
IF v_estorno IS INITIAL.
PERFORM dele_custo USING /pws/zycit031-inco1_ci space.
PERFORM fill_date_f-43_f-02.
ENDIF.
ENDIF.
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* >> Início da exclusão: FORM ATUALIZA_FB08_FAT
PERFORM clear_date_batch.
IF okcode NE 'DELE'.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_FB08_FAT
PERFORM verifica_estorno_r3 CHANGING v_erro
v_answer.
IF v_erro = 'S'.
v_erro = 'X'.
EXIT.
ENDIF.
IF v_answer = 'J'.
* << Fim da inclusão
CLEAR: /pws/zycie006-belnr_p, /pws/zycie006-statusp.
MODIFY /pws/zycit006 FROM /pws/zycie006.
COMMIT WORK.
PERFORM dele_custo USING /pws/zycit031-inco1_ci space.
PERFORM fill_date_f-43_f-02.
* >> Início da inclusão: FORM ATUALIZA_FB08_FAT
ELSE.
v_erro = 'X'.
* << Fim da inclusão
ENDIF.
...