ITPub博客

首页 > 应用开发 > IT综合 > 什么是 SAP CDS view 的 exposed Association

什么是 SAP CDS view 的 exposed Association

原创 IT综合 作者:i042416 时间:2023-08-23 09:34:14 0 删除 编辑

SAP CDS 是 SAP HANA 数据库中的一种新的数据定义语言。它允许开发者定义语义富裕的数据模型,这些数据模型可以以数据库独立的方式在 ABAP 服务器上使用。因此,通过 CDS,开发者可以创建复杂的视图来构建 ABAP 程序或应用。

关联(Association)在 CDS 视图中是一个非常重要的概念。它在 CDS 视图中定义了两个实体(例如,两个数据库表或者两个 CDS 视图)之间的关系。这些实体通过某个特定字段(通常是主键和外键)相互连接。在定义关联时,我们需要指定关联的目标(也就是要关联的另一个实体),以及如何通过特定字段建立这两个实体之间的关联。

然后,我们来讨论 "exposed association"。"Exposed association" 是 SAP CDS 的一个特性,允许我们在定义 CDS 视图时明确地暴露或隐藏关联。这意味着,我们可以选择是否将定义的关联公开给 CDS 视图的消费者(例如,其他的 CDS 视图或者 ABAP 程序)。如果我们选择暴露关联,那么消费者就可以直接通过这个关联访问到关联的目标实体的数据。否则,如果我们选择隐藏关联,那么消费者就无法直接访问到关联的目标实体的数据。
下图高亮的  _scarr 就是 exposed association 的一个具体例子。

接下来,我们通过一个例子来详细解释 "exposed association"。假设我们有两个数据库表: Orders(订单)和  Customers(客户)。每个订单都有一个关联的客户。我们希望定义一个 CDS 视图,该视图包含订单的详细信息,以及与每个订单关联的客户的名称。我们可以这样定义这个 CDS 视图:

@AbapCatalog.sqlViewName: `V_ORDERS_AND_CUSTOMERS`
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: `Orders and Customers`
define view Orders_And_Customers as select from Orders as o
  association [0..1] to Customers as _Customer on $projection.CustomerID = _Customer.CustomerID
{
  o.OrderID,
  o.Product,
  o.Quantity,
  o.CustomerID,
  _Customer as Customer
}

在这个例子中,我们在 CDS 视图  Orders_And_Customers 中定义了一个关联  _Customer,它连接了  Orders 和  Customers 这两个实体。我们通过  CustomerID 这个字段建立了这个关联。然后,我们在 CDS 视图的输出字段中包含了这个关联  _Customer。这样,我们就暴露了这个关联,使得 CDS 视图的消费者可以直接通过这个关联访问到  Customers 表的数据。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24475491/viewspace-2977604/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
测试

注册时间:2018-01-20

  • 博文量
    3822
  • 访问量
    1981844