在一个传统的 SAP GatewaySEGW项目里,我们经常会遇到这样一个场景。实体、属性、Association、Entity Set 都已经建好了,MPC和DPC运行时对象也已经生成,GET_ENTITYSET返回的数据完全正常,可到了 SAPUI5 或 SAP Fiori 前端,页面仍然缺少一些语义信息。某个字段应该显示成什么名称,某个值帮助是不是固定值集合,某个属性能不能创建或修改,某个 Entity Set 有没有特殊语义,这些信息并不属于业务数据,却会直接影响消费者如何理解 OData Service。
这时候,/IWBEP/IF_MGW_ODATA_ANNOTATION就出现了。
这个接口很小,小到 SAP 官方文档对核心ADD方法的说明只有两个参数。但如果把它放回整个 SAP Gateway metadata object model 里观察,会发现它其实处在一个很有意思的位置。它既不负责读取业务数据,也不负责执行 CRUD,更不会出现在DPC_EXT的业务实现里。它处理的是另外一层东西,也就是 OData Service 如何描述自己。
SAP Gateway 官方把/IWBEP/IF_MGW_ODATA_ANNOTATION列在 OData Channel Metadata APIs 之中,与/IWBEP/IF_MGW_ODATA_ENTITY_TYP、/IWBEP/IF_MGW_ODATA_ENTITY_SET、