2020.03.29 【ABAP隨筆】- BUPT-BP客戶界面保存時增加校驗事件(DCHCK)


前面的部分鏈接為:

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_knb1INDEX 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資料可以關注我的公眾號謝謝。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM