更改后SAPUI5元数据未刷新

时间:2019-05-16 14:32:16

标签: sapui5 sap

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

例如,有一个日期字段更改为字符串,并且GW引发错误invalid or no mapping to system data types found。原因是尝试将字符串日期值(如“ 16.05.2019”)放入日期类型(实体的元数据没有以某种方式刷新)。

我们尝试刷新那些缓存:

  • 索引重新计算
  • Smicm
  • 全局缓存

通过:

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

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

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

仅重新创建具有不同名称的实体似乎可以解决该问题,但这似乎并不是维护服务的好方法...

1 个答案:

答案 0 :(得分:0)

/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引入了Odata caching with CacheBusterprogram that should be planned periodically
  

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