是否有新的语法(740、750、751)来修改同一内部表?

2020-08-14 19:46发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我想知道是否有新的方...

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

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


大家好,

我想知道是否有新的方法可以使用新语法修改相同的内部表。 以前的方法是遍历并修改它。

对于基于条件的操作,从work_area WHERE(条件)中修改内部表可以解决问题,但是,无条件地操作则需要一个LOOP。

在内部表ASSIGNING FIELD-SYMBOL()处循环。
   -字段=值。
 ENDLOOP。

自从ABAP语言发展以来-从740、750到现在的751; 而且它还在不断发展,有没有一种我可能错过的新方法?

如果没有,那么我们可以提供类似的东西

 internal_table [1..lines(internal_table)] -field =值。

我知道这就像总是要求更多,这引起了某些人的注意,因为有些人(我知道)仍然不愿意使用新语法。

但是,正如他们所说的那样-当风暴席卷而来时,恶人消失了,但是义人永远站稳了! ;-)

干杯!

8条回答
暮风yp
2020-08-14 20:04

有一个解决方案,在VALUE构造函数运算符中使用带有LET表达式的辅助表。 请参阅以下代码:

类型:
   开始于lst_struct,
     field1 TYPE i,
     field2 TYPE char10,
     field3 TYPE char10,
   结束于lst_struct,
   带有默认键的lst_struct的ltt_table类型标准表。

 常量:lc_done TYPE char4 VALUE'完成'。
 DATA(lt_table)= VALUE ltt_table((field1 = 1 field2 ='Test1'field3 ='Warnigs')
                                   (field1 = 4 field2 ='Test2'field3 ='Failed'))。
 lt_table = VALUE#(LET lt_temp = lt_table IN FOR ls_temp IN lt_temp
                     (field1 = ls_temp-field1
                       field2 = ls_temp-field2
                       field3 = lc_done))。

您不能使用同一张表,因为VALUE运算符会创建一个新表(删除所有现有数据),并且如果您尝试使用附加的BASE,它将进入无限循环;)

一周热门 更多>