0

我为同一个项目创建了两个传输请求 (TR),同时在 CDS 视图中进行了更改,之后显示错误代码为 400 的重复资源错误并且我无法在我的 UI5 表中获取任何数据。

我将锁定在新 TR 中的更改转移到旧 TR 但它仍然给出相同的错误。

HTTP 请求失败400,Bad Request,{"error":{"code":"/IWBEP/CM_MGW_RT/030","message":{"lang":"en","value":"Duplicate resource"},"内部错误“:{“应用程序”:...

4

1 回答 1

3

首先:通过使用事务(n/h)读取底层 SQL 视图(在 CDS 定义中注释)来仔细检查是否实际上没有重复键。@AbapCatalog.sqlViewNamese16

如果 SQL 视图中确实没有重复,则该错误可能是由 ABAP CDS 框架中的各种错误引起的。这些错误大多发生在您更改 CDS 源/定义之后。这里有几个:

  • 打开事务segw并通过右键单击“全部刷新”刷新实体结构。

    在编辑模式.

  • 然后单击红色白色沙滩球以重新生成 MPC/DPC 类。

    在此处输入图像描述

  • 红白色沙滩球实际上所做的是将更改后的结构与现有类合并。右键单击项目并选择“生成运行时”以真正重新生成所有运行时对象。

    在此处输入图像描述

  • 有时实体概览中有一个清理按钮。点击它。

  • 在事务中/iwfnd/gw_client选择元数据→<strong>清理缓存→在两个系统上

    在此处输入图像描述

  • 对于从 ABAP 类型手动创建的 OData 视图,清理缓存非常有效,segw但核心数据服务可能仍会被缓存。如果以上都没有帮助:

    • 注销并再次登录
    • 重新开始交易
    • 等一两个小时
  • 尝试直接/iwfnd/gw_client. 您可以激活登录/iwfnd/traces以仔细检查来自客户的请求的实际外观。

  • 检查您的 OData 客户端。它是否可能在内部缓存$metadata?

  • 检查传输请求是否已成功处理,例如使用事务se10长时间运行的 SADL 查询可能会阻止传输/导入到另一个系统。sm50必要时使用杀死它们。

于 2019-09-20T10:41:53.797 回答