SAP Gateway 后端错误响应控制,如何让 OData 错误既能给用户看,也能让开发人员快速定位
在 SAP Gateway 项目里,最令人头疼的接口问题往往并不是 OData 请求直接返回500 Internal Server Error,而是接口明明已经发现了业务问题,却不知道应该把什么信息返回给前端。销售订单保存失败了,后台 BAPI 返回十几条消息。到底哪一条应该显示在 SAP Fiori 页面顶部,哪一条应该定位到具体输入字段,哪些消息只是给 ABAP 开发人员排查问题使用,哪些技术细节绝对不能暴露给最终用户。这正是 SAP Gateway 所说的Error Response Control for Backend Data Provider要解决的问题。在经典 SAP Gateway OData V2 开发模型里,真正执行业务逻辑的通常是 Data Provider Class,也就是 DPC,实际增强代码一般落在DPC_EXT。SAP 官方当前培训材料依然把 MPC 定义为服务模型和元数据的提供者,把 DPC 定义为业务实现的提供者,并明确说明自定义实现应该放进扩展类,而不是修改生成类,因为重新生成 SEGW 项目时,基础类可能被覆盖。当请求进入 DPC 以后,我们并不是只能在发生错误时写一句RAISE EXCEPTION。SAP Gateway 提供了一整套错误表达机制,核心成员包括/IWBEP/CX_MGW_BUSI_EXCEPTION、/IWBEP/CX_MGW_TECH_EXCEPTION、/IWBEP/IF_MESSAGE_CONTAINER、Leading Message、异常