Группировка несортированных строк в ALV

Можно ли автоматически группировать строки по несортированным полям в ALV? Предположим, например, что у меня есть следующий вывод:

1   T_PM1   0271    6025984     1271    602721
1   T_PM1   0271    6025984     1765    602721
1   T_PM1   0271    6025984     764     602721
1   T_PM1   0271    6025984     1242    602721
1   T_PM1   0271    6025984     1243    602721
1   T_PM1   0271    6025984     484     602721

Предположим, я теперь сортирую по первым двум столбцам и по пятому. Первые два столбца будут сгруппированы в 1 и T_PM1, а пятый будет отсортирован. Однако третий, четвертый и шестой столбцы содержат данные, полученные из первых двух столбцов, и поэтому они идентичны. Как мне теперь принудительно сгруппировать эти поля? (Обратите внимание, что я использую объектно-ориентированный метод создания ALV.)

Очевидным решением было бы также отсортировать эти столбцы, но хотя я не могу сразу придумать сценарий, в котором это приведет к плохой сортировке, я обеспокоен тем, что это делает мой код менее читаемым, вставляя бесполезные сортировки, и что эти сортировки представят ненужные накладные расходы, требуя дополнительного однократного прохождения данных для каждого дополнительного столбца, чтобы убедиться, что они уже отсортированы.


person Lilienthal    schedule 30.12.2013    source источник
comment
Я не понимаю вашего последнего абзаца - о каких ненужных видах вы говорите и какой дополнительный одиночный проход, по-видимому, должен иметь место?   -  person vwegert    schedule 30.12.2013
comment
Насколько я понимаю, чтобы сгруппировать третий, четвертый и шестой столбцы, я должен добавить их имена столбцов в оператор SORT, пока они уже отсортированы, поэтому их упоминание излишне. Кроме того, я бы предположил, что для каждого из этих столбцов оставшееся подмножество несортированных записей (в примере все они) логика сортировки будет повторяться, чтобы проверить, отсортированы ли эти поля. Конечно, я могу ошибаться здесь, возможно, эта логика оптимизируется автоматически.   -  person Lilienthal    schedule 30.12.2013


Ответы (1)


Насколько мне известно, сгруппировать значения в таблице ALV в несортированные столбцы невозможно. Имейте в виду, что сортировка будет выполняться сеткой ALV, поэтому добавление столбцов в ваш оператор SORT должно быть совершенно ненужным - фактически, весь оператор SORT не должен быть необходим.

Количество столбцов, используемых для сортировки таблицы, обычно мало влияет на общее время сортировки - в большинстве случаев вам не придется об этом беспокоиться.

person vwegert    schedule 30.12.2013
comment
Как я и подозревал, просто добавлю все нужные сорта. Как вы говорите, я по ошибке сослался на оператор SORT, тогда как на самом деле я использую cl_salv_sorts с соответствующими операторами lo_sorts->add_sort( columnname = '####' ).. Первоначальные тесты, похоже, подтверждают, что любое влияние на производительность незначительно, особенно по сравнению со временем доступа к БД. - person Lilienthal; 31.12.2013