如何从 ABAP 调试器里提取某个内表的内容用于单元测试

举报
汪子熙 发表于 2022/10/03 09:20:43 2022/10/03
【摘要】 假设我想把内表 gt_tstct 里的所有记录,全部提取出来,用于 ABAP 单元测试里:我们可以使用 SAP S/4HANA 里自带的 debugger script,把内表的数据以文本的形式提取出来。点击 Script 面板:Load Script:选择标准的 script:RSTPDA_SCRIPT_VALUE_POUND:点击 start script : IMPORT tabnam...

假设我想把内表 gt_tstct 里的所有记录,全部提取出来,用于 ABAP 单元测试里:

我们可以使用 SAP S/4HANA 里自带的 debugger script,把内表的数据以文本的形式提取出来。

点击 Script 面板:Load Script:

选择标准的 script:RSTPDA_SCRIPT_VALUE_POUND:

点击 start script :

 IMPORT tabname TO gv_tabname FROM MEMORY ID sy-repid.

当前选中的内表的表名会存储到 ABAP 变量 gv_tabname 中。
点击 start script:

弹出这个窗口:

现在就可以 ctrl C 来复制粘贴了:

gt_tstct = VALUE #(
( SPRSL = 'E' TCODE = '/CEERE/19000326' TTEXT = 'IMG activity: /CEERE/MTPZDR' )
( SPRSL = 'E' TCODE = '/CEERE/19000327' TTEXT = 'IMG activity: /CEERE/MMAPL' )
).

空值合并运算符 (??) 是一个逻辑运算符,仅当左侧(第一个参数)为空或未定义时才返回运算符(第二个参数)的右侧。 在所有其他情况下,它返回第一个参数。

下列这两行测试代码,分别输出 Hello 和 132

因此,正如您在上面的示例中看到的那样,返回 Hello 是因为 undefined 位于运算符的左侧。 如果 null 代替 undefined,结果将是相同的。 在第二个示例中,如果第一个参数中存在除 null 或 undefined 以外的任何内容,则操作员不会检查第二个参数,而是会立即打印第一个值。

在空值合并操作符被加入 ECMAScript 2020 之前,每当我们想为变量赋予默认值时,我们使用 OR (||) 逻辑运算符。 但是使用 OR 运算符有一些潜在的问题: || 运算符并不区分 false、0、“” 和 null/undefined。 所有这些都被 OR 运算符判定为返回 false,所以如果它遇到任何这些作为第一个参数,那么我们将得到第二个参数作为结果,这使得 OR 运算符的可信度降低。

下图显示了 ?? 和 || 这两个操作符的差异:

遇到 0,|| 会返回右边的操作数 100,而因为 0 既不是 undefined 也不是 null,因而 0 ?? 100 会返回 0.

关于 ?? 的优先级问题

?? 运算符仅比 MDN 文档中给出的优先级表中的 OR 运算符低一位。 这意味着它将在 = 和三元运算符之前以及 + 和 * 等运算符之后进行评估。

为了提高代码可读性,在使用 ?? 时请添加小括号:

SAP Spartacus 的实现中也有大量 ?? 的用法,如下图所示:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。