尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SAP Gateway 后端数据提供者的错误响应控制,Exception、Message Container 与 Leading Message 到底如何协同

SAP Gateway 后端数据提供者的错误响应控制,Exception、Message Container 与 Leading Message 到底如何协同 在 SAP Gateway 项目里,有一类问题很容易在开发阶段被低估。业务校验明明已经在 ABAP 后端发现了错误,前端也确实收到了 HTTP 错误响应,但页面最终显示出来的错误文本却不是我们希望看到的那一条。更麻烦的情况是,后台一次校验返回了五六条消息,浏览器里的 OData response 也确实包含这些消息,可最外层的message却是一段非常笼统的异常文本,真正重要的业务错误反而躲在innererror深处。这类现象并不是 SAP Gateway 随机挑选消息造成的。SAP Gateway Foundation 在这里有一套明确的控制规则,核心参与者只有三个,后端抛出的 Exception、绑定在异常上的Message Container,以及Message Container中是否存在Leading Message。看懂这三者之间的关系以后,很多/IWBEP/CX_MGW_BUSI_EXCEPTION相关问题其实就变得非常清楚了。SAP 官方对这一机制给出的定义很直接。后端数据提供者可以通过抛出业务异常或者技术异常触发错误,业务异常通常使用/IWBEP/CX_MGW_BUSI_EXCEPTION或其子类,技术异常使用/IWBEP/CX_MGW_TECH_EXCEPTION或其子类。除此之外,异常还可以携带实现了/IWBEP/IF_MESSAGE_CONTAINER的消息容器。框架最终如何生成 OData error response,取决于有没有消息容器,以及
返回列表