SAP CDS VIEW实现行列转换

文章描述了在SAP系统中,当销售订单上的业务伙伴数据复杂筛选(如售达方和送达方条件)时,如何通过SQL查询无法满足需求,需进行数据的行列转置处理,以ZPRSDT_VBPA_CONV视图为例,展示了如何使用ABAP代码实现这一功能。

需求:

销售订单上的业务伙伴数据都在VBPA存储,根据PARVW来区分是售达方或者是送达方等等,有时候一些报表取数时有一些条件,比如售达方等于xxxxx并且送达方等于xxxxx,这时候就不是简单的一条sql就能搞定的事了,如果想通过一条sql就搞定这件事,我们就需要将数据做行列转置处理,常见的需求还多见于物料批次特性值这个场景,也可以按照如下方式实现行转列。

 

实现方式:

@AbapCatalog.sqlViewName: 'ZPRSDVVBPA'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Sales Document: Partner Sold-to&Ship-to'
define view ZPRSDT_VBPA_CONV
  as select from vbpa
{
  key vbeln,
  key posnr,
      @EndUserText.label: 'Sold-to'
      max( case parvw when 'AG' then kunnr else '' end ) as kunnr_sold, //sold to SP
      @EndUserText.label: 'Ship-to'
      max( case parvw when 'WE' then kunnr else '' end ) as kunnr_ship  //ship to SH
}
group by
  vbeln,
  posnr

实现效果:

以上。 

CDS(Core Data Service)是 SAP 的战略性技术解决方案之一,其目的是在数据的物理存在和用户需求中间构建一个虚拟层,满足用户对访问 SAP 系统数据的需求。以下是关于 SAP CDS View 的教程相关信息: ### CDS VIEW 简介 Core data services(CDS)可以指 HANA CDSABAP CDS。HANA CDS 只支持 HANA 数据库,ABAP CDS 理论上支持多种数据库供应商,但功能相对少一些。在某些无法使用 ABAP CDS 解决问题的情况下,可通过 ABAP Managed Database Procedures (AMDP) 创建 ABAP CDS Table Function。CDS 的设计目标包括易于定义和创建、满足复杂业务逻辑编写需求、发挥数据库性能、具备充足语意信息、有良好的复用性和适应性、易于管理和传输、与现有系统安全机制集成、有自解释功能以及同时满足 OLTP 和 OLAP 应用的调用需求等 [^3]。 ### SAP CDS ViewSAP HANA View 的区别 性能优化方面,SAP CDS 视图在 ABAP 服务器上进行优化,而 SAP HANA 视图在 HANA 数据库上进行优化。所以,SAP HANA 视图可利用 HANA 数据库的全部功能,如并行处理和列式存储,而 SAP CDS 视图依赖 ABAP 服务器的优化 [^2]。 ### 搭建环境与定义 HANA CDS 是由于 HANA 需要直接在数据库内开发应用,标准 SQL 语言不能满足定义带有语义属性的数据库表、视图、类型等需求而产生的。ABAP CDS 可以运行在除 HANA 之外的其他数据库平台之上,使用 ADT(ABAP Development Tool) 工具通过 DDL 语言进行定义,通过对数据库表添加 association 和 annotation 等方式定义带有丰富语义的视图对象,供 ODATA 和 SAPUI5 使用 [^3]。 ### ABAP 调用示例 以下是一个 ABAP 调用 CDS View 的示例代码: ```abap REPORT yz_cds_demo. SELECT * FROM ycds_demo02_join INTO TABLE @DATA(itab). cl_demo_output=>display( itab ). ``` 该代码从名为 `ycds_demo02_join` 的 CDS View 中选取所有数据并存储到内表 `itab` 中,最后使用 `cl_demo_output` 类显示该内表 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeveloperMrMeng

觉得有用的佛系投币哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值