odata - 如何在 OData 调用中排除多个值?

标签 odata sapui5 abap

我正在创建一个 SAPUI5 应用程序。此应用程序通过 OData 连接到后端 SAP 系统。在 SAPUI5 应用程序中,我使用了智能图表控件。开箱即用的智能图表允许用户为基础数据创建过滤器。这工作正常 - 除非您尝试对一个属性使用多个“不等于”。有没有办法做到这一点?
我发现“and_expression”(包括嵌套的 or_expressions)中的所有属性都必须具有唯一名称。

The reason why two parameters with the same property don't get parsed into the select options:

/IWCOR/CL_ODATA_EXPR_UTILS=>GET_FILTER_SELECT_OPTIONS takes the expression you pass and parses it into a table of select options.

The select option table returned is of type /IWCOR/IF_ODATA_TYPES=>EDM_SELECT_OPTION_T which is a HASHED TABLE .. WITH UNIQUE KEY property.


发件人:https://archive.sap.com/discussions/thread/3170195
问题是你不能组合NE条款与 OR .因为NE后面的两个参数不应显示在结果集中。
所以最后it_filter_select_options是空的,只有 iv_filter_string充满。
是否有手动方法来面对这个问题(对 iv_filter_string 的评估)来处理多个 NE条款?
这将是一个示例请求:
XYZ/SmartChartSet?$filter=(Category%20ne%20%27Smartphone%27%20and%20Category%20ne%20%27Notebook%27)%20and%20Purchaser%20eq%20%27CompanyABC%27%20and%20BuyDate%20eq%20datetime%272018-10-12T02%3a00%3a00%27&$inlinecount=allpages
通常我希望这从我从后端检索的结果集中排除类别为“笔记本”和“智能手机”的项目。

最佳答案

如果内部有bug /iwcor/cl_odata_expr_utils=>get_filter_select_options这使得它无法处理多个 NE相同组件的过滤器,您不能等待OSS。我建议将它包装在一个新的静态方法中,该方法将产生以下逻辑(如果您坚持使用 ABAP 实现,我会尝试在我有时间时至少部分实现它):

  • 获取 <COMPONENT> ne '<VALUE>' 的所有实例里面() (使用正则表达式)。
  • 更换每个 <COMPONENT><COMPONENT>_<i>所以会有( <COMPONENT>_1 ne '<VALUE_1>' and <COMPONENT>_2 ne '<VALUE_2>' and... <COMPONENT>_<n> ne '<VALUE_n>' )。
  • 调用 /iwcor/cl_odata_expr_utils=>get_filter_select_options使用修改后的查询。
  • 修改rt_select_options更改结果 COMPONENT_<i><COMPONENT>再次。
  • 关于odata - 如何在 OData 调用中排除多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54647473/

    相关文章:

    methods - abap多方法调用

    c# - 返回 TypeMismatchRelationshipConstraint 的 WCF 元数据

    c# - 哪个 C# OData 客户端库用于 Dynamics CRM 365 Web Api?

    javascript - 如何重置向导 sapui5

    css - 使用 SAPUI5 主题设计器自定义字体

    abap - 当前 CLASS POOL 中 PUBLIC 类的名称必须是 "..."而不是 "..."

    post - 使用扩展创建 OData POST 实体

    python - 将 OData 查询编码为 URL

    javascript - SAP UI5 与其他 Javascript 框架相比?

    json - 自定义 CL_SXML_STRING_WRITER 创建的 JSON