Abap 如何使用值表达式向itab添加新行
ABAP7.40为我们带来了新的语法,我仍在摸索中。Abap 如何使用值表达式向itab添加新行,abap,Abap,ABAP7.40为我们带来了新的语法,我仍在摸索中。 我想在现有表中添加新行lt\u itab。我找到了一个解决办法,添加了一个空行,并计算出表的当前长度,以便按索引进行更新,但是有更简单的方法吗 SELECT spfli~carrid, carrname, connid, cityfrom, cityto FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid WHERE scarr~carrid = @carrie
我想在现有表中添加新行
lt\u 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' ).
索引逻辑非常难看,您可以很容易地使用
ASSIGNING
添加到APPEND
命令,将字段符号添加到新添加的行中。然后,您可以使用该字段符号,使用与现在使用的相同的值
构造填充表条目
或者,您也可以用一句话来表达:
APPEND VALUE #( ... ) TO lt_itab.
:
@Gert Beukema的解决方案可能是最合理的。我们只想在新功能真正有用的地方使用它们。在您的情况下,它们不是这样的,只是使用
APPEND
是否“BASE”真的是一个关键字,它意味着源表,因此可以自动处理所有表类型?我相信我链接的文档在这一点上相对清楚:如果指定了BASE,stab的内容在插入各行之前分配给返回值。我主要关注表类型,我将深入阅读文档。在我的测试用例中,这也是最快的解决方案
lt_itab = VALUE #( BASE lt_itab ( carrid = ... ) ).