[ ABAP老白 ](javascript:void\(0\);)
在低版本的ECC上, MOVE-CORRESPONDING 只能支持结构,不支持内表间的赋值。可以写一个简单的函数实现这个功能。
FIELD-SYMBOLS : <fs_in> ,
<fs_out> .
IF clr_befor_add = 'X' .CLEAR outtab[] .
ENDIF .ASSIGN outtab TO <fs_out> .
LOOP AT intab ASSIGNING <fs_in> WHERE ( wherestr ).MOVE-CORRESPONDING <fs_in> TO <fs_out> .
APPEND <fs_out> TO outtab .
ENDLOOP .解读:
1、在函数模块的TABLES里面定义的内表,如果不是RFC函数,可以不需要写结构
测试程序:
REPORT z_barry_test NO STANDARD PAGE HEADING .DATA : BEGIN OF it_in OCCURS 0 ,
matnr TYPE matnr ,
maktx TYPE maktx ,
END OF it_in .DATA : BEGIN OF it_out OCCURS 0 ,
maktx TYPE maktx ,
END OF it_out .SELECT matnr maktx INTO TABLE it_inFROM makt UP TO 10 ROWS .
CALL FUNCTION 'ZMOVE_CORRESPONDING_TABLE'TABLES
intab = it_in
outtab = it_out .
LOOP AT it_out .WRITE / it_out .
ENDLOOP .