1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
TYPES: BEGIN OF ty_one, a TYPE char2, b TYPE char2, C TYPE char2, END OF ty_one, BEGIN OF ty_two, b TYPE char2, C TYPE char2, END OF ty_two. DATA: lt_tab1 TYPE STANDARD TABLE OF ty_one, lt_tab2 TYPE STANDARD TABLE OF ty_two. FIELD-SYMBOLS: <fs_struct> TYPE ty_one, <fs_struct1> TYPE ty_two. APPEND INITIAL LINE TO lt_tab1 ASSIGNING <fs_struct>. <fs_struct>-a = 'a1'. <fs_struct>-b = 'b1'. <fs_struct>-C = 'c1'. APPEND INITIAL LINE TO lt_tab1 ASSIGNING <fs_struct>. <fs_struct>-a = 'a2'. <fs_struct>-b = 'b2'. <fs_struct>-C = 'c2'. APPEND INITIAL LINE TO lt_tab2 ASSIGNING <fs_struct1>. <fs_struct1>-b = 'z1'. <fs_struct1>-C = 'z2'. " MOVE-CORRESPONGING для внутренних таблиц не работает, " простая альтернатива: cl_reca_data_services=>move_corresponding_table( EXPORTING IT_SRC = lt_tab1 CHANGING CT_TRG = lt_tab2 ). |
Upd Для ABAP версии 7.40, оператор move-corresponding работает с таблицами, см справку по F1.
Hi! В какой же системе этот класс CL_RECA_DATA_SERVICES? Thanks
У нас в текущее время EhP 7.02 в 7.0 так же присутствовал.
Как же этот метод работает? Из N-ой записи 1-ой таблицы данные будут перенесены именно в N-ую запись 2-ой? В данном примере 2-ая запись 1-ой останется на месте и данные из неё не пойдут во 2-ую. Она останется нетронутой и если пересылать из 2-ой таблицы в 1-ую…
То есть в методе примерно такой код:
field-symbols: type any, type any.
loop at it_rc assigning .
read table ct_trg assigning index sy-tabix.
check sy-subrc = 0.
move-corresponding to .
endloop.
Честно говоря, не вижу большого смысла в таком негибком механизме…
То есть в методе примерно такой код:
field-symbols: <ls_src> type any, <ls_trg> type any.
loop at it_src assigning <ls_src> .
read table ct_trg assigning <ls_trg> index sy-tabix.
check sy-subrc = 0.
move-corresponding <ls_src> to <ls_trg>.
endloop.
Попробуйте данный класс: CL_REXC_FC_SERVICES