从ODATA服务前端将过滤器值作为参数传递给CDS视图

2020-08-13 23:15发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们有一个由ODATA服务引用的...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们有一个由ODATA服务引用的主CDS视图。 假设主CDS视图显示订单抬头信息。 主CDS与物料有关联(例如,订单可以有多种物料)。 所有这一切都很好并且有效。

要求是在物料编号上添加一个过滤器。 如果用户输入商品列表,则CDS仅应返回包含输入商品的订单。 由于主CDS不保存物料编号,因此将成为与物料CDS关联的过滤器。

我知道CDS可以具有输入参数,但是可以处理来自ODATA服务的过滤器值吗? 因此,用户可以输入过滤条件,例如{包含* 12345 *},{等于12345},{结束* 12345}或诸如{包含* 12345 *}或{等于11111}或{等于22222}等组合 等等

我看到的所有参数示例在CDS中都使用等于" ="运算符,而不使用" IN"运算符。 例如:

其中material =:in_material

我们可以使用:

其中材料IN:in_material

如果上述方法不可行,我们如何根据过滤器范围提交关联?

欢迎您提出想法和建议。

4条回答
何必丶何苦呢
2020-08-14 00:00

嗨,

对于OData V2,我会看到创建函数导入的选项,例如

GetSalesOrderByMaterial?filter = * 1234 *

在OData V4中(但是至少需要SAP_GWFND 751 SP09),您将找到以下示例

/sap/opu/odata4/iwbep/tea/default/iwbep/tea_busi/0001/Departments?$ filter = DEPARTMENT_2_TEAMS/任何(d:d/预算 gt 4000和d/BudgetCurrency eq'JPY')&sap-statistics = true

但是,这需要" any"运算符的基于代码的实现,这非常棘手。

最好的问候 ,

安德烈

一周热门 更多>