http://blog.sina.com.cn/s/blog_a87b19300102whnz.html
http://www.cnblogs.com/mingdashu/p/authority-check.html
学习总结,分享给大家,,,(有图有真像)
我在ECC里创建了一张表,随意插入了5条数据
创建权限对象,使分配这个权限的用户只能操作部门编号(edept)为 ‘10’ 的数据。
1. SU20,创建权限字段
2. SU21,创建权限对象
1.首先创建对象类,输入对象类名称(ZEM1)、文本(FOR TEST),点击“保存”
2.找到之前创建的对象类,可以鼠标右键创建权限对象
3. SU02,创建参数文件,输入相关信息 激活
对象输入:ZEMPOBJ00
权限输入:ZDEPT,并双击它新建一个权限
具体的权限值(点击“维护值”)
激活!
该授权对象 包含两个字段。可以在 第一个字段 EMPDEPT 中输入一 般值 ‘10’,第二个字段 ACTVT 中,在创建(01)、更改(02)和显示(03)之间进行选择,也就是
说,分配这个参数文件的用户,只能对 ‘10’ 部门的数据进行01、02、03操作。
也可以设置为“*”这样任何操作都可以通过。
到此,su01,进入‘参数文件’选项卡,添加参数文件:ZEMPRF00,保存后权限即可生效,对用户分配权限还可以通过创建role的方式,以下。
PS:有两种方式,创建role分配给用户,或者直接将参数文件分配给用户,role是从业务层面的维度来管理权限,但实质上的功能还是由profile 来完成的。 原来sap的权限是没有role这个概念的。全部是由profile/object 的方式来实现的,但这样的方式要求对权限底层的具体细节非常了解才行,严重影响的工作效率,而且不利于只懂业务的人进行权限管理和设计。 所以sap后来引入了role这样一个概念,试图通过自顶向下的方式让用户来管理权限。通过tcode pfcg 可以维护role。
4.创建role将权限分配给用户
1.PFCG 创建角色:ZEMPR00,输入描述文本,点击创建,点击“权限”选项卡,参数文件名称:点击(系统建议的),点‘更改授权数据’->‘手动,
输入授权对象:ZEMPOBJ00,回车,保存
然后指定权限的值
2.进入‘用户’选项卡,输入用户名为自己的用户名;记得‘用户比较\'(用户比较,完成权限修改后与用户的权限保持一致)
到此为止,权限的设计全部完成,下面我们通过ABAP来验证权限的有效性。
权限列表中有两个权限,一个是系统通过创建role生成的,一个是我们手动创建的。
5. 创建ABAP程序,来验证权限对象的有效性
1 REPORT ZHAIM_TEST01 NO STANDARD PAGE HEADING.
2
3 TABLES ZEMP_TEST.
4
5 DATA: IT_ZEMP TYPE STANDARD TABLE OF ZEMP_TEST,
6 IW_ZEMP TYPE ZEMP_TEST.
7
8 PARAMETERS P_DEPT TYPE ZEMP_TEST-EDEPT.
9
10 START-OF-SELECTION.
11
12 AUTHORITY-CHECK OBJECT \'ZEMPOBJ00\'
13 ID \'ZEMPDEPT\' FIELD P_DEPT
14 ID \'ACTVT\' FIELD \'03\'.
15 "用户使用程序,想要查询部门的员工信息,
16 "通过authority-check object 来进行权限检查,ID是字段名,field是要检查的
17 "\'actvt\': 01 创建,02更改,03查询,06删除
18 IF SY-SUBRC <> 0.
19 MESSAGE S001(00) WITH \'您没有权限查看此数据\' DISPLAY LIKE \'E\'.
20 ELSE.
21
22 SELECT *
23 FROM ZEMP_TEST
24 INTO TABLE IT_ZEMP
25 WHERE EDEPT = P_DEPT.
26
27
28 LOOP AT IT_ZEMP INTO IW_ZEMP.
29
30 WRITE / IW_ZEMP.
31
32 ENDLOOP.
33
34 ENDIF.
输入20
执行结果:
输入10
执行结果
如果存在删除操作,在删除前,检查用户的权限,可以将actvt的值改为06进行测试。
actvt的所有值储存在表TACT中。
----------------------------------------
| ACTVT|LTEXT |
----------------------------------------
| 01 |创建或生成 |
| 02 |更改 |
| 03 |显示 |
| 04 |打印、编辑消息 |
| 05 |锁定 |
| 06 |删除 |
| 07 |激活,生成 |
| 08 |Display change documents |
| 09 |显示价格 |
| 10 |过帐 |
| 11 |修改数值范围状态 |
| 12 |维护并生成修改文档 |
| 13 |初始化数量级别 |
| 14 |字段选择: 生成屏幕 |
| 15 |字段选择: 赋值表 |
| 16 |执行 |
| 17 |维护编号范围对象 |
| 18 |从 coll. 程序交货 |
| 19 |coll. proc 的发票 |
| 20 |无翻译传输 |
| 21 |传输 |
| 22 |输入,包括, 分配 |
| 23 |维护 |
| 24 |归档 |
| 25 |Reload |
| 26 |修改客户帐号组 |
| 27 |Display totals records |
| 28 |显示行项目 |
| 29 |显示存储数据 |
| 30 |决定 |
| 31 |确认 |
| 32 |保存 |
| 33 |读 |
| 34 |写 |
| 35 |输出 |
| 36 |扩展维护 |
| 37 |接受 |
| 38 |完成 |
| 39 |检查 |
| 40 |在 DB 中创建 |
| 41 |在 DB 中删除 |
| 42 |转换到 DB |
| 43 |释放 |
| 44 |标记 |
| 45 |允许 |
| 46 |Merge |
| 47 |借位 |
| 48 |模拟 |
| 49 |请求 |
| 50 |移动 |
| 51 |Initialize |
| 52 |修改应用程序开始 |
| 53 |显示应用开始 |
| 54 |显示应用档案 |
| 55 |修改应用程序归档 |
| 56 |显示档案 |
| 57 |保存档案 |
| 58 |显示接管 |
| 59 |分配 |
| 60 |输入 |
| 61 |输出 |
| 62 |创建自动分帐目 |
| 63 |激活 |
| 64 |生成 |
| 65 |重新组织 |
| 66 |刷新 |
| 67 |翻译 |
| 68 |模块 |
| 69 |放弃 |
| 70 |管理员 |
| 71 |分析 |
| 72 |计划 |
| 73 |Execute Digital Signature |
| 74 |撤回批准 |
| 75 |移去 |
| 76 |输入 |
| 77 |预输入 |
| 78 |分配 |
| 79 |Assign Role to Composite Role |
| 80 |Print |
| 81 |调度 |
| 82 |补充 |
| 83 |对方确认 |
| 84 |结算 |
| 85 |转换 |
| 86 |Rebook |
| 87 |返回 |
| 88 |完成 |
| 89 |Subscribe |
| 90 |复制 |
| 91 |重新激活 |
| 92 |Create from Template |
| 93 |计算 |
| 94 |Override |
| 95 |解锁 |
| 96 |Reject |
| 97 |设置 |
| 98 |下达标记 |
| 99 |生成发票清单 |
| A1 |Accrue |
| A2 |工资 |
| A3 |修改状态 |
| A4 |重新提交 |
| A5 |显示报表 |
| A6 |用筛选器读取 |
| A7 |用筛选器写入 |
| A8 |处理大量数据 |
| A9 |发送 |
| AA |Print Again |
| AB |结算 |
| B1 |显示许可值 |
| B2 |技术性完成 |
| B3 |导出 |
| B8 |再次执行 |
| B9 |Post Parked Document |
| BD |维护对象在非属主系统 |
| BE |IMG 项目 |
| C1 |支付卡维护 |
| C2 |支付卡显示 |
| C3 |手工权限维护 |
| C4 |Develope Payment Card |
| C5 |Reopen |
| C8 |确认更改 |
| D1 |复制 |
| DL |下载 |
| DP |删除计划 |
| E0 |保存摘录 |
| E6 |删除自有摘录 |
| E7 |删除文本摘录 |
| EP |Prioritise extract |
| FP |修改客户自动选项 |
| G1 |Maintain Budget |
| G2 |Billing |
| G3 |Maintain Overhead Costs |
| G4 |Maintain Reevaluation |
| G5 |Park |
| G6 |Transfer Budget |
| G7 |Reverse |
| GL |一般总览 |
| H1 |Deactivate |
| H2 |Activate Logging |
| H3 |Deactivate Logging |
| KA |激活布告 |
| KI |Knock In |
| KO |Knock Out |
| KS |冲销布告 |
| KU |Give notice |
| L0 |All functions |
| L1 |函数范围级 1 |
| L2 |函数范围级 2 |
| LM |Change LDAP Mapping |
| LS |Change LDAP Sync. Switch |
| MA |Deactivate mod.assistant |
| P0 |Accept CCMS CSM data |
| P1 |Edit CCMS CSM data |
| P2 |Maintain CCMS CSM methods |
| P3 |Register CCMS CSM remote systm|
| PA |Open period |
| PB |Close period |
| PC |Open Consolid. Grp Processing |
| PD |Close Consolid. Unit Processng|
| PP |Set as productive |
| PU |Publish |
| RS |Send to New Recipient |
| S1 |编辑模板 |
| S2 |Edit specification |
| SO |Edit in Sourcing |
| SZ |Assign Switch Framework Switch|
| U2 |比较业务量 |
| U3 |更改业务量比较 |
| U4 |添加业务量数据 |
| UL |上载 |
| V1 |Create version |
| V2 |Change Version |
| V3 |Display Version |
| V4 |Delete Version |
| V5 |Transport Version |
| V6 |Delete Version Header |
| VE |Create an Enhancement ID |
| VF |Expired |
----------------------------------------
PS: AUTHORITY-CHECK OBJECT \'ZEMPOBJ00\'
ID \'ZEMPDEPT\' FIELD P_DEPT
ID \'ACTVT\' FIELD \'03\'.
sy-subrc 一些重要返回值如下:
0: 用户权限检查通过.
4: 用户权限不足.
8: 参数的数量不正确.
12: 权限对象不存在.