具有案例陈述和条件的ABAP CDS聚合

2020-09-06 18:07发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在探索ABAP CDS视图,并尝试以下方法来计算已发出的库存数量,但尚未计算每个PO项目的收货,并按物料,工厂和批次进行报告。

由于我正在EKBE进行检查,因此汇总结果的90%的总和为零,我对那些记录不感兴趣。 因此,我想使用HAVING语句将其过滤掉,如下所示。 但是,它给出了语法错误。

赞赏有人可以提供一些指导。 谢谢。

将视图YCDSV_SIT定义为
 选择
   来自wb2_v_ekko_ekpo2作为
   以b的身份加入ekbe
     在a.ebeln_i = b.ebeln上
    和a.ebelp_i = b.ebelp
 {
   a.matnr_i作为matnr
 ,a.werks_i有点怪
 ,a.ebeln_i
 ,a.ebelp_i
 ,b.xblnr
 ,b.charg
 ,总和(
        案件
          当shkzg ='S'时b.menge * -1
          否则b。
        结束
      )作为TransitStock
 }
  其中a.bsart ='ZSTO'
    和a.loekz_i =''
    和a.elikz_i =''
    并且b.zekkn ='00'
    和(b.vgabe ='1'
     或b.vgabe ='6')
  按matnr_i,werks_i,ebeln_i,ebelp_i,xblnr,charg分组
 TransitStock> 0
 ;
 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在探索ABAP CDS视图,并尝试以下方法来计算已发出的库存数量,但尚未计算每个PO项目的收货,并按物料,工厂和批次进行报告。

由于我正在EKBE进行检查,因此汇总结果的90%的总和为零,我对那些记录不感兴趣。 因此,我想使用HAVING语句将其过滤掉,如下所示。 但是,它给出了语法错误。

赞赏有人可以提供一些指导。 谢谢。

将视图YCDSV_SIT定义为
 选择
   来自wb2_v_ekko_ekpo2作为
   以b的身份加入ekbe
     在a.ebeln_i = b.ebeln上
    和a.ebelp_i = b.ebelp
 {
   a.matnr_i作为matnr
 ,a.werks_i有点怪
 ,a.ebeln_i
 ,a.ebelp_i
 ,b.xblnr
 ,b.charg
 ,总和(
        案件
          当shkzg ='S'时b.menge * -1
          否则b。
        结束
      )作为TransitStock
 }
  其中a.bsart ='ZSTO'
    和a.loekz_i =''
    和a.elikz_i =''
    并且b.zekkn ='00'
    和(b.vgabe ='1'
     或b.vgabe ='6')
  按matnr_i,werks_i,ebeln_i,ebelp_i,xblnr,charg分组
 TransitStock> 0
 ;
 
付费偷看设置
发送
5条回答
大道至简
1楼-- · 2020-09-06 18:28

嗨,

我建议在您的条件下使用Have子句之前,先将主查询放入一个临时表中。

SKY徐
2楼-- · 2020-09-06 18:29

您提供了除语法错误屏幕截图以外的所有信息,这是实际的信息。

compass1988
3楼-- · 2020-09-06 18:29

是必需的。在标准SQL和CDS视图中,HAVING可能不使用别名,但必须重复相应的表达式,请参见收藏

在您的情况下:

  ...
 总和(
        案件
          当shkzg ='S'时b.menge * -1
          否则b。
        end)> 0 
ZJXianG
4楼-- · 2020-09-06 18:18

嗨,

在原始CDS定义中,语法错误如下:

如果我尝试使用Sandra的建议,它将给出另一个语法错误,如下所示:

此问题的主要问题是使用具有"具有"条件的别名。 我找到了SAP提供的一个示例,如下所示:

 @ AbapCatalog.sqlViewName:'SALES_ORDER_VW'
 将视图sales_order定义为
   从snwd_so中选择
     内部联接
       Buyer_guid上的snwd_bpa = snwd_bpa.node_key
   {key bp_role as role,//e.g。 客户或供应商
      记为(不一样的Buyer_guid)为partners_count,
      sum(snwd_so.gross_amount)作为sum_gross_amount}
   其中snwd_so.currency_code ='EUR'
   按bp_role分组
   总和(snwd_so.gross_amount)> 100000.00;
 

如果我通过使用别名" sum_gross_amount"替换" sum(snwd_so.gross_amount)"对该示例进行较小的更改,它将报告相同的语法错误"未知列sum_gross_amount"。

 @ AbapCatalog.sqlViewName:'SALES_ORDER_VW'
 将视图sales_order定义为
   从snwd_so中选择
     内部联接
       Buyer_guid上的snwd_bpa = snwd_bpa.node_key
   {key bp_role as role,//e.g。 客户或供应商
      记为(不一样的Buyer_guid)为partners_count,
      sum(snwd_so.gross_amount)作为sum_gross_amount}
   其中snwd_so.currency_code ='EUR'
   按bp_role分组
   sum_gross_amount> 100000.00;
 

感谢任何人可以提供建议。 谢谢。

悠然的二货
5楼-- · 2020-09-06 18:28

嗨,

是的,如果他们考虑使用具有别名的Haven子句会更好,也许是有一个原因,它不支持该语法。 但是现在我正在使用临时表作为解决方法。

一周热门 更多>