前言
前一篇中介绍了关于行为定义中草稿的概念,本篇将介绍授权控制的概念和实现方式,授权控制主要控制用户对数据或者功能的操作权限,确保用户只能对自己有权限的数据进行访问或者操作。
正文
权限检查一般用于两种场景:读取操作和修改操作。
-
• 读取操作(Authorization Checks for Read Operations):通过ABAP CDS的数据控制语言(DCL)实现,利用CDS访问控制对象(Access Control Objects)限制用户对数据的可见范围。 -
• 修改操作(Authorization Checks for Modify Operations):通过在行为定义中调用权限对象检查,用来控制标准操作或者自定义操作是否有权限,其中又分为 Global Authorization全局授权 和 Instance Authorization实例授权 以及 Authorization Check against Incoming Values (Precheck)预检查。
下面分别介绍这几种不同控制场景的实现方式。
读取操作
DCL[1](Data Control Language)是ABAP CDS的一部分,是SAP ABAP CDS特有的一种权限控制定义语言,通过定义CDS访问控制规则(Access Control)来控制对CDS实体的读取访问控制。
工作原理:
-
• 通过定义访问条件限制用户对数据的读取权限 -
• 自动应用于CDS视图的查询结果 -
• 在managed BO中自动应用于EML读取操作 -
• 在unmanaged BO中需要在READ中实现显示检查
在本例中目前没加添加权限控制,所以你创建的所有数据都可以看到:
现在为其添加Access Control,要求仅能显示自己创建的单据,且权限对象分配了指定订单类型的单据。
Step 1:为根视图创建访问控制
这里按照需求选择合适的模板,这里选择使用PFCGAspect模板,因为需要使用标准的权限对象进行检查:
此处添加了两个限制条件,一个是订单类型必须满足权限对象分配的值(取决于权限对象分配的值),一个是创建者必须是自己(强制条件)。

