因为公司上了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、当然还有其他的办法,网上有很多例子,大家可以参考一下
377

被折叠的 条评论
为什么被折叠?



