Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Rotina de Pagamento
Data/Hora da Publicação: 30/11/2007 00:00:00
Data/Hora Última Alteração: 10/03/2010 17:36:29
Descrição da Nota: COMPLEMENTO DO BOLETO - PRINCIPAL CONTRATO TRAVA - ESTORNO POR FBRA/FB08
Sintoma
Ao estornar um boleto de Principal de Contrato de Trava, esta gerando uma F-02 e uma F-30, deixando
uma partida em aberto do banco.
Solução
Alterar o estorno para FBRA/FB08. Na ida(F-30) não mais atualizar campo da /pws/zycbt001, buscar
todos os documentos de boletos gerados para o contrato, no caso de haver mais que uma parcela de
principal, assim acha partida em aberto. No estorno só será permitido fazer do último boleto para o
primeiro, ou seja, na ordem da ida.
7.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 05362 Data: 30/11/2007 Hora: 15:48:19
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 05362
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00003
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
Texto Rápido:
COMPLEMENTO DO BOLETO - PRINCIPAL CONTRATO TRAVA - ESTORNO POR FBRA/FB08
----------------------------------------------------------------------------------------------------
Palavras Chave:
COMPLEMENTO DO BOLETO PRINCIPAL CONTRATO TRAVA ESTORNO POR FBRA/FB08
F-30
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCB_TRANSACAO_F_30_A
REPS /PWS/MZYCB110F01
REPS /PWS/MZYCB110TOP1
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCB_TRANSACAO_F_30_A
...
CONCATENATE 'RF05A-XPOS1(' v_xpos_belnr ')' INTO v_xpos.
PERFORM bdc_field USING:
v_xpos 'X',
'BDC_OKCODE' '/00'.
ENDIF.
PERFORM bdc_screen USING 'SAPMF05A' '0731'.
PERFORM bdc_field USING:
'RF05A-SEL01(1)' t_dados-belnr,
'RF05A-SEL02(1)' t_dados-belnr,
'BDC_CURSOR' 'RF05A-SEL01(1)',
* >> Início da exclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_A
'BDC_OKCODE' '/00',
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_A
'BDC_OKCODE' '/00'.
v_cont = 1.
LOOP AT t_zycbt036 WHERE tcode eq t_dados-tcode
AND tabela eq t_dados-tabela
AND cpochv eq t_dados-cpochv
and not belnr is initial.
ADD 1 TO v_cont.
CONCATENATE 'RF05A-SEL01(' v_cont ')' INTO v_campo.
PERFORM bdc_field USING v_campo t_zycbt036-belnr.
CONCATENATE 'RF05A-SEL02(' v_cont ')' INTO v_campo.
PERFORM bdc_field USING v_campo t_zycbt036-belnr.
IF v_cont = 5.
PERFORM bdc_screen USING 'SAPMF05A' '0731'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
CLEAR v_cont.
ENDIF.
ENDLOOP.
PERFORM bdc_field USING:
* << Fim da inclusão
'BDC_OKCODE' '=PA'.
IF t_dados-agkoa = 'S'.
v_tela = '3100'.
v_tela2 = '0300'.
ELSE.
v_tela = '3100'.
v_tela2 = '0301'.
ENDIF.
IF NOT t_dados-dtdocto IS INITIAL.
PERFORM bdc_screen USING 'SAPDF05X' v_tela.
...
...
PERFORM bdc_field USING 'BDC_OKCODE' '=OSU'.
PERFORM bdc_screen USING 'SAPDF05X' '2000'.
PERFORM bdc_field USING 'BDC_CURSOR' v_xpos_budat.
PERFORM bdc_field USING v_xpos_budat 'X'.
PERFORM bdc_field USING 'BDC_OKCODE' '=GO'.
PERFORM bdc_screen USING 'SAPDF05X' '0732'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-VONDT(01)'.
WRITE t_dados-dtdocto TO v_dtdocto.
PERFORM bdc_field USING 'RF05A-VONDT(01)' v_dtdocto.
PERFORM bdc_field USING 'RF05A-BISDT(01)' v_dtdocto.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_A
v_cont = 1.
LOOP AT t_zycbt036 WHERE tcode eq t_dados-tcode
AND tabela eq t_dados-tabela
AND cpochv eq t_dados-cpochv
and not dtdocto is initial.
ADD 1 TO v_cont.
WRITE t_zycbt036-dtdocto TO v_dtdocto.
CONCATENATE 'RF05A-VONDT(' v_cont ')' INTO v_campo.
PERFORM bdc_field USING v_campo v_dtdocto.
CONCATENATE 'RF05A-BISDT(' v_cont ')' INTO v_campo.
PERFORM bdc_field USING v_campo v_dtdocto.
if v_cont = 7.
PERFORM bdc_field USING 'BDC_OKCODE' '=SU1'.
PERFORM bdc_screen USING 'SAPDF05X' '0732'.
CLEAR v_cont.
endif.
ENDLOOP.
* << Fim da inclusão
PERFORM bdc_field USING 'BDC_OKCODE' '=GO'.
ENDIF.
IF NOT v_zuonr IS INITIAL.
PERFORM bdc_screen USING 'SAPDF05X' v_tela.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-ABPOS'.
PERFORM bdc_field USING 'BDC_OKCODE' '=OMX'.
PERFORM bdc_screen USING 'SAPDF05X' v_tela.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-ABPOS'.
PERFORM bdc_field USING 'BDC_OKCODE' '=Z-'.
PERFORM bdc_screen USING 'SAPDF05X' v_tela..
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB110F01
...
v_dtdocto = wa_zycbe001-dtcontr.
ENDCASE.
ELSE.
v_dtdocto = wa_zycbe001-dt_lcto_tr.
ENDIF.
SELECT SINGLE * FROM bkpf
WHERE bukrs = wa_zycbe001-bukrs
AND belnr = wa_zycbe001-belnr_tr
AND gjahr = v_dtdocto(4).
itab_zycbe033-dtdocto = bkpf-budat.
* >> Início da inclusão: FORM FILL_DATE1_F30
SELECT * FROM /pws/zycbt031 INTO TABLE itab_zycbt031_tr
WHERE mdcorresp = 'ED'
AND nrcorresp = /pws/zycbe031-nrcorresp
AND nrseq <> /pws/zycbe031-nrseq.
CLEAR itab_zycbt036.
REFRESH itab_zycbt036.
LOOP AT itab_zycbt031_tr.
itab_zycbt036-tcode = 'F-30'.
itab_zycbt036-tabela = '/PWS/ZYCBT001'.
itab_zycbt036-cpochv = /pws/zycbe031-nrseq.
itab_zycbt036-belnr = itab_zycbt031_tr-belnr_p.
itab_zycbt036-dtdocto = itab_zycbt031_tr-dtcredpr.
SELECT SINGLE awkey FROM bkpf
INTO itab_zycbt036-awkey
WHERE belnr EQ itab_zycbt036-belnr
AND bukrs EQ /pws/zycbe031-bukrs
AND gjahr EQ itab_zycbt036-dtdocto(4).
APPEND itab_zycbt036.
ENDLOOP.
* << Fim da inclusão
itab_zycbe033-d_gsber = wa_zycbe001-gsber.
itab_zycbe033-d_kostl = wa_zycbe001-kostl.
itab_zycbe033-d_prctr = wa_zycbe001-prctr.
itab_zycbe033-d_fipos = wa_zycbe001-fipos.
itab_zycbe033-c_gsber = wa_zycbe001-gsber.
itab_zycbe033-c_kostl = wa_zycbe001-kostl.
itab_zycbe033-c_prctr = wa_zycbe001-prctr.
itab_zycbe033-c_fipos = wa_zycbe001-fipos.
APPEND itab_zycbe033.
LOOP AT itab_zycbt034.
MESSAGE i016 WITH itab_zycbt034-descricao.
ENDLOOP.
IF itab_zycbt034[] IS INITIAL.
CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_30_A'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
* >> Início da inclusão: FORM FILL_DATE1_F30
t_zycbt036 = itab_zycbt036
* << Fim da inclusão
EXCEPTIONS
campo_em_branco = 1
periodo_fechado = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-30'
tabela = '/PWS/ZYCBT001'
cpochv = /pws/zycbe031-nrseq
tpmsg = 'S'.
IF sy-subrc = 0.
wa_despesa-statusp = 'C'.
/pws/zycbe031-statusp = 'C'.
wa_despesa-belnr = itab_zycbt032-belnr.
/pws/zycbe031-belnr_p = itab_zycbt032-belnr.
wa_despesa-dtpagto = /pws/zycbe031-dtcredpr.
itab_zycbt031-v_process = 'X'.
MODIFY itab_zycbt031 TRANSPORTING v_process
WHERE nrseq EQ /pws/zycbe031-nrseq
AND dtboleto EQ /pws/zycbe031-dtboleto.
MESSAGE i082 WITH itab_zycbt032-belnr.
* >> Início da exclusão: FORM FILL_DATE1_F30
wa_zycbe001-belnr_tr = itab_zycbt032-belnr.
wa_zycbe001-dt_lcto_tr = itab_zycbe033-budat.
UPDATE /pws/zycbt001 SET belnr_tr = wa_zycbe001-belnr_tr
dt_lcto_tr = wa_zycbe001-dt_lcto_tr
WHERE nrseqc = wa_zycbe001-nrseqc.
* << Fim da exclusão
PERFORM atualiza_despesa.
IF wa_zyglt009-comp_trans EQ 'C'.
REFRESH itab_zycbe033_aux3.
MOVE itab_zycbe033[] TO itab_zycbe033_aux3[].
PERFORM contabiliza_f04.
ENDIF.
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
...
...
FORM estorna_trava.
IF wa_zyglt009-comp_trans EQ 'C' AND
NOT /pws/zycbe031-belnr_comp IS INITIAL.
PERFORM clear_date_batch.
PERFORM estorna_f04.
IF NOT /pws/zycbe031-belnr_comp IS INITIAL.
MESSAGE i061 WITH text-074.
EXIT.
ENDIF.
ENDIF.
* >> Início da exclusão: FORM ESTORNA_TRAVA
PERFORM clear_date_batch.
PERFORM parametros_tr.
itab_zycbe033-mandt = sy-mandt.
itab_zycbe033-tcode = 'F-02'.
itab_zycbe033-tabela = '/PWS/ZYCBT001'.
itab_zycbe033-cpochv = /pws/zycbe031-nrseq.
itab_zycbe033-budat = wa_zycbt031-dtcredpr.
CASE wa_zycbt007-fdtdoc.
WHEN 'D'.
itab_zycbe033-bldat = sy-datum.
itab_zycbe033-d_valut = sy-datum.
itab_zycbe033-c_valut = sy-datum.
WHEN 'L'.
itab_zycbe033-bldat = wa_zycbt031-dtcredpr.
itab_zycbe033-d_valut = wa_zycbt031-dtcredpr.
itab_zycbe033-c_valut = wa_zycbt031-dtcredpr.
ENDCASE.
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_TRAVA
PERFORM est_fbra_comp.
READ TABLE itab_zycbt032 WITH KEY tcode = 'FBRA'
tabela = '/PWS/ZYCBT031'
cpochv = /pws/zycbe031-nrseq
tpmsg = 'S'.
* << Fim da inclusão
* >> Início da exclusão: FORM ESTORNA_TRAVA
itab_zycbe033-bktxt = wa_zycbt007-bktxt.
itab_zycbe033-umskz = wa_zycbt011-agums.
itab_zycbe033-zfbdt = wa_zycbe002-dtcrd.
LOOP AT itab_zycbt013.
CASE itab_zycbt013-cpor3.
WHEN 'XBLNR'.
IF itab_zycbt013-cpocb EQ 'NRSEQC'.
itab_zycbe033-xblnr = wa_zycbe002-nrseqc.
ENDIF.
WHEN 'ZUONR'.
IF itab_zycbt013-cpocb EQ 'NRDESP'.
itab_zycbe033-d_zuonr = wa_zycbe002-nrcontr.
itab_zycbe033-c_zuonr = wa_zycbe002-nrcontr.
ELSEIF itab_zycbt013-cpocb EQ 'NRSEQC'.
itab_zycbe033-d_zuonr = wa_zycbe002-nrseqc.
itab_zycbe033-c_zuonr = wa_zycbe002-nrseqc.
ENDIF.
ENDCASE.
ENDLOOP.
IF wa_zycbe002-txtinf IS INITIAL.
itab_zycbe033-d_sgtxt = wa_zycbt011-txtdesc.
itab_zycbe033-c_sgtxt = wa_zycbt011-txtdesc.
itab_zycbe033-augtx = wa_zycbt011-txtdesc.
ELSE.
itab_zycbe033-d_sgtxt = wa_zycbe002-txtinf.
itab_zycbe033-c_sgtxt = wa_zycbe002-txtinf.
itab_zycbe033-augtx = wa_zycbe002-txtinf.
ENDIF.
PERFORM verifica_field USING wa_zycbe001-bukrs
text-010.
itab_zycbe033-bukrs = wa_zycbe001-bukrs.
PERFORM verifica_field USING wa_zycbe001-waers
text-011.
itab_zycbe033-waers = wa_zycbe001-waers.
itab_zycbe033-kursf = wa_zycbt031-kursf.
PERFORM verifica_field USING wa_zycbt011-blart
text-020.
itab_zycbe033-blart = wa_zycbt011-blart.
PERFORM verifica_field USING wa_zycbt031-vlme
text-013.
itab_zycbe033-wrbtr = wa_zycbt031-vlme.
itab_zycbe033-d_gsber = wa_zycbe001-gsber.
itab_zycbe033-d_kostl = wa_zycbe001-kostl.
itab_zycbe033-d_prctr = wa_zycbe001-prctr.
itab_zycbe033-d_fipos = wa_zycbe001-fipos.
itab_zycbe033-c_gsber = wa_zycbe001-gsber.
itab_zycbe033-c_kostl = wa_zycbe001-kostl.
itab_zycbe033-c_prctr = wa_zycbe001-prctr.
itab_zycbe033-c_fipos = wa_zycbe001-fipos.
APPEND itab_zycbe033.
LOOP AT itab_zycbt034.
MESSAGE i016 WITH itab_zycbt034-descricao.
ENDLOOP.
IF itab_zycbt034[] IS INITIAL.
CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_02'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
EXCEPTIONS
campo_em_branco = 1
periodo_fechado = 2
OTHERS = 3.
* << Fim da exclusão
IF sy-subrc = 0.
* >> Início da exclusão: FORM ESTORNA_TRAVA
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-02'
tabela = '/PWS/ZYCBT001'
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_TRAVA
PERFORM est_fb08.
READ TABLE itab_zycbt032 WITH KEY tcode = 'FB08'
tabela = '/PWS/ZYCBT031'
* << Fim da inclusão
cpochv = /pws/zycbe031-nrseq
tpmsg = 'S'.
* >> Início da inclusão: FORM ESTORNA_TRAVA
IF sy-subrc EQ 0.
* << Fim da inclusão
* >> Início da exclusão: FORM ESTORNA_TRAVA
IF sy-subrc = 0.
CLEAR: wa_despesa-belnr,
/pws/zycbe031-belnr_p,
wa_despesa-dtpagto,
itab_zycbt031-v_process.
* << Fim da exclusão
IF w_ok EQ 'DEL'.
/pws/zycbe031-status = 'E'.
ELSE.
/pws/zycbe031-status = 'I'.
ENDIF.
wa_despesa-statusp = 'I'.
/pws/zycbe031-statusp = 'I'.
* >> Início da inclusão: FORM ESTORNA_TRAVA
CLEAR: wa_despesa-belnr, /pws/zycbe031-belnr_p,
wa_despesa-dtpagto, itab_zycbt031-v_process.
* << Fim da inclusão
MODIFY itab_zycbt031 TRANSPORTING v_process
WHERE nrseq EQ /pws/zycbe031-nrseq
AND dtboleto EQ /pws/zycbe031-dtboleto.
PERFORM atualiza_despesa.
* >> Início da exclusão: FORM ESTORNA_TRAVA
/pws/zycbe031-belnr_p = itab_zycbt032-belnr.
MESSAGE i061 WITH text-141 itab_zycbt032-belnr text-142.
PERFORM fill_date_1_f-30_tr USING /pws/zycbe031-belnr_p.
* << Fim da exclusão
IF ok_code NE 'DEL'.
PERFORM contabiliza_ed.
* >> Início da exclusão: FORM ESTORNA_TRAVA
ENDIF.
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
MODIFY /pws/zycbt031 FROM wa_zycbt031.
/pws/zycbe031 = wa_zycbt031.
erro_bi = 'X'.
* << Fim da exclusão
ENDIF.
* >> Início da exclusão: FORM ESTORNA_TRAVA
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i127 WITH itab_zycbt034-descricao v_evento.
ENDLOOP.
MODIFY /pws/zycbt031 FROM wa_zycbt031.
/pws/zycbe031 = wa_zycbt031.
* << Fim da exclusão
ENDIF.
* >> Início da exclusão: FORM ESTORNA_TRAVA
ELSE.
MODIFY /pws/zycbt031 FROM wa_zycbt031.
/pws/zycbe031 = wa_zycbt031.
* << Fim da exclusão
ENDIF.
ENDFORM.
FORM parametros_tr.
REFRESH : itab_zycbt012.
CLEAR : itab_zycbt012.
REFRESH itab_zycbt013.
SELECT * FROM /pws/zycbt013
INTO TABLE itab_zycbt013
WHERE tabela = '/PWS/ZYCBT004'.
SELECT SINGLE * FROM /pws/zycbt007
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB110TOP1
...
DATA: END OF itab_zycbt136.
DATA: BEGIN OF itab_zycbt156 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt156.
DATA: END OF itab_zycbt156.
DATA: BEGIN OF itab_zycbe033_aux3 OCCURS 10.
INCLUDE STRUCTURE /pws/zycbe033.
DATA: END OF itab_zycbe033_aux3.
DATA: BEGIN OF itab_zycet001 OCCURS 0.
INCLUDE STRUCTURE /pws/zycet001.
DATA: END OF itab_zycet001.
* >> Início da inclusão:
DATA: BEGIN OF itab_zycbt031_tr OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt031.
DATA: END OF itab_zycbt031_tr.
* << Fim da inclusão
DATA: v_okcomis(1) TYPE c,
v_cpochv LIKE /pws/zycbe033-cpochv,
v_belnr6 LIKE /pws/zycbt030-belnr6,
wa_zycbt009 LIKE /pws/zycbt009,
v_nrboleto(1) TYPE c,
v_contcli LIKE /pws/zycbt017-kunag,
v_block(1) TYPE c,
v_deleta,
v_corrige TYPE /pws/zycbe031-vlmi,
v_conta TYPE i,
...