在 SAP Gateway 项目里,有一类问题非常容易被低估。后端业务处理已经成功,HTTP 状态码也是200、201或204,但业务层仍然有一些信息必须告诉前端,例如订单创建成功但某个字段被自动调整,库存确认成功但实际确认数量少于请求数量,主数据保存成功但某些派生字段被系统重新计算。这些情况显然不适合抛出/IWBEP/CX_MGW_BUSI_EXCEPTION。一旦把业务提示当成异常抛出去,原本成功的业务请求就可能进入 OData 错误处理路径。可如果什么都不返回,前端又无法知道后端究竟发生了哪些业务事件。SAP Gateway 为这种场景准备了一套非常实用的机制,也就是Message Container与 HTTP 响应头SAP-Message之间的映射。SAP 官方文档对这个机制给出了很明确的定义。当 OData 请求成功时,warning 和 success 等消息仍然可以返回给 consumer。消息通过 Gateway 的 Message Container 收集,再根据标记映射到 HTTP 响应头中。真正决定某条消息是否进入响应头的关键参数,就是IV_ADD_TO_RESPONSE_HEADER = ABAP_TRUE。这套设计看起来只是一个 HTTP Header 技巧,实际上背后串联着 SAP Gateway 的消息模型、ABAP Message Class、OData 协议格式、HTTP 内容协商以及 SAPUI5 的消息解析机制。理解这一层之后,很多 Gateway 项目里常见的