扩展程序检查抱怨"窄行和扁平行类型"-为什么?

2020-09-05 23:24发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我遇到了奇怪的扩展程序检查警告。...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我遇到了奇怪的扩展程序检查警告。 令人反感的代码行在ABAP单元测试中; TOTALS是一个内部表(STANDARD TABLE ... WITH EMPTY KEY),具有6个字段:

 cl_abap_unit_assert => assert_equals(act =总计[1] -netpr
                                         exp = 10)。  " 2 * 1 + 4 * 2 = 10
 

提出延长支票:

----------
语法检查警告。

此警告仅在SLIN中显示。" TOTALS"的行类型窄而平坦。 推荐使用" VALUE#(...)"(值选择)。
内部消息代码:MESSAGE GLP
可使用编译指示## OPERATOR禁用。
----- -----

嗯? 我添加了## OPERATOR编译指示,警告消失了。 但是我仍然对发生的事情一无所知。 我的问题是:

  • 原始陈述有什么问题?
  • 我应该如何使用VALUE语句?
  • OPERATOR编译指示是什么意思?

这不会阻止我晚上入睡,但我仍然很想知道这里发生了什么。 有什么想法吗?

6条回答
派大星 ヾ
2020-09-06 00:10 .采纳回答

这是一个性能警告。 对于发现的问题,应该有一个很长的文字来说明问题:

如果在此处使用表表达式itab [...],则编译器将应用" ASSIGNING"语义,这意味着在所选行上设置了内部字段符号。 行类型狭窄而平坦,但是,这意味着具有" INTO"语义的选择(将行复制到内部变量)应该会产生更快的运行时间。 为此,请将整个表表达式包含在VALUE运算符中:VALUE#(itab [...])

复制而不是分配字段符号所带来的轻微性能是否与您的应用相关,当然取决于发生此错误的位置-在您的情况下,我怀疑您在单元测试中是否在意它,但实际上 如果这些表访问发生在长时间运行的循环中或类似地经常执行的代码段中,则值得注意。

一周热门 更多>