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

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:17

有时需要使用CONV时,我使用## OPERATOR,但是警告"类型的冗余转换...可在聚合函数中使用..."

< p>例如,我将## OPERATOR用作" meth(conv#(sy-subrc))",因为否则sy-subrc被系统更改为0并始终传递0。

但是我不这样做 不知道您的消息意味着什么。

您的版本/SP是什么?

PS:通过运行带有唯一选项"语法"的SLIN,我可以在此代码的7.52 SP1系统中重现。 检查警告"-但如果我取消注释" ixml"行,则警告消失,很奇怪!:

 CLASS lcl_ DEFINITION。
   公共部分。
     CLASS-METHODS测试。
   专用部分。
     类方法assert_equals
       输入
         行动任何类型
         exp TYPE任何。
 ENDCLASS。
 类别lcl_实施。
   方法测试。
     类型:BEGIN OF type,
               netpr TYPE p长度9小数,5
               " ixml TYPE引用为if_ixml,
             END OF类型。
     带有"空键"类型的数据总计"类型标准表"。
     assert_equals(act = totals [1] -netpr exp = 10)。
   终结法。
   方法assert_equals。
   终结法。
 ENDCLASS。

 选择开始。
   lcl _ => test()。

一周热门 更多>