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:#CHECKdefineviewZCDS_MATERIALasselectfrommara {keymara.matnrasMaterialNumber,mara.mtartasMaterialType,mara.mbrshasIndustrySector,mara.matklasMaterialGroup }语法解析:
@AbapCatalog.sqlViewName: 指定生成的数据库视图名称define view <视图名> as select from <表名>: 定义视图的基本结构{ ... }: 视图字段列表,支持别名
2.2 多表关联(外连接示例)
@AbapCatalog.sqlViewName:'ZCDS_EKKO_EKPO'defineviewZCDS_EKKO_EKPOasselectfromekkoleftouterjoinekpoonekko.ebeln=ekpo.ebeln {keyekko.ebelnasPurchaseOrder,ekko.lifnrasVendor,ekpo.ebelpasItemNumber,ekpo.matnrasMaterial,ekpo.mengeasQuantity }2.3 聚合函数与分组
@AbapCatalog.sqlViewName:'ZCDS_MATERIAL_STOCK'defineviewZCDS_MATERIAL_STOCKasselectfrommseg {keymseg.matnrasMaterial,sum(mseg.menge)asTotalQuantity,count(distinctmseg.werks)asPlantCount }groupbymseg.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:'采购订单视图'defineviewZCDS_PURCHASE_ORDERasselectfromekko {@EndUserText.label:'采购订单号'@UI.position: { position:10}@Search.defaultSearchElement:truekeyekko.ebelnasPurchaseOrder,@EndUserText.label:'供应商'@UI.position: { position:20} ekko.lifnrasVendor,@EndUserText.label:'采购组织'@UI.position: { position:30} ekko.ekorgasPurchasingOrg,@EndUserText.label:'订单日期'@UI.position: { position:40} ekko.bedatasOrderDate }四、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:'采购订单详情视图'defineviewZCDS_PO_DETAILasselectfromekkoleftouterjoinekpoonekko.ebeln=ekpo.ebelnleftouterjoinmaraonekpo.matnr=mara.matnr {keyekko.ebelnasPurchaseOrder,ekko.lifnrasVendor,ekko.ekorgasPurchasingOrg,keyekpo.ebelpasItemNumber,ekpo.matnrasMaterial,mara.maktxasMaterialDesc,ekpo.mengeasQuantity,ekpo.meinsasUnit,ekpo.netwrasNetValue,ekpo.werksasPlant }五、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视图的最大感受是什么?欢迎分享你的经验。