动态报表D-Query的授权管理

2021-02-13  本文已影响0人  syjf1976_abap

3前言:

      本文主要交接动态报表(D-Query,下面统称D-Query)的授权,如果你不知道D-Query是什么, 请先阅读公众号中的文章. 里面详细介绍了D-Query的所有情况

今天想要介绍的是D-Query的授权部分.

授权:

    在一个常规的企业软件中,总是缺少不了授权.通过授权控制用户能够登录哪些系统,执行什么操作, 查看什么数据. 下面是百度词条对授权的解释.

    授权是组织运作的关键,它是以人为对象,将完成某项工作所必须的权力授给部属人员。即主管将处理用人、用钱、做事、交涉、协调等决策权移转给部属,只授予权力,不可托付完成该项工作的必要责任,这是授权的绝对原则性。组织中的不同层级有不同的职权,权限则会在不同的层级间流动,因而产生授权的问题。授权是管理人的重要任务之一。有效的授权是一项重要的管理技巧。

    正是因为授权的重要,所以在D-Query设计最初就考虑了授权的处理,沿用了SAP的标准授权体系,同时又发展出一整套完整的自有授权体系.同时完成对D-Query的授权控制.

自定义授权体系

因为标准SAP授权体系的复杂性(当然这个说法见仁见智,有人觉得简单,有人觉得复杂),所以我开发了一套简单的授权体系.这个体系的核心是一个用户/用户组授权表ZTUSR_AUTH_COMM.如果用户维护在该表中, 才表示对用户存在授权特定字段的授权限制, 没有维护,则表示对该用户无限制.

D-Query的授权分两个部分

  1. 对使用D-Query的开发或关键用户的授权

  2. 对使用通过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开头的地点, 对没有授权的地点,都会报错列出


上一篇下一篇

猜你喜欢

热点阅读