S4 SD 信贷更新
背景:ECC升级到S4之后,KNKK表被替换成UKMBP_CMS_SGM和 UKMBP_CMS,信贷更新函数CREDITLIMIT_CHANGE也无法使用。
FORM frm_create TABLES pt_create STRUCTURE gw_output.
CONSTANTS: lc_error TYPE c VALUE 'E',
lc_success TYPE c VALUE 'S'.
DATA:lo_facade TYPE REF TO cl_ukm_facade,
lo_partner TYPE REF TO cl_ukm_business_partner,
lo_bupa_factory TYPE REF TO cl_ukm_bupa_factory.
DATA: lo_account TYPE REF TO cl_ukm_account,
ls_bp_credit_sgm TYPE ukm_s_bp_cms_sgm,
ls_ukm_s_bp_cms TYPE ukm_s_bp_cms.
DATA ls_bupa_error TYPE mds_ctrls_error.
DATA lv_credit_sgmnt TYPE ukm_credit_sgmnt .
DATA lo_bupa TYPE REF TO cl_im_mds_bupa_lock .
DATA: lv_upd_umk TYPE cdpos-chngind,
lv_sybrc TYPE sy-subrc,
lv_message TYPE string,
lw_create LIKE gw_output,
lt_ukmt TYPE TABLE OF ukm_ei_bp_cms_sgm,
lt_cms_sgm TYPE TABLE OF ukmbp_cms_sgm,
ls_cms_sgm TYPE ukmbp_cms_sgm,
lt_log TYPE TABLE OF zzift002,
lw_log TYPE zzift002,
lt_return TYPE ukm_t_monitor_return.
IF pt_create[] IS NOT INITIAL.
REFRESH:lt_log.
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_cms_sgm
FROM ukmbp_cms_sgm
FOR ALL ENTRIES IN pt_create
WHERE partner = pt_create-kunnr .
LOOP AT pt_create INTO lw_create.
READ TABLE lt_cms_sgm INTO ls_cms_sgm WITH KEY partner = lw_create-kunnr.
IF sy-subrc = 0.
CONTINUE .
ENDIF.
CLEAR:ls_bupa_error,lt_return[],lv_message .
IF lo_bupa IS INITIAL .
CREATE OBJECT lo_bupa.
ENDIF.
lo_bupa->if_ex_bupa_lock~lock(
EXPORTING
iv_partner = lw_create-kunnr
CHANGING
cs_error = ls_bupa_error ).
IF ls_bupa_error-is_error IS INITIAL .
"set & fetch Parent data
lo_facade = cl_ukm_facade=>create( i_activity = cl_ukm_cnst_eventing=>bp_maintenance ).
lo_bupa_factory = lo_facade->get_bupa_factory( ).
lo_partner = lo_bupa_factory->get_business_partner( lw_create-kunnr ).
ls_ukm_s_bp_cms-check_rule = '01'. "信用检查的规则
ls_ukm_s_bp_cms-limit_rule = 'B2B-EXIST'. "计算得分和信用额度的规则
ls_ukm_s_bp_cms-risk_class = 'Z01'. "风险类别
ls_ukm_s_bp_cms-risk_class_chgdt = sy-datum. "风险类更改日期
ls_ukm_s_bp_cms-rating_chg_date = sy-datum. "风险类更改日期
ls_ukm_s_bp_cms-rating_val_date = '99991231' .
lo_partner->set_bp_cms(
EXPORTING
is_bp_cms = ls_ukm_s_bp_cms
).
"Fetch & update credit segment data
lv_credit_sgmnt = '1010'.
lo_account = lo_bupa_factory->get_credit_account(
i_partner = lw_create-kunnr
i_credit_sgmnt = lv_credit_sgmnt ).
ls_bp_credit_sgm-credit_limit = '0.01' . "金额
ls_bp_credit_sgm-limit_chg_date = sy-datum.
ls_bp_credit_sgm-limit_valid_date = '99991231'. "有效终止日期
lo_account->set_bp_cms_sgm(
EXPORTING
is_bp_cms_sgm = ls_bp_credit_sgm
).
lt_return[] = lo_bupa_factory->save_all(
EXPORTING
i_upd_task = lv_upd_umk ).
LOOP AT lt_return INTO DATA(ls_return)
WHERE MSGTY = 'E' OR MSGTY = 'A'.
lv_message = lv_message && ls_return-message.
ENDLOOP.
IF lv_message IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
lw_create-zcjzt = '创建客户信贷限额成功'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
lv_sybrc = 4.
lw_create-zcjzt = '创建失败'.
lw_log-ifflg = 'E'."
ENDIF .
lo_bupa->if_ex_bupa_lock~unlock(
EXPORTING
iv_partner = lw_create-kunnr
CHANGING
cs_error = ls_bupa_error ).
ELSE.
lw_create-zcjzt = '锁定客户失败'.
lw_log-ifflg = 'E'."
ENDIF .
ENDLOOP.
LOOP AT gt_output INTO gw_output.
READ TABLE pt_create[] INTO lw_create WITH KEY kunnr = gw_output-kunnr.
IF sy-subrc = 0.
gw_output-zcjzt = lw_create-zcjzt.
gw_output-credit_limit = lw_create-credit_limit . "信贷限额
gw_output-risk_class = lw_create-risk_class. "风险类别
ENDIF.
MODIFY gt_output FROM gw_output TRANSPORTING zcjzt credit_limit risk_class.
ENDLOOP.
IF lt_log[] IS NOT INITIAL.
MODIFY zzift002 FROM TABLE lt_log.
ENDIF.
ENDIF.
ENDFORM.
浙公网安备 33010602011771号