ABAP CDS View

一、前言

核心数据服务(CDS)是用于定义和使用语义丰富(semantically-rich)的数据模型的一套架构,属于SAP HANA的一部分,但也可以在ABAP平台上使用,因此分为HANA CDS与ABAP CDS.

HANA CDS:由于HANA需要直接在数据库内开发应用,使用标准SQL语言比如CREATE TABLE和CREATE VIEW等,已不能满足需要定义带有语义属性(比如Annotation)的数据库表、视图、类型等,因此HANA CDS应运而生。

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

二、特点

Ø将数据计算逻辑下推到数据库层
Ø可以使用UNION及UNION ALL等叠加查询结果
Ø支持CASE条件语句
Ø支持Arithmetic, String and cast等语句
Ø支持INNER JOIN, OUTER JOIN等
Ø可以使用Annotation
Ø支持Aggregations, Grouping功能
Ø支持90%以上的SQL功能

三、创建CDS的ABAP存储库

1、创建新的ABAP Repository Object

 

2、使用业务场景的数据的数据提取注释创建CDS视图

 demo

@AbapCatalog.sqlViewName: 'ZTESTSV001'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Test view'
define view ZTESTV001 as select from zmdgt0013 as t0013
  inner join zmdgt0016 as t0016 on t0013.partner = t0016.partner
 {
 t0013.restype as restypeid,
 t0013.restypename,
 t0013.partner,
 t0013.subsidiary,
 t0013.subsidiaryname,
 t0016.street    
}
 union select distinct from zmdgt0013 as t0013
 inner join zmdgt0016a as t0016a on t0013.partner = t0016a.partner
 {
   t0013.restype as restypeid,
   t0013.restypename,
   t0013.partner,
   t0013.subsidiary,
   t0013.subsidiaryname,
   t0016a.street    
 }
 union select distinct from zmdgt0013 as t0013
 inner join zmdgt0016d as t0016d on t0013.partner = t0016d.partner
 {
  t0013.restype as restypeid,
   t0013.restypename,
   t0013.partner,
   t0013.subsidiary,
   t0013.subsidiaryname,
   t0016d.street  
 }

Define view with parameters

@AbapCatalog.sqlViewName: 'ZTESTSV002'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'ZTESTV002'
define view ZTESTV002
    with parameters in_restype : ze_test_char2
as select from zmdgt0013 as t0013
  inner join zmdgt0016 as t0016 on t0013.partner = t0016.partner
 {
 t0013.restype as restypeid,
 t0013.restypename,
 t0013.partner,
 t0013.subsidiary,
 t0013.subsidiaryname,
 t0016.street    
}

 where t0013.restype = :in_restype

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值