销售订单上的业务伙伴数据都在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
以上。?