Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Liquidação de Fatura
Data/Hora da Publicação: 27/12/2006 00:00:00
Data/Hora Última Alteração: 22/02/2011 11:56:50
Descrição da Nota: LIQUIDAÇÃO - VALOR JUROS ACE ACC - CHAVES PVE E DSE.
Sintoma
1) Ao criar um contrato com data de 05.10.2006. Efetuar uma vinculação de ACC dia 05.10.2006 (ou
seja, o valor de juros de ACC será igual a 0,00, pois a data do contrato é igual a data de
vinculação), mas ao entrar em liquidação - criar e informar a data de 15.10.2006, o valor dos juros
está sendo calculado corretamente, porém ao invés de lançar o valor dos juros na coluna "Valor juros
ACE" - que seria o correto, está lançando o valor dos juros na coluna "Valor Juros ACC" e dessa
forma, o programa também está fazendo a provisão na conta errada de ACC, quando deveria jogar na
conta de ACE.
2) Foi criada uma vinculação dia 15.10.2006 e uma liquidação no dia 27.10.2006 e foram gerados
corretamente os dois documentos de provisão:7600013783 (ACC) e 7600013784 (ACE). Depois foi criada
uma outra vinculação no dia 20.10.2006, mas ao entrar para criar a liquidação, o programa está
estornando as provisões feitas na liquidação do dia 27.10.2006 e não deveria estornar. Deveria
somente gerar os novos documentos de provisão na liquidação do dia 30.10.2006.
Solução
Ajuste efetuado para lançar separado ACC e ACE na liquidação, quando estiver parametrizado desta
forma. Ida e estorno. Atentar para parametrização das contas difentes de ACC e ACE nas chaves PVE e
DSE.
6.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 02763 Data: 27/12/2006 Hora: 13:32:09
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 02763
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00026
Agrupamento : 00146
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01309 - 00001 - 6.0 - 00023 - ROTINA MENSAL EXPORTAÇÃO CONTABILIZAÇÃO SEPARADA DE ACC E ACE = S
----------------------------------------------------------------------------------------------------
LIQUIDAÇÃO - VALOR JUROS ACE ACC - CHAVES PVE E DSE.
----------------------------------------------------------------------------------------------------
Palavras Chave:
LIQUIDAÇÃO - VALOR JUROS ACE ACC - CHAVES PVE E DSE.
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCB004F02
REPS /PWS/MZYCB004TOP
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB004F02
...
ENDFORM.
FORM calcula_juros_diferenca.
DATA: v_data_de LIKE sy-datum.
DATA: v_dtde LIKE sy-datum,
v_dtate LIKE sy-datum,
v_dt_pror LIKE /pws/zycbt005-dtpror,
v_tipo_per TYPE c,
v_dtliquid LIKE /pws/zycbt001-dtliquid,
v_dtentreg LIKE /pws/zycbt001-dtentr,
v_pror_cmb LIKE /pws/zycbt005-dtpror.
* >> Início da exclusão: FORM CALCULA_JUROS_DIFERENCA
DATA: BEGIN OF itab_periodos_j OCCURS 0.
DATA: dtde LIKE /pws/zycbt002-dtinicio,
dtate LIKE /pws/zycbt002-dtfinal,
nrdiasj LIKE /pws/zycbt002-nrdiasj,
txjur LIKE /pws/zycbt002-txjtotal,
tptxj LIKE /pws/zycbt002-tptxjur,
tpper TYPE c.
DATA: END OF itab_periodos_j.
* << Fim da exclusão
DATA: BEGIN OF itab_zycbt216 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt216.
DATA: END OF itab_zycbt216.
DATA: wa_zycbt002_aux LIKE /pws/zycbt002.
DATA: BEGIN OF itab_zycbt002_aux OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt002.
DATA: END OF itab_zycbt002_aux.
DATA: BEGIN OF itab_zycbt002 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt002.
DATA: END OF itab_zycbt002.
...
...
IF itab_zycbt005_t-dtvincul GT v_dtde AND
itab_zycbt005_t-dtvincul LE v_dtate.
CLEAR itab_periodos_j.
itab_periodos_j-dtde = v_dtde.
itab_periodos_j-dtate = itab_zycbt005_t-dtvincul.
itab_periodos_j-txjur = itab_zycbt002-txjtotal.
itab_periodos_j-tptxj = itab_zycbt002-tptxjur.
itab_periodos_j-tpper = v_tipo_per.
APPEND itab_periodos_j.
v_dtde = itab_zycbt005_t-dtvincul.
* >> Início da inclusão: FORM CALCULA_JUROS_DIFERENCA
v_tipo_per = 'E'.
ELSEIF itab_zycbt005_t-dtvincul EQ v_dtde
OR itab_zycbt005_t-dtvincul LE v_dtate.
* << Fim da inclusão
v_tipo_per = 'E'.
* >> Início da inclusão: FORM CALCULA_JUROS_DIFERENCA
ENDIF.
* << Fim da inclusão
* >> Início da exclusão: FORM CALCULA_JUROS_DIFERENCA
ENDIF.
* << Fim da exclusão
CHECK v_dtate > v_dtde.
IF v_dt_pror IS INITIAL OR
v_tipo_per EQ 'A' OR
...
...
LOOP AT itab_periodos_j.
IF v_escalonado EQ 'E' AND
NOT v_txtot IS INITIAL.
PERFORM processa_calculo_juros USING v_calc_jur
v_txtot
itab_periodos_j-tptxj
itab_periodos_j-dtde
itab_periodos_j-dtate
/pws/zycbt001-waers
itab_periodos_j-tpper
* >> Início da exclusão: FORM CALCULA_JUROS_DIFERENCA
CHANGING itab_zycbt005_t-vljur.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_JUROS_DIFERENCA
CHANGING itab_zycbt005_t-vljur
itab_periodos_j-vlme.
* << Fim da inclusão
ELSE.
PERFORM processa_calculo_juros USING v_calc_jur
itab_periodos_j-txjur
itab_periodos_j-tptxj
itab_periodos_j-dtde
itab_periodos_j-dtate
/pws/zycbt001-waers
itab_periodos_j-tpper
* >> Início da exclusão: FORM CALCULA_JUROS_DIFERENCA
CHANGING itab_zycbt005_t-vljur.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_JUROS_DIFERENCA
CHANGING itab_zycbt005_t-vljur
itab_periodos_j-vlme.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM CALCULA_JUROS_DIFERENCA
MODIFY itab_periodos_j TRANSPORTING vlme
WHERE dtde = itab_periodos_j-dtde
AND dtate = itab_periodos_j-dtate
AND nrdiasj = itab_periodos_j-nrdiasj
AND txjur = itab_periodos_j-txjur
AND tptxj = itab_periodos_j-tptxj
AND tpper = itab_periodos_j-tpper
AND nrseqc = itab_periodos_j-nrseqc
AND tpdesp = itab_periodos_j-tpdesp
AND nrparc = itab_periodos_j-nrparc
AND dtincl = itab_periodos_j-dtincl
AND nrinvoic = itab_periodos_j-nrinvoic
AND nrparcf = itab_periodos_j-nrparcf
AND gsberf = itab_periodos_j-gsberf
AND dtvincul = itab_periodos_j-dtvincul
AND dtvencto = itab_periodos_j-dtvencto.
* << Fim da inclusão
ENDLOOP.
v_juros_dif = v_juros_dif + itab_zycbt005_t-vljur.
ENDFORM.
FORM processa_calculo_juros USING value(p_vlme)
value(p_txj)
value(p_tptxjur)
value(p_dtde)
value(p_dtate)
value(p_moeda)
value(p_tpper)
* >> Início da exclusão: FORM PROCESSA_CALCULO_JUROS
CHANGING p_vljur.
* << Fim da exclusão
* >> Início da inclusão: FORM PROCESSA_CALCULO_JUROS
CHANGING p_vljur
p_vljur2.
* << Fim da inclusão
DATA: v_vljur LIKE /pws/zycbt001-vlme,
v_nrdias TYPE i,
v_nrdiabase TYPE i,
v_evento(5) TYPE c.
DATA: itab_zycbt007 LIKE /pws/zycbt007 OCCURS 0 WITH HEADER LINE.
MOVE-CORRESPONDING /pws/zycbt007 TO itab_zycbt007.
APPEND itab_zycbt007.
v_nrdias = p_dtate - p_dtde.
READ TABLE itab_zycbt010 WITH KEY tptxjur = p_tptxjur.
v_nrdiabase = itab_zycbt010-nrdias.
...
...
tx_juros_nao_encontrada = 7
dias_base_nao_encontrado = 8
dias_periodo_nao_encontrado = 9
me_nao_encontrada = 10
ctg_cambio_nao_encontrada = 11
dtbase_nao_encontrada = 12
OTHERS = 13.
IF sy-subrc <> 0.
ELSE.
ADD v_vljur TO p_vljur.
* >> Início da inclusão: FORM PROCESSA_CALCULO_JUROS
p_vljur2 = v_vljur.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM f_02_provisao_juros_dif.
* >> Início da inclusão: FORM F_02_PROVISAO_JUROS_DIF
LOOP AT itab_periodos_j.
* << Fim da inclusão
CLEAR: itab_zycbe033,
itab_zycbt032,
itab_zycbt034.
REFRESH: itab_zycbe033,
itab_zycbt032,
itab_zycbt034.
itab_zycbe033-cpochv = /pws/zycbt001-nrseqc.
itab_zycbe033-tcode = 'F-02'.
itab_zycbe033-tabela = '/PWS/ZYCBT006'.
PERFORM busca_contas_provisao.
itab_zycbe033-budat = v_dtcalcjur.
itab_zycbe033-bukrs = /pws/zycbt001-bukrs.
itab_zycbe033-waers = /pws/zycbt001-waers.
* >> Início da exclusão: FORM F_02_PROVISAO_JUROS_DIF
itab_zycbe033-wrbtr = v_juros_dif.
* << Fim da exclusão
* >> Início da inclusão: FORM F_02_PROVISAO_JUROS_DIF
itab_zycbe033-wrbtr = itab_periodos_j-vlme.
* << Fim da inclusão
IF wa_zycbt007-fdtdoc = 'L'.
itab_zycbe033-bldat = itab_zycbe033-budat.
ELSE.
itab_zycbe033-bldat = sy-datum.
ENDIF.
itab_zycbe033-brnch = /pws/zycbt001-j_1bbranch.
itab_zycbe033-bktxt = wa_zycbt007-bktxt.
PERFORM seleciona_taxa.
itab_zycbe033-blart = /pws/zycbt011-blart.
itab_zycbe033-d_gsber = /pws/zycbt001-gsber.
...
...
CLEAR /pws/zycbt154.
/pws/zycbt154-tpcontr = /pws/zycbt001-tpcontr.
/pws/zycbt154-bukrs = /pws/zycbt001-bukrs.
/pws/zycbt154-gsber = /pws/zycbt001-gsber.
/pws/zycbt154-waers = /pws/zycbt001-waers.
/pws/zycbt154-d_newko = itab_zycbe033-d_newko.
/pws/zycbt154-c_newko = itab_zycbe033-c_newko.
/pws/zycbt154-nrcorresp = /pws/zycbt001-nrseqc.
/pws/zycbt154-kursf = itab_zycbe033-kursf.
/pws/zycbt154-dtcont = v_dtcalcjur.
* >> Início da exclusão: FORM F_02_PROVISAO_JUROS_DIF
/pws/zycbt154-vlme = v_juros_dif.
* << Fim da exclusão
* >> Início da inclusão: FORM F_02_PROVISAO_JUROS_DIF
/pws/zycbt154-vlme = itab_periodos_j-vlme.
* << Fim da inclusão
/pws/zycbt154-codmodul = 'JU'.
/pws/zycbt154-codmod = 'E'.
/pws/zycbt154-bco = /pws/zycbt001-bconegoc.
/pws/zycbt154-belnr_pr = itab_zycbt032-belnr.
/pws/zycbt154-liquid = 'X'.
INSERT /pws/zycbt154.
ENDIF.
LOOP AT itab_zycbt006.
itab_zycbt006-dtcont_jur = v_dtcalcjur.
itab_zycbt006-belnr_jur = itab_zycbt032-belnr.
...
...
APPEND itab_contabil.
ELSE.
LOOP AT itab_zycbt032.
CLEAR itab_zycbt032.
CONCATENATE text-208 itab_zycbt032-msg INTO itab_erro-msg
SEPARATED BY space.
APPEND itab_erro.
ENDLOOP.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM F_02_PROVISAO_JUROS_DIF
ENDLOOP.
* << Fim da inclusão
CLEAR: itab_zycbe033,
itab_zycbt032,
itab_zycbt034.
REFRESH: itab_zycbe033,
itab_zycbt032,
itab_zycbt034.
ENDFORM.
FORM busca_contas_provisao.
DATA: v_nrdias TYPE i,
v_prazo,
...
...
CLEAR v_codaux1.
IF /pws/zyglt009-provjur_moeda = 'X' AND
/pws/zycbt001-waers = wa_zycbt007-waersa.
CONCATENATE 'JUROS' v_prazo wa_zycbt007-waersa
INTO v_codaux1 SEPARATED BY space.
ELSE.
CONCATENATE 'JUROS' v_prazo INTO v_codaux1 SEPARATED BY space.
ENDIF.
v_codaux2 = /pws/zycbt001-tpcontr.
IF /pws/zyglt009-cont_rot_sep = 'S'.
* >> Início da inclusão: FORM BUSCA_CONTAS_PROVISAO
IF itab_periodos_j-tpper = 'A'.
v_codaux3 = 'ACC'.
ELSEIF itab_periodos_j-tpper = 'E'.
v_codaux3 = 'ACE'.
ENDIF.
ELSE.
* << Fim da inclusão
v_codaux3 = 'ACE'.
ENDIF.
REFRESH itab_contas.
CALL FUNCTION '/PWS/ZYGL_READ_ACCOUNT_NUMBER'
EXPORTING
bukrs = /pws/zycbt001-bukrs
ktosl = 'PVE'
codaux1 = v_codaux1
codaux2 = v_codaux2
codaux3 = v_codaux3
...
...
WHERE kurst = v_kurst
AND fcurr = /pws/zycbt001-waers
AND tcurr = wa_zycbt007-waersb
AND gdatu GE v_dtbudat.
READ TABLE itab_tcurr INDEX 1.
itab_zycbe033-kursf = itab_tcurr-ukurs.
ENDFORM.
FORM estorna_diferenca_juros.
DATA: v_monat LIKE t001b-frpe1,
v_ano LIKE t009b-bdatj.
* >> Início da inclusão: FORM ESTORNA_DIFERENCA_JUROS
CLEAR itab_zycbt154.
REFRESH itab_zycbt154.
SELECT * FROM /pws/zycbt154 INTO TABLE itab_zycbt154
WHERE nrcorresp = /pws/zycbe005-nrseqc
AND tpcontr = /pws/zycbe005-tpcontr
AND dtcont = v_dtpagto
AND codmodul = 'JU'
AND codmod = 'E'
AND liquid = 'X'.
LOOP AT itab_zycbt154.
* << Fim da inclusão
CLEAR: itab_zycbe033,
itab_zycbt032,
* >> Início da exclusão: FORM ESTORNA_DIFERENCA_JUROS
itab_zycbt034,
itab_zycbt006_pj.
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_DIFERENCA_JUROS
itab_zycbt034.
* << Fim da inclusão
REFRESH: itab_zycbe033,
itab_zycbt032,
* >> Início da exclusão: FORM ESTORNA_DIFERENCA_JUROS
itab_zycbt034,
itab_zycbt006_pj.
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_DIFERENCA_JUROS
itab_zycbt034.
* << Fim da inclusão
* >> Início da exclusão: FORM ESTORNA_DIFERENCA_JUROS
SELECT * FROM /pws/zycbt006
INTO TABLE itab_zycbt006_pj
WHERE nrseqc EQ /pws/zycbe005-nrseqc
AND dtvincul EQ /pws/zycbe005-dtvincul
AND dtpagto EQ v_dtpagto
AND belnr_jur NE ' '.
LOOP AT itab_zycbt006_pj WHERE belnr_jur NE ' '.
* << Fim da exclusão
CLEAR v_year.
CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'
EXPORTING
* >> Início da exclusão: FORM ESTORNA_DIFERENCA_JUROS
v_bukrs = itab_zycbt006_pj-bukrs
v_date = itab_zycbt006_pj-dtcont_jur
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_DIFERENCA_JUROS
v_bukrs = itab_zycbt154-bukrs
v_date = itab_zycbt154-dtcont
* << Fim da inclusão
IMPORTING
v_year = v_year
EXCEPTIONS
variante_de_exercicio = 1
data_nao_encontrada = 2
empresa_nao_encontrada = 3
period_in_not_valid = 4
period_not_assigned = 5
version_undefined = 6
OTHERS = 7.
itab_zycbe033-tcode = 'FB08'.
itab_zycbe033-tabela = '/PWS/ZYCBT006'.
itab_zycbe033-cpochv = /pws/zycbe005-nrseqc.
* >> Início da exclusão: FORM ESTORNA_DIFERENCA_JUROS
itab_zycbe033-belnr = itab_zycbt006_pj-belnr_jur.
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_DIFERENCA_JUROS
itab_zycbe033-belnr = itab_zycbt154-belnr_pr.
* << Fim da inclusão
itab_zycbe033-bukrs = /pws/zycbe005-bukrs.
itab_zycbe033-gjahs = v_year.
* >> Início da exclusão: FORM ESTORNA_DIFERENCA_JUROS
itab_zycbe033-budat = itab_zycbt006_pj-dtcont_jur.
itab_zycbe033-bldat = itab_zycbt006_pj-dtcont_jur.
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_DIFERENCA_JUROS
itab_zycbe033-budat = itab_zycbt154-dtcont.
itab_zycbe033-bldat = itab_zycbt154-dtcont.
* << Fim da inclusão
PERFORM determina_periodo USING itab_zycbe033-budat
itab_zycbe033-bukrs
CHANGING v_monat.
PERFORM determina_ano USING itab_zycbe033-budat
itab_zycbe033-bukrs
CHANGING v_ano.
CALL FUNCTION 'FI_PERIOD_CHECK'
EXPORTING
i_bukrs = itab_zycbe033-bukrs
i_gjahr = v_ano
...
...
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE itab_zycbt032 WITH KEY tcode = 'FB08'
tabela = '/PWS/ZYCBT006'
cpochv = /pws/zycbe005-nrseqc
tpmsg = 'S'.
IF sy-subrc EQ 0.
UPDATE /pws/zycbt006 SET belnr_jur = ' '
dtcont_jur = ' '
WHERE nrseqc EQ /pws/zycbe005-nrseqc
* >> Início da exclusão: FORM ESTORNA_DIFERENCA_JUROS
AND belnr_jur EQ itab_zycbt006_pj-belnr_jur.
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_DIFERENCA_JUROS
AND belnr_jur EQ itab_zycbt154-belnr_pr.
* << Fim da inclusão
DELETE FROM /pws/zycbt154
WHERE nrcorresp EQ /pws/zycbe005-nrseqc
AND codmodul EQ 'JU'
AND codmod EQ 'E'
* >> Início da exclusão: FORM ESTORNA_DIFERENCA_JUROS
AND belnr_pr EQ itab_zycbt006_pj-belnr_jur.
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_DIFERENCA_JUROS
AND belnr_pr EQ itab_zycbt154-belnr_pr.
* << Fim da inclusão
ENDIF.
ENDIF.
DELETE itab_zycbt006_pj
* >> Início da exclusão: FORM ESTORNA_DIFERENCA_JUROS
WHERE belnr_jur EQ itab_zycbt006_pj-belnr_jur.
* << Fim da exclusão
* >> Início da inclusão: FORM ESTORNA_DIFERENCA_JUROS
WHERE belnr_jur EQ itab_zycbt154-belnr_pr.
* << Fim da inclusão
ENDLOOP.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB004TOP
...
bukrs LIKE bsas-bukrs,
hkont LIKE bsas-hkont,
gjahr LIKE bsas-gjahr,
belnr LIKE bsas-belnr,
bschl LIKE bsas-bschl,
gsber LIKE bsas-gsber,
wrbtr LIKE bsas-wrbtr,
sgtxt LIKE bsas-sgtxt,
zuonr LIKE bsas-zuonr,
END OF itab_bsas_aux.
* >> Início da inclusão:
DATA: BEGIN OF itab_periodos_j OCCURS 0.
DATA: nrseqc LIKE /pws/zycbt005-nrseqc,
tpdesp LIKE /pws/zycbt005-tpdesp,
nrparc LIKE /pws/zycbt005-nrparc,
dtincl LIKE /pws/zycbt005-dtincl,
nrinvoic LIKE /pws/zycbt005-nrinvoic,
nrparcf LIKE /pws/zycbt005-nrparcf,
gsberf LIKE /pws/zycbt005-gsberf,
dtvincul LIKE /pws/zycbt005-dtvincul,
dtvencto LIKE /pws/zycbt005-dtvencto,
dtde LIKE /pws/zycbt002-dtinicio,
dtate LIKE /pws/zycbt002-dtfinal,
nrdiasj LIKE /pws/zycbt002-nrdiasj,
txjur LIKE /pws/zycbt002-txjtotal,
tptxj LIKE /pws/zycbt002-tptxjur,
tpper TYPE c,
vlme TYPE /pws/zycbt002-vlme.
DATA: END OF itab_periodos_j.
DATA: BEGIN OF itab_zycbt154 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt154.
DATA: END OF itab_zycbt154.
* << Fim da inclusão
TYPE-POOLS: sydes.
DATA: t_sydes TYPE sydes_desc,
wa_types TYPE sydes_typeinfo,
v_len TYPE i.
DATA:
wa_zycbt009 LIKE /pws/zycbt009,
wa_zycbt011 LIKE /pws/zycbt011,
wa_zycbt011_d LIKE /pws/zycbt011,
wa_t001w LIKE t001w.
CONTROLS:
...