Módulo: CÂMBIO IMPORTAÇÃO
Funcionalidade: Rotina de Pagamento
Data/Hora da Publicação: 08/05/2007 00:00:00
Data/Hora Última Alteração: 04/03/2010 13:42:59
Descrição da Nota: SAÍDA DE PAGAMENTO - FINANCIAMENTO - APROVAÇÃO NÃO AUTOMÁTICA
Sintoma
Ao efetuar a saída de pagamento de uma parcela de principal(financiamento) onde o parâmetro da
/PWS/ZYCBT133 esta aprovação não automática, na saída de pagamento o sistema não esta buscando a
conta correta na F-51(clearing). Se fizer via shift+f9 para que contabilize corretamente, o sistema
fecha a saída de pagamento sem fazer a F-53.
Solução
Fazer as buscas pela nova /PWS/ZYGL012 e /PWS/ZYCBT321. Gravar o documento da F-51 apenas na tabela
do financiamento, como faz no complemento do boleto, assim prossegue e efetua a F-53. Liquidação de
financiamento no cenário de Pagamento não automático (Pré Edição).
7.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 03628 Data: 08/05/2007 Hora: 10:18:32
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 03628
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00027
Agrupamento : 00165
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
SAÍDA DE PAGAMENTO - FINANCIAMENTO - APROVAÇÃO NÃO AUTOMÁTICA
----------------------------------------------------------------------------------------------------
Palavras Chave:
SAÍDA DE PAGAMENTO FINANCIAMENTO APROVAÇÃO NÃO AUTOMÁTICA
F-63 FBV0 F-51 CLEARING PARCELA DE PRINCIPAL /PWS/ZYCBT133
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCB115F01
REPT /PWS/SAPMZYCB115
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB115F01
...
ENDFORM.
FORM busca_param_clear.
SELECT *
FROM /pws/zycbt133
INTO /pws/zycbt133
WHERE bukrs EQ itab_zycbt134-bukrs AND
codmod EQ 'I'.
ENDSELECT.
ENDFORM.
FORM executa_clearing_financ.
* >> Início da inclusão: FORM EXECUTA_CLEARING_FINANC
PERFORM clear_date_batch.
CLEAR itab_zycbt031.
READ TABLE itab_zycbt031 WITH KEY nrseq = itab_zycbt134-nrseq.
* << Fim da inclusão
PERFORM get_parameters_clear_financ.
* >> Início da exclusão: FORM EXECUTA_CLEARING_FINANC
PERFORM clear_date_batch.
* << Fim da exclusão
itab_zycbe033-mandt = sy-mandt.
itab_zycbe033-tcode = text-213.
itab_zycbe033-tabela = text-214.
itab_zycbe033-cpochv = itab_zycbt134-nrseq.
* >> Início da exclusão: FORM EXECUTA_CLEARING_FINANC
CLEAR itab_zycbt031.
READ TABLE itab_zycbt031 WITH KEY nrseq = itab_zycbt134-nrseq.
* << Fim da exclusão
itab_zycbe033-budat = itab_zycbt031-dtcredpr.
IF /pws/zycbt007-fdtdoc = 'D'.
itab_zycbe033-bldat = sy-datum.
ELSE.
itab_zycbe033-bldat = itab_zycbe033-budat.
ENDIF.
itab_zycbe033-bktxt = /pws/zycbt007-bktxt.
itab_zycbe033-agums = wa_zycbt011-agums.
itab_zycbe033-agkoa = wa_zycbt011-koart.
itab_zycbe033-agkon = /pws/zycbt112-lifnr.
PERFORM verify_null_field USING itab_zycbe033-agkon
'AGKON'
text-061.
* >> Início da exclusão: FORM EXECUTA_CLEARING_FINANC
itab_zycbt036-tcode = text-213.
itab_zycbt036-tabela = text-214.
itab_zycbt036-cpochv = itab_zycbt134-nrseq.
itab_zycbt036-belnr = itab_zycbt134-belnr_p.
SELECT awkey
UP TO 1 ROWS
FROM bkpf
INTO itab_zycbt036-awkey
WHERE belnr EQ itab_zycbt134-belnr_p AND
bukrs EQ itab_zycbt134-bukrs AND
gjahr EQ itab_zycbt031-dtcredpr(4).
ENDSELECT.
APPEND itab_zycbt036.
* << Fim da exclusão
itab_zycbt036-tcode = text-213.
itab_zycbt036-tabela = text-214.
itab_zycbt036-cpochv = itab_zycbt134-nrseq.
CLEAR v_nrparc.
v_nrparc = itab_zycbt031-nrparc .
SELECT belnr belnr_c ftransf
UP TO 1 ROWS
FROM /pws/zycbt113
INTO (/pws/zycbt113-belnr, /pws/zycbt113-belnr_c,
/pws/zycbt113-ftransf)
...
...
ELSE.
SELECT awkey
UP TO 1 ROWS
FROM bkpf
INTO itab_zycbt036-awkey
WHERE belnr EQ itab_zycbt036-belnr AND
bukrs EQ itab_zycbt134-bukrs AND
gjahr EQ /pws/zycbt112-dtdesem(4).
ENDSELECT.
ENDIF.
* >> Início da inclusão: FORM EXECUTA_CLEARING_FINANC
APPEND itab_zycbt036.
itab_zycbt036-tcode = text-213.
itab_zycbt036-tabela = text-214.
itab_zycbt036-cpochv = itab_zycbt134-nrseq.
itab_zycbt036-belnr = itab_zycbt134-belnr_p.
SELECT awkey
UP TO 1 ROWS
FROM bkpf
INTO itab_zycbt036-awkey
WHERE belnr EQ itab_zycbt134-belnr_p AND
bukrs EQ itab_zycbt134-bukrs AND
gjahr EQ itab_zycbt031-dtcredpr(4).
ENDSELECT.
* << Fim da inclusão
APPEND itab_zycbt036.
IF itab_zycbt031-tpparc = 'J'.
itab_zycbe033-d_newko = itab_zycbt134-bcocred.
ELSE.
* >> Início da exclusão: FORM EXECUTA_CLEARING_FINANC
READ TABLE itab_zycbt012c WITH KEY codeven = vcodeven
codmod = 'I'
codaux = /pws/zycbt112-codint.
* << Fim da exclusão
v_evento = vcodeven.
* >> Início da exclusão: FORM EXECUTA_CLEARING_FINANC
itab_zycbe033-d_newko = itab_zycbt012c-saknr1.
* << Fim da exclusão
ENDIF.
* >> Início da inclusão: FORM EXECUTA_CLEARING_FINANC
IF itab_zycbt031-tpparc EQ 'P'.
LOOP AT itab_zyglt321.
CASE itab_zyglt321-cpor3.
WHEN 'SGTXT'.
CASE itab_zyglt321-cpocb.
WHEN 'NRSEQ'.
MOVE: /pws/zycbt112-nrseq TO itab_zycbe033-d_sgtxt,
/pws/zycbt112-nrseq TO itab_zycbe033-c_sgtxt.
WHEN 'NRFINANC'.
MOVE: /pws/zycbt112-nrfinanc TO itab_zycbe033-d_sgtxt,
/pws/zycbt112-nrfinanc TO itab_zycbe033-c_sgtxt.
WHEN 'TXTINF'.
IF /pws/zycbt112-txtinf IS INITIAL.
MOVE wa_zycbt011-txtdesc TO:
itab_zycbe033-d_sgtxt,
itab_zycbe033-c_sgtxt.
ELSE.
MOVE: /pws/zycbt112-txtinf TO itab_zycbe033-d_sgtxt,
/pws/zycbt112-txtinf TO itab_zycbe033-c_sgtxt.
ENDIF.
WHEN space.
MOVE itab_zyglt321-descr TO:
itab_zycbe033-d_sgtxt,
itab_zycbe033-c_sgtxt.
ENDCASE.
WHEN 'VALUT'.
CASE itab_zyglt321-cpocb.
WHEN 'DTINCL'.
MOVE /pws/zycbt112-dtincl TO:
itab_zycbe033-d_valut,
itab_zycbe033-c_valut.
WHEN 'DTDESEM'.
MOVE /pws/zycbt112-dtdesem TO:
itab_zycbe033-d_valut,
itab_zycbe033-c_valut.
WHEN 'DTVENCTO'.
MOVE /pws/zycbt112-dtvencto TO:
itab_zycbe033-d_valut,
itab_zycbe033-c_valut.
WHEN 'DTFINAL'.
MOVE wa_zycbt113-dtfinal TO:
itab_zycbe033-d_valut,
itab_zycbe033-c_valut.
ENDCASE.
WHEN 'ZFBDT'.
CASE itab_zyglt321-cpocb.
WHEN 'DTINCL'.
MOVE /pws/zycbt112-dtincl TO:
itab_zycbe033-zfbdt .
WHEN 'DTDESEM'.
MOVE /pws/zycbt112-dtdesem TO:
itab_zycbe033-zfbdt .
WHEN 'DTVENCTO'.
MOVE /pws/zycbt112-dtvencto TO:
itab_zycbe033-zfbdt .
WHEN 'DTFINAL'.
MOVE wa_zycbt113-dtfinal TO:
itab_zycbe033-zfbdt .
ENDCASE.
WHEN 'XBLNR'.
CASE itab_zyglt321-cpocb.
WHEN 'NRSEQ'.
MOVE /pws/zycbt112-nrseq TO:
itab_zycbe033-xblnr .
WHEN 'NRFINANC'.
MOVE /pws/zycbt112-nrfinanc TO:
itab_zycbe033-xblnr .
ENDCASE.
WHEN 'ZUONR'.
CASE itab_zyglt321-cpocb.
WHEN 'NRSEQ'.
MOVE /pws/zycbt112-nrseq TO:
itab_zycbe033-d_zuonr,
itab_zycbe033-c_zuonr.
WHEN 'NRFINANC'.
MOVE /pws/zycbt112-nrfinanc TO:
itab_zycbe033-d_zuonr,
itab_zycbe033-c_zuonr.
ENDCASE.
ENDCASE.
ENDLOOP.
ELSE.
* << Fim da inclusão
LOOP AT itab_zycbt013.
CASE itab_zycbt013-cpor3.
WHEN 'XBLNR'.
CASE itab_zycbt013-cpocb.
WHEN 'NRFINANC'.
itab_zycbe033-xblnr = /pws/zycbt112-nrfinanc.
WHEN 'NRSEQ'.
itab_zycbe033-xblnr = /pws/zycbt112-nrseq.
WHEN 'NRLINHA'.
itab_zycbe033-xblnr = /pws/zycbt112-nrlinha.
...
...
itab_zycbe033-c_zuonr = /pws/zycbt112-nrfinanc.
WHEN 'NRSEQ'.
itab_zycbe033-d_zuonr = /pws/zycbt112-nrseq.
itab_zycbe033-c_zuonr = /pws/zycbt112-nrseq.
WHEN 'NRLINHA'.
itab_zycbe033-d_zuonr = /pws/zycbt112-nrlinha.
itab_zycbe033-c_zuonr = /pws/zycbt112-nrlinha.
ENDCASE.
ENDCASE.
ENDLOOP.
* >> Início da inclusão: FORM EXECUTA_CLEARING_FINANC
ENDIF.
* << Fim da inclusão
PERFORM verify_null_field USING itab_zycbt134-bukrs
'BUKRS'
text-010.
itab_zycbe033-bukrs = itab_zycbt134-bukrs.
PERFORM verify_null_field USING itab_zycbt134-waers
'WAERS'
text-011.
itab_zycbe033-waers = itab_zycbt134-waers.
itab_zycbe033-kursf = itab_zycbt134-kursf.
PERFORM verify_null_field USING wa_zycbt011-blart
...
...
LOOP AT itab_zycbt034.
MOVE-CORRESPONDING itab_zycbt134 TO itab_erro_s.
itab_erro_s-dtcont = sy-datum.
itab_erro_s-belnr = ''.
CONCATENATE text-264 itab_zycbt034-descricao text-265
INTO itab_erro_s-msg1 SEPARATED BY space.
itab_erro_s-msg2 = text-266.
APPEND itab_erro_s.
ENDLOOP.
IF itab_zycbt034 IS INITIAL.
* >> Início da exclusão: FORM EXECUTA_CLEARING_FINANC
CALL FUNCTION '/PWS/ZYCM_TRANSACAO_F_51G'
* << Fim da exclusão
* >> Início da inclusão: FORM EXECUTA_CLEARING_FINANC
CALL FUNCTION '/PWS/ZYCM_TRANSACAO_F_51A'
* << Fim da inclusão
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
t_zycbt036 = itab_zycbt036
EXCEPTIONS
campo_em_branco = 1
periodo_fechado = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE itab_zycbt032 WITH KEY tcode = text-213
tabela = text-214
cpochv = itab_zycbt031-nrseq
tpmsg = 'S'.
IF sy-subrc = 0.
* >> Início da exclusão: FORM EXECUTA_CLEARING_FINANC
IF NOT itab_zycbt032-belnr IS INITIAL.
itab_zycbt134-statusp = text-079.
itab_zycbt134-belnr_c = itab_zycbt032-belnr.
itab_zycbt134-dtlanc = itab_zycbe033-budat.
ENDIF.
MODIFY itab_zycbt134.
* << Fim da exclusão
IF itab_zycbt031-tpparc EQ 'P'.
UPDATE /pws/zycbt113 SET belnr_c = itab_zycbt032-belnr
WHERE nrseq = itab_zycbt031-nrcorresp
AND tpparc = itab_zycbt031-tpparc
AND nrparc = itab_zycbt031-nrparc.
ELSE.
UPDATE /pws/zycbt113 SET belnr_cl = itab_zycbt032-belnr
WHERE nrseq = itab_zycbt031-nrcorresp
AND tpparc = itab_zycbt031-tpparc
AND nrparc = itab_zycbt031-nrparc.
...
...
APPEND itab_erro_s.
ENDLOOP.
v_errocl = 'X'.
ENDIF.
ENDIF.
PERFORM clear_date_batch.
CLEAR itab_zycbt036.
REFRESH itab_zycbt036.
ENDFORM.
FORM get_parameters_clear_financ.
* >> Início da inclusão: FORM GET_PARAMETERS_CLEAR_FINANC
DATA: v_tipo_prazo LIKE /pws/zyglt316-codaux1,
v_bukrs_p LIKE /pws/zycbt145-bukrs_p,
v_aux_ktosl LIKE /pws/zyglt316-ktosl,
v_aux_cod LIKE /pws/zyglt316-codaux1.
* << Fim da inclusão
CLEAR vcodeven.
IF itab_zycbt031-tpparc = 'P'.
vcodeven = '001CL'.
ELSEIF itab_zycbt031-tpparc = 'C'.
vcodeven = '004CL'.
ELSEIF itab_zycbt031-tpparc = 'J'.
vcodeven = '002P'.
ENDIF.
v_evento = vcodeven.
SELECT belnr belnr_c lifnr codint dtvencto dtdesem
...
...
REFRESH itab_zycbt013.
SELECT * FROM /pws/zycbt013
INTO TABLE itab_zycbt013
WHERE tabela = '/PWS/ZYCBT112'.
v_nrdias = /pws/zycbt112-dtvencto - /pws/zycbt112-dtdesem.
IF v_nrdias <= 360.
v_prazo = 'S'.
ELSE.
v_prazo = 'L'.
ENDIF.
* >> Início da exclusão: FORM GET_PARAMETERS_CLEAR_FINANC
REFRESH itab_zycbt012c.
SELECT *
FROM /pws/zycbt012
INTO TABLE itab_zycbt012c
WHERE codeven = vcodeven AND
codmod = 'I'.
* << Fim da exclusão
CLEAR wa_zycbt011.
SELECT *
UP TO 1 ROWS
FROM /pws/zycbt011
INTO wa_zycbt011
WHERE codeven = vcodeven AND
codmod = 'I'.
ENDSELECT.
SELECT *
FROM /pws/zycbt113
INTO wa_zycbt113
WHERE nrseq = itab_zycbt031-nrcorresp AND
tpparc = itab_zycbt031-tpparc AND
nrparc = itab_zycbt031-nrparc.
ENDSELECT.
* >> Início da inclusão: FORM GET_PARAMETERS_CLEAR_FINANC
CONCATENATE '001' /pws/zycbt112-codint INTO v_codeven.
SELECT *
FROM /pws/zyglt321
INTO TABLE itab_zyglt321
WHERE ktosl EQ 'FIN' AND
codeven EQ v_codeven.
IF itab_zycbt031-tpparc EQ 'P'.
CONCATENATE /pws/zycbt112-codint wa_zycbt113-ftransf
INTO v_tipo_prazo SEPARATED BY space.
CALL FUNCTION '/PWS/ZYGL_READ_ACCOUNT_NUMBER'
EXPORTING
bukrs = itab_zycbt031-bukrs
ktosl = 'PFI'
codaux1 = v_tipo_prazo
TABLES
account = itab_zyglt316
EXCEPTIONS
key_not_found = 1
rules_not_found = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE itab_zyglt316 INDEX 1.
MOVE itab_zyglt316-konts TO itab_zycbe033-d_newko.
ENDIF.
CLEAR v_tipo_prazo.
CONCATENATE /pws/zycbt112-codint wa_zycbt113-ftransf
INTO v_tipo_prazo SEPARATED BY space.
CALL FUNCTION '/PWS/ZYGL_READ_ACCOUNT_NUMBER'
EXPORTING
bukrs = itab_zycbt031-bukrs
ktosl = 'FIN'
codaux1 = v_tipo_prazo
TABLES
account = itab_zyglt316
EXCEPTIONS
key_not_found = 1
rules_not_found = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE itab_zyglt316 INDEX 1.
IF itab_zyglt316-konts NE itab_zycbe033-d_newko.
MOVE itab_zyglt316-konts TO itab_zycbe033-c_newko.
ENDIF.
ENDIF.
ELSE.
IF ( /pws/zycbt112-fpagto_c EQ 'P' AND
/pws/zycbt112-tpcomis EQ 'P' ) OR
( /pws/zycbt112-fpagto_c EQ 'D' AND
/pws/zycbt112-tpcomis EQ 'F' ) OR
( /pws/zycbt112-fpagto_c EQ 'L' AND
/pws/zycbt112-tpcomis EQ 'V' ).
v_aux_ktosl = 'PDI'.
v_aux_cod = 'CO'.
ELSE.
v_aux_ktosl = 'PVI'.
v_aux_cod = 'COMIS C'.
ENDIF.
CALL FUNCTION '/PWS/ZYGL_READ_ACCOUNT_NUMBER'
EXPORTING
bukrs = itab_zycbt031-bukrs
ktosl = v_aux_ktosl
codaux1 = v_aux_cod
codaux2 = /pws/zycbt112-codint
TABLES
account = itab_zyglt316
EXCEPTIONS
key_not_found = 1
rules_not_found = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE itab_zyglt316 INDEX 1.
MOVE itab_zyglt316-konts TO itab_zycbe033-d_newko.
ENDIF.
ENDIF.
* << Fim da inclusão
ENDFORM.
FORM seleciona_provisionados.
DATA: v_vlprov LIKE /pws/zycbt154-vlme,
v_vlprovir LIKE /pws/zycbt154-vlme.
PERFORM seleciona_zycbt074.
LOOP AT itab_zycbt134aux.
IF itab_zycbt134aux-mdcorresp EQ 'EO'.
READ TABLE itab_zycbt074
WITH KEY nrseqc = itab_zycbt134aux-nrcorresp
TRANSPORTING tipo_comis.
...
...
OR NOT v_doc_est IS INITIAL.
READ TABLE itab_zycbt032 WITH KEY
tcode = text-087
tabela = '/PWS/ZYCBT031'
cpochv = itab_zycbt134_estorno-nrseq
tpmsg = 'S'.
IF sy-subrc NE 0
AND v_doc_est IS INITIAL.
v_erro_anulacomp = 'X'.
ELSE.
* >> Início da exclusão: FORM FBRA_CLEARING_IF
MESSAGE i077 WITH /pws/zycbt113-belnr_c.
* << Fim da exclusão
* >> Início da inclusão: FORM FBRA_CLEARING_IF
move-corresponding itab_zycbt134_estorno to itab_acerto_s.
* << Fim da inclusão
IF itab_zycbt031_aux-tpparc EQ 'P'.
UPDATE /pws/zycbt113 SET belnr_c = space
WHERE nrseq = itab_zycbt031_aux-nrcorresp
AND tpparc = itab_zycbt031_aux-tpparc
AND nrparc = itab_zycbt031_aux-nrparc.
* >> Início da inclusão: FORM FBRA_CLEARING_IF
itab_acerto_s-belnr = /pws/zycbt113-belnr_c.
* << Fim da inclusão
ELSE.
UPDATE /pws/zycbt113 SET belnr_cl = space
WHERE nrseq = itab_zycbt031_aux-nrcorresp
AND tpparc = itab_zycbt031_aux-tpparc
AND nrparc = itab_zycbt031_aux-nrparc.
* >> Início da inclusão: FORM FBRA_CLEARING_IF
itab_acerto_s-belnr = /pws/zycbt113-belnr_cl.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM FBRA_CLEARING_IF
itab_acerto_s-dtcont = itab_zycbt134_estorno-dtlanc.
itab_acerto_s-texto = text-053.
APPEND itab_acerto_s.
* << Fim da inclusão
ENDIF.
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i127 WITH itab_zycbt034-descricao v_evento.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPT /PWS/SAPMZYCB115
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: PT
Símbolo: 053
Texto: (16 caracteres)
"Estorno Clearing"
Comprimento máximo: 16