3前言:
本文主要交接动态报表(D-Query,下面统称D-Query)的授权,如果你不知道D-Query是什么, 请先阅读公众号中的文章. 里面详细介绍了D-Query的所有情况
今天想要介绍的是D-Query的授权部分.
授权:
在一个常规的企业软件中,总是缺少不了授权.通过授权控制用户能够登录哪些系统,执行什么操作, 查看什么数据. 下面是百度词条对授权的解释.
授权是组织运作的关键,它是以人为对象,将完成某项工作所必须的权力授给部属人员。即主管将处理用人、用钱、做事、交涉、协调等决策权移转给部属,只授予权力,不可托付完成该项工作的必要责任,这是授权的绝对原则性。组织中的不同层级有不同的职权,权限则会在不同的层级间流动,因而产生授权的问题。授权是管理人的重要任务之一。有效的授权是一项重要的管理技巧。
正是因为授权的重要,所以在D-Query设计最初就考虑了授权的处理,沿用了SAP的标准授权体系,同时又发展出一整套完整的自有授权体系.同时完成对D-Query的授权控制.
自定义授权体系
因为标准SAP授权体系的复杂性(当然这个说法见仁见智,有人觉得简单,有人觉得复杂),所以我开发了一套简单的授权体系.这个体系的核心是一个用户/用户组授权表ZTUSR_AUTH_COMM.如果用户维护在该表中, 才表示对用户存在授权特定字段的授权限制, 没有维护,则表示对该用户无限制.
-
BNAME: 用户名或用户组名,优先通过用户名查找授权信息, 如果没有, 则再次通过用户组名查找授权信息(用户名的用户组使用标准字段 USR02-CLASS)
-
FNAME: 需要授权检查的字段名
-
MABIAO:授权允许的字段值,码表授权,允许多个单值,区间(A-Z)允许通配符,或逗号分隔
-
-
MABIAO_EXCLUDE:授权不允许的字段值,码表排除
-
-
通过对比授权表中的值与授权检查的字段值,完整授权的检查
D-Query的授权分两个部分
-
对使用D-Query的开发或关键用户的授权
-
对使用通过D-Query开发的报表的用户授权(听起来有点绕,后面详细解说)
第一部分:对使用D-Query的开发或关键用户的授权
直接使用D-Query的用户一般是开发人员或授权较高的关键用户.这类授权是通过限定可使用的表来完成的
执行D-Query(TCODE:ZBC125或ZDQ),在表名字段的帮助信息中可以看到这部分授权的实现方式(这里使用了自定义授权体系)
比如下图限定了用户CABAP01只能用D-Query查询Z*开头的表
如果用户试图查询没有授权的表, 则会报错
关联的子表,如果没有授权,则无法加入子表的字段
第二部分:对使用通过D-Query开发的报表的最终用户授权
这部分授权使用了SAP标准授权体系和自定义授权体系结合,同时生效.
通过表ZTBC125_AUTH维护授权字段的主表,及授权对象
如上图,表示字段BUKRS 从T001中读取所有的公司代码,使用标准授权对象F_BKPF_BUK完成授权检查.特别说明一下,如果该表没有维护,D-Query预制了四个授权检查,如果表维护了, 预制授权检查失效
启用了标准授权检查的字段,在D-Query开发中,允许勾选 授权检查,反之则不能勾选,简单授权检查没有这个限制, 只有字段存在码表,就允许勾选
一旦字段勾选了授权检查或者简单授权检查.生成的TCODE执行时会检查这个字段必须输入,如果没有输入内容,或者输入的内容不存在授权,都会报错.
D-Query基于性能的考虑主要是对输入条件的授权检查,如果用户使用通配查询输入,则使用该通配条件读取码表或者授权表中定义的主表,获取所有单值,然后循环对单值执行授权检查. 如果用户输入地点 6* . D-Query会查询所有6开头的地点, 对没有授权的地点,都会报错列出
网友评论