在 VALUE 运算符中使用 'FOR' 循环与 'BASE' 加法连接?

Concatenate using 'FOR' loop in VALUE operator with 'BASE' addition?

是否可以将 FORCONCATENATEBASE 语句混合使用?

通常,itab1 = VALUE #( BASE itab1 ( value1 ) ) 会将 line1 添加到 itab1 中而不覆盖。 FORBASE 一起使用时不应该一样吗?

这是我的思考过程,但我得到 No component exists with the name "FOR" 错误:

itab1 = 
VALUE #( 
   BASE itab1
   ( value1 && value2 )
   ( VALUE #( 
       FOR line in itab2
       ( line-fld1 && line-fld2 ) )
   ).

Shouldn't it be the same when using FOR along with BASE

是的,语义相同。您使用 BASE 来保留 LHS when adding rows of RHS, and line specification 的行是相同的:

itab1 = VALUE #( BASE itab1 FOR line in itab2 ( matnr = line-matnr
                                                maktx = line-matnr && line-spras
                                                spras = line-spras ) ).

但是,这里有一点您应该记住:您不能将相同的 itab 放入 inline-declared LHS、BASE 源和到 FOR 循环,它会给你无限循环和 TSV_TNEW_PAGE_ALLOC_FAILED 转储。

我尝试了 Sandra 在评论中提出的建议,效果非常好:

You may append the lines of an internal table only by using ( LINES OF itab ), so in your case it should be ( LINES OF VALUE #( ... ) ) – Sandra Rossi

itab1 = 
VALUE #( BASE itab1 ( value1 && value2 )
       ( LINES OF VALUE #( FOR line in itab2 ( line-fld1 && line-fld2 ) ) ).