应用程序编程模型 $filter 操作

Application programming model $filter operation

在实施 Deep dive 12 中的所有步骤后,我一直在尝试像普通 oData 服务那样使用 $filter 操作。

Deep Dive 12

https://baseurl/odata/v2/CrudService/BusinessPartner?$filter=BusinessPartnerCategory eq 'abc'.

但是,它不起作用。它总是 returns 相同的实体集。 我看过它的javadoc。似乎没有检索过滤器的方法。我看到有 getTopOptionValue、getSkipOptionValue、getSelectProperties 和 getOrderByProperties。

获取 $fitler 操作值的选项有哪些?

另一件事是在 deep dive 4 中。我看到过滤器是硬编码的。

Deep dive 4

final List<BusinessPartner> businessPartners =
                    new DefaultBusinessPartnerService()
                            .getAllBusinessPartner()
                            .select(BusinessPartner.BUSINESS_PARTNER,
                                    BusinessPartner.LAST_NAME,
                                    BusinessPartner.FIRST_NAME,
                                    BusinessPartner.IS_MALE,
                                    BusinessPartner.IS_FEMALE,
                                    BusinessPartner.CREATION_DATE)
                            .filter(BusinessPartner.BUSINESS_PARTNER_CATEGORY.eq(CATEGORY_PERSON))
                            .orderBy(BusinessPartner.LAST_NAME, Order.ASC)
                            .execute();

构建可能包含多个过滤器的动态过滤器语句需要什么?

谢谢

我还将最初发布在博文中的答案放在这里。以防万一有人只看一下 Whosebug。

目前过滤在 SAP Cloud Platform SDK 中不可用,但在路线图上。

Here 是使用自定义查询选项在自定义处理程序中调用 S/4HANA Cloud SDK 的解决方法。提出一个请求,比如…… BusinessPartner?$top=10&$skip=1&BusinessPartner eq 1&BusinessPartnerCategory < 1

然而,这是非常“hacky”的,我不推荐这种方法。

此致,

丹尼尔