Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Vinculação
Data/Hora da Publicação: 13/02/2006 00:00:00
Data/Hora Última Alteração: 21/02/2011 10:21:48
Descrição da Nota: AJUSTES DOS ERROS ENCONTRADOS NA VINCULAÇÃO DE FATURAS
Sintoma
1- Criada uma captação e não concluida a contabilização, pois não foi preenchido o Campo Banco
Financiador e foi salvo, o status na tabela ZYCBT001 ficou com a letra `` I `` ( inicial), ao tentar
vincular o programa não fez contabilizações, mas gravou as faturas na tabela ZYCBT005. No historico
contábil ficou errado, pois o programa faz a dedução do valor a vincular e o valor nas duas parcelas
de principal, e não aparece as faturas gravadas na tabela ZYCB005, Para resolver este problema é
necessario criar no programa de vinculação uma consistencia quando a captação estiver com status I
inicial, ao tentar fazer uma vinculação o programa avise om a mensagem ``Contrato ainda foi
contabilizado. Favor verificar``. Essa consistencia evita a vinculação em um contrato que não
esteja concluído, evitando problemas nas tabelas e no historico contábil.
2- Ao fazer vinculações parciais e com faturas iguais com parcelas diferentes, no momento em que fiz
o estorno e cancelei a transação, via /n, na penultima fatura, o programa efetuou o clearing
corretamente das faturas, porém como dito na penultima fatura o programa teve seu clearing
interrompido, sendo assim, o programa deveria manter a vinculação da penultima e da ultima fatura, e
mante-las na tabela ZYCBT005, mas as faturas não aparecem na tabela ZYCBT005. O historico contábil
demonstra deduzido o saldo das faturas na parcela de principal, e não demonstra as faturas ( uma vez
que ela foi excluida erroneamente da ZYCB005).
Solução
1- Inserido consistência que permite apenas criar a vinculação caso o contrato esteja contabilizado
(com o campo BELNR preenchido ou o campo STATUS diferente de I na tabela /PWS/ZYCBT001).
2- Efetuado ajuste para que os saldos das tabelas /PWS/ZYCBT001 e /PWS/ZYCBT002 sejam atualizados
(corrigindo assim os valores apresentados no Histórico Contábil) caso ocorra erro na segunda F-30
(para cada parcela da fatura vinculada são feitas 3 contabilizações: F-02, F-30 e F-30,
respectivamente). Tratado para que a exclusão dos registros vinculados na tabela /PWS/ZYCBT005
apenas ocorra quando a contabilização for feita com sucesso
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 00869 Data: 13/02/2006 Hora: 15:47:17
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 00869
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 6.0
Pacote : 00022
Agrupamento : 00100
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
00730 - 00001 - 6.0 - 00096 - 280101 - CAPTAÇÃO VINCULAÇÃO
----------------------------------------------------------------------------------------------------
AJUSTES DOS ERROS ENCONTRADOS NA VINCULAÇÃO DE FATURAS
----------------------------------------------------------------------------------------------------
Palavras Chave:
VINCULAÇÃO FATURAS
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCB009F01
REPS /PWS/MZYCB009F03
REPS /PWS/MZYCB009F05
REPS /PWS/MZYCB009F08
REPS /PWS/MZYCB009F09
REPS /PWS/MZYCB009F10
REPS /PWS/MZYCB009O01
REPS /PWS/MZYCB009TOP
REPS /PWS/MZYCB009X01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009F01
...
PERFORM fill_date1_f30_pre.
itab_vinc-belnr = v_belnr.
itab_vinc-dtbelnr = v_dtbelnr.
MODIFY itab_vinc.
ELSE.
* >> Início da inclusão: FORM FILL_DATE1_F02_PRE
v_erro_estorno2 = 'X'.
* << Fim da inclusão
LOOP AT itab_zycbt032b WHERE tcode = 'F-02'
AND tabela = '/PWS/ZYCBT005'
AND cpochv = v_cpochv
AND tpmsg = 'E'.
itab_erro-vbeln = itab_vinc-belnr.
...
...
itab_contabil-msg = text-341.
itab_contabil-dtdocto = itab_zycbe033-budat..
itab_contabil-bukrs = itab_zycbe033-bukrs.
APPEND itab_contabil.
ELSE.
* >> Início da inclusão: FORM FILL_DATE1_F30_PRE
v_erro_estorno2 = 'X'.
* << Fim da inclusão
LOOP AT itab_zycbt032 WHERE tcode = 'F-30'
AND tabela = '/PWS/ZYCBT005'
AND cpochv = v_cpochv
AND tpmsg = 'E'.
itab_erro-vbeln = wa_zycbt005-belnr.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009F03
...
/pws/zycbe005-geber = itab_zycbt005-geber.
/pws/zycbe005-ebeln = itab_zycbt005-ebeln.
/pws/zycbe005-cod_area = itab_zycbt005-cod_area.
/pws/zycbe005-dtcredext = itab_zycbt005-dtcredext.
MOVE itab_zycbt005-slpagar TO /pws/zycbe005-slpagar.
* >> Início da inclusão: FORM CARREGA_ZYCBE005
/pws/zycbe005-nrparc = itab_zycbt005-nrparc.
* << Fim da inclusão
READ TABLE itab_zycbt017 WITH KEY nrinvoic = itab_zycbt005-nrinvoic
nrparcf = itab_zycbt005-nrparcf
gsberf = itab_zycbt005-gsberf.
IF sy-subrc EQ 0.
/pws/zycbe017-zterm = itab_zycbt017-zterm.
...
...
MOVE itab_zycbt005 TO itab_zycbt005_excluidas.
APPEND itab_zycbt005_excluidas.
ENDIF.
ENDIF.
IF /pws/zycbe001-tpcontr NE 'PT'.
* >> Início da inclusão: FORM EXCLUI_DADOS_ITAB
/pws/zycbe001-slvinc = /pws/zycbe001-slvinc +
itab_zycbt005-vlvinc.
elseif /pws/zycbe001-tpcontr eq 'PT' and
sy-tcode eq c_transacao_c.
* << Fim da inclusão
/pws/zycbe001-slvinc = /pws/zycbe001-slvinc +
itab_zycbt005-vlvinc.
ENDIF.
DELETE itab_zycbt005_aux
WHERE nrinvoic = itab_zycbt005-nrinvoic
...
...
DATA: BEGIN OF itab_zycbt017_salva OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt017.
DATA: END OF itab_zycbt017_salva.
CLEAR v_excep.
CLEAR v_erro_estorno.
* >> Início da inclusão: FORM GRAVA_TABELAS
CLEAR v_erro_estorno2.
PERFORM verifica_vldesvinc.
CHECK v_executa IS INITIAL.
* << Fim da inclusão
IF v_performance = 'X'.
EXIT.
ENDIF.
IF /pws/zycbt089-controle_ov = 'X'.
IF NOT itab_zycbt005[] IS INITIAL.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009F05
...
gsberf = itab_zycbt005-gsberf.
itab_zycbt005-vlcomis = ( itab_zycbt005-vlme_p *
itab_zycbt017-vlcomis ) /
itab_zycbt017-vlavinc.
itab_zycbt005-slcomi = itab_zycbt005-vlcomis.
* >> Início da exclusão: FORM MOVE_SALDO
MODIFY itab_zycbt005.
* << Fim da exclusão
* >> Início da inclusão: FORM MOVE_SALDO
MODIFY itab_zycbt005 index v_index.
* << Fim da inclusão
PERFORM atualiza_itab_zycbt017.
* >> Início da exclusão: FORM MOVE_SALDO
MODIFY itab_zycbt005.
* << Fim da exclusão
* >> Início da inclusão: FORM MOVE_SALDO
MODIFY itab_zycbt005 index v_index.
* << Fim da inclusão
ENDFORM.
FORM vincula_unica.
GET CURSOR FIELD v_campo VALUE v_valor.
GET CURSOR LINE v_index_sl.
CHECK NOT v_index_sl IS INITIAL.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009F08
...
v_linha.
CLEAR v_dtdocto.
CLEAR v_f30_vinc.
PERFORM get_parameters_001.
PERFORM clear_date_batch.
* >> Início da inclusão: FORM FILL_DATE1_F30_DESM
SELECT SINGLE nrseqc FROM /pws/zycbt005 INTO /pws/zycbt005-nrseqc
WHERE nrseqc = /pws/zycbe001-nrseqc.
IF sy-subrc NE 0 AND
NOT /pws/zycbe074-dtcont IS INITIAL.
v_dtdocto = /pws/zycbe074-dtcont.
ELSE.
* << Fim da inclusão
v_dtdocto = /pws/zycbe005-dtvincul.
* >> Início da inclusão: FORM FILL_DATE1_F30_DESM
ENDIF.
* << Fim da inclusão
v_prazo = /pws/zycbe001-przcontr.
...
...
ENDLOOP.
IF v_vlvinc EQ 0.
EXIT.
ENDIF.
ELSE.
* >> Início da exclusão: FORM BUSCA_DOC_VALOR_VAR
READ TABLE itab_zycbt005 INDEX 1.
* << Fim da exclusão
IF itab_zycbt005-vlvinc > itab_zycbt002p-slvinc.
v_vlvinc = v_vlvinc - itab_zycbt002p-slvinc.
CLEAR itab_zycbt002p_aux-slvinc.
APPEND itab_zycbt002p_aux.
v_wrbtr = itab_zycbt002p-slvinc.
...
...
itab_contabil-bukrs = /pws/zycbe001-bukrs.
itab_contabil-dtdocto = itab_zycbt005-dtvincul.
APPEND itab_contabil.
COMMIT WORK.
ELSE.
* >> Início da inclusão: FORM VINCULACAO
v_erro_estorno2 = 'X'.
* << Fim da inclusão
LOOP AT itab_zycbt032 WHERE cpochv = v_cpochv.
itab_erro-msg = itab_zycbt032-msg.
APPEND itab_erro.
ENDLOOP.
v_subrc = 4.
...
...
PERFORM vinculacao.
v_vlvinc = v_vlvinc - v_wrbtr.
MODIFY itab_zycbt005.
ENDLOOP.
ELSE.
* >> Início da inclusão: FORM DESMEMBRAMENTO
v_erro_estorno2 = 'X'.
* << Fim da inclusão
LOOP AT itab_zycbt032 WHERE cpochv = v_cpochv.
itab_erro-msg = itab_zycbt032-msg.
APPEND itab_erro.
ENDLOOP.
CONCATENATE text-053 itab_zycbt005-nrinvoic text-076
...
...
CLEAR itab_zycbt005-belnr_vinc.
MODIFY itab_zycbt005
INDEX v_index.
ELSE.
PERFORM anula_desm_ace TABLES itab_zycbt005.
* >> Início da exclusão: FORM LANCAMENTO_PROVISAO_DP
CLEAR: itab_zycbt005-belnr_vinc,
v_belnr_001.
* << Fim da exclusão
* >> Início da inclusão: FORM LANCAMENTO_PROVISAO_DP
READ TABLE itab_zycbt030
WITH KEY nrinvoic = itab_zycbt005-nrinvoic
nrparcf = itab_zycbt005-nrparcf
gsberf = itab_zycbt005-gsberf.
clear v_belnr_001.
* << Fim da inclusão
MODIFY itab_zycbt005
INDEX v_index.
ENDIF.
DELETE
FROM /pws/zycbt084
...
...
v_vinc_tot = 'X'.
ELSE.
CLEAR v_vinc_tot.
ENDIF.
IF wa_zycbt007-liq_trans EQ space.
* >> Início da exclusão: FORM DESMEMBRA_CLIENTE
v_data = itab_zycbt030-budat(4).
* << Fim da exclusão
* >> Início da inclusão: FORM DESMEMBRA_CLIENTE
v_data = itab_zycbt030-budat.
* << Fim da inclusão
ELSE.
* >> Início da exclusão: FORM DESMEMBRA_CLIENTE
v_data = itab_zycbt030-budat_t(4).
* << Fim da exclusão
* >> Início da inclusão: FORM DESMEMBRA_CLIENTE
v_data = itab_zycbt030-budat_t.
* << Fim da inclusão
ENDIF.
CLEAR v_year.
CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'
EXPORTING
v_bukrs = itab_zycbt005-bukrs
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009F09
...
itab_zycbt209-belnr
itab_zycbt209-gsberf
itab_zycbt209-nrparcf
INTO v_cpochv.
itab_zycbe033-cpochv = v_cpochv.
* >> Início da inclusão: FORM DESMEMBRA_LIQ_AND_CP
IF /pws/zycbe001-tpcontr(1) = 'C'.
IF wa_zycbt007-liq_cp EQ 'X'.
CONCATENATE '003' /pws/zycbe001-tpcontr INTO v_codeven.
endif.
endif.
* << Fim da inclusão
PERFORM verify_null_field USING itab_zycbt005-dtvincul
'DTPAGTO'
text-003.
itab_zycbe033-budat = itab_zycbt005-dtvincul.
itab_zycbe033-bldat = itab_zycbt005-dtvincul.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009F10
...
ELSE.
APPEND wa_desvincula TO itab_desvincula.
ENDIF.
ENDFORM.
FORM efetua_estorno.
* >> Início da inclusão: FORM EFETUA_ESTORNO
PERFORM verifica_vldesvinc.
CHECK v_executa IS INITIAL.
* << Fim da inclusão
LOOP AT itab_desvincula WHERE vldesvin GT 0.
READ TABLE itab_zycbt005
WITH KEY nrinvoic = itab_desvincula-nrinvoic
nrparcf = itab_desvincula-nrparcf
gsberf = itab_desvincula-gsberf.
...
...
IF NOT itab_contabil[] IS INITIAL.
EXPORT itab_contabil TO MEMORY ID '040'.
EXPORT text-059 TO MEMORY ID '050'.
SUBMIT /pws/zycbr040 AND RETURN.
REFRESH itab_contabil.
* >> Início da inclusão: FORM EFETUA_ESTORNO
CLEAR v_ind_mudanca.
* << Fim da inclusão
ENDIF.
PERFORM limpa_desvincula.
ENDFORM.
FORM calcula_estorno.
DATA: v_parafator LIKE tcurf-ffact ,
...
...
NOT itab_zyglt100-programa IS INITIAL.
PERFORM (itab_zyglt100-formulario)
IN PROGRAM (itab_zyglt100-programa)
IF FOUND.
ENDFORM.
* >> Início da inclusão:
FORM verifica_vldesvinc.
CLEAR: v_executa, v_processo.
LOOP AT itab_zycbt005.
READ TABLE itab_desvincula WITH KEY nrinvoic = itab_zycbt005-nrinvoic
nrparcf = itab_zycbt005-nrparcf
gsberf = itab_zycbt005-gsberf.
IF sy-subrc EQ 0 AND
itab_desvincula-vldesvin >= itab_zycbt005-vlvinc.
MESSAGE i061 WITH text-379 itab_zycbt005-nrinvoic
itab_zycbt005-nrparcf
text-381.
v_executa = 'X'.
DELETE itab_desvincula WHERE nrinvoic = itab_zycbt005-nrinvoic AND
nrparcf = itab_zycbt005-nrparcf AND
gsberf = itab_zycbt005-gsberf.
ENDIF.
ENDLOOP.
CASE sy-ucomm.
WHEN 'ESTOR'.
LOOP AT itab_zycbt005_ant.
READ TABLE itab_zycbt005 WITH KEY
nrseqc = itab_zycbt005_ant-nrseqc
tpdesp = itab_zycbt005_ant-tpdesp
nrparc = itab_zycbt005_ant-nrparc
dtincl = itab_zycbt005_ant-dtincl
nrinvoic = itab_zycbt005_ant-nrinvoic
nrparcf = itab_zycbt005_ant-nrparcf
gsberf = itab_zycbt005_ant-gsberf
dtvincul = itab_zycbt005_ant-dtvincul
dtvencto = itab_zycbt005_ant-dtvencto.
IF sy-subrc NE 0.
v_processo = 'X'.
ENDIF.
ENDLOOP.
WHEN 'SAVE'.
LOOP AT itab_desvincula WHERE NOT vldesvin IS INITIAL.
v_processo = 'X'.
ENDLOOP.
ENDCASE.
IF v_processo = 'X'.
MESSAGE w061 WITH text-382 text-383.
itab_zycbt005[] = itab_zycbt005_ant[].
v_executa = 'X'.
ENDIF.
endform.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009O01
...
itab_pf_status-fcode = 'DEVE'.
APPEND itab_pf_status.
MOVE 'ESTOR' TO itab_pf_status-fcode.
APPEND itab_pf_status.
ENDIF.
* >> Início da exclusão: MODULE STATUS_0100
IF sy-tcode EQ c_transacao_a.
LOOP AT itab_zycbt005.
IF itab_zycbt005-vlestorno GT 0.
MOVE 'X' TO v_flag_estorno.
ENDIF.
ENDLOOP.
IF NOT v_flag_estorno IS INITIAL.
MOVE 'ESTOR' TO itab_pf_status-fcode.
APPEND itab_pf_status.
ENDIF.
ENDIF.
* << Fim da exclusão
CALL CUSTOMER-FUNCTION '083'
EXPORTING
v_sbu = v_sbu
v_tcode = sy-tcode
IMPORTING
...
...
wa_cols-screen-name = '/PWS/ZYCBE005-KDAUF' OR
wa_cols-screen-name = '/PWS/ZYCBE005-FICTR' OR
wa_cols-screen-name = '/PWS/ZYCBE005-GEBER' OR
wa_cols-screen-name = '/PWS/ZYCBE005-EBELN' OR
wa_cols-screen-name = '/PWS/ZYCBE005-ERGOKONT' OR
* >> Início da inclusão: MODULE SET_SCREEN
wa_cols-screen-name = 'WA_DESVINCULA-VLDESVIN' OR
* << Fim da inclusão
wa_cols-screen-name = '/PWS/ZYCBE005-COD_AREA' OR
wa_cols-screen-name = '/PWS/ZYCBE005-DTCREDEXT'.
IF ( wa_cols-screen-name EQ '/PWS/ZYCBE005-VLME_P' OR
wa_cols-screen-name EQ '/PWS/ZYCBE005-VLVINC' ) AND
/pws/zycbe001-tpcontr CA 'E' AND
...
...
CLEAR wa_zycbt007.
SELECT SINGLE empresa
FROM /pws/zyglt364
INTO /pws/zyglt364-empresa
WHERE usuario EQ sy-uname.
* >> Início da exclusão: MODULE PARAMETROS
IF sy-subrc IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: MODULE PARAMETROS
IF sy-subrc EQ 0.
* << Fim da inclusão
SELECT SINGLE * FROM /pws/zycbt007
INTO wa_zycbt007
WHERE bukrs EQ /pws/zyglt364-empresa.
* >> Início da inclusão: MODULE PARAMETROS
ELSE.
SELECT SINGLE * FROM /pws/zycbt007
INTO wa_zycbt007
WHERE bukrs EQ /pws/zycbe001-bukrs.
* << Fim da inclusão
ENDIF.
ENDMODULE.
MODULE set_screen_0401 OUTPUT.
IF v_status1_s = '0'.
LOOP AT SCREEN.
...
...
gsberf = /pws/zycbe005-gsberf AND
dtvincul = /pws/zycbe005-dtvincul.
IF sy-subrc EQ 0.
IF screen-name = '/PWS/ZYCBE005-VLME_P' OR
screen-name = '/PWS/ZYCBE005-VLVINC' .
* >> Início da exclusão: MODULE SET_SCREEN_VINC
IF /pws/zycbe005-slpagar NE /pws/zycbe006-vlme OR
/pws/zycbe006-vlme EQ 0.
* << Fim da exclusão
* >> Início da inclusão: MODULE SET_SCREEN_VINC
IF /pws/zycbe005-slpagar NE /pws/zycbt006-vlme OR
/pws/zycbt006-vlme EQ 0.
* << Fim da inclusão
screen-input = '0'.
ELSE.
screen-input = v_status_s.
ENDIF.
ENDIF.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009TOP
...
v_monat LIKE t001b-frpe1,
v_ano LIKE t009b-bdatj,
v_dtbelnr LIKE /pws/zycbt005-dtbelnr,
v_arb(1),
v_executa TYPE c,
* >> Início da inclusão:
v_processo(1) TYPE c,
* << Fim da inclusão
v_performance TYPE c,
v_index_sl TYPE i,
v_dclique(1),
v_dtlanc LIKE /pws/zycbt030-budat,
v_cvalor(1),
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009X01
...
/pws/zycbe050,
/pws/zycbt050,
/pws/zycbt051,
/pws/zycbe051.
DATA: BEGIN OF COMMON PART c.
* >> Início da inclusão:
data:
v_erro_estorno2 TYPE c.
* << Fim da inclusão
DATA: BEGIN OF itab_zycbt001 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt001.
DATA: END OF itab_zycbt001.
DATA: BEGIN OF itab_zycbt005 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt005.
...