需求场景
在日常写测试代码或者一些简单的赋值时,一个一个字段赋值效率太低,可以采用VALUE的方式赋值。
实现代码
DATA:
BEGIN OF line1,
col1 TYPE i,
col2 TYPE i,
col3 TYPE i,
col4 TYPE i,
END OF line1,
itab1 LIKE TABLE OF line1,
itab2 LIKE TABLE OF line1.
" 直接给内表赋值
itab1 = VALUE #(
( col1 = 41 col2 = 42 col3 = 43 col4 = 44 )
( col1 = 31 col2 = 32 col3 = 33 col4 = 34 )
( col1 = 21 col2 = 22 col3 = 23 col4 = 24 )
( col1 = 11 col2 = 12 col3 = 13 col4 = 14 ) ).
" Value for in 可以用来筛选
itab2 = VALUE #(
FOR wa IN itab1 WHERE ( col1 < 30 )
( col1 = wa-col1 col3 = wa-col3 + wa-col1 ) ).
" Base 基于原内表数据 == APPEND
itab1 = VALUE #( BASE itab1
col1 = 10 ( col2 = 42 col3 = 43 col4 = 44 )
( col2 = 32 col3 = 33 col4 = 34 ) ).
" APPEND
APPEND VALUE #( col1 = 8 col2 = 42 col3 = 43 col4 = 44 ) TO itab1.
总结
这里实现的代码非原创,是转载的,除了BASE这个其他均本地验证过,应该是目前的ECC版本不支持BASE。