CDS参数注解@Consumption.derivation支持哪些前端?Fiori Elements是否兼容?
@Consumption.derivation 注解的前端支持概览及替代方案
支持的前端/场景
@Consumption.derivation注解主要在以下前端或工具中生效:
- SAP GUI for HTML(包括Web Dynpro ABAP应用、通过Web方式访问的SAP GUI事务码)
- SAP Analytics Cloud(SAC):通过OData连接消费CDS视图时
- SAP BusinessObjects BI工具(如Web Intelligence):消费CDS OData服务时
- 自定义SAPUI5应用:需手动解析OData元数据中的派生规则,自行实现参数预设逻辑
不支持的场景
SAP Fiori Elements(包括列表报表List Report)目前不支持@Consumption.derivation注解,这就是你遇到参数无法自动预设的直接原因。
Fiori Elements中实现参数预设的替代方案
针对你需要预设当前年月(格式YYYYMM)的需求,可采用以下两种可行方案:
方案1:CDS视图中直接设置参数默认值
在CDS参数定义时使用系统函数生成默认值,确保格式为YYYYMM:
define view zi_ptdata_missing with parameters @EndUserText.label: 'JahrMonat' YearMonth : vdm_yearmonth default concat(cast(current_year() as char(4)), lpad(cast(current_month() as char(2)), 2, '0')) as select from I_CalendarDate left outer join ... { ... } where I_CalendarDate.YearMonth = :YearMonth and ...
lpad函数用于确保月份为两位数字(如1月补为01)。
方案2:Fiori Elements前端扩展实现
通过自定义控制器扩展,在页面初始化时设置参数值:
// 在List Report的扩展控制器中添加onInit方法 onInit: function() { const oModel = this.getView().getModel(); const today = new Date(); const year = today.getFullYear(); const month = String(today.getMonth() + 1).padStart(2, '0'); const yearMonth = `${year}${month}`; // 更新OData模型的参数并刷新数据 const oParams = oModel.getParameters() || {}; oParams.YearMonth = yearMonth; oModel.setParameters(oParams); oModel.refresh(); }
内容的提问来源于stack exchange,提问作者Michael Koval
相关产品推荐
相关产品推荐

