ITPub博客

首页 > 数字化转型 > ERP > sap 权限

sap 权限

ERP 作者:liuhaimiao 时间:2014-09-01 19:51:19 0 删除 编辑

用SU01新建一个ID时,默认的权限是空白,即这个新建的ID不能做任何事情,不能使用任何事务代码。这样只需要为相应的ID赋上相应的TCODE,即可实现“某人能干某事”了,其补集,则是“某人不能干的某些事”。
  但是我们不能直接在SU01里面给某个ID赋上TCODE,要通过ROLE中转一下。即:一堆TCODE组成了一个ROLE,然后把这个ROLE分给某个ID,然后这个ID就得到一堆TCODE了。
  上面这些,仅仅是SAP权限控制的初级概念,要理解SAP权限控制的全部,必须还要明白下面的概念。
  1、角色(ROLE)、复合角色
  上面讲了,角色,即ROLE,是一堆TCODE的集合,当然还包含有TCODE必备的“权限对象”、“权限字段”、“允许的操作”及“允许的值”等。我们使用PFCG来维护角色。
  一个复合角色可以包含多个单个的角色。
  具体请看下面的概念。
  2、权限对象(Authorization Object)、权限字段(Authorization Field)、允许的操作(Activity)、允许的值(Field Value)
  上文粗略说了构成ROLE的是若干TCODE。其实,在ROLE和TCODE之间,还有一个中间概念“权限对象”:
  角色包含了若干权限对象,在透明表AGR_1250中有存储二者之间的关系;
  权限对象包含了若干权限字段、允许的操作和允许的值,在透明表AGR_1251中体现了ROLE/Object/Field/Value之间的关系;
有一个特殊的权限对象用来包含了若干事务码。这个权限对象叫“S_TCODE”,该权限对象的权限字段叫“TCD”,该字段允许的值(Field Value)存放的就是事务代码;
  有一种特殊的权限字段用来表示可以针对该权限对象做哪些操作,是允许创建、修改、显示、删除或者其他呢。该权限字段叫“ACTVT”,该字段允许的值(Field Value)存放的就是允许操作的代码,01代表创建、02代表修改、03代表显示等;
  SAP的权限控制是控制到字段级的,换句话说,其权限控制机制可以检查你是否有权限维护某张透明表的某一个字段。
  SAP系统自带了若干权限对象、默认控制了若干权限字段(对应到透明表的某些字段)。可以用事务码SU20来查看系统有哪些权限字段,用SU21来查看系统有哪些默认的权限对象。
  于是我们知道了事务代码与权限对象的区别。从权限控制的范畴来看,事务代码属于一种特殊的权限对象;一个事务代码在执行过程中,为了判断某个ID是否有权限执行此事务代码,还可能检查其他若干普通的权限对象。使用SU22来查看某个事务代码包含了哪些权限对象。在透明表USOBX中,存放了事务码与权限对象的对应关系。
3、自定义权限对象
  上文所说的系统自带权限对象与权限字段仅能满足有限的需要,其权限审核的逻辑也是系统硬编码了的,我们能做的只是是否启用某项权限对象的检查(使用SU22)。如果需要自定义,通过SU20、SU21定义即可。

 authority-check后的SY-SUBRC返回值的不同也代表着不同的意思,这里稍微归总一下:

0

权限check成功

4

用户无这样的权限

8

在写ABAP authority-check时,指定太多的ID(最多只能有10个)

12

用户信息中不存在这样的authority object

16

用户信息中不存在这样的profile

24

指定的fild名字与authority-object中ID需要的field不匹配

28

用户信息不正确

32

用户信息不正确

36

用户信息不正确

1.su20  创建权限对象字段  例子: ZPOWERFLD1

    创建权限对象字段(存储在AUTHX表中),指定表中的数据元素。

2.su21  创建权限对象类和权限对象  例子:对象类:选择了默认的WG零售  对象:ZPOWER1

    创建权限对象类别(存储在TOBCT表中)
    点击对象类别创建权限对象(存储在TOBJ表中),生成SAP_ALL,创建的时候需要填写权限对象字段,还可以加上ACTVT,ACTVT中有很多的值,如02修改,03一般为显示权限

需要马上生效,点击左上角SAP_ALL

3.su01 生成参数文件  例子:ZAUTOPROF

  环境-维护参数文件  输入参数文件名,点击创建参数文件的工作区-进入后新建-进入后输入权限对象和权限(自己起名字,例:ZAUTHO),双击ZAUTHO,可对权限对象下的权限字段的值进行设置(程序中输入的值要在这个值域),注意激活

4.pfcg为角色分配权限 例子:ZROLEA

   新建权限角色,第二栏为菜单,可以添加事务码(可以选择1.添加标准 or 2.报表,本例子选2),第三栏为权限,输入刚建立的参数文件,点击更改授权数据,也可以看到设置的值,最后点击生成(即:皮球),第4栏为用户,输入想要设置权限的用户,指定有效期。

5.su01 添加参数文件和角色给用户

  参数标签输入参数文件,角色标签输入刚建的角色。

6.程序中书写  例子:    Z_AUTHORITY_TEST

  在程序中加上类似代码:

REPORT  Z_AUTHORITY_TEST.

DATA: L_STR(30) TYPE C.

SELECTION-SCREEN BEGIN OF BLOCK B3 .
SELECTION-SCREEN COMMENT 1(10) TEXT-003.
PARAMETERS:P_CARRID LIKE SPFLI-CARRID.
SELECTION-SCREEN END OF BLOCK B3.
AT SELECTION-SCREEN.
"su21 新建WG对象类下的ZPOWER1授权对象 ,将su20创建的ZPOWERFLD1给授权对象

AUTHORITY-CHECK OBJECT 'ZPOWER1'             

"su20 ZPOWERFLD1 授权对象字段,对应的是SPFLI-SCARR

ID 'ZPOWERFLD1' FIELD P_CARRID . 
  IF SY-SUBRC <> 0.
    CONCATENATE P_CARRID '您没有权限!' INTO L_STR.
    MESSAGE L_STR TYPE 'E'.
    EXIT.
  ENDIF.

7.su24 查找一个事务的授权对象

   在SU24中为事务码添加权限对象,一般在se93中添加的那一个权限对象会在你点击事务码之后自动出现

   若是事务码有多个权限控制对象,需要自己手动添加另外的权限对象。

   我自己的代码se93中没有指定权限对象,因为我没有对事务码进行权限限制,只是对输入的值进行了权限判断。

 

你妹啊,坑爹,一定要把SAP_ALL的权限给干掉啊!!!不然所有的都通过

http://scnblogs.techweb.com.cn/tcsapbw/archives/951.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/223653/viewspace-1261636/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 自定义权限对象
请登录后发表评论 登录
全部评论
sap技术顾问

注册时间:2014-07-29

  • 博文量
    933
  • 访问量
    862033