
做 SAP S/4HANA On-Premise 项目时,有一种性能问题很容易被忽略。前端的 SAP Fiori 或 SAP UI5 应用访问一个 OData Service,浏览器到 SAP Gateway 的 HTTP 通信没有异常,数据库执行时间也很短,甚至通过 ST05 检查 SQL 都找不到明显问题,可整个 OData Request 的耗时依旧比预期高。这种情况下,性能损耗未必来自业务代码,也未必来自 CDS View 或数据库。调用链中还可能存在一段完全可以省掉的通信过程,也就是 SAP Gateway Framework 与 Backend Runtime 之间的 RFC 调用。如果 SAP Gateway 和 Backend 实际运行在同一个 SAP ABAP 系统中,却仍然按照远程 Backend 的方式处理 OData 请求,就可能产生一段没有必要的 RFC 通信,以及伴随 RFC 而来的数据序列化、反序列化、Runtime Context 切换等工作。SAP Gateway Foundation 为这种部署模式提供了一条捷径,也就是RFC Bypass。SAP 官方在关于Co-Deployment的说明中明确提到,当 OData Service 本地部署在同一个系统时,SAP Gateway Foundation Framework 可以在 HTTP Handler 与 Backend Runtime 之间使用 shortcut。另一方面,在 Service Group Publishing 的配置说明中,SAP 对Local GW的行为描述得更加直接,当该标志被设置以后,Framewo