🚀欢迎来到本文🚀
🍉个人简介:matinal,目前职业是IT行业,一个正在慢慢前行的普通人。
🏀系列专栏:涵盖SAP各模块,Python,Excel,人工智能等
💡 其他专栏:一些平时学习的技术,感兴趣的小伙伴可以看看。🍔公众号:matinal
🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝
⛱️万物从心起,心动则万物动🏄♂️
前言:Core data services(以下简称CDS)可以指两样东西,一个是HANA CDS,一个是ABAP CDS。如我们所知,HANA CDS只支持HANA数据库,ABAP CDS理论上支持多种数据库供应商,结果是,ABAP CDS相比之下要少一些功能。因此,在某些情况下,无法使用ABAP CDS解决问题时,可以使用一种变通的方法,即通过ABAP Managed Database Procedures (AMDP)创建ABAP CDS Table Function。
🦙(工作遇到傻逼,千万要远离。道路千万条,远离傻逼第一条)
目录
1、 CDS概念
Core data services(以下简称CDS)可以指两样东西,一个是HANA CDS,一个是ABAP CDS。如我们所知,HANA CDS只支持HANA数据库,ABAP CDS理论上支持多种数据库供应商,结果是,ABAP CDS相比之下要少一些功能。因此,在某些情况下,无法使用ABAP CDS解决问题时,可以使用一种变通的方法,即通过ABAP Managed Database Procedures (AMDP)创建ABAP CDS Table Function。
CDS(Core Data Service)是SAP的战略性的技术解决方案之一。其目的是在数据的物理存在和用户需求中间构建起一个虚拟层,满足用户对访问SAP系统数据的需求,CDS的设计具有以下的目标
1、易于定义和创建
2、能够满足复杂业务逻辑编写的需求
3、能够充分发挥数据库,尤其是SAP HANA的性能
4、除了满足逻辑需求,要能够具有充足的语意信息
5、具有良好的复用性和满足变化的需求的适应性
6、易于管理和传输
7、与现有系统的安全机制集成
8、具有一定的自解释功能,帮助用户发现所需的数据,而不是依赖于对SAP底层数
据结构的理解
9、同时满足OLTP(ABAP,Fiori)和OLAP(BW、BO)应用的调用需求
CDS分为两种:
HANA CDS:由于HANA需要直接在数据库内开发应用,使用标准SQL语言比如CREATE TABLE和CREATE VIEW等,已不能满足需要定义带有语义属性(比如Annotation)的数据库表、视图、类型等,因此HANA CDS应运而生。
ABAP CDS:可以运行在除了HANA之外的其他数据库平台之上,使用ADT(ABAP Development Tool)工具通过DDL语言进行定义。通过对数据库表添加assciation和annotation等方式定义带有丰富语义的视图对象,供ODATA和SAPUI5使用。
接下来主要介绍ANAP CDS的使用。
2、CDS特点
1、将数据计算逻辑下推到数据库层
2、可以使用UNION及UNION ALL等叠加查询结果
3、支持CASE条件语句
4、支持Arithmetic, String and cast等语句
5、支持INNER JOIN, OUTER JOIN等
6、可以使用Annotation
7、支持Aggregations, Grouping功能
8、支持90%以上的SQL功能
开发环境
ABAP CDS不能在SAP GUI 上进行开发,只能在Eclipse上通过安装ABAP Development Tools(ADT)的方式进行开发,首先下载安装Eclipse:打开Eclips→帮助→安装新软件。
输入网址:https://tools.hana.ondemand.com/xxxx(后面的xxxx为版本号,根据下载的Eclipse版本的不同而不同)。
这里我们只需要选择ABAP Development Tools for SAP NetWeaver,当然也可以安装全部开发工具。
ABAP CDS使用
a)使用ADT创建一个ABAP项目
选择需要链接的服务器,并输入用户名密码进行登录,这里会自动带出GUI端配置的链接,用Eclipse进行开发首先需要安装SAP GUI
b)创建ABAP CDS项目
右键 →NEW→Other abap repository Object
选择Core Data Services→Data Definition
输入Package 、CDS名称和描述
选择模板进行生成
更改此CDS生成的对应视图的名称 ,并选择数据源,视图在后续激活生成以后,不可以再做修改,只能删除重新生成,关键字也可以额像GUI中一样按F1查看帮助文档。
c)完成一个CDS实例
需求就是从物料主数据表中按照选择屏幕的条件获取符合条件的数据
CDS代码:
代码完成后与gui里面的操作一直,先检查,没有报错后激活。
注意:sqlViewName和define view后面跟的名称是不可以相同的,在abap程序调用的时候使用的是sqlViewName。
执行方法:
在主程序界面右键-》Run as-》ABAP Application
执行结果:
ABAP程序调用CDS视图代码:
注意:目前虽然CDS视图支持选择屏幕,但是只支持单值(parmaters),不支持多值,官方说法是会在不久的将来支持使用selection-options。
3、ABAP CDS部分语法
这里我们把数据源选择为SAP中已经创建好的采购订单对应的CDS PurgDocItem
定义输出字段,我们可以直接从数据源的association中取出数据,而不需要知道表之间的关联关系
在CDS中使用CASE条件,对字段值进行判断运算等基本逻辑操作
在CDS中使用WHERE条件,对数据进行排除操作
使用CAST语句更改字段类型,语法:CAST( &FIELD AS &TYPE )
使用association 方法关联其他数据源(数据库表、视图、CDS)
定义选择参数,可以在调用时进行参数传递
4、S/4 数据表查看对应CDS视图方法
以mseg表为例:
在使用CDS View查询MSEG的时候,发现查不出数据,最后发现S/4部分表需要使用对应的cds view查询才会生效。
下面介绍查看对应的DDL VIEW的方法。
在视图框中输入 NSDM_E_MSEG,查出结果: NSDM_V_MSEG
5、使用CDS创建oData Service
5-1. 创建CDS view
ZWX_CDS3:
注意:1.加上第6行代码: @OData.publish: true 就可以将这个cds发布为oData
2.一定要定义主键(在字段前加上key关键字),否则会报错
测试一下 ZWX_CDS3的取数
5-2. /N/IWFND/MAINT_SERVICE 激活并维护服务
点击添加服务
输入筛选条件,点击获取服务,查处对应服务后点击添加所选服务
添加完之后可以在列表中看到
5-3. /N/IWFND/GW_CLIENT 测试oData服务
request uri: /sap/opu/odata/sap/zwx_cds3_cds/ZWX_CDS3?$filter=posnr eq '000010'
注意:uri需要区分大小写
怎么样,在了解CDS后是不是觉得这个东西很强呀?但是也好像合情合理哈,毕竟是SAP主流使用的技术都是实用性比较强且受大众程序员喜爱的(毕竟能更好的摸鱼😏)
如果本文对大家有所帮助的话,还望各位能给我点赞、收藏并评论一下,感谢各位💕!!! 另如果大家有什么疑问或者建议的话,欢迎评论区留言。