前言
带参数的CDS在SAP中用途比较广泛,参数通常用来作为where的条件,用来过滤数据。
创建
1\. 创建带参数的CDS视图
2\. 例子:输入开始日期( in_ begdate )和结束日期( in_enddate ),用来取物料凭证中的出入库明细
define view ZCDSVFI058_MSEGA with parameters in_begdate :budat, in_enddate :budat as select distinct from nsdm_v_mseg as a inner join bkpf as b on b.awkey = concat( a.mblnr, a.mjahr ) and b.awtyp = 'MKPF'{ key a.mblnr, key a.mjahr, key a.zeile, a.matnr, a.werks, a.shkzg, a.menge, a.dmbtr}where a.budat_mkpf >= :in_begdate and a.budat_mkpf <= :in_enddate
使用
1\. 在CDS中使用带参数的CDS视图作为数据源
示例: 输入 开始日期( in_ begdate )和结束日期( in_enddate ),对 02 步骤中创建的CDS中的数量进行汇总
define view ZCDSVFI058_MSEG with parameters in_begdate :budat, in_enddate :budat as select from ZCDSVFI058_MSEGA( in_begdate: :in_begdate,in_enddate: :in_enddate ){ key matnr, key werks, sum( case shkzg when 'S' then menge end ) as menge_rk, sum( case shkzg when 'S' then dmbtr end ) as netwr_rk, sum( case shkzg when 'H' then menge end ) as menge_ck, sum( case shkzg when 'H' then dmbtr end ) as netwr_ck}group by matnr, werks
2\. 在ABAP中使用带参数的CDS视图
"获取库存变动 SELECT a~matnr, a~werks, a~menge_rk, a~netwr_rk, a~menge_ck, a~netwr_ck FROM zcdsvfi058_mseg( in_begdate = @gv_begdate, in_enddate = @gv_enddate ) AS a JOIN @gt_data AS b ON a~werks = b~werks AND a~matnr = b~matnr INTO TABLE @DATA(lt_mseg).3\. 在DB02中使用 带参数的CDS视图
SELECT matnr, werks, menge_rk, netwr_rk, menge_ck, netwr_ck FROM zcdsfi058_mseg('20230701','20230731') WHERE werks = 'W100'