在现代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应用奠定了坚实基础。
本文由 SAP中文社区 整理发布,转载请注明出处:https://www.sapzx.com






