实例:ABAP权限对象设计与权限检查的实现(详细)
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程序,来验证权限对象的有效性
REPORT ZHAIM_TEST01 NO STANDARD PAGE HEADING. TABLES ZEMP_TEST. DATA: IT_ZEMP TYPE STANDARD TABLE OF ZEMP_TEST,
IW_ZEMP TYPE ZEMP_TEST. PARAMETERS P_DEPT TYPE ZEMP_TEST-EDEPT. START-OF-SELECTION. AUTHORITY-CHECK OBJECT 'ZEMPOBJ00'
ID 'ZEMPDEPT' FIELD P_DEPT
ID 'ACTVT' FIELD ''.
"用户使用程序,想要查询部门的员工信息,
"通过authority-check object 来进行权限检查,ID是字段名,field是要检查的
"'actvt': 01 创建,02更改,03查询,06删除
IF SY-SUBRC <> .
MESSAGE S001() WITH '您没有权限查看此数据' DISPLAY LIKE 'E'.
ELSE. SELECT *
FROM ZEMP_TEST
INTO TABLE IT_ZEMP
WHERE EDEPT = P_DEPT. LOOP AT IT_ZEMP INTO IW_ZEMP. WRITE / IW_ZEMP. ENDLOOP. 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: 权限对象不存在.
实例:ABAP权限对象设计与权限检查的实现(详细)的更多相关文章
- ABAP权限检查,TCode与权限对象进行关联
一.确认权限对象,和关联字段: Tcode:SU21 维护权限对象例如"M_MSEG_WMB",它关联字段为'WERKS'M_MSEG_WMB 物料凭证:工厂 二.在ABAP代码中 ...
- ABAP的权限检查跟踪(Authorization trace)工具
事务码 STAUTHTRACE 1. 点击"Activate Trace" button激活跟踪: 可以看到跟踪状态已经处于打开状态. 在同一个application server ...
- 如何为ABAP程序添加权限检查
一.确认权限对象,及其关联字段: TCode: SU21 例如权限对象"M_MSEG_WMB",它关联字段为"WERKS",详见下图: 二.在ABAP代码中添加 ...
- 巨蟒django之权限6: 权限控制表设计&&登录权限
1.权限控制表设计 内容 . 什么是权限? . 为什么要有权限? 不同用户拥有不同的功能 . 在web开发中,什么是权限? url 代表 权限 . 开发一个权限的组件,为什么要开发组件? . 表结构的 ...
- [Django]用户权限学习系列之设计自有权限管理系统设计思路
若在阅读本片文章遇到权限操作问题,请查看本系列的前两章! http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ- ...
- Android 开发技巧 - Android 6.0 以上权限大坑和权限检查基类封装
简单介绍 关于运行时权限的说法,早在Google发布android 6.0的时候,大家也听得蛮多的.从用户的角度来讲,用户是受益方,更好的保护用户的意思,而对于开发者来说,无疑增加了工作量. 对于6. ...
- MVC用户登陆验证及权限检查(Form认证)
1.配置Web.conf,使用Form认证方式 <system.web> <authentication mode="None" /> ...
- ylbtech-权限管理-数据库设计-功能权限管理技术
ylbtech-DatabaseDesgin:ylbtech-权限管理-数据库设计-功能权限管理技术 DatabaseName:ylb_permission(权限管理-功能权限管理技术)实现 Type ...
- 权限检查联系人ProfileProvider
每日一贴,今天的内容关键字为权限检查 ProfileProvider继承自AbstractContyactsProvider. 源代码请自行下载 每日一道理 书籍好比一架梯子,它能引领人们登上 ...
随机推荐
- 一个php类 Autoloader
php autoloader: This is a class for PHP that keeps the user from having to manually include classes ...
- How to change data dir of mysql?
# 1 copy orgin data dir of mysql to new one cp -R /var/lib/mysql /mysqldata chown mysql:mysql -R /my ...
- C# 第三方DLL,可以实现PDF转图片,支持32位系统、64位系统
itextsharp.dll,是一个开源的在C#中用来生成PDF文档的库文件,不少C#爱好者用它制作出了PDF文档生成器.使用时只需在你的C#项目中添加引入此组件即可,使用方法网上有很多,自己查阅一下 ...
- 2013ACM省赛题目
地址就贴这一个吧 都在附近 当时回来也没做做 一伤心了 二是当时实在太弱了 先补两道DP E题的区间DP dp[i][j] 截止到i位置以字母j为结束的上升序列 正序 逆序各来一遍 再循环一遍保存一 ...
- poj 1125 Stockbroker Grapevine(最短路 简单 floyd)
题目:http://poj.org/problem?id=1125 题意:给出一个社交网络,每个人有几个别人可以传播谣言,传播谣言需要时间.问要使得谣言传播的最快,应该从那个人开始传播谣言以及使得所有 ...
- 记一次SSH登陆失败问题的定位
创建用户之后,使用ssh协议登陆提示失败. useradd -d /home/hdp -m hdp -g dba -s /bin/bash 通过命令 ssh -v hdp@127.0.0.1 登陆,查 ...
- 使用Unity3d的Physics.Raycast()的用法做子弹射击
Class Functions 1)static function Raycast (origin : Vector3, direction : Vector3, distance : float = ...
- echarts-noDataLoadingOption问题
目前echarts暂时不支持noDataLoadingOption外挂,所以我为此diy了一个无数据展示文字. 但是echarts很奇怪,它是判断serises==[]空数组才会自动出现echarts ...
- maven pom.xml加载不同properties配置
1.pom.xml =========================== <!-- 不同的打包环境配置: test=开发/测试测试环境, product=生产环境; 命令行方式: mvn c ...
- Tomcat 7 Connector 精读(1)
这个类图是本人截取的最重要的类的方法和属性. 其中ProtocalHandler是协议处理器,tomcat支持的协议以下方法可以看到.不同协议实现了不同的ProtocalHandler类. publi ...