SAP-ABAP:SAP CDS视图入门:Core Data Services核心语法与建模流程实操
ABAP核心进阶篇(120篇):数据库表与视图开发(12篇)
第七篇:SAP CDS视图入门:Core Data Services核心语法与建模流程实操
博客标题:《SAP CDS视图入门:Core Data Services核心语法与建模流程实操》
博客简介:介绍CDS视图的架构优势与适用场景,从基础语法、注解配置、数据关联三个维度讲解CDS建模的核心流程,对比传统SE11视图与CDS视图的差异,给出技术选型建议。
写在前面
在传统SAP开发中,我们习惯使用SE11创建数据库视图来封装多表关联逻辑。但随着SAP S/4HANA的推出,**CDS视图(Core Data Services)**已经成为数据建模的新标准。相比SE11视图,CDS视图功能更强大、语法更灵活、性能更优秀,是SAP新一代数据模型的核心组件。
本文将从零基础入手,带你掌握CDS视图的核心语法、注解配置和建模流程,并对比传统视图的差异,帮助你做出正确的技术选型。
一、CDS视图概述:什么是CDS,为什么要用它?
1.1 CDS视图的定义
CDS(Core Data Services)是SAP推出的一种声明式数据建模语言,它允许开发者使用类似SQL的语法定义数据模型,同时支持丰富的注解来定义元数据、权限控制、UI展示等属性。
1.2 CDS视图的核心优势
| 特性 | SE11数据库视图 | CDS视图 |
|---|---|---|
| 外连接支持 | 不支持 | 支持LEFT/RIGHT/FULL OUTER JOIN |
| 聚合函数 | 不支持 | 支持SUM/COUNT/AVG等 |
| 参数化查询 | 不支持 | 支持带参数的视图 |
| 注解扩展 | 有限 | 丰富的注解体系 |
| 权限控制 | 有限 | 支持DCL(Data Control Language) |
| 性能优化 | 基础 | 自动优化,支持索引注解 |
| 复用性 | 有限 | 支持视图组合、继承 |
1.3 CDS视图的适用场景
- 需要外连接的多表关联查询
- 需要聚合计算的报表场景
- 需要参数化的动态查询
- 需要精细权限控制的数据访问
- 需要与Fiori UI集成的数据源
二、CDS视图基础语法
2.1 最简单的CDS视图结构
@AbapCatalog.sqlViewName: 'ZCDS_MATERIAL'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
define view ZCDS_MATERIAL as select from mara {
key mara.matnr as MaterialNumber,
mara.mtart as MaterialType,
mara.mbrsh as IndustrySector,
mara.matkl as MaterialGroup
}
语法解析:
@AbapCatalog.sqlViewName: 指定生成的数据库视图名称define view <视图名> as select from <表名>: 定义视图的基本结构{ ... }: 视图字段列表,支持别名
2.2 多表关联(外连接示例)
@AbapCatalog.sqlViewName: 'ZCDS_EKKO_EKPO'
define view ZCDS_EKKO_EKPO as select from ekko
left outer join ekpo on ekko.ebeln = ekpo.ebeln {
key ekko.ebeln as PurchaseOrder,
ekko.lifnr as Vendor,
ekpo.ebelp as ItemNumber,
ekpo.matnr as Material,
ekpo.menge as Quantity
}
2.3 聚合函数与分组
@AbapCatalog.sqlViewName: 'ZCDS_MATERIAL_STOCK'
define view ZCDS_MATERIAL_STOCK as select from mseg {
key mseg.matnr as Material,
sum(mseg.menge) as TotalQuantity,
count(distinct mseg.werks) as PlantCount
}
group by mseg.matnr
三、CDS视图注解详解
3.1 常用注解分类
| 注解类别 | 用途 | 示例 |
|---|---|---|
| AbapCatalog | 数据库相关配置 | @AbapCatalog.sqlViewName |
| AccessControl | 权限控制 | @AccessControl.authorizationCheck |
| EndUserText | 字段标签描述 | @EndUserText.label |
| UI | Fiori UI展示配置 | @UI.position |
| Search | 搜索相关配置 | @Search.defaultSearchElement |
3.2 完整注解示例
@AbapCatalog.sqlViewName: 'ZCDS_PURCHASE_ORDER'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '采购订单视图'
define view ZCDS_PURCHASE_ORDER as select from ekko {
@EndUserText.label: '采购订单号'
@UI.position: { position: 10 }
@Search.defaultSearchElement: true
key ekko.ebeln as PurchaseOrder,
@EndUserText.label: '供应商'
@UI.position: { position: 20 }
ekko.lifnr as Vendor,
@EndUserText.label: '采购组织'
@UI.position: { position: 30 }
ekko.ekorg as PurchasingOrg,
@EndUserText.label: '订单日期'
@UI.position: { position: 40 }
ekko.bedat as OrderDate
}
四、CDS视图创建实战
4.1 环境准备
CDS视图开发需要使用 ABAP Development Tools (ADT),不支持在SE11中创建。确保你的ADT已正确配置连接到SAP系统。
4.2 创建步骤
- 打开ADT → 在Package Explorer中右键点击目标包 → New → Other ABAP Repository Object
- 选择 Core Data Services → Data Definition → Next
- 输入视图名称(如
ZCDS_MATERIAL)和描述 → Next - 选择模板(推荐"Define View") → Finish
- 编写CDS视图代码 → Activate
4.3 实战案例:采购订单详情视图
@AbapCatalog.sqlViewName: 'ZCDS_PO_DETAIL'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '采购订单详情视图'
define view ZCDS_PO_DETAIL as select from ekko
left outer join ekpo on ekko.ebeln = ekpo.ebeln
left outer join mara on ekpo.matnr = mara.matnr {
key ekko.ebeln as PurchaseOrder,
ekko.lifnr as Vendor,
ekko.ekorg as PurchasingOrg,
key ekpo.ebelp as ItemNumber,
ekpo.matnr as Material,
mara.maktx as MaterialDesc,
ekpo.menge as Quantity,
ekpo.meins as Unit,
ekpo.netwr as NetValue,
ekpo.werks as Plant
}
五、CDS视图与SE11视图对比
5.1 功能对比表
| 功能 | SE11数据库视图 | CDS视图 |
|---|---|---|
| 外连接 | ❌ | ✅ |
| 聚合函数 | ❌ | ✅ |
| 参数化 | ❌ | ✅ |
| 注解系统 | ❌ | ✅ |
| 权限控制 | 基础 | ✅ 完整DCL |
| 视图组合 | 有限 | ✅ |
| Fiori集成 | ❌ | ✅ |
5.2 技术选型建议
| 场景 | 推荐方案 |
|---|---|
| 简单内连接,无需扩展 | SE11数据库视图 |
| 需要外连接/聚合/参数 | CDS视图 |
| Fiori应用数据源 | CDS视图 |
| 需要精细权限控制 | CDS视图 + DCL |
| 新项目开发(S/4HANA) | CDS视图 |
六、CDS视图常见问题与排查
-
Q1:CDS视图激活失败,提示"注解语法错误"?
A:检查注解拼写是否正确,注意注解名称和参数的大小写敏感问题,参考SAP官方文档确认注解语法。 -
Q2:CDS视图中的外连接没有生效?
A:确认使用的是正确的外连接语法(left outer join),检查连接条件字段是否正确匹配。 -
Q3:如何在ABAP程序中使用CDS视图?
A:CDS视图激活后会生成对应的数据库视图,可以直接使用SELECT * FROM ZCDS_VIEW查询。 -
Q4:CDS视图支持哪些聚合函数?
A:支持SUM、COUNT、COUNT(DISTINCT)、AVG、MIN、MAX等标准SQL聚合函数。
七、总结
| 维度 | 内容 |
|---|---|
| 核心价值 | CDS视图提供了更强大、更灵活的数据建模能力 |
| 适用场景 | 外连接、聚合计算、参数化查询、Fiori集成 |
| 开发工具 | 必须使用ADT(Eclipse),不支持SE11 |
| 学习路径 | 先掌握基础语法 → 学习注解配置 → 实践复杂场景 |
CDS视图是SAP S/4HANA时代的数据建模新标准,掌握它是现代ABAP开发者的必备技能。下一篇我们将深入讲解CDS视图的高级特性,包括参数化视图、权限控制和视图扩展。
下一篇预告:《SAP CDS视图高级特性实战:关联、聚合、权限控制与扩展逻辑》
作者:爱喝水的鱼丶
版本记录:2026年6月
💬 你在项目中使用CDS视图的最大感受是什么?欢迎分享你的经验。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)