用途
本技能为 SAP ABAP CDS(Core Data Services)提供参考,用于数据建模、视图开发与语义增强。适用场景包括:创建 ABAP CDS 视图或视图实体、定义关联与基数、添加 UI 或语义注解、实现 DCL 访问控制、处理货币/单位字段、排查 CDS 编译器错误,以及对比经典 CDS 视图与新版视图实体。
版本兼容性
本技能覆盖从 7.40 SP8 到 ABAP Cloud 的 CDS 特性,关键版本边界如下:
- CDS View(DEFINE VIEW):7.40 SP8 起可用
- CDS 关联、参数、内置函数:7.40 SP8 起可用
- CDS Table Functions(DEFINE TABLE FUNCTION):7.50 起可用
- CDS Access Control(DEFINE ROLE / pfcg_auth):7.40 SP8 起可用
- CDS Access Control(隐式求值):7.50 起可用
- 会话变量($session.user/client/system_language):7.40 SP8 起可用
- @Environment.systemField 注解:7.50 起可用
- UPPER/LOWER 函数:7.51 起可用
- $session.system_date:7.51 起可用
- CDS Metadata Extensions(ANNOTATE VIEW):7.55 起可用
- CDS 中的 Cross Join:7.51 起可用
- CDS View Entity(DEFINE VIEW ENTITY):7.55 起可用
- 新基数语法(to one/to many):7.57+ 起可用
在 7.40 系统上应使用 DEFINE VIEW(而非 DEFINE VIEW ENTITY)。CDS 表函数在 7.50 之前不可用。基础 DCL(带 pfcg_auth 的 DEFINE ROLE)从 7.40 SP08 起可用,但 ABAP SQL 中的隐式角色求值需要 7.50+。$session.user/client/system_language 从 7.40 SP08 起可用。templates/ 中的模板同时包含经典 CDS View 和 View Entity 两种变体。
主要内容
视图基础
视图类型包括 CDS View(DEFINE VIEW,生成数据库视图,7.4 SP8 起)和 CDS View Entity(DEFINE VIEW ENTITY,不生成数据库视图,7.55 起)。建议新开发使用 CDS View Entities。View Entity 省略 @AbapCatalog.sqlViewName,不生成 SQL 视图。
注解
核心注解包括 @AbapCatalog.sqlViewName(SQL 视图名,最长 16 字符)、@AbapCatalog.compiler.CompareFilter、@AccessControl.authorizationCheck(#NOT_REQUIRED、#CHECK、#MANDATORY、#NOT_ALLOWED)、@EndUserText.label、@Metadata.allowExtensions。语义注解(货币/数量)对 CURR 和 QUAN 数据类型必需,以避免错误 SD_CDS_ENTITY105。UI 注解用于 Fiori Elements,如 @UI.lineItem、@UI.identification、@UI.selectionField、@UI.hidden。消费注解如 @Consumption.valueHelpDefinition 用于值帮助。
表达式与运算
支持简单 CASE 和搜索式 CASE 表达式、标准比较运算符(=、<>、<、>、<=、>=)及特殊运算符(BETWEEN、LIKE、IS NULL、IS NOT NULL)、算术运算。会话变量包括 $session.user、$session.client、$session.system_language、$session.system_date。
内置函数
包括字符串函数(concat、length、substring、upper、lower、replace)、数值函数(abs、ceil、floor、round、division)、日期函数(dats_add_days、dats_add_months、dats_days_between)以及 CAST 表达式。注意 upper() 和 lower() 需要 7.51+,在 7.40/7.50 上需在 ABAP 中转换。
连接
支持 INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN(7.51+)、CROSS JOIN(7.51+)。
关联
关联定义实体间关系(按需连接)。基数记法:[0..1] 或 [1] 为 to one;[1..1] 为 to one(精确匹配);[0..] 或 [] 为 to many;[1..*] 为 to many。新基数语法(Release 2302+)使用 association to one / association to many。
输入参数
使用 with parameters 定义,通过冒号记法 :p_date_from 或 $parameters.p_date_from 引用,可从 ABAP 调用。
聚合表达式
支持 sum、avg、max、min、count,配合 group by 和 having。
访问控制(DCL)
基础 DCL 结构使用 @MappingRole: true 和 define role。条件类型包括 PFCG 授权、字面条件、用户方面及组合条件。
使用方式
在 Eclipse ADT 中通过 File → New → Other → Core Data Services → Data Definition 创建,输入名称、描述和包,选择模板。
适用场景与限制
该技能适用于 SAP ABAP CDS 相关的开发与排错工作,涉及的特性受 ABAP 版本限制,需根据实际系统版本选择相应语法。对于早期版本系统,部分函数与语法不可用。
相关技能
- sap-abap:用于与 CDS 配合的 ABAP 编程模式或在 ABAP 中实现 EML 语句
- sap-btp-cloud-platform:用于 BTP 上的 CDS 部署场景或 ABAP Environment 配置
- sap-fiori-tools:用于构建消费 CDS 视图的 Fiori Elements 应用或处理 UI 注解
- sap-cap-capire:用于对比 ABAP 与 CAP 的 CDS 语法或将 ABAP CDS 与 CAP 服务集成
- sap-api-style:用于记录基于 CDS 的 OData 服务或遵循 API 文档标准