在 CDS 访问控制中使用动态值

Use dynamic values in CDS access control

如何将 cds 元素与 ABAP 函数的 return 值进行比较?

举个例子: 一名员工被分配到一家公司,该公司有来自客户的订单。这些订单显示在 table 中,员工只能看到他们所在公司的订单。

如果员工 A 在公司 B 工作,角色将是这样的:

grant select on ConsumptionViewName
    where company = ‚B‘;

我现在想让这个硬编码的 'B' 动态化,并且有一个 ABAP 辅助函数 return 应该使用雇员的雇主。没有任何具有公司字段的授权对象,是否可以没有一个?

您无法为 CDS DCL 提供动态值。

如果找不到合适的权限对象,您可以自己定义一个并让 DCL 完成它的工作。或者,您可以通过使用 ABAP 辅助函数过滤结果,在网关层过滤结果(...DPC_EXT class 中的方法)。