SAP CDS demo


前言

SAP CDS(Core Data Services)是一种强大的数据建模工具,它允许您定义数据模型和服务,以支持SAP应用程序开发。在SAP CDS中,元数据扮演着至关重要的角色,它描述了数据模型的结构和语义信息。为了更好地管理和组织这些元数据,SAP引入了分层概念,将CDS Metadata Extension分配到不同的层次上。这些分层的目的是帮助组织在不同场景下管理和定制CDS元数据,以满足不同用户的需求。


提示:以下是本篇文章正文内容,下面案例可供参考

一、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使用。
CDS(核心数据服务)可以指两种不同的内容,一种是HANA CDS,另一种是ABAP CDS。HANA CDS仅支持HANA数据库,而ABAP CDS理论上支持多种数据库供应商,但功能相对较少。因此,在某些情况下,无法使用ABAP CDS解决问题时,可以采用一种替代方法,即通过ABAP托管数据库过程(AMDP)创建ABAP CDS表函数。

CDS(核心数据服务)是SAP的战略性技术解决方案之一,旨在在数据的物理存在和用户需求之间构建一个虚拟层,以满足用户对访问SAP系统数据的需求。CDS的设计具有以下目标:

易于定义和创建
能够满足复杂业务逻辑编写的需求
能够充分发挥数据库的性能,尤其是SAP HANA
除了满足逻辑需求,还具有充足的语义信息
具有良好的复用性和适应性以满足变化的需求
易于管理和传输
与现有系统的安全机制集成
具有一定的自解释功能,帮助用户发现所需的数据,而不是依赖于对SAP底层数据结构的理解
同时满足OLTP(ABAP,Fiori)和OLAP(BW、BO)应用的调用需求
CDS分为两种: HANA CDS:由于HANA需要在数据库内直接开发应用,使用标准SQL语言(例如CREATE TABLE和CREATE VIEW等)已不能满足定义带有语义属性(如注释)的数据库表、视图、类型等的需求,因此HANA CDS应运而生。

ABAP CDS:可以在除HANA之外的其他数据库平台上运行,使用ADT(ABAP开发工具)通过DDL语言进行定义。通过对数据库表添加关联和注释等方式,定义带有丰富语义的视图对象,供ODATA和SAPUI5使用。

二、DEMO

@AbapCatalog.sqlViewName: 'ZCFI001'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '支付预测CDS'
define view ZCFI_001
with parameters @Environment.systemField : #SYSTEM_LANGUAGE
                p_spras : syst_langu,
                p_gjahr : gjahr
as select from bseg
inner join t001 on bseg.bukrs = t001.bukrs and
                   t001.spras = $parameters.p_spras
left outer join ekko on bseg.ebeln = ekko.ebeln
left outer join ekko as _ekko on bseg.zuonr = _ekko.ebeln
left outer join lfa1 on bseg.lifnr = lfa1.lifnr and
                        lfa1.spras = $parameters.p_spras
{
        bseg.mandt,
        bseg.bukrs,
        bseg.belnr,
        bseg.gjahr,
        bseg.lifnr,
        bseg.zuonr,
        bseg.ebeln,
        bseg.ebelp,
        bseg.h_waers as wares,
        bseg.zbd1t,
        bseg.zfbdt,
        lfa1.name1,
        t001.butxt,
        case shkzg when 'S' then wrbtr * (-1) else wrbtr end as wrbtr,
        case when not ekko.ekgrp is null then ekko.ekgrp else _ekko.ekgrp end as ekgrp
}
where
   bseg.koart = 'K' and
   bseg.augbl = ''  and 
   bseg.gjahr <> $parameters.p_gjahr
   
 

总结

CDS有非常多的功能,以后会与大家多多分享。

  • 30
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值