SuperAPI AI 工具集

sap-abap-cds

数据与分析

查看项目

更新于 10-15 15:45

技能介绍

用途

本技能为 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 文档标准