在 VALUE 运算符中使用 'FOR' 循环与 'BASE' 加法连接?
Concatenate using 'FOR' loop in VALUE operator with 'BASE' addition?
是否可以将 FOR
与 CONCATENATE
与 BASE
语句混合使用?
通常,itab1 = VALUE #( BASE itab1 ( value1 ) )
会将 line1
添加到 itab1
中而不覆盖。 FOR
和 BASE
一起使用时不应该一样吗?
这是我的思考过程,但我得到 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 ) ) ).
是否可以将 FOR
与 CONCATENATE
与 BASE
语句混合使用?
通常,itab1 = VALUE #( BASE itab1 ( value1 ) )
会将 line1
添加到 itab1
中而不覆盖。 FOR
和 BASE
一起使用时不应该一样吗?
这是我的思考过程,但我得到 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 ) ) ).