METHOD _process_business_logic.
DATA lv_partner TYPE but000-partner.
DATA lv_message TYPE string.
DATA:lv_credit_limit1 TYPE char18.
"信用相关信息
DATA:
io_facade TYPE REF TO cl_ukm_facade,
io_bupa_factory TYPE REF TO cl_ukm_bupa_factory,
io_partner TYPE REF TO cl_ukm_business_partner,
io_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,
lv_credit_sgmnt TYPE ukm_credit_sgmnt,
lt_return TYPE ukm_t_monitor_return,
ls_return TYPE ukm_s_monitor_return,
io_calculator TYPE REF TO if_ukm_calculator.
"判断S4中客户是否存在
lv_partner = is_input-data-kunnr.
lv_partner = |{ lv_partner ALPHA = IN }|.
SELECT COUNT(*)
FROM kna1
WHERE kunnr = @lv_partner.
IF sy-subrc NE 0.
es_output-status = 'E'.
*该客户不存在
* MESSAGE s037(zsd200) INTO es_output-message.
RAISE EXCEPTION TYPE zcx_if_exception MESSAGE s037(zsd200). "该客户不存在
ENDIF.
"信用额度处理
lv_credit_limit1 = is_input-data-credit_limit.
IF lv_credit_limit1 CS ','.
REPLACE ALL OCCURRENCES OF ',' IN lv_credit_limit1 WITH space.
CONDENSE lv_credit_limit1 NO-GAPS.
ENDIF.
*客户创建成功后维护信用段数据
io_facade = cl_ukm_facade=>create( i_activity = cl_ukm_cnst_eventing=>bp_maintenance ).
io_calculator = io_facade->get_calculator( ).
io_bupa_factory = io_facade->get_bupa_factory( ).
lv_credit_sgmnt = 'SGEU'. "信用段 默认值
io_partner = io_bupa_factory->get_business_partner( lv_partner ).
CALL METHOD io_bupa_factory->get_credit_account
EXPORTING
i_partner = lv_partner
i_credit_sgmnt = lv_credit_sgmnt
RECEIVING
ro_credit_account = io_account.
io_account->get_bp_cms_sgm( IMPORTING es_bp_cms_sgm = ls_bp_credit_sgm ).
ls_bp_credit_sgm-credit_limit = lv_credit_limit1."信用额度
ls_bp_credit_sgm-limit_valid_date = is_input-data-limit_valid_date.
io_account->set_bp_cms_sgm( EXPORTING is_bp_cms_sgm = ls_bp_credit_sgm ).
io_bupa_factory->save_all( EXPORTING i_upd_task = abap_false
RECEIVING et_return = lt_return ).
LOOP AT lt_return INTO ls_return WHERE msgty = 'E' OR msgty = 'A'.
CONCATENATE lv_message ls_return-message INTO lv_message SEPARATED BY space.
ENDLOOP.
IF lv_message IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
es_output-status = 'S'.
*客户信用额度更新成功
MESSAGE s038(zsd200) INTO es_output-message.
ELSE.
es_output-status = 'E'.
* MESSAGE e020(ztrd_sd01) INTO es_output-message.
RAISE EXCEPTION TYPE zcx_if_exception MESSAGE e020(ztrd_sd01) WITH is_input-data-kunnr. "客户&1临时信用额度更新失败!
* RAISE EXCEPTION TYPE zcx_if_exception MESSAGE e067(zbc001). "执行失败
ENDIF.
ENDMETHOD.