【问题标题】:"404 - Resource not found" when query OData v2 with empty key field使用空键字段查询 OData v2 时出现“404 - 找不到资源”
【发布时间】:2022-03-13 03:07:32
【问题描述】:

我有一个通过网关公开并托管在 APIM 上的 SAP CDS 视图。 此 CDS 使用 @ObjectModel 注释启用了 CRUD 操作。

根据业务流程,CDS(SAP 表)中的一个关键字段可以为空,但是当我尝试通过 APIM 服务(具有空属性)查询此完整密钥时,我收到 404 - 找不到资源:

同样的查询在 SAP Gateway 中运行良好:

我应该怎么做才能让 APIM 了解这个关键字段可以接收空(或 null?)值?

【问题讨论】:

  • CDS 有两种类型的键:语义键和技术键,两者都不能为空。 AFAIK。请给出您的 CDS 视图的定义
  • 对不起..没听懂!关键字段可以是空的。我的意思是在透明表和 CDS 上。密钥是用于根据我的请求识别资源的密钥:zbudat、matnr、werks、lgort 和 charg。请注意,charg 是一个键,它是空的。

标签: odata http-status-code-404 cds apim


【解决方案1】:

从 APIM 服务和网关查询中看到这一点很有趣,给定相同的查询参数,结果是不同的,唯一对我的解释是 ABAP 端有转换,导致无法加载结果。当您使用 APIM 客户端时,ABAP 尝试查询数据时,您可以在 ABAP 端启用网关跟踪以检查确切的请求吗?使用事务 /IWNFD/TRACES 在 ABAP 端查看您的用户的跟踪记录。

问候, 德里克

【讨论】:

    【解决方案2】:

    感谢您的回答!

    我们发现这可能是 APIM 映射问题,因为当我们在路径上设置一个空键 (charg='') 时,我们甚至没有到达 SAP 网关就收到了 404:

    但是当我们用空格/空格(charg='')设置相同的参数时,它工作正常,它在 S4 表上找到条目:

    我怎么知道它没有达到 S4? 首先,因为跟踪没有捕获任何内容,其次是因为来自 S4 的 404 消息不同:

    谢谢大家!

    【讨论】:

      猜你喜欢
      • 2011-04-15
      • 2019-04-13
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 2013-06-21
      • 1970-01-01
      相关资源
      最近更新 更多