SAP ABAP CDS View 开发指南:核心数据服务详解

本文全面介绍SAP ABAP CDS View(Core Data Services)的开发与应用。详细讲解CDS View定义语法、关联与连接操作、参数化视图实现以及重要注解使用,帮助开发者掌握CDS View在Fiori/OData服务中的应用技巧。

SAP ABAP CDS View 开发指南:核心数据服务详解 图1

在现代SAP开发环境中,ABAP CDS View(Core Data Services)已成为数据建模和消费的核心技术。本文将详细介绍CDS View的关键概念、语法结构及实际应用,帮助开发人员充分利用这一强大工具。

一、CDS View 基础

ABAP CDS View是一种在数据库层定义数据模型的技术,它允许开发者以声明方式创建语义丰富的数据视图。与传统的ABAP视图相比,CDS View提供了更强大的功能、更好的性能和更丰富的语义信息。

基本的CDS View定义语法如下:

@EndUserText.label: '客户基本信息视图'
define view entity ZC_CustomerView
  as select from kna1
{
  key kunnr        as CustomerID,
      name1        as CustomerName,
      land1        as Country,
      ort01        as City,
      pstlz        as PostalCode
}

在这个示例中,我们创建了一个基于KNA1表的简单视图,并使用@EndUserText.label注解为视图添加描述。

二、CDS View 中的关联与连接

CDS View提供了强大而灵活的数据关联能力。可以使用association建立关联关系,并在查询中使用to-one或to-many导航。

以下是一个包含关联的CDS View示例:

@EndUserText.label: '客户销售订单视图'
define view entity ZC_CustomerSalesOrder
  as select from kna1
  association [0..*] to vbak as _SalesOrders on $projection.customerid = _SalesOrders.kunnr
{
  key kunnr                as CustomerID,
      name1                as CustomerName,
      land1                as Country,
      /* 关联字段 */
      _SalesOrders
}

在需要获取关联数据时,可以在消费视图时使用路径表达式:

define view entity ZC_CustomerOrderDetails
  as select from ZC_CustomerSalesOrder
{
  key CustomerID,
      CustomerName,
      Country,
      /* 通过路径表达式访问关联数据 */
      _SalesOrders.vbeln    as OrderID,
      _SalesOrders.netwr    as OrderAmount
}

四、 参数化 CDS View

CDS View支持参数化,允许在运行时传递参数来动态过滤数据。参数化视图使用with parameters子句定义参数:

@EndUserText.label: '按国家查询客户'
define view entity ZC_CustomersByCountry
  with parameters
    p_country : land1
  as select from kna1
{
  key kunnr        as CustomerID,
      name1        as CustomerName,
      land1        as Country
}
where land1 = :p_country

消费此视图时,需要提供参数值:

@EndUserText.label: '德国客户销售数据'
define view entity ZC_GermanyCustomerSales
  as select from ZC_CustomersByCountry( p_country = 'DE' )
{
  key CustomerID,
      CustomerName
}

五、 CDS View 中的注解

注解是CDS View的重要特性,用于添加语义信息、控制UI显示行为以及定义OData服务特性。常用的注解包括:

语义注解

@EndUserText.label: '销售订单金额视图'
define view entity ZC_SalesOrderAmount
  as select from vbak
  association to vbap as _Items on $projection.vbeln = _Items.vbeln
{
  key vbeln                as OrderID,
      @Semantics.amount.currencyCode: 'WAERS'
      netwr                as NetAmount,
      waers                as Currency,
      /* 聚合计算 */
      @Semantics.amount.currencyCode: 'Currency'
      sum(_Items.netwr)    as TotalAmount
}

在这个示例中,@Semantics.amount.currencyCode注解标识字段为金额类型,并指定货币代码字段。

UI 和分析注解

@EndUserText.label: '客户销售分析'
@UI.headerInfo: { title: { value: 'CustomerName' } }
define view entity ZC_CustomerSalesAnalysis
  as select from kna1
  association to vbak as _SalesOrders on $projection.customerid = _SalesOrders.kunnr
{
  key kunnr                                        as CustomerID,
      @UI.identification: [ { position: 10 } ]
      @UI.lineItem: [ { position: 10 } ]
      name1                                        as CustomerName,
      @UI.hidden: true
      land1                                        as Country,
      /* 分析度量 */
      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'Currency'
      sum(_SalesOrders.netwr)                      as TotalSalesAmount,
      _SalesOrders.waers                           as Currency
}

这些UI注解控制着在Fiori应用中的显示行为,如标识字段、列表字段和隐藏字段。

六、在 Fiori 和 OData 中暴露 CDS View

CDS View可以通过OData服务发布,供Fiori应用程序消费。以下是使用注解定义OData服务的示例:

@EndUserText.label: '客户管理服务'
@OData.publish: true
define view entity ZC_CustomerService
  as select from kna1
{
  key kunnr        as CustomerID,
      name1        as CustomerName,
      land1        as Country,
      ort01        as City
}

更复杂的OData服务可以使用@ObjectModel注解进一步配置:

@EndUserText.label: '销售订单管理'
@OData.publish: true
@ObjectModel: {
  type: #TRANSACTIONAL,
  createEnabled: true,
  updateEnabled: true,
  deleteEnabled: true
}
define view entity ZC_SalesOrderManage
  as select from vbak
  association to vbap as _Items on $projection.vbeln = _Items.vbeln
{
  key vbeln                   as OrderID,
      @ObjectModel.fieldGroup: [ #mandatory ]
      auart                   as OrderType,
      @ObjectModel.fieldGroup: [ #mandatory ]
      vkorg                   as SalesOrg,
      _Items
}

这些注解使CDS View可以直接用于创建、读取、更新和删除(CRUD)操作的OData服务。

总结

ABAP CDS View为SAP开发提供了强大、高效的数据建模方式。通过其丰富的语法、灵活的关联能力、参数化支持和丰富的注解系统,开发者可以创建语义丰富、高性能的数据模型,无缝集成到Fiori应用和OData服务中。掌握CDS View技术对于现代SAP开发人员来说是必不可少的技能,它不仅提高了开发效率,还为构建现代化的SAP应用奠定了坚实基础。

相关新闻

  • 企业级 AMS Custom Fiori Client 移动应用定制化方案

    企业级 AMS Custom Fiori Client 移动应用定制化方案

    自 2022 年 3 月 31 日 SAP 正式从 Apple App Store 和 Google Play Store 移除标准版 SAP Fiori Client 以来,众多依赖 Fiori 移动化作业的企业面临着严峻的运维挑战。尽管 SAP 官方指出了“转向移动浏览器”或“迁移至 SAP Mobile Start”两条路径,但在实际落地中,这两种方案往往遭遇“水土不服”:前者缺失原生设备能力,后者则强制绑定 SAP BTP (Business Technology Platform) 云…

    行业新闻 2025年12月9日
  • 直击2025思爱普中国峰会 – AI 重构商业未来

    直击2025思爱普中国峰会 – AI 重构商业未来

    以“AI重构商业未来”为主题,2025思爱普中国峰会盛大举行。大会系统展示了SAP在AI、数据与企业应用融合的最新突破,通过“飞轮效应”、Joule智能助手、SAP商业套件等核心战略,以及海亮集团、信达生物、时代天使等客户的AI实践案例,描绘了企业智能化转型的清晰路径,助力企业在不确定环境中寻找增长的确定性。 “AI 重构商业未来”—— 今天(2025年6月5日),备受瞩目的思爱普中国峰会以此为主题盛大启幕。在全球经济充满不确定性的大背景下,这场大会不仅集中展示了SAP在人工智能、数据管理与企业…

    行业新闻 2025年6月5日
  • SAP S/4HANA集团合并报表(Group Reporting)实战详解

    SAP S/4HANA集团合并报表(Group Reporting)实战详解

    本文为SAP S/4HANA Group Reporting模块的深度实践指南。从其定义、核心表结构(ACDOCA/ACDOCP/ACDOCQ)与数据流入手,探讨多种实施架构选项。详细拆解配置流程、关键主数据管理(合并单元、合并组、FS Item、Breakdown Category等),并逐步解析数据监控器中的数据准备与收集任务(如余额结转、货币换算、手工过账),以及合并监控器中的核心合并活动(公司间抵销、投资合并)。最后介绍其灵活的报告功能。 对于拥有多个法人实体或分公司的集团企业而言,编制…

    行业新闻 2025年6月8日
  • 从自主企业到 AI 原生组织:重构企业的技术与组织底座

    从自主企业到 AI 原生组织:重构企业的技术与组织底座

    SAP 提出了 “Autonomous Enterprise(自主企业)”。技术方向是对的。但真正的命题,不在系统,而在组织。 当 AI 从 “回答问题” 走向 “执行任务”,企业将面对两个绕不开的问题: 这两个问题,决定了我们是在传统企业里增加 AI 能力,还是在重新设计一种适应 AI 时代的组织。 一、企业 AI 的关键,不是模型,是理解企业 通用大模型再强,也无法自动理解一家企业的真实业务。 AI 必须知道:有哪些业务对象、它们如何关联、流程如何运转、规则是什么、行动会产生什么影响。 过去…

    行业新闻 2026年10月17日
  • 少林寺管理风波启示:寺庙商业化运营为何需要ERP风控体系

    少林寺管理风波启示:寺庙商业化运营为何需要ERP风控体系

    本文从近期备受关注的少林寺方丈释永信的经济风波入手,提出了一个引人深思的问题:为何像少林寺这样的庞大商业实体,也需要一套ERP系统?文章回顾了ERP在中国因合规需求而兴起的历史,强调了其作为“风控”而非简单IT工具的核心本质,并通过一个国企上市失败的案例,深刻揭示了缺乏ERP和流程管理的企业,在监管时代所面临的巨大风险。 作为SAP领域的从业者,我们习惯于从企业管理的视角,来观察和解读商业世界发生的各种事件。最近,关于少林寺方丈释永信的一些新闻,就引发了笔者一番别样的思考。 少林寺方丈释永信,无…

    行业新闻 2025年7月25日
  • 中国SaaS软件与SAP、Salesforce、微软生态

    中国SaaS软件与SAP、Salesforce、微软生态

    近几年,“生态”这个词,在中国SaaS圈子里被频繁提起,几乎成了一种“政治正确”。所有人都在说,“要做生态”、“要变平台”、“要学Salesforce”——可真正能建起一个健康、繁荣生态的,寥寥无几。原因很简单:照搬国外的成功经验,往往会水土不服。生态不是简单模仿出来的,它是在一个国家或地区的特定企业需求、能力结构、组织文化与信任机制的现实土壤上,自然演化出来的结果。我们当然可以从SAP、Salesforce、微软这些国际巨头那里学习经验,但更重要的是,我们要清楚地知道,该学它们身上的哪一部分,…

    行业新闻 2025年6月28日
联系我们

联系我们

130-0752-1773

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部