因為公司上了HR模組,很多敏感的表不希望營運的顧問能看到,因此希望對TCODE:SE16進行許可權控制,本來SE16可以對許可權組進行許可權控制,但是目前希望能控制到具體的表名,具體實現方法有這麼幾種:
1、COPY SE16出來產生一個ZSE16,加上許可權檢查,標準的權限物件:S_DEVELOP,把SE16許可權去掉,給ZSE16的許可權
2、增強SE16,目前R3 4.6隻有一個BADI可以做增強:WB_MODASS ,代碼如下:這個badi有個弊端,就是維護了表維護的不會跳到這個BADI裡面。
data:ls_t000 type t000.
data:l_text type char30.
select single * into ls_t000 from t000 where mandt = sy-mandt.
if ls_t000-cccategory = 'P'. "生產系統才限制
if sy-tcode = 'SE16' .
authority-check object 'ZTABLE' id 'OBJNAME' field object_name.
if sy-subrc = 0 or sy-subrc = 12. "沒有維護權限物件也要報錯
concatenate '您沒有許可權使用表' object_name into l_text.
message l_text type 'S' display like 'E'.
leave to transaction 'SE16'.
endif.
endif.
endif.
如果是ECC的,還有一個BADI:VIM_AE_BADI,個人感覺這個BADI還要好,所有表都能跳進去,代碼如下:
DATA:L_TABNAME TYPE CHAR30.
GET PARAMETER ID 'DTB' FIELD L_TABNAME.
IF L_TABNAME = '表名' AND SY-TCODE = 'SE16'.
MESSAGE '沒有許可權' TYPE 'E' .
ENDIF.
3、當然還有其他的辦法,網上有很多例子,大家可以參考一下