带参数的 CDS

作者:ABAP三叔 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:CO, Data Engineering, FI, MM, SD, 数据工程, 物料管理, 财务, 销售分销
带参数的 CDS - 封面图
带参数的 CDS - 封面图

前言

带参数的CDS在SAP中用途比较广泛,参数通常用来作为where的条件,用来过滤数据。

创建

1\. 创建带参数的CDS视图

带参数的 CDS - 封面图
带参数的 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'
ABAP三叔

关于作者:ABAP三叔

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「带参数的CDS.md」整理生成,仅用于内部技术分享与学习交流。