1

SAPUI5我们在服务维护方面遇到了问题。通过SEGW事务对服务实体进行更改后,客户端加载的元数据GW保持更改前的状态。

例如,有一个日期字段变成了字符串,并GW抛出invalid or no mapping to system data types found. 原因是试图将字符串日期值(如 '16.05.2019')放入日期类型(实体的元数据不会以某种方式刷新)。

我们尝试刷新这些缓存:

  • 重新计算索引
  • 世芯
  • 全局缓存

通过:

  • /iwfnd/cache_cleanup
  • /ui2/invalidate_global_caches
  • /ui5/app_index_calculate

我们还重新加载了元数据,甚至删除了实体并重新创建它——所有这些都失败了。

/IWFND_GW_CLIENT事务中显示更新的元数据。

只有重新创建具有不同名称的实体似乎可以解决它,但它似乎不是维护服务的好方法......

4

1 回答 1

1

/IWFND/CACHE_CLEANUP是唯一与 OData 相关的,其他缓存用于部署的 UI5 应用程序。如果您处于具有多个后端系统的 GatewayHub 环境中,则必须在两个系统上运行事务。

如果事务不这样做,则两个系统都会进行另一个缓存清理,SAP 以不同的方式实现。这是我在 SEGW 后端系统中更改服务后所做的事情:

  1. 后端SEGW:重新生成运行时对象
  2. GatewayHub (GW)/IWFND/GW_CLIENT执行/sap/opu/odata/ZyourService_SRV/$metadata。服务不变
  3. 在顶部菜单中的同一事务中:Metadata -> Cleanup Cache -> on both systems
  4. 再次执行/sap/opu/odata/ZyourService_SRV/$metadata。有变化的服务
  5. 现在前端只剩下一个浏览器缓存,它可能包含过时的信息。通常,您的应用程序的硬刷新应该使浏览器重新加载元数据。在 Chrome 浏览器的开发者控制台中,在网络选项卡中,您还可以在控制台打开时禁用缓存。
  6. 对于最新的 GatewayHub 系统, SAP 引入了带有 CacheBuster 的 Odata 缓存和一个应该定期计划的程序

为确保令牌是最新的,必须定期执行报告 /UI5/UPD_ODATA_METADATA_CACHE。

于 2019-05-16T17:07:19.053 回答