zsap написал:
Parazit написал:
Если "другая таблица" будет изменена, например, сортировка, все ссылки поедут. В лучшем случае будет дамп, в худшем заметите искажение данных в продуктиве.

Parazit, боюсь тут вы не правы. Ссылки без проблем переживают и изменение и сортировку таблицы. Конечно это применимо если только одна таблица задана жестко, а вторую можно сделать любой. У автора как выяснилось вторая тоже не допускает изменений, так что метод со ссылками не годится. Остается MOVE-CORRESPONDING. Остальные предложенные методы явно ведут к ухудшению кармы

Вы правы, я не ожидал такой прыти от SAP.

Проверил на коде в 4.6 - работает (см.код ниже). Причем выдержало не только сортировку, но даже удаление записей. Видимо я не правильно представлял себе внутреннее устройство таблиц. Я представлял его в виде массива записей, как в Pascal-е например, а при сортировке происходит перемещение записей целиком. Вероятно, на самом деле, записи хранятся в памяти как отдельные переменные, а в таблице всегда хранятся лишь указатели на них.
Code:
REPORT ZPROBA .
Types:
Begin of t_abc,
a type sy-datum,
b type char30,
c type num10,
End of t_abc.
Types:
Begin of t_abcde,
ref_abc type ref to data,
d type char20,
e type d,
End of t_abcde.
Data:
it_abc type standard table of t_abc
with header line,
it_abcde type standard table of t_abcde
with header line.
Field-symbols:
<abc> type t_abc.
Start-of-Selection.
it_abc-a = '20121231'.
it_abc-b = 'видим 1-ю abc'.
it_abc-c = 54321.
Append it_abc.
Read table it_abc assigning <abc> index sy-tabix.
Get reference of <abc> into it_abcde-ref_abc.
it_abcde-d = 'Для 1-й abcde'.
it_abcde-e = '20130101'.
Append it_abcde.
Clear it_abc.
it_abc-b = 'удалим'.
Append it_abc.
Read table it_abc assigning <abc> index sy-tabix.
Get reference of <abc> into it_abcde-ref_abc.
it_abcde-d = 'Для пустой'.
it_abcde-e = '99991231'.
Append it_abcde.
it_abc-a = '20120101'.
it_abc-b = 'видим 2-ю abc'.
it_abc-c = 98765.
Append it_abc.
Read table it_abc assigning <abc> index sy-tabix.
Get reference of <abc> into it_abcde-ref_abc.
it_abcde-d = 'Для 2-й abcde'.
it_abcde-e = '99991231'.
Append it_abcde.
Write: / 'До сортировки:'.
Loop at it_abcde.
Assign it_abcde-ref_abc->* to <abc>.
Write: / <abc>-a, it_abcde-d, <abc>-b.
EndLoop.
Skip.
Delete it_abc index 2.
Sort it_abc by a.
Write: / 'После сортировки:'.
Loop at it_abcde.
Assign it_abcde-ref_abc->* to <abc>.
check sy-subrc = 0.
Write: / <abc>-a, it_abcde-d, <abc>-b.
EndLoop.