在ABAP中使用自定义消息引发异常

2024-01-10

我正在编写一个通过 RFC 调用的函数,我想找到最简单的方法来在 ABAP 中使用自定义消息引发异常。如果这可以尽可能短地完成,并且可以在一行上完成,那就太好了。

我希望它用于调试,而不是用于运行生产代码。

背景:

过去我使用Python编程语言。我喜欢在没有调试器的情况下进行调试。我放了一些assert 0, myvar写入代码并执行代码。对我来说,这感觉比传统调试器更快地跳过或进入代码行。我正在寻找相当于assert 0, mvar在ABAP中。

提出例外只是我目前想到的策略。欢迎实现总体目标的所有其他策略。


正如您已经发现的那样,MESSAGE text TYPE 'E' https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abapmessage.htm会让你抛出任意消息来中止程序执行。您还可以选择'A'作为一种类型。然而,不要用它来测试你的代码.

有几个原因:

  1. 作为文档MESSAGE明确指出,MESSAGE专门用于与用户交互,并且只能在最接近用户界面的代码层中使用。消息的确切行为很难预测,因为它取决于执行代码的处理模式,参见。消息行为的文档 https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abenabap_messages_types.htm。如果你绝对必须,请使用ASSERT https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abapassert.htm相反,它具有更加一致的行为。

  2. 你应该not出于测试目的更改您的生产代码。测试代码和生产代码应该尽可能不相交,否则您可能会意外地将纯粹用于测试的代码留在生产代码中。如今,ABAP 以 ABAP Unit 的形式提供了强大的单元测试框架。的断言方法cl_abap_unit_assert全部提供msg参数,您可以使用该参数为失败的测试定义非常具体的错误消息。这允许您进行详细的测试,而无需更改生产代码(if您将其设计为可测试的)。

  3. Both MESSAGE and ASSERT产生短转储。在开发系统中,这通常不会被视为那么糟糕,但如果可以的话,您应该避免生成短转储,因为这会让读者更难,例如: ST22 日志可将成熟代码中真正不可预见的错误情况与主动开发期间失败的测试区分开来。失败的单元测试不会转储,并且同样有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在ABAP中使用自定义消息引发异常 的相关文章

随机推荐

  • 使用 HTML5 数据属性的 AJAX 响应

    我有一个工作环境 我使用 AJAX 响应来填充 HTML 元素 例如 AJAX 响应有两个 或 n 个 对象 如下所示 0 Object id 111 Name abc 1 Object id 112 Name xyz 然后 已经有两个 或
  • 错误消息无法打开包含文件:'gxall.h':没有这样的文件或目录

    我正在尝试构建一些旧的 Visual C 代码 当我这样做时 我收到此错误消息 fatal error C1083 Cannot open include file gxall h No such file or directory 我该如
  • AWS Lambda 任务在 6.00 秒后超时

    我正在使用无服务器框架 我的 Lambda 函数连接到 DynamoDB 表以更新表中的项目 表的读写容量单位为 5 并且 auto scaling 被禁用 AWS Lambda 函数分配了 128MB 内存 我使用 Jmeter 进行性能
  • C++ 中的对话框未接收到某些击键

    当我 最终 学习用 C 编写 Windows 应用程序时 我偶然发现了这一点 我有一个用它创建的对话框CreateDialog 我还有一个默认按钮 然而 每次我按下TAB or ENTER 什么也没有发生 控制焦点也没有改变 默认按钮也没有
  • 使用 TPL 时避免窗口 (WPF) 冻结

    我正在构建一个 WPF 它有一个在 sql server 中执行 sql 查询的按钮 该查询可能需要很长时间才能运行 我想使用 TPL 来做到这一点 这段代码 var result Task Factory StartNew gt comm
  • 使用 PDO 有效获取带有 WHERE 子句的 SELECT 查询返回的行数

    有关于SO的大量讨论 https stackoverflow com search q pdo 20select 20number 20of 20rows 20 5Bmysql 5D关于如何获取运行时返回的行数SELECT使用 PDO 进行
  • 在应用程序中,活动和服务是否会在同一进程中运行?

    面试问题 在一个应用程序中 Activity和Service是运行在同一个进程中还是不同的进程中 我的答案是 在同一过程中 下一个问题 如果是的话 Activity和Service是如何同时运行的 我的答案是 操作系统将负责执行 坦白说 我
  • 将 bigdecimal 转换为 double(不带指数格式)

    我正在对高十进制精度 BigDecimal 对象进行计算 我正在使用需要双精度参数的第三方库 当我尝试将其转换为 double 时 我得到指数格式的值而不是小数 BigDecimal 0 000035000000000 Double 3 5
  • Winforms MDI“桌面”区域边界

    默认的MDI父控件有一个很大的 桌面 区域 可以显示多个子窗体 用户可以将表单拖动到此桌面区域的边缘 以便大部分子表单脱离屏幕 然后 MDI 父级中会出现一个滚动条 我不喜欢这个功能 有没有办法锁定桌面区域的边缘 以便子窗体保持完全可见 我
  • Woocommerce 以编程方式添加产品属性及其相应的值

    我正在构建一个获取产品的脚本 但我陷入了以编程方式添加属性的部分 所以基本上我想检查属性是否存在 如果不存在则添加它 然后检查它的价值是否存在 如果不存在 他们会添加它的价值 并将所有内容附加到我的产品上 这是我获得产品的格式 attrib
  • D 语言是否有多个标准库以及 GC 的问题?

    我想知道 D 有多成熟和稳定 以及它是否可以很好地替代 C C 我知道目前有两个标准库 Phobos 和 Tango 难道还是没有统一的标准库吗 另外 我不久前听说这些语言在 GCed 非 GCed 代码的边界上存在问题 我在D网站上找不到
  • Kotlin 问题“ExpandableRecyclerAdapter 类需要一个类型参数”

    RecyclerAdapter ViewHolder 出现问题 abstract class ExpandableRecyclerAdapter
  • 我应该直接调用 object.__str__() 吗?

    我正在用Python写一个类 我正在写一个 str 函数 以便我的打印语句可以打印该类实例的字符串表示形式 是否有理由直接做这样的事情 myObj Foo params doSomething myObj str 感觉既然还有其他更简洁的方
  • init CBCentralManager:表达式类型不明确,没有更多上下文

    尝试在 Swift 4 2 项目中初始化 CBCentralManager 获取评论中显示的错误 import CoreBluetooth class SomeClass NSObject CBCentralManagerDelegate
  • 在 Visual Studio 上部署到 Windows Phone 10 失败

    发生了很多事情 我不知道从哪里开始 说真的 这不是更简单吗 编辑 这里有人知道我如何联系微软来告诉这个吗 或者甚至 有人可以告诉他们这个问题吗 我有最后一个 Windows 10 桌面 还有 Windows Phone 10 0 10512
  • 从 Facebook 返回的奇怪访问令牌

    我一直在开发 Facebook 应用程序 并且已经使用 Facebook Graph Toolkit 几个月了 一直以来 我的代码都在工作 我可以获得访问令牌 我可以使用它们来检索 Facebook 用户详细信息 发布新闻源等 现在 新的问
  • 如何在所有浏览器上从 javascript 变量下载文本?

    我需要一个函数将 javascript 变量中的字符串下载到文本文件 5 7MB 中 该功能应该跨浏览器工作 我尝试过制作这样的下载功能 但它在 Chrome 上不起作用 FireFox 会打开 保存 对话框 但 Chrome 不会 另外
  • IncationTargetException.getCause() 何时为 null?

    根据javadocs http docs oracle com javase 7 docs api java lang reflect InvocationTargetException html getCause 28 29 Invoca
  • Hibernate 使用 JPA 存储库获取配置文件

    我正在使用 Hibernate 和 JPA 存储库 我想知道为什么我无法设置 FetchProfiles 并将它们与这样的存储库一起使用 entityManager unwrap Session class enableFetchProfi
  • 在ABAP中使用自定义消息引发异常

    我正在编写一个通过 RFC 调用的函数 我想找到最简单的方法来在 ABAP 中使用自定义消息引发异常 如果这可以尽可能短地完成 并且可以在一行上完成 那就太好了 我希望它用于调试 而不是用于运行生产代码 背景 过去我使用Python编程语言