分类:
2011-03-21 13:27:36
*&---------------------------------------------------------------------*
*& Form FRM_GET_CASHFLOW
*&---------------------------------------------------------------------*
* text:抓取贷款合同的现金流
* 贷款合同计划还款明细
*----------------------------------------------------------------------*
FORM frm_get_cashflow .
DATA:lt_vzzbepp LIKE gt_vzzbepp,
lt_vzzkopo LIKE gt_vzzkopo,
lwa_loan LIKE LINE OF gt_loan,
lwa_tzpa LIKE LINE OF gt_tzpa,
lwa_tzpab LIKE LINE OF gt_tzpab,
lwa_vzzkoko LIKE LINE OF gt_vzzkoko,
lwa_vzzkopo LIKE LINE OF gt_vzzkopo.
DATA:lt_vvzzkopo TYPE STANDARD TABLE OF vvzzkopo.
DATA:lv_disb_amt TYPE rloam-bavwr.
CLEAR:gt_vzzbepp.
SORT:gt_vzzkoko BY bukrs sanlf rkey1,
gt_tzpa BY gsart,
gt_tzpab BY bukrs gsart.
LOOP AT gt_loan INTO lwa_loan.
CLEAR:lt_vzzkopo,lt_vvzzkopo,
lt_vzzbepp,lv_disb_amt.
lv_disb_amt = lwa_loan-bzusage.
READ TABLE gt_vzzkoko INTO lwa_vzzkoko
WITH KEY bukrs = lwa_loan-bukrs
sanlf = lwa_loan-sanlf
rkey1 = lwa_loan-ranl
BINARY SEARCH.
IF sy-subrc = 0.
LOOP AT gt_vzzkopo INTO lwa_vzzkopo
WHERE bukrs = lwa_vzzkoko-bukrs
AND sanlf = lwa_vzzkoko-sanlf
AND rkey1 = lwa_vzzkoko-rkey1
AND dguel_kk = lwa_vzzkoko-dguel_kk
AND nlfd_ang = lwa_vzzkoko-nlfd_ang.
APPEND lwa_vzzkopo TO lt_vzzkopo.
ENDLOOP.
CALL FUNCTION 'VZZKOPO_TO_VVZZKOPO'
TABLES
ivzzkopo = lt_vzzkopo
evvzzkopo = lt_vvzzkopo.
READ TABLE gt_tzpa INTO lwa_tzpa
WITH KEY gsart = lwa_loan-gsart
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE gt_tzpab INTO lwa_tzpab
WITH KEY bukrs = lwa_loan-bukrs
gsart = lwa_loan-gsart
BINARY SEARCH.
IF sy-subrc = 0.
* 取已发放贷款的支出(本金,标识='I')
CALL FUNCTION 'LOAN_FLOWS_SUPPLY'
EXPORTING
i_bukrs = lwa_loan-bukrs
i_ranl = lwa_loan-ranl
no_storno = 'X'
TABLES
o_vzzbepp = lt_vzzbepp
EXCEPTIONS
ranl_not_found = 1
i_dvalut_until_too_early = 2
OTHERS = 3.
* 取未发放贷款的模拟支出(本金,标识='S')
* CALL FUNCTION 'DISBURSEMENT_SIMULATE'
* EXPORTING
* i_tzpa = lwa_tzpa
* i_tzpab = lwa_tzpab
* i_datefrom = lwa_vzzkoko-dguel_kk
* i_bdisburse = lv_disb_amt
* i_currency = lwa_loan-santwhr
* i_bukrs = lwa_loan-bukrs
* i_gsart = lwa_loan-gsart
* TABLES
* e_bepp = lt_vzzbepp
* EXCEPTIONS
* sbewart_1_2_not_found = 1
* sbewziti_not_found = 2
* OTHERS = 3.
IF sy-subrc = 0.
* 取现金流(计划、本金)
CALL FUNCTION 'CASH_FLOW_CONSTRUCT_LOAN'
EXPORTING
i_koko = lwa_vzzkoko
i_saktpas = ' '
i_ssolist = lwa_loan-ssolist
i_vdarl = lwa_loan
TABLES
i_bepp = lt_vzzbepp
i_kopo = lt_vvzzkopo
EXCEPTIONS
keine_tilgungskonditionen = 01
laufzeitende_fehlt = 02
laufzeitende_nicht_ermittelbar = 03
laufzeit_oder_rate_fehlt = 04
negative_tilgung_aufgetreten = 05.
IF sy-subrc = 0.
APPEND LINES OF lt_vzzbepp TO gt_vzzbepp.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " FRM_GET_CASHFLOW