Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Liquidação de Contrato
Data/Hora da Publicação: 03/04/2007 00:00:00
Data/Hora Última Alteração: 10/03/2010 14:40:34
Descrição da Nota: LIQ. ACC COM PRÉ - CÁLCULO DE JUROS
Sintoma
Mudança na forma de cálculo de juros e bloqueio de campos em tela.
Solução
O programa foi ajustado conforme aditivo a especificação.
7.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 03390 Data: 03/04/2007 Hora: 14:30:48
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 03390
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00027
Agrupamento : 00160
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
LIQ. ACC COM PRÉ - CÁLCULO DE JUROS
----------------------------------------------------------------------------------------------------
Palavras Chave:
LIQUIDAÇÃO ACC COM PRÉ-PAGAMENTO PT CÁLCULO JUROS
----------------------------------------------------------------------------------------------------
Objetos da nota:
DYNP /PWS/SAPMZYCB014 0200
REPS /PWS/MZYCB014F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/SAPMZYCB014 0200
Atualizar o grupo 1 no screen painter dos campos /PWS/ZYCBE062-TXJFIXA, /PWS/ZYCBE062-TXJVAR,
/PWS/ZYCBE062-TXJTOTAL e /PWS/ZYCBE062-TPTXJUR para ALT.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB014F01
...
ELSEIF sy-tcode = '/PWS/ZYCB014_E' OR v_exibe = 'YES'.
v_nrseq = /pws/zycbe060-nrseq.
SET PARAMETER ID '/PWS/ZYCBP019' FIELD v_nrseq.
CALL TRANSACTION '/PWS/ZYCB001_E' AND SKIP FIRST SCREEN.
ENDIF.
ELSE.
MESSAGE i015 WITH text-001 text-052.
ENDIF.
ENDFORM.
FORM calculos_itab_zycbt062.
* >> Início da exclusão: FORM CALCULOS_ITAB_ZYCBT062
SELECT * FROM /pws/zycbt010 INTO TABLE itab_zycbt010.
v_index = 0.
CLEAR itab_zycbt062.
LOOP AT itab_zycbt062.
v_index = v_index + 1.
IF sy-dynnr = '0100'.
SELECT SINGLE * FROM /pws/zycbt002
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULOS_ITAB_ZYCBT062
TYPES:
BEGIN OF t_s_zycbt010,
tptxjur TYPE /pws/zycbt010-tptxjur,
nrdias TYPE /pws/zycbt010-nrdias,
END OF t_s_zycbt010,
t_t_zycbt010 TYPE SORTED TABLE OF t_s_zycbt010
WITH UNIQUE KEY tptxjur,
BEGIN OF t_s_zycbt001,
nrseqc TYPE /pws/zycbt001-nrseqc,
tpcalcjur TYPE /pws/zycbt001-tpcalcjur,
END OF t_s_zycbt001,
t_t_zycbt001 TYPE SORTED TABLE OF t_s_zycbt001
WITH UNIQUE KEY nrseqc,
BEGIN OF t_s_zycbt002,
nrseqc TYPE /pws/zycbt002-nrseqc,
nrdias TYPE /pws/zycbt002-nrdias,
dtinicio TYPE /pws/zycbt002-dtinicio,
dtfinal TYPE /pws/zycbt002-dtfinal,
txjfixa TYPE /pws/zycbt002-txjfixa,
txjvar TYPE /pws/zycbt002-txjvar,
txjtotal TYPE /pws/zycbt002-txjtotal,
tptxjur TYPE /pws/zycbt002-tptxjur,
END OF t_s_zycbt002,
t_t_zycbt002 TYPE SORTED TABLE OF t_s_zycbt002
WITH UNIQUE KEY nrseqc dtinicio.
CONSTANTS
c_multiplo TYPE /pws/zycbt001-tpcalcjur VALUE space.
DATA:
itab_zycbt001 TYPE t_t_zycbt001,
itab_zycbt002 TYPE t_t_zycbt002,
itab_zycbt010 TYPE t_t_zycbt010,
v_nrdias_desemb TYPE i,
v_nrdias_juros TYPE i,
v_nrdias TYPE i.
FIELD-SYMBOLS:
<fs_zycbt001> LIKE LINE OF itab_zycbt001,
<fs_zycbt002> LIKE LINE OF itab_zycbt002,
<fs_zycbt010> LIKE LINE OF itab_zycbt010,
<fs_zycbt062> LIKE LINE OF itab_zycbt062,
<fs_nrdias> TYPE i.
CHECK sy-dynnr = '0100'.
SELECT tptxjur nrdias FROM /pws/zycbt010 INTO TABLE itab_zycbt010.
SELECT nrseqc tpcalcjur FROM /pws/zycbt001 INTO TABLE itab_zycbt001
FOR ALL ENTRIES IN itab_zycbt062
* << Fim da inclusão
WHERE nrseqc = itab_zycbt062-nrseq_c.
* >> Início da exclusão: FORM CALCULOS_ITAB_ZYCBT062
IF sy-subrc = 0.
MOVE: /pws/zycbt002-txjfixa TO itab_zycbt062-txjfixa,
/pws/zycbt002-txjvar TO itab_zycbt062-txjvar,
/pws/zycbt002-txjtotal TO itab_zycbt062-txjtotal,
/pws/zycbt002-tptxjur TO itab_zycbt062-tptxjur.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULOS_ITAB_ZYCBT062
SELECT nrseqc nrdias dtinicio dtfinal txjfixa txjvar txjtotal tptxjur
FROM /pws/zycbt002 INTO TABLE itab_zycbt002
FOR ALL ENTRIES IN itab_zycbt062
WHERE nrseqc = itab_zycbt062-nrseq_c AND tpparc = 'J'.
LOOP AT itab_zycbt062 ASSIGNING <fs_zycbt062>.
READ TABLE itab_zycbt001 WITH KEY nrseqc = <fs_zycbt062>-nrseq_c
ASSIGNING <fs_zycbt001>.
CHECK <fs_zycbt001> IS ASSIGNED.
v_nrdias_desemb = /pws/zycbe060-dtdesemb - <fs_zycbt062>-dtinicio.
CHECK v_nrdias_desemb > 0.
IF <fs_zycbt001>-tpcalcjur = c_multiplo.
CLEAR v_nrdias_juros.
LOOP AT itab_zycbt002 ASSIGNING <fs_zycbt002>
WHERE nrseqc = <fs_zycbt062>-nrseq_c.
CHECK v_nrdias_juros < v_nrdias_desemb.
v_nrdias_juros = v_nrdias_juros + <fs_zycbt002>-nrdias.
ENDLOOP.
CHECK sy-subrc = 0.
<fs_zycbt062>-txjfixa = <fs_zycbt002>-txjfixa.
<fs_zycbt062>-txjvar = <fs_zycbt002>-txjvar.
<fs_zycbt062>-txjtotal = <fs_zycbt002>-txjtotal.
<fs_zycbt062>-tptxjur = <fs_zycbt002>-tptxjur.
IF v_nrdias_desemb > v_nrdias_juros.
ASSIGN v_nrdias_juros TO <fs_nrdias>.
ELSE.
ASSIGN v_nrdias_desemb TO <fs_nrdias>.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM CALCULOS_ITAB_ZYCBT062
READ TABLE itab_zycbt010
WITH TABLE KEY tptxjur = <fs_zycbt002>-tptxjur
ASSIGNING <fs_zycbt010>.
CHECK sy-subrc = 0.
<fs_zycbt062>-vlmej = <fs_zycbt062>-vlme *
<fs_zycbt062>-txjtotal / 100 / <fs_zycbt010>-nrdias *
<fs_nrdias>.
ELSE.
CLEAR v_nrdias_juros.
LOOP AT itab_zycbt002 ASSIGNING <fs_zycbt002>
WHERE nrseqc = <fs_zycbt062>-nrseq_c.
READ TABLE itab_zycbt010
WITH TABLE KEY tptxjur = <fs_zycbt002>-tptxjur
ASSIGNING <fs_zycbt010>.
CHECK <fs_zycbt010> IS ASSIGNED.
v_nrdias_juros = v_nrdias_juros + <fs_zycbt002>-nrdias.
IF v_nrdias_juros < v_nrdias_desemb.
v_nrdias = <fs_zycbt002>-nrdias.
ELSE.
v_nrdias = /pws/zycbe060-dtdesemb - <fs_zycbt002>-dtinicio.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM CALCULOS_ITAB_ZYCBT062
READ TABLE itab_zycbt010 WITH KEY
tptxjur = itab_zycbt062-tptxjur.
itab_zycbt062-nrdias =
/pws/zycbe060-dtdesemb - itab_zycbt062-dtinicio.
IF /pws/zycbe060-dtdesemb LT itab_zycbt062-dtinicio.
CLEAR itab_zycbt062-nrdias.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULOS_ITAB_ZYCBT062
<fs_zycbt062>-vlmej = <fs_zycbt062>-vlmej + <fs_zycbt062>-vlme *
<fs_zycbt002>-txjtotal / 100 / <fs_zycbt010>-nrdias *
v_nrdias.
UNASSIGN <fs_zycbt010>.
IF v_nrdias_juros > v_nrdias_desemb.
EXIT.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM CALCULOS_ITAB_ZYCBT062
itab_zycbt062-qtddias = itab_zycbt062-nrdias.
itab_zycbt062-txjtotal =
itab_zycbt062-txjfixa + itab_zycbt062-txjvar.
itab_zycbt062-vlmej =
( itab_zycbt062-vlme * ( itab_zycbt062-txjtotal / 100 ) )
/ itab_zycbt010-nrdias * itab_zycbt062-nrdias .
MODIFY itab_zycbt062 INDEX v_index.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULOS_ITAB_ZYCBT062
ENDLOOP.
UNASSIGN <fs_zycbt002>.
ENDIF.
IF v_nrdias_desemb > v_nrdias_juros.
<fs_zycbt062>-nrdias = v_nrdias_juros.
ELSE.
<fs_zycbt062>-nrdias = v_nrdias_desemb.
ENDIF.
<fs_zycbt062>-qtddias = <fs_zycbt062>-nrdias.
UNASSIGN <fs_zycbt001>.
* << Fim da inclusão
ENDLOOP.
ENDFORM.
FORM exibi_juros.
DATA: v_linhas TYPE i.
DESCRIBE TABLE itab_zycbt062 LINES v_linhas.
tc_juros-lines = v_linhas.
LOOP AT tc_juros-cols INTO wa_cols.
wa_cols-screen-input = 0.
MODIFY tc_juros-cols FROM wa_cols.
ENDLOOP.
...