前面的部分鏈接為:
BP客戶增強-詳細
BP客戶增強說明
該部分介紹在BP客戶界面保存時增加一個校驗事件 DCHCK
首先我們對於前面的增強做一個限制:
1.BP界面合作商類型字段為10,20,30時,才能維護合作商,99或為空時不允許維護;否則報錯”當前合作商類型不允許維護合作商LIST”
2.BP界面合作商類型有值且不為99或空時,可以維護合作商LIST,合作商類型需要和BP界面的合作商類型一致;否則報錯”存在合作商LIST的合作商類型和BP界面的合作商類型不一致”

1.創建保存前檢查校驗的函數
這時我們需要使用到事件(BUS7)-DCHCK;

在該事件中維護函數:
在函數組ZBP_FG_ENHENCEMENT中創建DCHCK函數(ZBP_BUPA_EVENT_DCHCK):
在BP事件中,可以使用BUS_MESSAGE_STORE函數來把你所想要報錯的消息存儲起來,當保存時,會去檢測,有E類型錯誤時,不准保存。
FUNCTION zbp_bupa_event_dchck. *"---------------------------------------------------------------------- *"*"本地接口: *"---------------------------------------------------------------------- *參考:BUP_BUPA_EVENT_DCHCK 創建 DATA lt_knb1 TYPE TABLE OF knb1. *獲取目前界面數據 cvi_bdt_adapter=>get_current_bp_cc_data( EXPORTING i_table_name = table_name_knb1 IMPORTING e_data_table = lt_knb1[] ). CHECK lt_knb1[] IS NOT INITIAL. READ TABLE lt_knb1 INTO DATA(ls_knb1) INDEX 1.
DATA(lv_corporate_type) = ls_knb1-corporate_type.
"1.BP界面合作商類型字段為10,20,30時,才能維護合作商,99或為空時不允許維護; IF ( lv_corporate_type IS INITIAL OR lv_corporate_type = '99' ) AND ls_knb1-maintain_corpo = abap_on. "調用BUS_MESSAGE_STORE 來寫入報錯信息 CALL FUNCTION 'BUS_MESSAGE_STORE' EXPORTING arbgb = 'ZBP' msgty = 'E' txtnr = 001. ELSE. "2.2.BP界面合作商類型有值且不為99或空時,可以維護合作商LIST,合作商類型需要和BP界面的合作商類型一致 LOOP AT gt_ztbp001_info_buf[] TRANSPORTING NO FIELDS WHERE corporate_type NE lv_corporate_type. "調用BUS_MESSAGE_STORE 來寫入報錯信息 CALL FUNCTION 'BUS_MESSAGE_STORE' EXPORTING arbgb = 'ZBP' msgty = 'E' txtnr = 002. EXIT. ENDLOOP. ENDIF.
ENDFUNCTION. |
2.執行效果
當我們修改LIST內和BP界面合作商不一致時,然后保存數據

BP會報錯:

然后我們修改BP界面合作商類型為99

點擊保存:

更多ABAP/SAP資料可以關注我的公眾號謝謝。
