我的知识星球 里有一个朋友提出了 SAP OData 服务 metadata 缓存方面的疑问,本文就来详细说一说:

jerry,啥时候有时间给介绍一下fiori的Metadata数据系统的处理机制吧。我现在在做的一个项目,用rap开发的。rap开发的service binding,在maintain service注册时,开始注册的服务命名错了。后来发现了后就删除了重新创建了一次。结果就出现了一个很有意思的现象,有时候打开app,界面上的那些filtertable控件都不显示了。用前端的error_log看系统有个错误,是和以前创建的那个服务有关。可是那个服务明明已经删除了。后来我debug了一下,发现系统表/iwfnd/i_med_vaa表里确实有一条和以前的服务绑定的数据,很奇怪。我尝试了各种正常操作都不能删除这条数据。而且,更奇怪的是,前端的app并不是每次都会没有控件,有时候会有。下午大体跟了一下代码,感觉这个东西和metadata有关,还与缓存有关。感觉系统好像用到了share object缓存了数据,当缓存数据不存在时就会从vaa表去取,结果由于选的那条数据对应的服务不存在了就会异常,从而刷不出显示控件;而缓存有数据时就会用缓存的数据,所以就能显示。可缓存的数据怎么来的呢?感觉应该有个job会定时处理。可是搜了一圈,只找到一个ui5/upd_odata_metadata_cache的程序。可是这程序修改的表好像不是vaa的。感觉这里面的东西挺多的,jerry能给大体讲讲吗?或者能给



![[附源码]计算机毕业设计JAVA校园网学生成绩查询系统](https://img-blog.csdnimg.cn/d6864d1b861b42dfa9c19893c3d0b2f6.png)


![[Camunda BPMN进阶] 电商订单流程设计与调试](https://img-blog.csdnimg.cn/336fda669a7f4c909ea9260b8cc481bb.png)









![[附源码]Python计算机毕业设计Django公益组织登记与查询系统论文](https://img-blog.csdnimg.cn/23a2ed4d6c8640569555b6c6d61613a0.png)


![[附源码]计算机毕业设计医院门诊管理信息系统Springboot程序](https://img-blog.csdnimg.cn/cc1c30c9c84948d5b473e6da288c8278.png)