В abap 7.52 появилась возможность получить порядок записи внутренней таблицы не меняя исходные данные. Т.е., например, можно виртуально отсортировать таблицу в import параметре по интересующему нас ключу.
Для этого был добавлен метод VIRTUAL_SORT класса cl_abap_itab_utilities.
Рассмотрим пример:
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 |
types: begin of gs_fio, pernr type text8,"в тестовой системе нет hr типов fio type text100, bukrs type bukrs, end of gs_fio. data gt_fio type table of gs_fio. append value #( pernr = '90000001' fio = 'Ivanov I.I.' bukrs = '0001' ) to gt_fio. append value #( pernr = '00000002' fio = 'Petrov P.P.' bukrs = '0002' ) to gt_fio. append value #( pernr = '90000999' fio = 'Sidorov S.S.' bukrs = '0000' ) to gt_fio. append value #( pernr = '00000001' fio = 'Ivanov A.A.' bukrs = '0001' ) to gt_fio. append value #( pernr = '99999999' fio = 'Ivanov B.B.' bukrs = '9999' ) to gt_fio. data(lt_index_sort) = cl_abap_itab_utilities=>virtual_sort( im_virtual_source = value #( ( source = ref #( gt_fio ) components = value #( ( name = 'bukrs' descending = abap_true ) ( name = 'fio' ) ) ) ) ). cl_demo_output=>display( lt_index_sort ). |
Также есть возможность с использования нескольких внутренних таблиц. Но там есть некоторые ограничения, из-за которых я не придумал кейса использования. Можно почитать тут.