二维码

[HANA] ABAP CDS多表join、常见运算、简单表达式及转换函数

Twilight发表于 2019-10-12 11:40Twilight 最后回复于 2019-10-12 11:40 [复制链接] 4625 0

一、join、数学基本运算及case表达式
  1. @AbapCatalog.sqlViewName: 'ZVBAKVIEW'
  2. @AbapCatalog.compiler.compareFilter: true
  3. @AbapCatalog.preserveKey: true
  4. @AccessControl.authorizationCheck: #CHECK
  5. @EndUserText.label: 'cds for sales order'
  6. define view ZVBAK_VIEW
  7.   as select from vbak
  8.     inner join   vbap on vbak.vbeln = vbap.vbeln //join 默认就是inner join,cross join 结果集:是卡迪尔积,大学线性代数,cross join不需要on条件限制
  9. {
  10.   key vbap.vbeln,
  11.   key vbap.posnr,
  12.       vbap.matnr,
  13.       vbap.netwr,
  14.       vbap.mwsbp,
  15.       vbap.netwr + vbap.mwsbp as tax_price,
  16.       case
  17.       when vbap.mwsbp >= 40 then ' 税超40元'
  18.       when vbap.mwsbp >0 and vbap.mwsbp < 40 then '税在0~40之间'
  19.       else '无税'
  20.       end as tax_type
  21. }
  22. where
  23.   vbak.vbeln = '0010525689'
复制代码
执行结果
CDS-join-case.jpg
1、支持基本的 + - * / 运算
2、支持inner join、left outer join、right outer join、cross join,区别和sql中的含义一样,不解释了。
3、where条件支持group by/having

二、聚合表达式
  1. @AbapCatalog.sqlViewName: 'ZVBAKVIEW'
  2. @AbapCatalog.compiler.compareFilter: true
  3. @AbapCatalog.preserveKey: true
  4. @AccessControl.authorizationCheck: #CHECK
  5. @EndUserText.label: 'cds for sales order'
  6. define view ZVBAK_VIEW
  7.   as select from vbap
  8. {
  9.   key vbap.vbeln,
  10.       vbap.netwr,
  11.       sum(netwr) as Total_netwr,
  12.       count(*) as lines,
  13.       vbap.waerk
  14. }
  15. group by
  16.   vbeln,
  17.   netwr,
  18.   waerk
复制代码
执行效果:
聚合表达式.jpg
支持的聚合函数:
  • AVG( [DISTINCT] )
  • MAX
  • MIN
  • SUM( [DISTINCT] )
  • COUNT( [DISTINCT] )
  • COUNT( * )

三、转换函数
1、currency_conversion,从表TCURR获取汇率换算规则
  1. @AbapCatalog.sqlViewName: 'ZVBAKVIEW'
  2. @AbapCatalog.compiler.compareFilter: true
  3. @AbapCatalog.preserveKey: true
  4. @AccessControl.authorizationCheck: #CHECK
  5. @EndUserText.label: 'cds for sales order'
  6. define view ZVBAK_VIEW
  7.   with parameters
  8.     p_curr :abap.cuky( 5 ),
  9.     p_date :abap.dats
  10.   as select from vbap
  11. {
  12.   key vbap.vbeln,
  13.       vbap.netwr,
  14.       sum(netwr)                                           as Total_netwr,
  15.       count(*)                                             as lines,
  16.       vbap.waerk,
  17.       currency_conversion( amount => vbap.netwr,
  18.                            source_currency => vbap.waerk,
  19.                            target_currency => :p_curr,
  20.                            exchange_rate_date => :p_date ) as local_amount,
  21.       :p_curr as local_waerk
  22. }
  23. group by
  24.   vbeln,
  25.   netwr,
  26.   waerk
复制代码
执行效果:
cds-conversion1.jpg
cds-conversion2.jpg
2、unit_conversion 从表T006获取单位转换规则,T-code:CUNI
  1.       unit_conversion( quantity => a1,
  2.                        source_unit => a2,
  3.                        target_unit => a3,
  4.                        error_handling => a4 )
复制代码
3、decimal_shift
  1.       decimal_shift( amount => a1,
  2.                      currency => a2,
  3.                      error_handling => a3 )
复制代码
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表