Полность согласен с тем, что решения, предложенные господином Т, приведут к требуемому результату. Но часто невозможно выполнить предварительную сортировку. Например нужна групповая обработка записей после радактирования в гриде и возвращение обратно в грид при ошибке (материала не хватило на складе для выдачи на несколько разных ОС). Некрасиво увидеть пересортированные записи. Можно перед обработкой перегрузить во временную таблицу, но тогда имеет смысл сразу ее делать сортированной и потеряем связку с записями исходной таблицы (по крайней мере без изощрений) хотя-бы для раскрашивания красным цветом ячеек кол-ва. А можно работать со строками напрямую, сохранив их номера:
Code:
types: begin of itab_str_type,
num(10),
pos(6),
group(2),
end of itab_str_type.
types: itab_type type table of itab_str_type.
data: itab type itab_type with header line.
data: begin of wa_tabix,
tabix like sy-tabix,
end of wa_tabix.
data: begin of wa_group,
group type itab_str_type-group,
iTabix like table of wa_tabix,
end of wa_group.
data: it_group like sorted table of wa_group
with unique key group.
field-symbols: <fs> like line of it_group.
data : nTabix like sy-tabix.
START-OF-SELECTION.
itab = '000000001000000101'.
append itab.
itab = '000000001000000201'.
append itab.
itab = '000000002000000203'.
append itab.
itab = '000000002000000102'.
append itab.
itab = '000000002000000202'.
append itab.
itab = '000000001000000301'.
append itab.
loop at itab.
nTabix = sy-tabix.
read table it_group assigning <fs>
with table key group = itab-group.
if sy-subrc = 0.
clear: wa_tabix.
wa_tabix-tabix = nTabix.
append wa_tabix to <fs>-iTabix.
modify table it_group from <fs> transporting iTabix.
else.
clear: wa_group, wa_tabix.
refresh: wa_group-iTabix.
wa_group-group = itab-group.
wa_tabix-tabix = nTabix.
append wa_tabix to wa_group-iTabix.
insert wa_group into table it_group.
endif.
endloop.
loop at it_group assigning <fs>.
perform processing tables itab using <fs>.
endloop.
*---------------------------------------------------------------------*
* FORM processing *
*---------------------------------------------------------------------*
form processing tables itab type itab_type
using wa_group like line of it_group.
data: wa_tabix like line of wa_group-iTabix.
loop at wa_group-iTabix into wa_tabix.
read table itab index wa_tabix-tabix.
write: / itab-NUM, itab-POS, itab-GROUP.
endloop.
skip.
endform.