一、ABAP CDS 概述
ABAP Core Data Services (ABAP CDS) 是 CDS 概念在ABAP应用服务器(AS ABAP)的实现。 ABAP CDS 允许开发者在 AS ABAP 的标准数据库上定义语义数据模型,并支持使用行为模型的 ABAP RAP(ABAP RESTful Programming Model)。 ABAP CDS 中定义的数据模型的实体提供了比以前的 DDIC 数据库表和 ABAP 字典中定义的 DDIC 视图更强的访问功能,从而可以优化基于 ABAP SQL 的应用程序。 如果 AS ABAP 使用 SAP HANA 数据库,情况尤其如此,因为它的内存特性可以得到最佳利用。 ABAP RAP 既基于 ABAP CDS 中定义的数据模型,也基于对服务和行为建模的特殊 CDS 对象。
ABAP RESTful Programming Model
在CDS源代码中使用ABAP CDS提供的CDS DDL(数据定义)、CDS SDL(服务定义)、CDS BDL(行为定义)和CDS DCL(访问控制)以CDS对象的形式定义数据模型和行为模型。 CDS annotations可用于定义 CDS 对象的元数据。 使用 CDS 模式表示法 (CSN) 可以在 ABAP CDS 数据模型和不同平台上的数据模型之间进行数据交换。 CSN 是一种用于数据模型之间数据交换的数据格式,例如,它可用于在 ABAP CDS 和 HANA CDS 之间交换元数据。
CDS 注释
CDS 注释将元数据添加到 CDS 对象。注释可以在 DDL 源代码、SDL 源代码和 DCL 源代码中指定,并外包给元数据扩展。注释定义可用于将注释本身创建为 CDS 对象。注释定义规定了如何使用注释。 CDS 数据定义 CDS 数据定义是使用 DDL 源代码中的 ABAP CDS 的 CDS DDL 创建的。它们定义了以下 CDS 实体,这些实体可以作为 ABAP 程序中的数据类型访问,也可以作为读取 ABAP SQL 语句的数据源访问。 CDS 视图实体
使用 SQL 访问其他数据源,并可以使用注释以丰富语义的 CDS 实体。
CDS 投影视图
基于 CDS 视图和投影其元素子集的 CDS 实体。
CDS 表函数
在 AMDP 函数中实现的 CDS 实体。
CDS 层次结构
从数据源创建 SQL 层次结构的 CDS 实体。
CDS 自定义实体
手动实现运行时的数据模型的 CDS 实体。
CDS 抽象实体
仅描述类型属性且未实例化任何数据库对象的 CDS 实体。
基于 CDS DDIC 的视图(过时)
使用 SQL 访问其他数据源并可以使用注释在语义上进行丰富的 CDS 实体。这些实体在技术上基于字典对象,并从 7.55 版开始被不再基于字典对象的 CDS 视图实体所取代。 ABAP CDS 中的 CDS DDL 还包含用于增强 CDS 实体的语言元素。
CDS 调整对象
CDS 对象的 CDS 调整对象定义可以单独传输的技术设置和调整。
CDS RAP 对象
ABAP RAP的数据和行为模型是基于CDS实体和SDL源代码或BDL源代码中使用CDS SDL和CDS BDL创建的特殊CDS RAP对象:
CDS 服务定义:为业务服务公开 CDS 实体的 CDS RAP 对象。
CDS 行为定义:定义 RAP 业务对象 (RAP BO) 行为的 CDS RAP 对象。
CDS 访问控制
CDS 访问控制基于 CDS 角色,这些角色在 DCL 源代码的 CDS DCL 中定义。当访问分配有 CDS 角色的 CDS SQL 实体时,默认情况下会评估其他访问条件。 CDS 系统实体 CDS 系统实体是在 ABAP CDS 和 ABAP SQL 中常用的预定义 CDS 实体。
提示
CDS 对象是使用 CDS 源代码传输的。实际对象,如在 DDL 源代码中使用 CDS 数据定义定义的 CDS 实体,是在传输后通过在目标系统中激活而创建的。 CDS 源代码只能在基于 Eclipse 的 ABAP 开发工具 (ADT) 中进行编程。数据定义语言 (DDL)、服务定义语言 (SDL)、行为定义语言 (BDL) 和数据控制语言 (DCL) 有不同的编辑器。 ADT 文档描述了如何使用这些编辑器。 CDS 源代码也可以显示在 ABAP Workbench 的存储库浏览器中。
除了 ABAP CDS,HANA CDS 目前作为 CDS 概念的另一种变体存在。 HANA CDS 仅适用于 SAP HANA 数据库。 HANA CDS 中的实体是使用特定于 HANA 的工具(例如用于 SAP HANA 的 SAP Web IDE)开发的,而不是使用 ABAP 开发工具 (ADT)。
ABAP CDS(Core Data Services)作为一种数据建模语言,在 SAP 系统中占据着重要的地位。它为开发人员提供了一种强大的工具,用于定义和管理数据模型和服务。
ABAP CDS 的主要作用在于提供一种简单而高效的方式来定义数据结构、关联和业务逻辑,并且能够与数据库无缝集成。通过 ABAP CDS,开发人员可以创建适用于 SAP HANA 数据库以及其他 SAP 应用程序的数据模型和服务。
在 SAP 系统中,ABAP CDS 具有重要的地位。它不仅可以与 ABAP 程序和其他 SAP 技术进行集成,还为开发人员提供了更多的灵活性和功能。例如,开发人员可以利用 ABAP CDS 内置的各种 SQL 函数和表达式进行数据处理,提高数据处理的效率和准确性。
此外,ABAP CDS 还具有一些独特的优点。它可以利用 DDIC 语义进行高级数据模型定义,使得数据模型更加清晰、明确、可重用。同时,ABAP CDS 的表函数可以利用本地 SAP HANA 特性和功能,进一步提高数据处理的性能。
总之,ABAP CDS 是 SAP 系统中一种非常重要的数据建模语言,它为开发人员提供了强大的工具和功能,使得数据处理更加高效、准确和灵活。
链接:
https://learning.sap.com/learning-journeys/develop-sapui5-applications
复杂到浏览器看,这里面有一步步指导例子。好像需要账号~
https://developers.sap.com/tutorials/abap-dev-adt-create-cds-view..html
https://community.sap.com/t5/technology-blogs-by-members/abap-core-data-services-introduction-abap-cds-view/ba-p/13320992
ABAP 核心数据服务(CDS)框架的引入是为了更好地利用 SAP HANA 数据库的计算能力。该指南作为对 CDS 的介绍,此外,它还提供了如何在 SAP S/4HANA 中实现和运行基于 CDS 的应用程序的指导。
公众回复:ABAP CDS | S/4HANA 最佳实践指南
可以获取相关PDF。
https://www.cnblogs.com/fanjb/p/14034112.html
主要想分享下文档,下面内容可以忽略了。
二、CDS 的优点与语法
(一)优点解析
ABAP CDS 具有诸多显著优点。首先,利用 DDIC 语义进行高级数据模型定义,这使得开发人员能够更加清晰地构建数据结构,增强数据模型的可读性和可维护性。例如,在复杂的企业级应用中,可以通过 DDIC 语义准确地定义数据元素的类型、长度和约束条件,确保数据的一致性和准确性。
其次,内置各种 SQL 函数处理数据极大地提高了开发效率。像 SUM、AVG、MIN、MAX、COUNT 等聚合函数,能够快速对大量数据进行统计分析。以销售数据为例,通过 SUM 函数可以轻松计算出总销售额,为企业决策提供重要依据。同时,字符串函数如 CONCAT、SUBSTRING、REPLACE 等在处理文本数据时非常实用。比如,使用 REPLACE 函数可以快速替换字符串中的特定内容,方便数据的清洗和转换。
再者,ABAP CDS 的表函数利用本地 SAP HANA 特性和功能,进一步提升了数据处理性能。SAP HANA 的内存计算和列式存储等特性,使得数据查询和处理速度大幅提高。例如,在处理大规模数据的报表生成任务时,利用 ABAP CDS 与 SAP HANA 的结合,可以快速响应用户请求,提高用户体验。
(二)语法详解
1.数值函数:
1.绝对值函数 ABS(arg1),例如 ABS(-5) 的结果为 5。
2.除法函数 DIV(arg1, arg2),会根据参数的符号分配结果的符号,当 arg2 为 0 时会出现异常。
3.取余函数 MOD(arg1, arg2),如 MOD(10, 4) 的结果为 2。
2.字符串函数:
1.拼接字符函数 CONCAT(arg1, arg2),可以将两个字符串连接起来。
2.替换字符函数 REPLACE(arg1, arg2, arg3),例如将字符串 arg1 中的 arg2 全部替换为 arg3。
3.截取字符串函数 SUBSTRING(arg, pos, len),从 arg 字符串的 pos 位置开始取 len 个字符。
3.分支语句:
1.CASE 表达式类似于 SQL 中的 CASE 语句,有多种写法。如 CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE result3 END,或者 CASE arg WHEN 'A' THEN result1 WHEN 'B' THEN result2 ELSE result3 END,可以根据不同条件执行不同的逻辑。
2.IF 表达式用于执行简单的条件判断,如 IF condition THEN statement1 ELSE statement2 END。
4.语法演示:
1.汇总可以使用 sum 函数,如 sum(_m.stock_qty) as menge。
2.字符串截取可以通过 SUBSTRING 函数实现,例如取 a.prodh 从第一个字符到第五个字符的值,substring(a.prodh,1,5) as prodh2。
3.CASE 语句如 case _ekko.bsart when 'Z006' then _ekpo.menge * -1 when 'Z008' then _ekpo.menge * -1 else _ekpo.menge end as emenge。
4.除法计算可以使用 division 函数,如 division(A,B,3)表示 A / B 保留三位小数。
5.添加过滤条件可以使用 define view 语句结合 where 和 having 子句,如 define view zbv_stka_eb_ddl with parameters "条件 p_date : datum" as select from matdoc as _m inner join ZBV_MARA_CO as _a on _a.matnr = _m.matnr where _m.budat <= $parameters.p_date group by _m.werks having sum(_m.stock_qty) > 0。
三、CDS 的应用场景
(一)创建随机字符串
在 ABAP CDS 视图中创建随机字符串可以通过以下步骤实现。首先,在 ABAP 开发工具中打开相应的 ABAP CDS 视图文件。然后,在视图定义的字段列表中,添加一个新的字段来存储随机字符串,可以使用字符串类型的数据类型,如 CHAR 或 VARCHAR,并设置相应的长度和其他约束条件。在视图的逻辑部分,使用 ABAP 代码生成随机字符串,可以使用 ABAP 内置函数或自定义函数来实现。例如,可以使用随机数函数来生成随机的 ASCII 字符。完成视图的定义后,保存并激活 ABAP CDS 视图。
ABAP CDS 视图中创建随机字符串的应用场景广泛,如数据脱敏,可以保护敏感信息的安全性;数据生成,在测试环境中创建随机字符串可以用于模拟真实数据;测试数据,为测试提供多样化的数据。
(二)CDS VIEW WITH ASSOCIATION
ASSOCIATION 的应用场景是通过 Join 条件从多个表中获取数据的连接,但这些是“按需连接”,也就是说,它们只会在用户访问需要关联表的所需数据时被触发。由于 ASSOCIATION 是按需触发,当 Join 较多实际访问时用户只访问单个或者少数 Join 时,相比较传统方式可以高效率地完成 SQL。ASSOCIATION 的关联基数有[0 … 1 ](最多关联一个)、[ 1 … 1 ](只能一一对应关联)、[ 0 … n ](关联任意数量)、[ 1 … n ](至少关联一个)等。[ 1 … 1 ]和[ 1 … n ]保证了关联的主表始终至少有一条记录。
实现 CDS VIEW WITH ASSOCIATION 的方法如下:创建一个 CDS VIEW WITH ASSOCIATION。
(三)CDS 开发实例
以 SAP 汇率表 TCURR 的 CDS 开发实例可以很好地展示传统数据库视图和 ABAP CDS 视图的优缺点。
1、背景
SAP 汇率表,有效日期(GDATU)比较特殊,在实际使用时,需要利用转换例程,将其转换成正常的有效日期。在写 SQL 语句批量查询时,不太友好,考虑写一个视图,对其进行转换。
2、解决方案
(1)开发传统数据库视图
create view ZV_TCURR_BASE as select *, cast(99999999 - GDATU as char) as ZGDATU from TCURR;
优点:简单快速,无需激活,可以使用常规 sql 脚本语法编写;缺点:ZV_TCURR_BASE 为非 ABAP 对象,OPENSQL 无法使用,只能用于 NATIVESQL。
(2)开发 ABAP CDS 视图
贴入如下脚本,保存激活。
@AbapCatalog.sqlViewName: 'ZV_TCURR'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '汇率有效期转换'
define view ZV_TCURR_DDL as select kurst,fcurr,tcurr,gdatu,ukurs,ffact,tfact,@EndUserText.label: '有效日期' cast(left(cast((99999999 - cast(cast(gdatu as abap.numc(8)) as abap.int4)) as abap.char(11)),8) as abap.dats) as ZGDATU from tcurr。
在 SAP 中 SE11 可以查看到该对象。在 SAP 中 ABAP 中引用 SELECT * FROM ZV_TCURR UP TO 10 ROWS INTO TABLE @DATA(LT_TCURR).CL_DEMO_OUTPUT => DISPLAY( LT_TCURR ).
备注:代码检查,会报警告信息,建议使用“ZV_TCURR_DDL”。实测发现简单语句场景可以使用“ZV_TCURR”,复杂语句场景需要使用“ZV_TCURR_DDL”,否则会报错误消息。
优点:CDS 对象,ABAP OPENSQL 可以识别,在数据库也可以使用,通用性较强。缺点:需要使用 ABAP ADT 工具进行开发,需要符合 CDS 脚本语法规则。
(四)CDS VIEW Parameter 带参数实例
1、创建数据元素:定义要传输变量的数据元素。
2、定义 CDS VIEW:有两种引用变量的方法,一是使用$parameter 引入变量,二是使用:引入变量。
3、使用:在 ABAP 中调用带参数的 CDS VIEW。
(五)从表中消费 CDS
以物料主数据表为例,展示如何使用 WHERE 条件中的关联值从 ABAP SQL 消费 CDS。需求是从物料主数据表中按照选择屏幕的条件获取符合条件的数据。
CDS 代码完成后与 gui 里面的操作一致,先检查,没有报错后激活。执行方法是在主程序界面右键-》Run as-》ABAP Application。
ABAP CDS 部分语法中,把数据源选择为 SAP 中已经创建好的采购订单对应的 CDS,定义输出字段,可以直接从数据源的 association 中取出数据,而不需要知道表之间的关联关系。在 CDS 中使用 CASE 条件,对字段值进行判断运算等基本逻辑操作;使用 WHERE 条件,对数据进行排除操作;使用 CAST 语句更改字段类型。
注意:目前虽然 CDS 视图支持选择屏幕,但是只支持单值(parmaters),不支持多值,官方说法是会在不久的将来支持使用 selection-options。
四、CDS 教程与注解
(一)简单 CDS 创建和使用
5.安装并且添加 ABAP 的插件:
1.安装 eclipse 链接:https://blog.csdn.net/qq_45344586/article/details/123942685。
2.安装 ABAP 插件:https://jingyan.baidu.com/article/67508eb471dd5c9ccb1ce458.html。
3.注意点:eclipse 添加 ABAP 插件时候,去这里 https://tools.hana.ondemand.com/ 查看对应 eclipse 的对应版本插件链接(什么版本的 eclipse 就选什么版本的链接)。
6.创建数据定义:
1.可以在本地进行演示,如果不是本地包就需要创建个请求挂进去。
7.写好代码检查语法,然后激活:
@AbapCatalog.sqlViewName:'ZV_TEST1'/*DDL SQL 视图名称*/ @AbapCatalog.compiler.compareFilter:true @AbapCatalog.preserveKey:true @AccessControl.authorizationCheck:#CHECK @EndUserText.label:'做 CDS 的简单示例 1' define view ZCDS_DEMO1/*CDS 名称*/ with parameters /*cds view 的参数*/ p_ernam :ernam /*销售订单创建人*/ /*开始写 SQL 语句*/ as select from vbak inner join vbap on vbak.vbeln = vbap.vbeln /*小波浪要用点替代*/ { /*定义了 CDS view 中包含哪些字段*/ key vbak.vbeln,/*指定 CDS View 中哪些字段是 Key 字段*/ key vbap.posnr,/*把销售订单与行项目作为主键*/ vbak.ernam, vbap.matnr } where vbak.ernam =$parameters.p_ernam |
1.代码示例:
8.查看结果:
SELECT * FROM zv_test1( p_ernam ='LIMF') INTO TABLE @DATA(LT_ALV). cl_demo_output=\u003edisplay(LT_ALV).\"快速窗口显示 |
1.ZV_TEST1 是视图名称,如果有写参数,查询执行前就会要填写参数。
2.ABAP SELECT 使用就是使用这个了 ZCDS_DEMO1 是数据定义,在 gui 里面就是只能看看咯。
3.加深下理解,在 ABAP 程序的调用如下:
4.可以把 CDS 理解为 sql 储存过程,调用视图就是调用存储过程。
(二)注解详解
9.系统常量:
1.$session.client:SAP 客户端。
2.$session.system_date:系统时间,SY-DATUM。
3.$session.system_language:系统语言。
4.$session.user:当前用户。
10.ABAP 目录注解:
1.@AbapCatalog.sqlViewName:描述为 ABAP 词典中 CDS 数据库视图的名称,是一个最多 16 个字符的字符串,由字母数字和下划线组成,并以命名空间前缀开头。CDS 视图的每个定义都必须包含此注解,它定义了 ABAP 字典中 CDS 数据库视图的名称。
2.@AbapCatalog.compiler.compareFilter:定义 CDS 视图路径表达式中过滤条件的评估,可能的值为 true 或 false。当设置为 true 时,过滤条件被比较,如果它们匹配,关联的连接表达式只计算一次;设置为 false 时,将为每个过滤条件创建和评估单独的连接表达式。
11.访问控制注解:
1.@AccessControl.authorizationCheck:定义使用 Open SQL 访问 CDS 视图时的隐式访问控制,权限检查可能的值有 #CHECK、#NOT_REQUIRED 和 #NOT_ALLOWED。
2.CHECK:如果使用 Open SQL 访问视图,如果将 CDS 角色分配给视图,则隐式执行访问控制。如果视图没有角色,则会出现语法检查警告。
3.NOT_REQUIRED:与#CHECK 类似,但没有语法检查警告。
4.NOT_ALLOWED:不执行访问控制,这会在视图角色的 DCL 源代码中生成语法检查警告。
12.最终用户文本注解:
1.@EndUserText.label:定义 CDS 视图的可翻译短文本,用户看到的文本,可能的值为最多 40 个字符的字符串。
13.语义注解:
1.对于数据处理、分析和数据消费,核心引擎需要正确解释投影列表中使用的列。语义注解通知客户端有关数据类型的信息。
2.例如:
1.@Semantics.text:此注释标识一个人类可读的文本,它不一定依赖于语言,可能的值为 true 或 false。
2.@Semantics.url:此注释字段包含一个 URL,其 MIME 类型包含在引用的第二个字段中。
3.@Semantics.currencyCode:此注释标记包含货币代码的字段,可能的值为 true 或 false。
4.@Semantics.amount.currencyCode:此注释包含货币金额,引用字段中包含相应的货币代码。
五、CDS 是什么
(一)发展历程
ABAP CDS 是随着 SAP HANA 的推出而逐渐发展起来的。在 SAP HANA 引入内存计算技术后,ABAP 开发范式发生了变化。传统的 ABAP 开发中,数据库交互耗时较长,开发人员通常先从数据库获取数据,再在应用层加工处理。而 HANA 的内存计算能力使得数据处理逻辑可以下沉到数据库层。ABAP CDS 正是为了充分利用 SAP HANA 数据库的能力而诞生,它提供了一种新的数据定义和访问语言,让数据处理在数据库层面进行,提高了整体数据访问的性能和效率。
(二)架构
ABAP CDS 的架构主要分为三层。数据库层可以配置大多数流行的数据库,如 Oracle、SAP HANA 等,其中推荐使用 SAP HANA 以获得最佳效果。应用层包含 ABAP Backend 和 SAP Gateway,通过 RFC 调用进行集成。表示层则包含 SAP Fiori 用户界面,用于向最终用户公开应用程序。
(三)版本
ABAP CDS 在不同的 SAP 平台版本中有不同的功能变更。例如,SAP NetWeaver 7.50、SP01 及以上版本,SAP NetWeaver 7.4 SP05,SAP HANA SPS6,SAP Business Suite EHP7 (Suite on HANA),S/4HANA,SAP Business Warehouse 7.3 等平台都支持 CDS。
(四)好处
14.语义丰富的数据模型:ABAP CDS 提供实体关系模型,本质上是声明性的,非常接近概念的概念。它使用领域特定语言(DDL、QL、DCL),具有陈述性,接近概念思维。
15.完全基于 SQL:任何“标准 SQL”特性都可以直接使用,比如连接、内建函数等。
16.完全兼容任何数据库:CDS 是 Open SQL 视图中生成到管理的,并集成到 SAP HANA 层。
总之,ABAP CDS 是构建设计阶段数据持久性模型的核心基础设施,它简化和统一了定义和使用数据模型的方式,无论使用哪种消费技术,都能以相同的方式(语法、行为等)定义和使用数据模型,不管是在 ABAP 平台还是在 HANA 平台。
六、CDS 的特点
(一)设计初衷与语言集
ABAP CDS View 的设计初衷紧密围绕着充分利用 SAP HANA 数据库的强大能力。随着 SAP HANA 引入内存计算技术,传统的 ABAP 开发范式发生了重大变革。在过去,ABAP 系统的数据库交互往往是最耗时的环节,开发人员通常先从数据库获取数据,然后在应用层进行加工处理。然而,HANA 的内存计算能力打破了这一传统模式,使得数据处理逻辑能够下沉到数据库层。ABAP CDS View 应运而生,其目的就是为了充分发挥 SAP HANA 数据库的优势,通过提供一种新的数据定义和访问语言,实现数据处理在数据库层面进行,从而极大地提高整体数据访问的性能和效率。
ABAP CDS 主要由 DDL(Data Definition Language)、DCL(Data Control Language)和 QDL(Query Definition Language)组成的语言集。DDL 用于定义数据模型,包括表、视图等,它是原生 SQL 的扩展,能够在更高的语义级别上建模和检索数据。例如,开发人员可以使用 DDL 定义复杂的数据结构,为不同的业务需求创建合适的数据模型。DCL 则用于定义数据访问控制,包括权限控制等,并且集成了 SAP 传统权限对象的技术。通过 DCL,企业可以严格控制数据的访问权限,确保数据的安全性。QDL 用于定义数据查询,包括选择、排序、过滤等,这使得开发人员可以在 ABAP 程序中通过 Open SQL 来直接访问 CDS 提供的数据,极大地提高了数据查询的灵活性和效率。
(二)特性展示
17.数据模型定义:ABAP CDS 允许开发者定义更复杂的数据模型,包括表、视图、关联等。例如,在企业级应用中,可以通过 ABAP CDS 定义包含多个表关联的复杂视图,以便更方便地获取和分析数据。
18.参数化视图:ABAP CDS 允许开发者定义参数化视图,使得视图可以根据参数的不同返回不同的结果。这在实际应用中非常有用,比如根据不同的时间范围、部门或地区等参数,动态地生成不同的数据视图。
19.关联和路径表达式:ABAP CDS 支持关联和路径表达式,使得开发者可以方便地访问关联实体的数据。通过关联,可以在不同的实体之间建立起关系,从而实现更复杂的数据查询和分析。
20.元数据注解:ABAP CDS 支持在数据模型中定义元数据注解,如字段标签、搜索帮助等。这些注解可以为数据添加额外的语义信息,使得数据更易于理解和使用。
21.表达式和函数:ABAP CDS 支持各种表达式和函数,包括算术表达式、字符串函数、日期函数等。这些函数可以大大提高数据处理的效率和灵活性。例如,使用日期函数可以方便地处理日期相关的数据,字符串函数可以用于文本数据的处理。
22.扩展性:ABAP CDS 支持视图的扩展,使得开发者可以在不修改原始视图的情况下添加新的字段或关联。这为系统的升级和扩展提供了极大的便利。
23.访问控制:ABAP CDS 支持数据访问控制,可以定义谁可以访问哪些数据。通过访问控制,可以确保数据的安全性,防止未经授权的访问。
24.OData 服务发布:ABAP CDS 可以直接发布为 OData 服务,供其他应用程序访问。这使得 ABAP CDS 定义的数据模型可以很容易地与其他系统进行集成。
(三)基础语法和注解演变
在 AS ABAP 7.57 之前,ABAP CDS 的基础语法是通过 define view 方式创建 CDS View Entity,同时指定数据库 SQL View 的名字。例如,@AbapCatalog.sqlViewName: 'ZDEMO_CDS_SQL'指定了数据库 SQL View 的名字,在 CDS View 激活时,会在数据库层生成对应的 SQL View(SE11 可见)。而 define view ZDEMO_CDS_DDL 是定义的 CDS View Entity 的名字(SE11 不可见)。SQL View 是数据字典中的一个对象,它是一个真实数据库的对象,但不含有任何额外的语义信息。CDS View Entity 则含有额外的语义信息(Annotations)。
随着 CDS 技术的发展,在 AS ABAP 7.57 后,推荐的方式是直接用关键字 define view entity 去创建 CDS View,而无需去生成数据字典中对应的 SQL View。这种方式更加简洁高效,也更符合 CDS 技术的初衷。
注解在 ABAP CDS 中起着至关重要的作用。ABAP CDS 的 Annotations 主要分为元数据扩展 Annotations、UI Annotations、OData Annotations 和语义 Annotations 等几种。元数据扩展 Annotations 用于添加额外的元数据到 CDS 实体,如字段标签、搜索帮助等。UI Annotations 用于定义 CDS 实体在 UI(如 Fiori 应用)中的显示方式,如字段顺序、字段可见性等。OData Annotations 用于定义 CDS 实体在 OData 服务中的表现,如实体集名称、导航属性等。语义 Annotations 用于定义 CDS 实体的业务语义,如度量单位、货币代码等。这些注解使得 CDS 实体可以更好地被各种应用程序和服务消费,例如被 ABAP 运行时环境、OData 服务、Fiori 应用等消费。