如何使用表推导语法合并两个同类型ABAP内表?
问题原因
你写的表推导把两个for放在同一个行构造块里了,ABAP会把第二个for当成内表行结构lvc_s_fcat的组件名,但这个结构里根本没有叫for的组件,所以报了错。
正确写法
如果是要把两个内表的行合并到一起(把lt_fcat1和lt_fcat2的所有行都放进新内表),得把两个for分别放在独立的括号里:
data(lt_fcat1) = VALUE lvc_t_fcat( ). data(lt_fcat2) = VALUE lvc_t_fcat( ). data(lt_fcat) = VALUE lvc_t_fcat( ( for i in lt_fcat1 ( i ) ) ( for j in lt_fcat2 ( j ) ) ).
嫌麻烦的话,用BASE关键字更简洁——先以lt_fcat1为基础,再追加lt_fcat2的行:
data(lt_fcat) = VALUE lvc_t_fcat( BASE lt_fcat1 for j in lt_fcat2 ( j ) ).
要是你本来想生成笛卡尔积(让lt_fcat1的每一行都和lt_fcat2的每一行组合成新行),那得在同一个块里明确写出新行的构造逻辑,示例如下(需根据实际需求调整字段赋值):
data(lt_fcat) = VALUE lvc_t_fcat( for i in lt_fcat1 for j in lt_fcat2 ( fieldname = i-fieldname && '_' && j-fieldname coltext = i-coltext && '/' && j-coltext " 其他字段按需赋值 ) ).
内容的提问来源于stack exchange,提问作者Cutter
相关产品推荐
相关产品推荐

