CDS Core Data Services S4 CDS view--1

news2024/11/24 6:34:27

下一代的数据库视图。比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 怎么加注释

下一篇。。。

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【程序】基于matlab使用线性 FM 脉冲波形拉伸处理进行距离估计

一、前言 此示例展示了如何在使用线性 FM 脉冲波形的雷达系统中使用拉伸处理来估计目标的范围。 二、介绍 线性FM波形是现代雷达系统中的热门选择,因为它可以通过扫描宽带宽来实现高范围分辨率。然而,当带宽达到数百兆赫甚至千兆赫兹时,在数字…

【C进阶】文件操作(下)(详解--适合初学者入门)

目录 补充的知识点:> 标准流 FILE型 fopen(打开文件) fclose(关闭文件) 5.文件的随机读写💻 5.1 fwrite📂 5.2fread📂 5.3fseek📂 5.4 ftell📂 5.5 rewind📂 6.文本文件和二进制文件💻 7.文件…

如何做好网站建设定制开发

随着互联网的发展,如今的网站建设技术越来越先进,所以在网站建设定制开发中就出现了很多的模版,如:企业类型、产品信息、品牌介绍等。当然网站建设定制开发不是说只要模版就行了,对于网站建设而言,模版只是…

【送书福利-第八期】《硅基物语.AI大爆炸: ChatGPT→AIGC→GPT-X→AGI进化→魔法时代→人类未来》

大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我! 本文目录 一、前言二、内容介绍三、作者介…

如何进行网站建设定制开发

如今,由于互联网的迅速发展,市场竞争越来越激烈,企业想要在市场中保持竞争力,就必须要有自己的品牌形象。而网站建设则是品牌建设的重要组成部分,一个好的网站能够有效提升企业品牌形象,提高客户满意度和忠…

Linux LNMP(Linux NGINX MySQL PHP)

NGINX处理静态页面性能出色,但是动态页面几乎没有处理能力,比Apache还差 所以涉及动态页面的场合一般由PHP Python Java(后缀php,py,jsp)等处理 静态页面请求 客户端 -> nginx动态页面请求 …

【工具推荐】使用D3.js制作网页版网络拓扑图,可拖转可跳转链接

文章目录 一、有哪些工具可以生成带链接的网络拓扑图二、推荐使用D3.js三、写个 demo吧四、d3.js相关学习资料1.官方网站2.D3.js 教程3.D3.js 教程 一、有哪些工具可以生成带链接的网络拓扑图 有一些 JavaScript 库可以帮助你创建网络拓扑图,并且支持将每个节点作为…

chatgpt赋能python:Python函数相加:如何使用函数进行数学计算

Python函数相加:如何使用函数进行数学计算 在Python编程中,函数是一种非常有用的工具,可以将代码组织成可重复使用的块。函数可以接受输入并产生输出,也可以执行任何数量的操作。在本文中,我们将介绍如何使用Python函…

美创科技新一代 灾备一体化平台(DRCC v3.0)发布

随着数字化转型浪潮的迅速推进,关键基础设施的运行安全和业务连续性保证成为数字化建设的基石。 云计算时代带来的资产复杂性和灾备技术多态性,给灾备能力建设、灾备资源高效利用和日常灾备运营提出了新挑战。灾备建设如何“简单又弹性”、灾备运营如何“…

Cloudflare 的 Kafka 故事:在处理 1 万亿条消息的过程中吸取的经验教训

关键要点 Cloudflare在处理大量数据时使用Kafka集群,开发了一个通用的消息总线集群,以解耦团队、有效扩展和处理数万亿条消息。 为了解决事件驱动系统中无结构通信的问题,应建立一个强有力的契约:跨平台数据格式Protobuf帮助Cl…

【教程】路由器自动定时登录校园网

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 目录 前景提要 Python脚本 Shell脚本(推荐) 路由器挂机 实现效果 前景提要 小米路由R4A千兆版安装breedOpenWRT教程以及救砖(全脚本无需硬改)【教程】保姆级红米AX6000刷UBoot和OpenW…

【Shiro】使用org.crazycake依赖的ShiroConfig

前言 整个Shiro专题中,这个部分是最早需要开始看的,主要先了解ShiroConfig都有哪些东西;由于这个项目使用的redis依赖是org.crazycake的shiro-redis,与我后面所用的不同,所以该部分只是简单的梳理了一下。 PS&#xf…

Hadoop高可用集群

HA高可用集群 HA介绍 什么是HA HA: High Availability,高可用集群,指的是集群7*24小时不间断服务。 为什么需要HA 在HDFS中,有NameNode、DataNode和SecondaryNameNode角色的分布,客户端所有的操作都是要与NameNode交互的&#xff…

PG数据库提示: FATAL: sorry, too many clients already

目录 场景: idea启动提示如下错误 翻译: 连接数相关查询: 原因分析: 解决方法: 场景: idea启动提示如下错误 org.postgresql.util.PSQLException: FATAL: sorry, too many clients alreadyat org.pos…

运维小白必学篇之基础篇第四集:vim文本编辑器实验

vim文本编辑器实验 1、创建a.txt文件,并复制到/tmp/file/目录下 2、创建1.txt文件的软链接文件11.txt 3、移动a.txt文件到/mnt目录下并改名为abc.txt 4、创建d1、d2目录,并在d1目录中创建文件a1、a2 5、删除d1目录和d2目录 6、查看/etc/man_db.conf文件的…

DPCNN:深度金字塔 CNN 文本分类网络

DPCNN(Deep Pyramid CNN),是2017年腾讯AI-Lab提出的一种用于文本分类的网络,可以称之为"深度金字塔卷积神经网络"。 论文:Deep Pyramid Convolutional Neural Networks for Text Categorization 在之前的博…

运维小白必学篇之基础篇第五集:用户和组实验

用户和组实验 实验者:胡 阳 1、创建u1用户,指定UID为1050,并为该用户设置密码 2、创建u2用户,设置其不能登录操作系统 3、创建u3用户,指定其家目录为/mnt/u3 4、将u1用户改名为s1 5、创建用户u1,指定其UID…

为什么企业都需要一个ERP系统?对公司管理和业务增长都太重要了

什么是ERP系统? ERP(Enterprise Resource Planning,企业资源计划)系统是一种应用软件,它通过集成管理企业内部系统和外部合作伙伴系统的各种业务过程,来实现企业资源的最优化配置和利用。ERP系统涵盖了企业…

VMware vSphere 8.0 Update 1a 正式版发布 - 企业级工作负载平台

VMware vSphere 8.0 Update 1a 正式版发布 - 企业级工作负载平台 ESXi 8.0 U1 & vCenter Server 8.0 U1 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u1/,查看最新版。原创作品,转载请保留出处。 作者主页:sy…

基于java SpringBoot和Vue uniapp的校园信息交流小程序

随着信息社会的网络化和计算机科学的广泛普及和迅速普及应用,具有综合智能的我国校园信息教育网络已成为推动中小学科学教育及其实践科学发展的信息技术手段。迅速推进了信息化改革,改善了高校信息交流的网络环境,提高了信息教育平台的管理水…