matinal:SAP 零基础学习CDS之概览(一)

🚀欢迎来到本文🚀
🍉个人简介: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概念

2、CDS特点

3、ABAP CDS部分语法

5、使用CDS创建oData Service


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主流使用的技术都是实用性比较强且受大众程序员喜爱的(毕竟能更好的摸鱼😏)


    如果本文对大家有所帮助的话,还望各位能给我点赞、收藏并评论一下,感谢各位💕!!! 另如果大家有什么疑问或者建议的话,欢迎评论区留言。

  • 34
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中的vector是一种动态数组,可以存储不同类型的元素。sort函数是C++ STL库中的一个算法函数,用于对容器中的元素进行排序。该函数可以接受三个参数,分别是要排序的容器的起始迭代器、结束迭代器和一个比较函数。 在引用中的例子中,使用sort函数对vector容器中的元素进行排序。sort函数默认使用小于号运算符(operator<)进行比较,因此默认情况下是按照升序对容器中的元素进行排序。 在引用中的例子中,定义了两个比较函数GreaterSort和LessSort,分别用于降序和升序排序。通过传入这些比较函数作为sort函数的第三个参数,可以实现自定义的排序方式。 在引用中的例子中,使用greater<int>()作为sort函数的第三个参数,实现了对容器中元素的降序排序。而没有传入第三个参数时,默认按照小于号运算符进行升序排序。 因此,C++中的vector容器可以通过sort函数进行排序,并且可以根据需要使用默认比较函数或自定义比较函数来实现不同的排序方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C++中,结构体vector使用sort排序](https://blog.csdn.net/zhouxun623/article/details/49887555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [C++vector容器使用sort排序(含升序以及降序)](https://blog.csdn.net/G_matinal/article/details/126769371)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值