关于为列表报表模板所消费的CDS消费视图传递多值输入参数的技术问询
为列表报表模板所消费的CDS消费视图传递多值输入参数的技术问询
嘿,我来帮你搞定这个问题!针对用Fiori列表报表模板消费CDS消费视图时传递多值输入参数的需求,这里有几个实用的方案,完全适配你的场景:
直接用CDS支持多值的输入参数
首先在你的CDS消费视图里定义允许多值的输入参数,语法示例如下:@EndUserText.label: '需要传递的多值参数' parameters p_myparam : abap.char(20) multiple allowed;接着在列表报表模板的配置过程中,把这个参数绑定到对应的筛选控件上。这样前端用户就能直接多选值,这些值会自动传递给CDS视图,不需要额外的ABAP程序介入。
利用列表报表自带的筛选器
要是你不想在CDS里定义输入参数,也可以直接把需要筛选的字段暴露在CDS视图中。然后在列表报表模板的配置里,将这些字段设置为可筛选状态。前端用户通过报表的筛选面板选择多个值后,系统会自动把这些筛选条件转化为CDS的过滤逻辑,实现多值筛选的效果。自定义OData扩展(应对复杂场景)
如果你的需求涉及更复杂的多值处理逻辑(比如动态校验、值映射),可以基于CDS生成OData服务后,在ABAP侧扩展OData的运行时逻辑。比如重写/IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_ENTITYSET方法,解析前端传递的多值筛选条件,再转化为合适的选择选项传递给CDS视图。
另外你提到的用ABAP程序调用CDS传选择选项,那是后端直接调用CDS的场景,和列表报表通过OData服务调用的场景不太一样,上面的几个方案都是专门适配列表报表模板的,更贴合你的需求。
备注:内容来源于stack exchange,提问作者Ardit
相关产品推荐
相关产品推荐

