Webi(SAP Business Objects)自定义SQL中@Prompt关联CDS字段实现多选过滤
在Webi自定义SQL中添加关联CDS字段的多选过滤器
我来帮你搞定这个问题!在Webi里用自定义SQL实现关联CDS字段的多选列表过滤器,核心是正确使用@Prompt函数并绑定CDS字段的可选值列表,下面一步步来:
核心语法要点
@Prompt函数的第三个参数是关键,用来指定值列表的来源——直接指向你的CDS视图和对应字段即可,格式为CDS视图名/字段名,Webi会自动从该CDS字段拉取所有可选值生成多选列表。
完整代码示例
假设你的CDS视图是Z_SALES_DATA,要基于其中的CUSTOMER_ID字段做多选过滤,修改后的自定义SQL如下:
SELECT Z_SALES_DATA::CUSTOMER_ID, Z_SALES_DATA::SALES_AMOUNT, Z_SALES_DATA::SALE_DATE FROM Z_SALES_DATA WHERE Z_SALES_DATA::CUSTOMER_ID IN @Prompt( '请选择客户ID', -- 弹窗显示的提示文本 'A', -- 字段类型:A=字符型,N=数字型,D=日期型 'Z_SALES_DATA/CUSTOMER_ID', -- 关联CDS视图+字段,必填项! MULTI, -- 开启多选模式 CONSTRAINED -- 限制只能选择列表内的有效值,禁止手动输入 )
关键参数解释
'Z_SALES_DATA/CUSTOMER_ID':这是绑定CDS字段的核心配置,Webi会自动读取该CDS字段的所有值生成可选列表MULTI:必须设置此参数才能允许用户选择多个值CONSTRAINED:确保用户只能选择CDS中存在的值,避免无效输入;如果需要允许手动输入自定义值,可替换为FREE- 字段类型需与CDS字段匹配:比如
CUSTOMER_ID是字符型用'A',数字型字段则用'N'
注意事项
- 确保你的CDS视图已正确配置到SAP BO的数据源中,Webi具备访问该CDS元数据的权限
- 如果CDS带有命名空间,需完整带上命名空间,格式为
Z_MY_NAMESPACE::Z_SALES_DATA/CUSTOMER_ID - 测试时运行SQL,Webi会弹出多选弹窗,里面的选项就是CDS字段中的所有值,选择完成后即可过滤查询结果
内容的提问来源于stack exchange,提问作者khedidja tihar
相关产品推荐
相关产品推荐

