下一代的数据库视图。比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就行了。
然后就新建ABAP project就可以了,连接到后台系统。
2. CDS view 是啥
CDS view之所以比之前的DDIC view要强。就强在它有自己独特的语法功能,可以加一些注释。注释就是一些给数据库的指令。也就是这些注释能让它的功能扩展。
其次能把可以在数据库层执行的代码下推。(不是所有代码都能下推)
数据密集型的计算会下推到数据库层。比如在行上的计算。就不用先把数据拉到应用层计算了。就像SQL的count。
3. 怎么去建CDS view
首先肯定要指定相关的数据库表。还有要被用到view里面的字段。
CDS view可以基于数据库表和视图建,也可基于已有的CDS view来建。
这些CDS view可以直接用在ABAP程序里。
选择Data Definition.
注释上第一行写了要加SQL view的名字。这个就是你的CDS view在数据库里的代表。
这个模板是DDIC-based view,所以要在GUI里能看到的话,得给个SQL view的名字。
在select from后加个表,表里面的哪些字段要用到呢。可以直接在表名上右键,navigate to查看。
或者直接点击Ctrl键,然后把鼠标移到自己的表上,就能直接点到表里。
建完后保存加激活。
F8来查看数据。后者按下面的来执行。
就能看到结果了。 这个列名就是写的别名了。
同时,在CDS view里右键Show SQL create statement:
能直接看到转换的SQL语句,在数据库里建了的DDIC view。那么当我删掉了这个CDS view的时候,其实DDIC 的view也就不见了。
4. 如何修改一个CDS view,添加association关联
打开一个CDS view.
从以下这两个地方来找。
要给CDS view添加一些新字段就直接添加在下面。
那association关联其实和join很像。
假设有个头文件表和行项目表,1对多的关系。分别建CDSview之后。
那么我们就可以用association来关联这两个CDS view:
通过下面这个特定的association语句就可以把另一个view关联过来。
这个语句很简单。从header到item就用0..*一对多的关系,关联字段写在$projection后面。
因为是把另一个表当做child给关联过来,所以加个注释:[#TO_COMPOSITION_CHILD]
把另一个view完全关联过来。F8之后follow association能直接跳转到你选中的字段值的关联的view。这个有点像BW里面的jump query了。
同理,从Item到Header的跳转也可以用association关联:
不加注释也能跳。
5. 一些有用的功能
右键 依赖性分析。
能看到这个 CDS view是基于哪些table和CDS view的。这里能看出来association是个左外连接。
换成图形就比较直观一点。还有最后一个complexity metircs,能看到什么join,数据从哪里来的。
还可以查看where used list。选中你的CDS view名字,或者字段名,查看where used list.避免改了对其他对象有影响。
查看active annotations,活动的注释:
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):如果原来的字段已经是补充后的长度了,就不会再补充了 |
这里有延伸一个,concat_with_space是中间加了四个空格。但是如果我想连接两个字段,这两个字段的长度不固定,但是最后得到一个固定长度的值怎么办呢?
6.4 Numeric 功能/数学计算
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)上。不然会报错。
举个例子:
7. Annotations 注释
简单来说注释就是来丰富这个CDS view的功能的。
这些注释要被不同的framework来编译。在运行的时候可能通过SADL,BOPF,或者其他的Analytics啊,Enterprise Search这些framework来编译。
7.1 注释的类型
view 注释,就是你还没开始编辑这个view的时候,抬头的那些,对应到DDIC里的view的名字和描述。
元素注释,对特定字段的注释。
扩展注释,当你去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 怎么加注释
下一篇。。。