#如何把内表A的指定字段赋值给内表B的指定字段?
一般两个内表的赋值
1.如果是结构完全一样使用: A = B[]。
若是结构有些一样有些不同那就是使用 MOVE-CORRESPONDING,但是它只能把相同的字段的名的值赋值进去,不同字段名的就无法赋值过去了。
3.loop 循环进行赋值,赋值字段名相同或者不同的都可以办得到,但是资源耗费大。
4.使用方法cl_abap_corresponding=>create可以不使用循环,把字段名不同的字段匹配赋值。(使用较少,感兴趣的自己搜一下)
5.使用MAPPING的方法一代码特别简单易懂。
注意点:
1.字段强制转换,C类型不能强制转换为 i类型,i类型可以转成C类型
2.字段长度,定义的短了,会强制截断。
3.字段名相同的,会自动匹配赋值。
此处着重讲使用MAPPING的方法
TYPES:BEGIN OF ty_a,
a TYPE char20, "姓名
b TYPE i, "年龄
c TYPE string, "籍贯
END OF ty_a.
TYPES:BEGIN OF ty_e,
e TYPE char2,
f TYPE i,
c TYPE string,
END OF ty_e.
DATA:gt_a TYPE TABLE OF ty_a.
DATA:gt_e TYPE TABLE OF ty_e.
gt_a = VALUE #(
( a = '张三' b = 25 c = '湖南人')
( a = '李四啊' b = 34 c = '广东人') ).
gt_e = CORRESPONDING #( gt_a MAPPING e = a f = b ) .
cl_demo_output=>display( gt_e ).