如何使用 VALUE 表达式向 itab 添加新行
How to add new line to itab with VALUE expression
ABAP 7.40 给我们带来了新的语法,我还在研究中。
我想在现有的 table lt_itab
中添加一个新行。我通过添加一个空行并计算出 table 的当前长度以按索引更新找到了一个解决方法,但是有没有更简单的方法?
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
命令来为新添加的行获取一个字段符号。然后,您可以使用该字段符号使用您现在使用的相同 VALUE
结构来填充 table 条目。
或者您可以在一条语句中完成:
APPEND VALUE #( ... ) TO lt_itab.
It's all in the documentation:
lt_itab = VALUE #( BASE lt_itab ( carrid = ... ) ).
ABAP 7.40 给我们带来了新的语法,我还在研究中。
我想在现有的 table lt_itab
中添加一个新行。我通过添加一个空行并计算出 table 的当前长度以按索引更新找到了一个解决方法,但是有没有更简单的方法?
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
命令来为新添加的行获取一个字段符号。然后,您可以使用该字段符号使用您现在使用的相同 VALUE
结构来填充 table 条目。
或者您可以在一条语句中完成:
APPEND VALUE #( ... ) TO lt_itab.
It's all in the documentation:
lt_itab = VALUE #( BASE lt_itab ( carrid = ... ) ).