CDS Core Data Services S4 CDS view--1

下一代的数据库视图。比DDIC view能干。

也就是S4上了之后就用这个CDS view了。

目录

1. 软件安装

2. CDS view 是啥

3. 怎么去建CDS view

4. 如何修改一个CDS view,添加association关联

5. 一些有用的功能

6. 基础语法

6.1 Case

6.2 Cast

6.3 String

6.4 Numeric 功能/数学计算

7. Annotations 注释

7.1 注释的类型

7.2 怎么加注释

8. Union 和 Join

9. 货币和单位转换

10. Client的处理

11. Access Control

12. VDM Virtual Data Model

13. 扩展CDS VIEW

14. AMDP

15. oData Services和 UI5 (Smart Template)


 

1. 软件安装

去网站 https://tools.hana.ondemand.com/#abap

里面有详细步骤

先装个Eclipse

装好了之后去在eclipse里面install new software 就复制上面步骤里给你提供的网址。

接下来装ADT就行了。

CDS Core Data Services S4 CDS view--1_第1张图片

 

CDS Core Data Services S4 CDS view--1_第2张图片

CDS Core Data Services S4 CDS view--1_第3张图片

 CDS Core Data Services S4 CDS view--1_第4张图片

  然后就新建ABAP project就可以了,连接到后台系统。

2. CDS view 是啥

CDS view之所以比之前的DDIC view要强。就强在它有自己独特的语法功能,可以加一些注释。注释就是一些给数据库的指令。也就是这些注释能让它的功能扩展。

其次能把可以在数据库层执行的代码下推。(不是所有代码都能下推)

数据密集型的计算会下推到数据库层。比如在行上的计算。就不用先把数据拉到应用层计算了。就像SQL的count。

3. 怎么去建CDS view

首先肯定要指定相关的数据库表。还有要被用到view里面的字段。

CDS view可以基于数据库表和视图建,也可基于已有的CDS view来建。

这些CDS view可以直接用在ABAP程序里。

CDS Core Data Services S4 CDS view--1_第5张图片

选择Data Definition.

 CDS Core Data Services S4 CDS view--1_第6张图片

 CDS Core Data Services S4 CDS view--1_第7张图片

 CDS Core Data Services S4 CDS view--1_第8张图片

注释上第一行写了要加SQL view的名字。这个就是你的CDS view在数据库里的代表。

这个模板是DDIC-based view,所以要在GUI里能看到的话,得给个SQL view的名字。

在select from后加个表,表里面的哪些字段要用到呢。可以直接在表名上右键,navigate to查看。

或者直接点击Ctrl键,然后把鼠标移到自己的表上,就能直接点到表里。

CDS Core Data Services S4 CDS view--1_第9张图片

建完后保存加激活。

F8来查看数据。后者按下面的来执行。 

CDS Core Data Services S4 CDS view--1_第10张图片

就能看到结果了。 这个列名就是写的别名了。

 CDS Core Data Services S4 CDS view--1_第11张图片

同时,在CDS view里右键Show SQL create statement:

CDS Core Data Services S4 CDS view--1_第12张图片

能直接看到转换的SQL语句,在数据库里建了的DDIC view。那么当我删掉了这个CDS view的时候,其实DDIC 的view也就不见了。

CDS Core Data Services S4 CDS view--1_第13张图片

4. 如何修改一个CDS view,添加association关联

打开一个CDS view.

从以下这两个地方来找。 

 CDS Core Data Services S4 CDS view--1_第14张图片

要给CDS view添加一些新字段就直接添加在下面。

那association关联其实和join很像。

假设有个头文件表和行项目表,1对多的关系。分别建CDSview之后。

那么我们就可以用association来关联这两个CDS view:

通过下面这个特定的association语句就可以把另一个view关联过来。

这个语句很简单。从header到item就用0..*一对多的关系,关联字段写在$projection后面。

因为是把另一个表当做child给关联过来,所以加个注释:[#TO_COMPOSITION_CHILD]

CDS Core Data Services S4 CDS view--1_第15张图片

把另一个view完全关联过来。F8之后follow association能直接跳转到你选中的字段值的关联的view。这个有点像BW里面的jump query了。

CDS Core Data Services S4 CDS view--1_第16张图片

CDS Core Data Services S4 CDS view--1_第17张图片

同理,从Item到Header的跳转也可以用association关联:

不加注释也能跳。

CDS Core Data Services S4 CDS view--1_第18张图片

5. 一些有用的功能

右键 依赖性分析。 

CDS Core Data Services S4 CDS view--1_第19张图片

 能看到这个 CDS view是基于哪些table和CDS view的。这里能看出来association是个左外连接。CDS Core Data Services S4 CDS view--1_第20张图片

换成图形就比较直观一点。还有最后一个complexity metircs,能看到什么join,数据从哪里来的。

CDS Core Data Services S4 CDS view--1_第21张图片

还可以查看where used list。选中你的CDS view名字,或者字段名,查看where used list.避免改了对其他对象有影响。

查看active annotations,活动的注释:

CDS Core Data Services S4 CDS view--1_第22张图片

CDS Core Data Services S4 CDS view--1_第23张图片

6. 基础语法

6.1 Case

条件。

这个很简单。

key ebeln as Order,
    case (bsart)
    when 'UB' then 'ST order'
    when 'TS' then 'External'
    else 'others'
    end as OrderType,
ekgrp as Group

6.2 Cast

格式转换。

netpr 转换成abap.fltp(16)格式。然后*0.01添加一个Tax字段。

werks as plant,
cast( netpr as abap.fltp(16) ) * 0.01 as Tax 

Cast可以用来切换所有的data element格式。或者是ABAP数据字典里的内置的数据类型,比如abap.fltp(16)。

类似的可以自己去找:

比如abap.clnt[(3)]/abap.int1[(3)]

abap.raw(len)/abap.sstring(len)/abap.dats[(8)]...... 

6.3 String

也是代码下推到数据库,其实很多在BW的转换里面做的这里也就能先做了。

length 取长度
Instr 查找位置
concatenate 关联两个string
concatenate with space 中间加空格
left 取左边多少位
lower 小写转换
upper 大写转换
Ltrim & Rtrim ( 字段,要被移除的字段)
replace( 字段,要被替代的,替代成啥)
substring (字段,从哪个位置开始,取多少位)
Lpad&Rpad(字段,补充后的长度,要被补充的string):如果原来的字段已经是补充后的长度了,就不会再补充了

CDS Core Data Services S4 CDS view--1_第24张图片

 这里有延伸一个,concat_with_space是中间加了四个空格。但是如果我想连接两个字段,这两个字段的长度不固定,但是最后得到一个固定长度的值怎么办呢?

CDS Core Data Services S4 CDS view--1_第25张图片

 

6.4 Numeric 功能/数学计算/aggregation/group by /Having

ABS(arg)绝对值 abs(-5) = 5
MOD(arg1,arg2)取余 mod(10,3) = 1
DIV(arg1,arg2)取除 div(18,4) = 4
DIVISION(arg1,arg2,dec) 取除,确定小数位 div(20,6,2) = 3.33
CEIL(arg) 比arg大的最小整数 ceil(4.5) = 5/ceil(-5.5) = -5
FLOOR(arg)比arg小的最大整数 floor(3.5) = 3
ROUND(arg,pos) 四舍五入舍小数位 round(1.46,1) = 1.5

以下就是典型的代码下推到数据库。

define view ZCDS_Function
as select from vbak
{
vbak.vbeln as Doc,
vbak.netwr as Price,

round(vbak.netwr,1) as round_Pri,
ceil(vbak.netwr) as ceil_pri,
floor(vbak.netwr) as floor_pri,
div(vbak.netwr,2) as div_pri,
division(vbak.netwr,3,5) as div2_pri, //除3取带有5位小数的结果
mod(10,3) as modop,
abs(-1) as para
}

对于数学计算来讲就是加减乘除,乘除法只能用于floating的数字。 要先cast到abap.fltp(16)上。不然会报错。

 

432b6d38d316410bbdfe0db0322feb38.png

举个例子:

CDS Core Data Services S4 CDS view--1_第26张图片其他还有很多聚集功能:

define view ZI_Sales
 as select from vbap
{

key vbeln as SalesDo,
min(netwr) as MinAmount,
max(netwr) as MaxAmount,
avg(netwr) as AvgAmount,
count(*) as Count,
count(distinct matnr) as DistinctMat,
}

group by vbeln

 对于Having就是必须在Group by之后才能用的。加强限制。 

define view ZI_Sales
 as select from vbap
{

key vbeln as SalesDo,
min(netwr) as MinAmount,
max(netwr) as MaxAmount,
avg(netwr) as AvgAmount,
count(*) as Count,
count(distinct matnr) as DistinctMat,
}

group by vbeln
having pstyv = 'TAN'

 

7. Annotations 注释

简单来说注释就是来丰富这个CDS view的功能的。

这些注释要被不同的framework来编译。在运行的时候可能通过SADL,BOPF,或者其他的Analytics啊,Enterprise Search这些framework来编译。

7.1 注释的类型

view 注释,就是你还没开始编辑这个view的时候,抬头的那些,对应到DDIC里的view的名字和描述。

CDS Core Data Services S4 CDS view--1_第27张图片

CDS Core Data Services S4 CDS view--1_第28张图片

元素注释,对特定字段的注释。

CDS Core Data Services S4 CDS view--1_第29张图片

扩展注释,当你去extend 这个view的时候,它旁边的注释就是扩展注释。

参数注释,参数旁边的注释。

这些乱七八糟的注释类型,其实可以按类来分。

Analytics类:分析性的数据模型和应用 @Analytics.dataExtraction.enabled 是否可被用于数据赋值

Consumption类: CDS内容怎么被消费 @Consumption.defaultValue 参数默认值

Enterprise Search类:是否可被Enterprise搜索。这个目前没有对客户开放。@EnterpriseSearch.enabled

oData类:发布到Odata,@OData.publish,然后可以在UI5里用

UI类:独立定义,比如说顺序:@UI.identification.position,谁在谁后面展示啥的

VDM类:@VDM.ViewType 定义一个VDM view的类型,比如BASIC,COMPOSITE,CONSUMPTION

7.2 怎么加注释

下一篇。。。

8. Union 和 Join

9. 货币和单位转换

10. Client的处理

11. Access Control

12. VDM Virtual Data Model

13. 扩展CDS VIEW

14. AMDP

15. oData Services和 UI5 (Smart Template)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(CDS,View,数据库)