SAP Gateway 里的数据交接桥梁,深入理解 /IWBEP/IF_MGW_CONV_SRV_RUNTIME 与 COPY_DATA_TO_REF
在 SAP Gateway 项目里调试一个 OData 服务时,经常会遇到一个看起来有点奇怪的场景。业务数据明明已经查出来了。一个销售订单、一条产品主数据、一张附件,甚至一整个 Internal Table,都已经安安静静地躺在 ABAP 变量里。可到了 Gateway Runtime 这一层,框架并不总是要求我们把这个具体结构直接塞给它,而是经常出现ER_ENTITY、ER_ENTITYSET、ER_STREAM这一类 Data Reference。也正是在这种地方,/IWBEP/IF_MGW_CONV_SRV_RUNTIME开始出现。SAP 官方把/IWBEP/IF_MGW_CONV_SRV_RUNTIME定义为 OData Channel Runtime API 的核心接口之一,同时对它的定位描述得相当简洁,它提供的是 Framework 所提供的一组 Convenience Methods,也就是一批专门帮助 Gateway Runtime 与应用实现层打交道的便利方法。这句话看起来很轻,但在理解 SAP Gateway 的架构时很重要。/IWBEP/IF_MGW_CONV_SRV_RUNTIME并不是业务接口。我们不会拿它去查询VBAK,不会用它执行销售订单创建,也不会在这里实现$filter。它更像 Framework 留给 Data Provider 的一套辅助设施。其中最典型的方法,就是COPY_DATA_TO_