如何使用VALUE表达式向itab添加新行

时间:2017-01-11 22:41:24

标签: abap

ABAP 7.40为我们带来了新的语法,我仍然在弄清楚它 我想在现有表lt_itab中添加一个新行。我找到了一个解决方法,添加一个空行,并通过索引计算表的当前长度,但有更简单的方法吗?

SELECT spfli~carrid, carrname, connid, cityfrom, cityto
  FROM scarr
  INNER JOIN spfli
  ON scarr~carrid = spfli~carrid
  WHERE scarr~carrid = @carrier
  ORDER BY scarr~carrid
  INTO TABLE @DATA(lt_itab).

"How can I simplify the following code part?
DATA(lv_idx) = lines( lt_itab ).
APPEND INITIAL LINE TO lt_itab.
lt_itab[ lv_idx + 1 ] = VALUE #( carrid    = 'UA'
                                 carrname  = 'United Airlines'
                                 connid    = 941
                                 cityfrom  = 'Frankfurt'
                                 cityto    = 'San Francisco' ).

2 个答案:

答案 0 :(得分:4)

索引逻辑非常难看,您可以轻松地使用ASSIGNING命令添加APPEND来获取新添加的行的字段符号。然后,您可以使用该字段符号使用您现在使用的相同VALUE构造填充表条目。

或者您可以在一个声明中完成:

APPEND VALUE #( ... ) TO lt_itab.

答案 1 :(得分:4)

It's all in the documentation

lt_itab = VALUE #( BASE lt_itab ( carrid = ... ) ).