ABAP CDS-介绍(ABAP CDS视图)

news2024/9/27 5:52:47

目录

前言

架构概述

CDS版本

SAP平台CDS的可用性

CDS其他的好处

后续

参考

前言

文章翻译自Tushar Sharma的文章,转载请注明原作者和译者!


在SAP发展到SAP HANA版本之后,SAP内部的技术正在快速地变化,SAP开发业务应用程序的方式已经发生了范式转变(根本性改变)。 但经久不变的法则是:尽你可能的去获取数据库操作的最优性能。 几个月前,当我开始了解学习ABAP CDS视图时,我不得不搜索大量来自不同作者的博客和页面,驳杂且费时费力。现在,我想为像我这样开始学习ABAP CDS视图的初学者发布一个博客系列,帮助他们入门。 Let’s Start !! # 介绍 数据模型是应用程序开发的基石。它们为跨系统定义和格式化数据库内容提供了一种标准化方法,使不同的应用程序能够共享相同的数据——降低开发成本,加快上线时间,并提高质量和性能。 那些熟悉ABAP领域应用程序开发的人对SAP NetWeaver Application Server AS ABAP中包含的传统数据建模工具应该并不陌生——特别是存储了对象定义的ABAP数据字典(DDIC),例如abap程序中用到的数据库表和视图。而随后出现了SAP HANA和将数据密集型逻辑下推到数据库层的新范式。 虚拟数据模型(VDM)的概念是几年前在HANA Live中引入的,SAP HANA Live是一个在套件表之上的虚拟数据模型,它使用被称为计算视图的本地SAP HANA SQL视图进行实时操作报告。 这带来了一些挑战:

  • 它没有正确地支持层次结构。层次结构帮助企业通过不同的层以树形结构分析数据,并具有向下钻取的功能。例如,时间层次结构由诸如财政年度、财政季度、财政月份等级别组成。

  • 一个高质量的数据模型应该为数据提供单一的定义和格式。它应该是清晰的、明确的、可重用的、灵活的,甚至是可扩展的数据模型。

  • 由于HANA Live虚拟数据模型是在HANA数据库层定义的,这导致用于事务处理的业务套件和用于操作报告的HANA数据库之间存在安全角色的重复。

现在我们有一些问题要思考:

1、如何捕获数据库中数据模型的语义,以便模型可以被不同的用户轻松重用,例如OData客户端和OLAP工具?

2、你如何扩展元模型来服务你的应用程序?

3、你说的这些不可能。

也许吧,如果我们没有核心数据服务(CDS)的话。

’‘Core Data Services to build design-time data-persistence models’'

“构建设计阶段数据持久性模型的核心数据服务(CDS)”

它是一个基础结构,数据库开发人员可以使用它来创建应用程序服务向UI客户端公开的底层(持久)数据模型。[链接]

为了利用SAP HANA进行应用程序开发,SAP引入了一个新的基础数据建模,称为核心数据服务(CDS)。使用CDS,数据模型是在数据库服务器上定义和使用的,而不是在应用程序服务器上。CDS还提供了超越传统数据建模工具的功能,包括对概念建模和关系定义、内置功能和扩展的支持。最初,CDS仅在SAP HANA的设计时和运行时环境中可用。现在,CDS概念在SAP NetWeaver中作为ABAP也得到了充分的实现,使开发人员能够在将代码执行下推到数据库的同时,使用ABAP开发工具在ABAP层工作。

CDS简化和统一了定义和使用数据模型的方式,不管你用的是那种消费技术。从技术上讲,它是对SQL的增强,为您提供了一种数据定义语言(DDL),用于定义富语义数据库表/视图(CDS实体)和数据库中的用户定义类型。包括:

  • 用于数据模型中的计算和查询的表达式

  • 概念层次上的关联,在查询中使用简单的路径表达式代替连接

  • 使用附加的(domain specific特殊域)元数据来丰富数据模型的注释。[元数据是“描述数据的数据”。元数据可以为数据说明其元素或属性(名称、大小、数据类型等),或结构(长度、字段、数据列),或其相关数据(位于何处、如何联系、拥有者)。]

ABAP和HANA平台都支持CDS !

事实上,在我看来CDS是SAP近年来在数据建模领域最野心勃勃,最令人兴奋的发展。你终于可以以相同的方式(语法、行为等)定义和使用数据模型,不管是在ABAP平台还是在HANA平台。当我想到CDS时,脑海中总会出现这样一句话:“一个数据模型可以统治所有的数据”。

除此之外,Horst Keller的博客描述了两种不同风格的CDS。

Core Data Services – One Concept, Two Flavors

在浏览了上述博客之后,我们了解到CDS可以以两种不同的方式编写,并使用SAP 在NetWeaver AS ABAP 7.4 SP5版本中为了使ABAP开发人员能够利用HANA功能而引入的“代码下推”(Code Pushdown)技术。在代码下推技术中,所有的计算都在数据库层而不是应用层执行,这使得数据能够快速地检索,减少应用程序的执行量。

架构概述

CDS的架构如下所示:

  1. 数据库层——这一层可以配置大多数流行的数据库,如Oracle, SAP HANA等。但为了得到最好的效果,推荐使用SAP HANA。

  1. 应用层——这一层包含ABAP Backend 和 SAP Gateway,使用RFC调用进行集成。

  1. 表示层——这一层包含SAP Fiori用户界面,用于向最终用户公开应用程序。

CDS版本

下面是关于ABAP特定版本的CDS功能变更的概述。

详细可参考-Feature Matrix

序号

版本

变化

1

In ABAP 7.40, SP05

引入CDS视图

2

In ABAP 7.40, SP08

CDS注释

带有参数的CDS视图

CDS视图增强

表达式和函数

关联的连接类型

带有筛选条件的路径表达式

根据固定的域值进行检查

3

In ABAP 7.40, SP10

CDS的访问控制

4

In ABAP 7.50, SP00

CDS表函数

会话变量

带有输入参数的CDS视图

输入参数注释

关键字段

评估注释

关联发布

扩展

5

In ABAP 7.51, SP00

集团处理

交叉连接

更全面的注释

更多的变化可以自行查阅官方文档

SAP平台CDS的可用性

  1. SAP NetWeaver 7.50, SP01, or higher.

  1. SAP NetWeaver 7.4 SP05

  1. SAP HANA SPS6

  1. SAP Business Suite EHP7 (Suite on HANA)

  1. S/4HANA

  1. SAP Business Warehouse 7.3

CDS其他的好处

  1. 富语义数据模型:实体关系模型,本质上是声明性的,非常接近概念的概念。领域特定语言(DDL、QL、DCL)。陈述性的,接近概念思维的。

  1. CDS完全基于SQL:任何“标准SQL”特性都可以直接使用,比如连接、内建函数等。

  1. 完全兼容任何数据库:CDS是Open SQL视图中生成到管理的,并集成到SAP HANA层。所有主要数据库都支持这些视图。

  1. 支持注释:CDS语法支持特定领域的注释,可以被其他组件轻松评估,比如UI、analytics和OData服务。

	@AnalyticsDetails.aggregrationBehaviour
	SUM()
	Substring()          [SQL functions]
123
  1. 关联:视图之上的视图的简化定义。沿着关系导航的路径表达式。

  1. 可扩展性:我们可以使用将自动添加到CDS视图及其使用层次结构中的字段来扩展sap定义的CDS视图。
    在模型级别上扩展
    通过注释在元模型级别上

CDS实体和它们的元数据是可扩展的,并且最佳地集成到ABAP数据字典和ABAP语言中。

后续

  • ABAP CDS-Part 1(ABAP CDS实体)

  • ABAP CDS-Part 2(CDS视图类型)

  • ABAP CDS-Part 3(虚拟数据模型类型)

参考

  • ABAP CDS Development Guide

  • Core Data Services- Overview & Concepts

  • SAP Community Wiki – Core Data Services

  • New Data Modeling Features in SAP NW ABAP 7.4 SP5

  • Core Data Services [CDS] in SAP S/4 HANA

  • ABAP CDS Feature Matrix

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

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

相关文章

CUDA编程笔记(8)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言原子函数完全在GPU中归约性能比较总结前言 原子函数的合理使用 原子函数 在cuda里,一个线程的原子操作可以在不受其他线程的任何操作的影响下完成对…

快!用Vim

文章目录简介基操移动删改查搜索替换多文件操作text object赋值粘贴macro补全配色自定义配置映射插件常用插件gopython浏览补全格式化gitTmuxneovim简介 在 Linux 平台使用 Vim 编辑器,成为NB Vimer安装 vim 就不介绍了 基操 三种模式 inserta: append i: inser…

ESP-C3入门6. 使用UART串口

ESP-C3入门6. 使用UART串口一、简介二、UART使用的一般步骤三、使用的API1. uart_config_t结构体和设置参数函数uart_param_config()2. 专用函数设置参数3. 设置通信管脚uart_set_pin()4. 安装驱动程序uart_driver_install()5. 运行UART通信 uart_write_bytes()和uart_read_byt…

Spring Batch 批处理-执行上下文

引言 接着上篇:Spring Batch 批处理-作业监听器,了解作业监听器后,本篇就来了解一下Spring Batch执行上下文,来看看Spring Batch 如何在作业与步骤间进行数据共享。 作业与步骤上下文 语文中有个词叫上下文,比如&am…

设置mysql远程链接

一、 进入mysql数据库 mysql -uroot –p密码 二、 创建用户进行远程链接 Mysql>grant all privileges on *.* to duan%identified by 111111 with grant option; ‘duan’:用户名 ‘%’:表示所有主机都可以登录,如果‘ip’表示该主机可…

[GXYCTF2019]luck_guy1题解

无论风暴把我带到什么样的岸边,我都将以主人的身份上岸。 ——贺拉斯 目录 1.查壳 2.静态分析 分析信息 猜测 3.wp 1.查壳 x86-64 拖入64位IDA 2.静态分析 找到main函数,按下F5反编译 int __cdecl main(int argc, const char **argv, const cha…

Python Windows Apache部署Django项目运行环境

目录 一、安装Apache服务器 1、在官网http://httpd.apache.org/download.cgi或网上搜索下载zip压缩包 2、Apache相关配置 3、创建Apache服务器 解决报错AH00369: Failed to open the Windows service manager, perhaps you forgot to log in as Adminstrator? 4、启动ap…

【每周Java技术】2023.01.26 周四 到 01.29 周日

文章目录一、01.26 周四 大年初五1.1)Python的一道算法题目1.1.1) 题目1.1.2) 解答1.1.3) 知识点一、01.26 周四 大年初五 1.1)Python的一道算法题目 1.1.1) 题目 2437. 有效时间的数目 给你一个长度为 5 的字符串 time ,表示一个电子时钟…

产线工控设备安全经验分享

工控设备安全现状 工业控制系统是支撑国民经济的重要设施,是工业领域的神经中枢。现在工业控制系统已经广泛应用于电力、通信、化工、交通、航天等工业领域,支撑起国计民生的关键基础设施。 随着传统的工业转型,数字化、网络化和智能化的工…

机器学习算法竞赛实战--3,数据探索

数据挖掘是竞赛的核心模块之一,贯彻竞赛始终也是很多竞赛胜利的关键那么数据探索又是什么呢?可以解决哪些问题?首先应该明确3点,即如何确保自己准备好竞赛使用的算法模型如何为数据集选择最合适的算法如何定义可用于算法模型的特征…

安装DevStack稳定版本zed

STEP1: 创建stack用户(一定要!) sudo useradd -s /bin/bash -d /opt/stack -m stack sudo chmod x /opt/stack echo "stack ALL(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack sudo -u stack -i //用stack用户登陆 STEP2: git clone devsta…

SAP中物料价格改变导致的库存价值变动业务分析

基于审计的需求要看看物料在标准成本价格变更前后的库存成本变化情况。找了下资料,需要用到 CKMPCSEARCH这个事务,相当于是一个用于价格修改凭证查询的事务。但试了一下在本公司的系统中并没有从搜索到其菜单位置。 尝试直接输入Tcode后,是可…

CSRF 伪造跨域请求

文章目录一、什么是伪造跨域请求二、攻击方式三、防御措施1、检查Referer字段2、添加校验token一、什么是伪造跨域请求 伪造跨域请求(英语:Cross-site request forgery),通常缩写为 CSRF, 是一种挟制用户在当前已登录…

IntelliJ IDEA 2021.2(Community Edition)安装阿里编码规约插件,亲测有效

1.背景阿里巴巴java开发手册不断完善并出了很多版本到目前2023年1月截止,已经出了黄山版,在文章最后有参考资料可根据需要下载;随着企业对项目质量的要求,对开发代码也有了更高的要求和规范,借助阿里巴巴编码规约插件&…

redis geo 没有迁移手工插入数据

1、docker ps |grep redis2、docker exec -it qinghai-sc-xining-redis-single/eadd4cc4eefe bin\sh --进入redis容器[rootlocalhost ~]# [rootlocalhost ~]# [rootlocalhost ~]# [rootlocalhost ~]# docker ps|grep rediseadd4cc4eefe redis "docker-entrypoint.s…"…

python 气体扩散,在 Python中用数值模拟研究气体扩散

在 Python 中,可以使用数值模拟来研究气体扩散。 模拟气体扩散需要解决两个问题:流体动力学方程(如 Navier-Stokes 方程)和扩散方程。 文章目录Python 代码模拟气体扩散计算并显示气体浓度的均值和标准差研究气体扩展的高级方法Py…

Word控件Spire.Doc 【Table】教程(7): 如何在C#中用表格替换word文档中的文本

Spire.Doc for .NET 是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

【金三银四系列】之Java基础面试(2023版)

Java基础面试题 一: Java基础 1: 简单说说Java中对象如何拷贝? 一、浅拷贝clone()如果对象中的所有数据域都是数值或者基本类型,使用clone()即可满足需求,如:Person p new Person();Person…

30天自制操作系统(Mac版)读书笔记(day9)

day7和day8都是鼠标和32位的操作,看起来都是理论,先略过。 检测内存块数量 使用中断去检测内存,把这个当成一个函数调用吧。这里面di寄存器给的地址就是结果存在的内存位置。 ComputeMemory:mov ebx, 0mov di, MemChkBuf .loop:mov e…

linux安装vnc服务

1、 如操作系统是最小化安装,那么需要安装GNOME桌面,安装参考:https://blog.csdn.net/carefree2005/article/details/119417234 2、 安装vnc-server yum -y install tigervnc-server3、 复制配置文件模板,将无关的内容清除 cat…