在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)?
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.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)