Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Capitalização de Juros
Data/Hora da Publicação: 03/02/2006 00:00:00
Data/Hora Última Alteração: 18/02/2011 14:53:46
Descrição da Nota: CAPITALIZAÇÃO DE JUROS - GRAVAÇÃO DO DOCTO CONTÁBIL NA /PWS/ZYCBT002
Sintoma
1) Foi criado um contrato de pré pagamento e para esse contrato já efetuei o pagamento da primeira
parcela de juros corretamente pela rotina de pagamento. Voltei ao contrato e recalculei o valor dos
juros para a segunda parcela.
2) Criei uma capitalização de juros de ACE utilizando a segunda parcela de juros do contrato de pré
pagamento acima. Gravei a capitalização e o programa gravou corretamente a data de pagamento na
tabela 002 para a parcela 002 do contrato de pré pagamento.
3) Entrei em captação - modificar para informar os dados da captação, preenchi todos os dados e
mandei gravar. A contabilização foi feita corretamente, porém o programa não gravou o documento
contábil gerado na captação (BELNR da tabela 001) no Campo BELNR da tabela 002 para a parcela de
juros 002, portanto quando eu entro no contrato de pré pagamento para tentar recalcular a 3ª parcela
de juros, o programa não permite, pois entende que a 2ª parcela ainda não foi paga.
Ao gravar a captação para um contrato de ACE de Capitalização de juros, o programa deverá gravar o
documento gerado (Campo BELNR da Tabela 001) também na tabela /pws/zycbt002 - Campo BELNR para a
parcela de juros utilizada na capitalização.
Solução
Análise, ajustes e testes efetuados para os cenários de: (1) forma de pagamento específica para tipo
de contrato; (2) criação de contrato de pré-pagamento prevendo erros nas contabilizações; (3)
capitalização de parcela de juros do contrato de pré-pagamento.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 00803 Data: 03/02/2006 Hora: 14:11:53
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 00803
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00022
Agrupamento : 00099
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
CAPITALIZAÇÃO DE JUROS - GRAVAÇÃO DO DOCTO CONTÁBIL NA /PWS/ZYCBT002
----------------------------------------------------------------------------------------------------
Palavras Chave:
CAPITALIZAÇÃO JUROS GRAVAÇÃO DOCUMENTO CONTÁBIL /PWS/ZYCBT002
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCB001F01
REPS /PWS/MZYCB001F04
REPS /PWS/MZYCB001I01
REPT /PWS/SAPMZYCB001
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB001F01
...
ENDIF.
ENDIF.
IF /pws/zycbe001-tpcontr(1) EQ 'T'.
/pws/zycbe001-belnr_tr = itab_zycbt032-belnr.
ENDIF.
* >> Início da inclusão: FORM FILL_DATE1_F02
IF /pws/zycbe001-capital EQ 'X' AND
/pws/zycbe001-tpcontr EQ 'E'.
UPDATE /pws/zycbt217 SET nrcontr = /pws/zycbe001-nrcontr
bukrs = /pws/zycbe001-bukrs
tpcontr = /pws/zycbe001-tpcontr
vlme = /pws/zycbe001-vlme
waers = /pws/zycbe001-waers
dtcapitalizacao = /pws/zycbe001-dtdesem
dtent = /pws/zycbe001-dtentr
dtliquid = /pws/zycbe001-dtliquid
nrca = /pws/zycbe001-nrca
WHERE nrseq = /pws/zycbe001-nrseqc.
UPDATE /pws/zycbt218 SET belnr = itab_zycbt032-belnr
WHERE nrseq = /pws/zycbe001-nrseqc.
SELECT * FROM /pws/zycbt218
INTO TABLE itab_zycbt218
WHERE nrseq = /pws/zycbe001-nrseqc.
IF NOT itab_zycbt218[] IS INITIAL.
SELECT * FROM /pws/zycbt002
INTO TABLE itab_zycbt002_cap
FOR ALL ENTRIES IN itab_zycbt218
WHERE nrseqc = itab_zycbt218-nrseqc
AND nrparc = itab_zycbt218-nrparc
AND tpparc = itab_zycbt218-tpparc.
IF NOT itab_zycbt002_cap[] IS INITIAL.
LOOP AT itab_zycbt002_cap.
itab_zycbt002_cap-belnr = itab_zycbt032-belnr.
MODIFY itab_zycbt002_cap.
ENDLOOP.
MODIFY /pws/zycbt002 FROM TABLE itab_zycbt002_cap.
ENDIF.
SELECT * FROM /pws/zycbt004
INTO TABLE itab_zycbt004_cap
FOR ALL ENTRIES IN itab_zycbt218
WHERE nrseqc = itab_zycbt218-nrseqc
AND tpdesp = 'J'
AND nrparc = itab_zycbt218-nrparc.
IF NOT itab_zycbt004_cap[] IS INITIAL.
LOOP AT itab_zycbt004_cap.
itab_zycbt004_cap-belnr = itab_zycbt032-belnr.
MODIFY itab_zycbt004_cap.
ENDLOOP.
MODIFY /pws/zycbt004 FROM TABLE itab_zycbt004_cap.
ENDIF.
ENDIF.
ENDIF.
* << Fim da inclusão
IF /pws/zycbe001-tpcontr(1) EQ 'C' OR
/pws/zycbe001-tpcontr(1) EQ 'E'.
SELECT * UP TO 1 ROWS
FROM /pws/zycbt005
WHERE nrseqc EQ /pws/zycbe001-nrseqc.
...
...
PERFORM seleciona_zycbt002.
LOOP AT itab_zycbt002p_ant.
READ TABLE itab_zycbt002p WITH KEY
belnr = itab_zycbt002p_ant-belnr.
IF sy-subrc = 0.
* >> Início da exclusão: FORM SAVE_ZYCBT001_PRE
IF itab_zycbt002p_ant-vlme NE itab_zycbt002p-vlme.
* << Fim da exclusão
* >> Início da inclusão: FORM SAVE_ZYCBT001_PRE
IF itab_zycbt002p_ant-vlme NE itab_zycbt002p-vlme
or itab_zycbt002p_ant-belnr is initial.
* << Fim da inclusão
itab_zycbt002p-v_flag = 'A'.
v_estorna = 'S'.
ELSE.
itab_zycbt002p-v_flag = 'O'.
ENDIF.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB001F04
...
ENDFORM.
FORM abre_parcelas_princ USING p_belnr.
v_belnr_pt = p_belnr.
CLEAR itab_contabil.
REFRESH itab_contabil.
* >> Início da inclusão: FORM ABRE_PARCELAS_PRINC
CLEAR v_erro_bi.
* << Fim da inclusão
LOOP AT itab_zycbt002p.
* >> Início da inclusão: FORM ABRE_PARCELAS_PRINC
CHECK v_erro_bi IS INITIAL.
* << Fim da inclusão
PERFORM fill_date_1_f30.
...
...
tpmsg = 'E'.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
MESSAGE i300 WITH itab_zycbt002p-nrseqc.
* >> Início da inclusão: FORM FILL_DATE_1_F30
v_erro_bi = 'X'.
* << Fim da inclusão
ENDIF.
ELSE.
LOOP AT itab_zycbt032 WHERE tcode = 'F-30' AND
tabela = '/PWS/ZYCBT002' AND
cpochv = /pws/zycbe001-nrseqc AND
tpmsg = 'E'.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
MESSAGE i300 WITH itab_zycbt002p-nrseqc.
* >> Início da inclusão: FORM FILL_DATE_1_F30
v_erro_bi = 'X'.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM FILL_DATE_1_F30
ELSE.
v_erro_bi = 'X'.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM altera_cab_pt.
DATA: v_prazo(4),
v_gjahr LIKE bsid-gjahr,
...
...
CLEAR v_valor.
PERFORM clear_date_batch.
PERFORM get_parameters_001.
FREE itab_partidas.
PERFORM fill_date_f30_pt.
* >> Início da inclusão: FORM ALTERA_PARC_PT
CLEAR: v_erro_bi, v_nrparc.
* << Fim da inclusão
LOOP AT itab_zycbt002p WHERE v_flag = 'A'.
* >> Início da inclusão: FORM ALTERA_PARC_PT
IF v_nrparc IS INITIAL.
v_nrparc = itab_zycbt002p-nrparc.
ENDIF.
* << Fim da inclusão
READ TABLE itab_zycbt002p_ant WITH KEY
belnr = itab_zycbt002p-belnr.
* >> Início da inclusão: FORM ALTERA_PARC_PT
IF sy-subrc NE 0 OR itab_zycbt002p-belnr IS INITIAL.
LOOP AT itab_zycbt002p_ant WHERE nrparc < itab_zycbt002p-nrparc.
ENDLOOP.
ENDIF.
* << Fim da inclusão
v_valor = v_valor + itab_zycbt002p_ant-vlme.
itab_partidas-tcode = 'F-30'.
itab_partidas-tabela = '/PWS/ZYCBT002'.
itab_partidas-cpochv = itab_zycbe033-cpochv.
* >> Início da exclusão: FORM ALTERA_PARC_PT
IF itab_zycbt002p-belnr2 IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM ALTERA_PARC_PT
IF NOT itab_zycbt002p-belnr2 IS INITIAL.
itab_partidas-belnr = itab_zycbt002p-belnr2.
ELSEIF NOT itab_zycbt002p-belnr IS INITIAL.
* << Fim da inclusão
itab_partidas-belnr = itab_zycbt002p-belnr.
* >> Início da inclusão: FORM ALTERA_PARC_PT
ELSEIF NOT itab_zycbt002p_ant-belnr2 IS INITIAL.
itab_partidas-belnr = itab_zycbt002p_ant-belnr2.
ELSEIF NOT itab_zycbt002p_ant-belnr IS INITIAL.
itab_partidas-belnr = itab_zycbt002p_ant-belnr.
ELSEIF NOT /pws/zycbe001-belnr IS INITIAL.
itab_partidas-belnr = /pws/zycbe001-belnr.
ENDIF.
IF v_nrparc = '00001' AND itab_zycbt002p-belnr IS INITIAL.
IF v_nrdias <= wa_zyglt009-nrdias_cp.
v_prazo = 'S'.
* << Fim da inclusão
ELSE.
* >> Início da exclusão: FORM ALTERA_PARC_PT
itab_partidas-belnr = itab_zycbt002p-belnr2.
* << Fim da exclusão
* >> Início da inclusão: FORM ALTERA_PARC_PT
v_prazo = 'L'.
* << Fim da inclusão
ENDIF.
CONCATENATE /pws/zycbe001-tpcontr
* >> Início da inclusão: FORM ALTERA_PARC_PT
v_prazo INTO v_prazo
SEPARATED BY space.
ELSE.
CONCATENATE /pws/zycbe001-tpcontr
* << Fim da inclusão
itab_zycbt002p_ant-przcontr INTO v_prazo
SEPARATED BY space.
* >> Início da inclusão: FORM ALTERA_PARC_PT
ENDIF.
* << Fim da inclusão
CALL FUNCTION '/PWS/ZYGL_READ_ACCOUNT_NUMBER'
EXPORTING
bukrs = /pws/zycbe001-bukrs
ktosl = 'CPT'
codaux1 = v_prazo
...
...
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-30'
tabela = '/PWS/ZYCBT002'
cpochv = itab_zycbe033-cpochv
tpmsg = 'S'.
IF sy-subrc EQ 0.
* >> Início da inclusão: FORM ALTERA_PARC_PT
itab_zycbt002p-belnr = itab_zycbt032-belnr.
CLEAR itab_zycbt002p-belnr2.
itab_zycbt002p-slvinc = itab_zycbt002p-vlme.
MOVE: itab_zycbt032-belnr TO itab_contabil-belnr,
itab_zycbt002p-nrparc TO itab_contabil-nrparc,
itab_zycbt002p-vlme TO itab_contabil-vlme.
APPEND itab_contabil.
IF v_fechado = 'X' AND v_answer = 'J'.
itab_zycbt002p-dtvincul = sy-datum.
IF itab_zycbt002p-dtcont IS INITIAL.
itab_zycbt002p-dtcont = sy-datum.
ENDIF.
ENDIF.
itab_zycbt002p-v_flag = 'O'.
MODIFY itab_zycbt002p
TRANSPORTING slvinc belnr belnr2 dtvincul v_flag
WHERE nrseqc = itab_zycbt002p-nrseqc
AND nrparc = v_nrparc
AND tpparc = itab_zycbt002p-tpparc.
* << Fim da inclusão
PERFORM abre_parcelas_princ_alt USING itab_zycbt032-belnr.
ELSE.
LOOP AT itab_zycbt032 WHERE tcode = 'F-30' AND
tabela = '/PWS/ZYCBT002' AND
cpochv = /pws/zycbe001-nrseqc AND
...
...
ENDFORM.
FORM abre_parcelas_princ_alt USING p_belnr.
v_belnr_pt = p_belnr.
LOOP AT itab_zycbt002p WHERE v_flag = 'A'
OR v_flag = 'I'.
* >> Início da inclusão: FORM ABRE_PARCELAS_PRINC_ALT
CHECK v_erro_bi IS INITIAL.
* << Fim da inclusão
PERFORM fill_date_1_f30.
ENDLOOP.
ENDFORM.
FORM verifica_estrategia_liberacao.
DATA: v_frgzu LIKE /pws/zycbt031-frgzu,
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB001I01
...
DELETE itab_zycbt002p.
ENDIF.
ENDLOOP.
ENDMODULE.
MODULE juros_dp INPUT.
* >> Início da inclusão: MODULE JUROS_DP
IF NOT /pws/zycbe001-ffrcalc IS INITIAL AND
( v_status_s = '1' OR sy-tcode = '/PWS/ZYCB001_C' ) AND
( ( ( /pws/zycbe001-tpcontr(1) EQ 'P' OR
/pws/zycbe001-tpcontr(1) EQ 'S' ) AND
/pws/zycbe001-ffrcalc NE 'L' AND
/pws/zycbe001-ffrcalc NE 'C' ) OR
( /pws/zycbe001-tpcontr(1) NE 'P' AND
/pws/zycbe001-tpcontr(1) NE 'S' AND
/pws/zycbe001-ffrcalc NE 'S' ) ).
MESSAGE e061 WITH text-450 text-060 '.'.
ENDIF.
* << Fim da inclusão
CHECK /pws/zycbe001-tpcontr(1) EQ 'D'.
CHECK NOT /pws/zycbe001-ffrcalc CA 'SV'.
CLEAR: itab_zycbt002.
REFRESH: itab_zycbt002.
ENDMODULE.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPT /PWS/SAPMZYCB001
Texto INSERIDO:
Chave: 450
Comprimento: 48
Texto: Forma de Cálculo não permitida para este tipo de
Texto: Forma de Cálculo não permitida para este tipo de