从 BAPIRET2 到 SAP Gateway Error Log 的完整日志链路
在 SAP Gateway 项目里,有一类问题非常典型。OData 请求已经进入 ABAP 后端,DPC 或业务实现代码也成功调用了某个 RFC 或 BAPI,但业务执行并没有成功。真正有价值的错误信息其实已经躺在BAPIRET2返回表里,例如销售组织不存在、物料没有维护销售视图、凭证期间没有打开、业务伙伴数据不完整,甚至还有多条 Warning、Error 和 Abort 消息同时返回。如果代码只检查sy-subrc,或者只从BAPIRET2里挑一条文本塞回 HTTP Response,Gateway 运维人员看到的往往只是一个表面错误。真正进入业务层之后发生了什么,哪个业务对象触发了问题,是哪个 Gateway 组件写出的消息,同一次 BAPI 调用究竟返回了多少条诊断信息,这些信息很容易在调用链中丢掉。SAP Gateway Foundation 为这种场景提供了专门的日志能力,核心就是LOG_BAPI_RETURN。SAP 官方文档对它的定位很明确,LOG_BAPI_RETURN用于记录 RFC 调用通过 BAPI Return Structure 返回的消息。当前 SAP Help 同时列出了/IWFND/CL_LOGGER和/IWBEP/CL_COS_LOGGER这两个相关 Logger 类。它解决的并不是如何创造错误消息,而是如何把业务层已经产生的BAPIRET2消息接入 SAP Gateway 的诊断体系。这件事看上去只是一个 Log