Fork me on GitHub

在CDS(Core Data Services)中使用DCL(Data Control Language)

 

最近,我在玩ABAP CDS视图,并且遇到了一些权限方面的挑战。我在网上没看到有多少有关CDS开发的文档,因为它是个相当新的东西。因此,我决定写下这篇博客,也许我的想法可以帮助到一些人。

 

和你已经意识到的一样,ABAP CDS视图跑在ABAP层,而且不受限于SAP HANA(也就是不存在这样的数据库依赖)。ABAP CDS有它自己的、基于角色的权限概念。角色通过DCL源代码中的DEFINE ROLE定义。

 

这里是一个基本的CDS视图,它有数据目录“dimension”

 

当我在HANA STUDIO中运行CDS视图的时候,我观察到这个查询没有抓取到成本中心数据。为什么?

 

每个CDS视图都在SE11中有它相对应的SQL视图。在上面的例子中。IFICostCenter是DDL I_CostCenter的SQL视图。

 

这里有一个找到这些对象定义所在的包的简单方法,

前往SE11输入视图,IFICostCenter >显示:

 

你可以在这里找到包名(上图高亮的部分)。

 

现在打开HANA Studio,把这个包添加到你的包收藏夹文件夹。

 

一旦添加到了你的收藏夹,展开Core Data Services然后你就可以在数据定义文件夹看到DDL源代码,以及在访问控制文件夹看到DCL源。

 

这里是一个成本中心CDS视图的DCL源的例子。

注意:DDL和DCL的名字必须一致。

 

权限在DCL源中执行了。我们应该确保权限对象K_CSKS在后端被分配到用户(在我使用的S/4 HANA 1511中是这样的)。

 

将权限检查对象授予给用户之后,可以看到成本中心数据了,Bingo!

 

注意:actvt 是操作代码。在该情况下,应该是03——显示。

 

注释@AccessControl.authorizationCheck: #CHECK 会强制进行权限检查。

如果使用 #NOT_REQUIRED 或 #NOT_ALLOWED,权限检查会被忽略。

 

 

希望本文对你有帮助。

 

本文链接:http://www.cnblogs.com/hhelibeb/p/6647178.html

英文原文:Wonder how Data Control Language (DCL) works with ABAP Core Data Services (CDS)?

 

posted @   氢氦  阅读(3498)  评论(2编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
点击右上角即可分享
微信分享提示