动态报表 DQuery 的授权管理

作者:ABAP技巧与实战 约 7 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

**前言:**

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

Query的所有情况

> 动态报表D-Query 的介绍

>

> 公众号:ABAP开发技巧 [ 动态报表D-Query整合

> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247484586&idx=1&sn=606e6afe74eba4b2f194fdd88fadbab3&chksm=cf5dd99cf82a508a0971f705aa2e8ea8bf1b91d13b3098330179407db5af0f783bd886611414#rd)

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

**授权:**

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

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

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

Query的授权控制.

**自定义授权体系**

因为标准SAP授权体系的复杂性(当然这个说法见仁见智,有人觉得简单,有人觉得复杂),所以我开发了一套简单的授权体系.这个体系的核心是一个用户/用户组授权表ZTUSR_AUTH_COMM.

**如果用户维护在该表中, 才表示对用户存在授权特定字段的授权限制, 没有维护,则表示对该用户无限制.** **

**

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

• **BNAME:** 用户名或用户组名, 优先通过用户名查找授权信息, 如果没有, 则再次通过用户组名查找授权信息(用户名的用户组使用标准字段 USR02-CLASS)

• **FNAME:** 需要授权检查的字段名

• **MABIAO:** 授权允许的字段值,码表授权,允许多个单值,区间(A-Z)允许通配符,或逗号分隔

动态报表 DQuery 的授权管理 - 封面图

• **MABIAO_EXCLUDE:** 授权不允许的字段值,码表排除

动态报表 DQuery 的授权管理 - 封面图

• 通过对比授权表中的值与授权检查的字段值,完整授权的检查

**D-Query的授权分两个部分**

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

2. 对使用通过D-Query开发的报表的用户授权(听起来有点绕,后面详细解说)

**第一部分:**对使用D-Query的开发或关键用户的授权** **

****** ** 直接使用D-Query的用户一般是开发人员或授权较高的关键用户.这类授权是通过限定可使用的表来完成的

执行D-Query(TCODE:ZBC125或ZDQ),在表名字段的帮助信息中可以看到这部分授权的实现方式(这里使用了自定义授权体系)

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

比如下图限定了用户CABAP01只能用D-Query查询Z*开头的表

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

如果用户试图查询没有授权的表, 则会报错

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

关联的子表,如果没有授权,则无法加入子表的字段

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

**第二部分:对使用通过D-Query开发的报表的最终用户授权**

**** 这部分授权使用了SAP标准授权体系和自定义授权体系结合,同时生效. **

**

通过表ZTBC125_AUTH维护授权字段的主表,及授权对象

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

如上图,表示字段BUKRS

从T001中读取所有的公司代码,使用标准授权对象F_BKPF_BUK完成授权检查.特别说明一下,如果该表没有维护,D-Query预制了四个授权检查,如果表维护了,

预制授权检查失效

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

启用了标准授权检查的字段,在D-Query开发中,允许勾选 授权检查,反之则不能勾选,简单授权检查没有这个限制, 只有字段存在码表,就允许勾选

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

一旦字段勾选了授权检查或者简单授权检查.生成的TCODE执行时会检查这个字段必须输入,如果没有输入内容,或者输入的内容不存在授权,都会报错.

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

D-Query基于性能的考虑主要是对输入条件的授权检查,如果用户使用通配查询输入,则使用该通配条件读取码表或者授权表中定义的主表,获取所有单值,然后循环对单值执行授权检查.

如果用户输入地点 6* . D-Query会查询所有6开头的地点, 对没有授权的地点,都会报错列出

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

如果你对这篇文章感兴趣,请帮忙转发分享, 并且勾选微信 <看一看>.文章右上角的按钮点击后,点击<在看>(或者文章末尾的右下角<在看>),即可.

(如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.

毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

扫码关注公众号,获取更多好用的SAP应用程序

动态报表 DQuery 的授权管理 - 封面图
动态报表 DQuery 的授权管理 - 封面图

动态报表程序下载链接

https://pan.baidu.com/s/1yHongiCSNpK8V8Be6OwkCw

提取码:dtbb

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「动态报表DQuery的授权管理.md」整理生成,仅用于内部技术分享与学习交流。