说一说ABAP CDS View的发展历史与特性

news2024/12/28 19:47:03

1. 背景

随着SAP Fiori应用程序的兴起,SAP领域的小伙伴接触和使用ABAP CDS View的机会也是越来越多。今天,让我们花些时间,一起在了解下这项技术的设计初衷和发展历史。

2. 设计初衷

说起ABAP CDS View,就不得不提及SAP HANA。SAP HANA引入了内存计算技术,这让ABAP开发范式发生了变化。

传统的ABAP开发,SAP系统的数据库可以是anyDB, 与数据库的交互往往是最耗时的。因而,ABAP开发者的处理方式更多的是,先从数据库获取数据,然后在应用层加工处理数据。

但HANA内存计算的能力,让我们有可能将数据处理逻辑下沉,也即在获取数据时,就让HANA处理好数据。

在这里插入图片描述

ABAP CDS View就是在SAP HANA数据库推出后的几年中逐渐发展起来的,它的设计初衷就是为了充分利用SAP HANA数据库的能力,通过提供了一种新的数据定义和访问语言,使得数据处理可以在数据库层面进行,从而提高整体数据访问的性能和效率。

3. 语言集

ABAP CDS是一种数据定义和查询语言,它主要由以下几种构成语言组成:

  • DDL(Data Definition Language):用于定义数据模型,包括表、视图等,它是原生SQL的扩展,可以在更高的语义级别上建模和检索数据。
  • DCL(Data Control Language):用于定义数据访问控制,包括权限控制等,并且集成了SAP传统权限对象的技术。
  • QDL(Query Definition Language):用于定义数据查询,包括选择、排序、过滤等,这可以让我们在ABAP程序中通过Open SQL来直接访问CDS提供的数据。

4. 特性

ABAP CDS 提供了一系列的基础特性,使得开发者可以更高效地定义和访问数据,包括:

  • 数据模型定义:ABAP CDS允许开发者定义更复杂的数据模型,包括表、视图、关联等。
  • 参数化视图:ABAP CDS允许开发者定义参数化视图,使得视图可以根据参数的不同返回不同的结果。
  • 关联(Association)和路径表达式:ABAP CDS支持关联和路径表达式,使得开发者可以方便地访问关联实体的数据。
  • 元数据注解(Annotation):ABAP CDS支持在数据模型中定义元数据注解,如字段标签、搜索帮助等。
  • 表达式和函数:ABAP CDS支持各种表达式和函数,包括算术表达式、字符串函数、日期函数等。
  • 扩展性:ABAP CDS支持视图的扩展,使得开发者可以在不修改原始视图的情况下添加新的字段或关联。
  • 访问控制:ABAP CDS支持数据访问控制,可以定义谁可以访问哪些数据。
  • OData服务发布:ABAP CDS可以直接发布为OData服务,供其他应用程序访问。

5. 基础语法和演变(SQL View vs. CDS View Entity)

在AS ABAP 7.57之前,我们可以通过ABAP CDS的DDL语言直接定义发布两个对象,如下例:

@AbapCatalog.sqlViewName: 'ZDEMO_CDS_SQL'
define view ZDEMO_CDS_DDL
  as select from sbook
{
  carrid,
  connid
}

其中,@AbapCatalog.sqlViewName: ‘ZDEMO_CDS_SQL’ 指定了数据库SQL View的名字,在CDS View激活时,会在数据库层生成对应的SQL View (SE11可见)。
define view ZDEMO_CDS_DDL是定义的CDS View Entity的名字(SE11不可见)。

  • SQL View是数据字典中的一个对象,它是一个真实数据库的对象,但不含有任何额外的语义信息(Semantics)。
  • CDS View Entity并不会存在于数据字典中,它不是一个数据库对象,它可以看做是一个ABAP的数据类型,并含有额外的语义信息(Annotations)。

这种方式可以看做是一种技术上的过渡,随着CDS技术的发展,用define view的方式去创建CDS View Entity已经不再推荐,并且在AS ABAP 7.57后已经完全废弃。

目前,推荐的方式是,直接用关键字define view entity去创建CDS View,而无需去生成数据字典中对应的SQL View,示例如下:

@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Demo View'
define view entity ZDEMO_CDS_DDL
  as select from sbook
{
  carrid,
  connid
}

这种方式,更加的简洁高效,也更符合CDS技术的初衷。

6. 注解(Annotations)

注解是ABAP CDS的一个重要特性,它设计初衷是为了添加额外的语义信息到CDS实体,从而使得这些实体可以更好地被各种应用程序和服务消费,例如被ABAP运行时环境、OData服务、Fiori应用等消费。

ABAP CDS的Annotations主要分为以下几种:

  • 元数据扩展Annotations:用于添加额外的元数据到CDS实体,如字段标签、搜索帮助等。
  • UI Annotations:用于定义CDS实体在UI(如Fiori应用)中的显示方式,如字段顺序、字段可见性等。
  • OData Annotations:用于定义CDS实体在OData服务中的表现,如实体集名称、导航属性等。
  • 语义Annotations:用于定义CDS实体的业务语义,如度量单位、货币代码等。

以下是一个使用Annotations的ABAP CDS视图示例:


@AbapCatalog.sqlViewName: 'ZCDS_VIEW'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS View Example'
@OData.publish: true
define view ZCds_View as select from sflight as flight
{
  @UI.lineItem: { position: 10 }
  flight.carrid as AirlineCode,

  @UI.lineItem: { position: 20 }
  flight.connid as ConnectionNumber,

  @UI.lineItem: { position: 30 }
  flight.fldate as FlightDate,

  @UI.lineItem: { position: 40 }
  flight.price as FlightPrice
}

在这个示例中,我们定义了一个名为ZCds_View的CDS视图,并使用了多个Annotations。
@AbapCatalog.sqlViewName@AbapCatalog.compiler.compareFilter@AccessControl.authorizationCheck@EndUserText.label是元数据扩展Annotations,它们分别定义了SQL视图名称、编译器比较过滤器、授权检查和标签。
@OData.publish是OData Annotation,它定义了这个视图应该被发布为OData服务。
@UI.lineItem是UI Annotation,它定义了各个字段在UI中的显示位置。

7. 其它方面

ABAP CDS 技术有着广泛的应用场景,在此就不再过多展开,有时间我会继续整理和总结。

8. 小结

本文介绍了ABAP CDS的发展历史和主要特性,有助于更好地理解这项技术。

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

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

相关文章

从零开始了解GPT-4o模型:它是如何工作的?

人工智能(AI)技术正以惊人的速度发展,其中最引人注目的是OpenAI发布的GPT-4o模型。作为GPT系列的新成员,GPT-4o在多模态输入处理和响应速度上取得了重大进展。本文将深入探讨GPT-4o的工作原理,帮助您全面了解这一尖端A…

2、数据库模型图、er图

关系 user和administarators是多对一的关系 user和order是一对多的关系 shipped和order是多对一的关系 order和books是多对多的关系 leavewords和order是一对一的关系 stock和books是一对多的关系 Chens 数据库表示法——ER图 Crows Foot数据库表示法——数据库模型图 Navicat表…

【实战教程】如何使用JMeter来轻松测试WebSocket接口?

1、websocket接口原理 打开网页:从http协议,升级到websocket协议,请求建立websocket连接服务器返回建立成功成功客户端向服务端发送匹配请求服务端选择一个客服上线服务器返回客服id客户端向服务器发送消息服务器推送消息给指定的客服服务器…

经典神经网络(13)GPT-1、GPT-2原理及nanoGPT源码分析(GPT-2)

经典神经网络(13)GPT-1、GPT-2原理及nanoGPT源码分析(GPT-2) 2022 年 11 月,ChatGPT 成功面世,成为历史上用户增长最快的消费者应用。与 Google、FaceBook等公司不同,OpenAI 从初代模型 GPT-1 开始,始终贯彻只有解码器&#xff0…

Vue-cli搭建项目----基础版

什么是Vue-cli 全称:Vue command line interface 是一个用于快速搭建Vue.js项目的标准工具,他简化了Vue.js应用的创建和管理过程,通过命令工具帮助开发者快速生成,配置和管理Vue项目. 主要功能 同一的目录结构本地调试热部署单元测试集成打包上线 具体操作 第一步创建项目:…

STL-迭代器

1.迭代器 1.1正向迭代器 正向迭代器是用一个类封装的,迭代器类。例如:在vector,string中的迭代器就相当于一个指针,在list类中用一个类来封装一个节点,实质上也还是一个指针,迭代器就相当于指向一个节点的…

Ueditor中集成135编辑器

一、背景 在资讯项目平台运营过程中,资讯需要排版,一般都是在135编辑器排好以后,复制到平台中UEditor编辑器中,所以,他们建议集成一下135哈 二、了解135编辑器 开始调研了解135编辑器,发现人家就支持集成…

系统架构师考点--系统配置与性能评价

大家好。今天我们来总结一下系统配置与性能评价的考点内容,这一部分一般是出在上午场的选择题中,占1-2分左右。 一、性能指标 计算机 对计算机评价的主要性能指标有:时钟频率(主频);运算速度;运算精度内存的存储容量…

通达信机构买卖抓牛指标公式源码

通达信机构买卖抓牛指标公式源码&#xff1a; X_1:V/CLOSE/2; X_2:SUM(IF(X_1>100 AND CLOSE>REF(CLOSE,1),X_1,0),0); X_3:SUM(IF(X_1>100 AND CLOSE<REF(CLOSE,1),X_1,0),0); X_4:SUM(IF(X_1<100 AND CLOSE>REF(CLOSE,1),X_1,0),0); X_5:SUM(IF(X_1&l…

涉案财物管理系统|DW-S405系统实现涉案财物科学化管理

随着社会的不断发展&#xff0c;犯罪形式日益复杂&#xff0c;涉案财物的种类和数量也不断增加。传统的涉案财物管理方式已经无法满足现代执法办案的需求。因此&#xff0c;建立一套科学、高效、规范的警用涉案财物管理系统成为公安机关亟待解决的问题。 涉案财物管理系统DW-S…

sheng的学习笔记-AI-K均值算法

ai目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 需要学习前置知识&#xff1a;聚类&#xff0c;可参考 sheng的学习笔记-聚类(Clustering)-CSDN博客 目录 什么是k均值算法 流程 伪代码 数据集 伪代码 代码解释 划分示意图 优化目标 随机初始化 选择聚类数…

快来看,错过了今天就要设置为vip文章了----openEuler:智能算力时代的数字基础设施底座

会议主题&#xff1a;openEuler2024全球发展展望与战略规划 OpenEuler2024项目在2024年成功推出了多个长期支持&#xff08;LTS&#xff09;版本&#xff0c;标志着其在智能技术领域的全新篇章&#xff0c;并致力于构建全球性的开源新生态。以下是该项目的主要内容和成就概览&a…

ARM裸机:地址映射

S5PV210的地址映射详解 什么是地址映射&#xff1f; S5PV210属于ARM Cortex-A8架构&#xff0c;32位CPU&#xff0c;CPU设计时就有32根地址线&32根数据线。 32根地址线决定了CPU的地址空间为4G&#xff0c;那么这4G空间如何分配使用&#xff1f;这个问题就是内存映射问题。…

运算放大器输入、输出、单电源和轨到轨问题

单电源运算放大器问题 由于市场需求&#xff0c;单电源供电已成为一项日益重要的要求。汽车、机顶盒、照相机/摄像机、PC和笔记本电脑应用要求IC供应商提供各种采用单电源轨供电&#xff0c;而性能则与双电源器件相同的线性器件。功耗现已成为线路或电池供电系统的关键参数&am…

meizu M10 魅蓝 10 mblu10 root 解锁 安装LSPosed框架 紫光展锐改串 AT命令 一键新机 改机软件 硬改 改参数

meizu M10 魅蓝 10 mblu10 root 解锁 安装LSPosed框架 紫光展锐改串 AT命令 一键新机 改机软件 硬改 改参数 ro.system.build.version.release11 ro.system.build.version.release_or_codename11 ro.system.build.version.sdk30 ro.system.custom.versionAndroid_M01 ro.prod…

rk3568 OpenHarmony 串口uart与电脑通讯开发案例

一、需求描述&#xff1a; rk3568开发板运行OpenHarmony4.0&#xff0c;通过开发板上的uart串口与电脑进行通讯&#xff0c;相互收发字符串。 二、案例展示 1、开发环境&#xff1a; &#xff08;1&#xff09;rk3568开发板 &#xff08;2&#xff09;系统&#xff1a;OpenHar…

桃园三结义 | 第1集 | 三人一条心,黄土变成金,有你带着俺,大事定能成功啊!| 正所谓择木之禽,得其良木,择主之臣,得遇明主 | 三国演义 | 群雄逐鹿

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f4cc;这篇博客是毛毛张结合三国演义原著分享三国演义文学剧本中的经典台词和语句&#xff0c;本篇分享的是《三国演义》第Ⅰ部分《群雄逐鹿》的第1️⃣集《桃…

薄冰英语语法学习--名词2-格

名词后面 s&#xff0c;代表后面这个东西属于前面的。 比如toms book&#xff0c;汤姆的书。 末尾是s&#xff0c;那么直接在最后加就行了。比如boys&#xff0c;男孩们的 表示几个词共同 的所有关系在最后一个词的词尾加 sMary and Toms books 玛丽和汤姆共有的书表示几个词…

风水研究会官网源码系统-可展示自己的领域内容-商品售卖等

一款用于展示风水行业&#xff0c;周易测算行业&#xff0c;玄学行业的系统&#xff0c;并支持售卖自己的商品。 整洁大气&#xff0c;非常漂亮&#xff0c;前端内容均可通过后台修改。 大致功能&#xff1a; 支持前端内容通过后端自定义支持开启关闭会员功能&#xff0c;会…

基于PHP的初中数学题库管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的初中数学题库管理系统 一 介绍 此初中数学题库管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;系统角色分为学生&#xff0c;教师和管理员。(附带参考设计文档) 技术栈&#xff1a;phpmysqlphpstudyvscode 二 功能 …