云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

分布式数据库_低价已备案域名_免费1年

小七 141 0

SAP与ABAP的关系非常有趣。有很多更新更好的方法,但很多旧的东西也能用。在使用现有的业务逻辑时,云服务器,试图从新方法中获益总是会带来一些乐趣。

在这种特殊情况下,云服务器网站,我将向您展示我提出的解决方案,以处理函数模块调用引发的旧式异常。此方法是完全通用的,应该与任何抛出经典异常的函数模块调用一起使用。

设置

创建一个新的异常类,您将使用该类将这些消息从一种格式"翻译"到另一种格式。在这个类中,您必须添加5个新属性来携带您的消息类型和消息变量。

如果您在Eclipse环境中执行此操作,云服务器网址,这就是您要声明的内容。

在这个代码示例中,我有您需要的关键代码片段。请不要注意变量和导入导出参数没有声明。

在声明类时,所有方法都必须声明为引发zcx\u my\u异常。这可确保引发的任何异常都会传递到下一级。

首先是标准函数调用。我有一个额外的方法GET\u MASTER\u DATA(),它只是一个额外的层,用于显示如何在最高级别处理异常。对于那些以前没有在ABAP中使用过基于类的异常的人来说,公有云市场,这是为了让您看到使用这种方法的强大性和简单性,而不是在每个级别传递和处理异常的传统方法。始终声明额外的catch all异常错误消息(在本例中为25)。如果对功能模块进行编程的人员提出了未声明的异常,这是一种安全措施。另一个是我也在传递MSGTY(消息类型)。尽管新的基于类的异常是"无类型的",因为您在不同的情况下提出了不同的异常,但有时我发现有这个字段是有用的。这是一个个人偏好,因为您当然可以提出这样的论点,即一个函数模块的所有异常都是错误。

是类似的,但您将使用Bapi返回表中的数据,而不是SYST字段。

bapiret\ U选项卡上的循环只是筛选表的一种方法。当然,您可以使用READ TABLE或TABLE表达式(bapiret=bapiret\u tab[type='E'])来实现相同的功能。这就是MSGTY的使用变得有趣的地方,因为很多BAPI也会返回完整的警告和成功消息。在将来的某个时候,哪个云服务器好,我想尝试将此提升为可恢复的提升,并使用它来记录成功和警告消息。

使用异常

这是简单的部分!就像任何其他的TRY…CATCH.

唯一棘手的部分是如何从捕获的异常对象获取MSGID和MSGNO–您必须通过接口访问T100文本。所以,这是一个两层深。

享受你的错误!

灵感和参考

这是对Mathew Billingham几年前提出的问题的回应…通过基于类的异常处理一般错误我也有一个类似的问题,就像他一样,我意识到异常对象包含了您需要的所有信息。

我也从Horst Keller的方法中得到了一些灵感发布7.50版的ABAP新闻–将消息转换为异常| SAP博客和Jörg Krause的博客功能模块调用的麻烦–第2部分| SAP博客和后续讨论。