首页 > 其他分享 >SAP CDS view 里 UNION 操作的用法

SAP CDS view 里 UNION 操作的用法

时间:2023-08-14 13:44:14浏览次数:45  
标签:结果 UNION 视图 查询 Union CDS 操作 SAP

下图是 SAP CDS view Union 操作的语法和例子:

SAP CDS(Core Data Services)视图是 SAP HANA 数据库在 ABAP 层面上的抽象和逻辑视图。它不仅提供了一种 SQL 类型的语言(Data Control Language,DCL)来查询和操作数据,还提供了各种特性和功能以支持应用程序开发。

在 SAP CDS 中,Union 操作是一种合并或连接两个或多个 CDS 视图的方式。这样做的目的是将多个数据源的数据整合在一起,使得可以在单一查询中使用它们。Union 操作的基本语法如下:

SELECT FROM view1
UNION
SELECT FROM view2

在这个例子中,view1 和 view2 是 CDS 视图的名称。Union 操作将它们的结果集合并在一起。需要注意的是,Union 操作要求两个 CDS 视图必须有相同的列结构,包括列的数量、列的类型和列的顺序。

举个例子,让我们假设我们有两个 CDS 视图:一个是 SalesOrder,另一个是 PurchaseOrder。SalesOrder 视图包含了所有的销售订单,而 PurchaseOrder 视图包含了所有的采购订单。现在,我们想要查询所有的订单,无论是销售订单还是采购订单。我们可以使用 Union 操作来做到这一点:

@AbapCatalog.sqlViewName: 'ZALLORDERS'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'All Orders'
define view ZAllOrders as (
  select from ZSalesOrder
  union all
  select from ZPurchaseOrder
)

在这个例子中,ZAllOrders 是新定义的 CDS 视图,它包含了所有的销售订单和采购订单。union all 操作是 Union 操作的一个变种,它保留了所有的结果,包括重复的结果。如果我们只使用 union,那么任何重复的结果都会被消除。

一般来说,Union 操作在以下几种场景中可能会被使用到:

  1. 合并多个查询的结果:如果我们有多个查询,每个查询返回的结果集的结构相同,但是查询的条件或者查询的表不同,那么我们可以使用 Union 操作来合并这些查询的结果。例如,我们可以使用 Union 操作来合并查询两个不同部门的员工信息的结果。

  2. 去除重复的记录:在 SQL 中,Union 操作默认会去除结果集中的重复记录。因此,如果我们想要去除查询结果中的重复记录,可以使用 Union 操作。

  3. 从多个表中查询数据:如果我们需要从多个表中查询数据,并将结果合并在一起,那么可以使用 Union 操作。例如,我们可以使用 Union 操作来查询多个产品分类下的产品信息。

下面,我们来看一个使用 Union 操作的例子。假设我们有两个表,一个是销售表 Sales,一个是采购表 Purchase。我们想要查询出所有销售和采购的信息,并将结果合并在一起。那么,我们可以定义一个 CDS View,使用 Union 操作来合并查询 Sales 和 Purchase 的结果:

@AbapCatalog.sqlViewName: 'ZCDS_SALES_PURCHASE'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Sales and Purchase View'
define view ZCdsSalesPurchase as select from sflight as sales
  union 
  select from scarr as purchase {
    key sales.carrid as Id,
    key sales.connid as ConnectionId,
    sales.fldate as FlightDate,
    sales.price as Price,
    'Sales' as Type
  } 
  union 
  select from scarr as purchase {
    purchase.carrid as Id,
    purchase.currcode as CurrencyCode,
    purchase.url as Url,
    purchase.mimetype as MimeType,
    'Purchase' as Type
  }

在这个例子中,我们首先查询了 Sales 表,然后使用 Union 操作合并了查询 Purchase 表的结果。在每个查询中,我们都选取了一些字段,并给这些字段定义了别名,以确保两个查询结果的结构是相同的。在最后,我们添加了一个 Type 字段,用于标识记录是来自 Sales 表还是 Purchase 表。

注意,在使用 Union 操作时,需要确保所有的查询结果的结构必须是相同的,也就是说,每个查询选择的字段的数量、顺序和类型都必须相同。此外,Union 操作默认会去除结果集中的重复记录。如果不想去除重复记录,可以使用 Union All 操作。

最后,我想强调一点,Union 操作并不会改变原有的 CDS 视图。它只是创建了一个新的视图,这个视图的数据是原有视图的数据的合集。

标签:结果,UNION,视图,查询,Union,CDS,操作,SAP
From: https://www.cnblogs.com/sap-jerry/p/17628414.html

相关文章

  • SAP CDS view 的 having Condition 用法
    Havingcondition在groupby执行完毕后才evaludateSAPCDS(CoreDataServices)是一个用于定义和消费数据模型的基础设施。CDS提供了一种新的数据建模方式,它能够在数据库层定义复杂的视图,以提供更高效的数据访问。HAVING关键字在SQL中常常与GROUPBY关键字一起使用......
  • ABAP 开发者上云的时候到了 - 现在大家可以免费使用 SAP 云平台 ABAP 环境的试用版了
    之前Jerry已经写了一系列SAPCloudPlatformABAP编程环境的文章,当时使用的环境,是SAP专门为SAP社区导师们创建的。当时也有朋友留言,询问大家何时才能使用到免费的SAP云平台ABAP编程环境。SAP社区上也有世界各地的开发者问这个问题,负责这个话题的同事们的答复大意是:我们一直在努......
  • 如何通过扩展(Extension)的方式给 SAP Fiori Elements List Report 的表格新增列试读
    本教程之前的步骤,我们已经详细学习了SAPFioriElements应用里类型为ListReport的创建步骤,并且介绍了使用安装在VisualStudioCode里的SAPFioriTools扩展提供的向导,生成FioriElements应用的本地项目结构:5.动手开发第一个SAPFioriElements应用6.知其然......
  • 什么是 SAP UI5 XML 视图里的 customData
    下面是XML视图里的代码:<core:FragmentDefinitionxmlns:core="sap.ui.core"xmlns="sap.m"><Column><Texttext="{i18n|sap.suite.ui.generic.template.ListReport|STTA_C_MP_Product>xfld.Rating}"......
  • 通过一个实例的例子,学习 SAP Fiori 应用中的 Draft Handling(草稿机制)
    SAPFiori应用里的DraftHandling(草稿处理)是一种机制,用于在SAP业务数据的编辑过程中,实时保存未提交的更改。这样的机制允许用户在多个会话或者繁琐的表单填写步骤中,逐渐构建和修改数据,并在需要时将其提交。DraftHandling在SAPFiori应用中起到重要的作用,可以在不中断现有......
  • SAP Hybris Revenue Cloud 和 SAP Subscription Billing 这两个产品的关联
    SAPHybrisRevenueCloud(前称SAPHybrisBilling)和SAPSubscriptionBilling是两个紧密相关且有一定历史演变关系的产品。它们都属于SAP公司的商业套件,用于帮助企业管理订阅业务、收入管理以及订阅式收费模型。本文将详细介绍这两个产品的关联,以及它们各自的功能和特点。SAPHyb......
  • SAP CDS view 里的 Aggregation Expression
    SAPABAPCDS(CoreDataServices)视图是SAP系统中的一种建模工具,用于定义数据模型和数据库视图。CDS视图允许开发者创建高级数据模型,可以从多个数据库表中提取数据,并在SAP应用程序中使用。在CDS视图中,"AggregationExpressions"(聚合表达式)是一项强大的功能,它允许开发者对从底层数据......
  • SAP ABAP 报表进度显示控件的使用详解试读版
    有些SAPABAP报表包含了多个业务处理步骤,笔者这里举一个例子:计算某个时间段内,系统所有销售订单的总金额。SAP大多数基于ABAP技术栈的销售订单设计,都是采取订单抬头(header)和订单行项目(LineItem)的数据结构。订单的时间段维护在抬头结构上,一张订单可能包含多个行项目,每......
  • 什么是 SAP Fiori Elements 的 extensionAPI
    在SAPFioriElements中,"extensionAPI"是一种用于自定义和扩展FioriElements应用的强大工具。它提供了一组API(应用程序编程接口),允许开发人员通过代码的方式对FioriElements应用进行定制和增强。借助extensionAPI,开发人员可以在不影响标准FioriElements功能的基础上,......
  • 如何找到 SAP Fiori Elements 应用某个字段显示值具体的数据源试读版
    笔者将自己在SAP领域16年(2007~2023)的SAPUI5(Fiori)和OData开发的技术沉淀,进行了系统的归纳和总结,分别写成了三套由浅入深的学习教程,收到了不错的反响:零基础快速学习ABAP一套适合SAPUI5开发人员循序渐进的学习教程SAPOData开发实战教程-从入门到提高这三套......