You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:50:27