在寫 ABAP 權限卡控時,有個小眉角.容易被忽略.
就是USER權限檢查的Function
( 大部分ABAPer 相同功能的 function.會直接複製 )
容易遺忘權限的確認,與畫面參數的輸入有關聯.
權限確認的 function 需區分.否則 select-options 選擇區間的模式.容易lose.
如下所示 : 單一輸入參數的權限確認 與 資料範圍輸入的權限確認
1.當畫面的 參數 輸入是 Parameters
AUTHORITY-CHECK OBJECT F_BKPF_BUK
ID BUKRS FIELD s_bukrs
ID ACTVT FIELD 03.
IF sy-subrc <> 0.
MESSAGE I000 WITH 您沒有權限在公司代碼 : s_bukrs.
STOP.
ENDIF.
2. 當畫面的 參數 輸入 是 SELECT-OPTIONS
TYPES:
BEGIN OF s_comp,
bukrs TYPE t001-bukrs,
END OF s_comp.
data :
itab_comp type s_comp occurs 0 with header line. "
SELECT BUKRS FROM T001 INTO CORRESPONDING FIELDS OF TABLE itab_comp WHERE BUKRS IN s_bukrs.
loop at itab_comp.
AUTHORITY-CHECK OBJECT F_BKPF_BUK
ID BUKRS FIELD itab_comp-bukrs
ID ACTVT FIELD 03.
IF sy-subrc <> 0.
MESSAGE I000 WITH 您沒有權限在公司代碼 : itab_comp-bukrs.
STOP.
ENDIF.
ENDLOOP.