Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема начата: knopix от Июнь 14, 2011, 12:05:26 pm

Название: Отсеивание записей внутренней таблицы в соответствии с ALV-grid фильтрами.
Отправлено: knopix от Июнь 14, 2011, 12:05:26 pm
Здравствуйте...

Собственно, дело вот в чём. Есть данные во внутренней таблице, которую я вывожу в ALV-grid. Далее пользователь может наложить дополнительные ограничения используя фильтры в этом самом ALV-grid. А затем мне нужно вывести данные с учётом этих ограничений в excel-отчёт. Критерии фильтров получил при помощи метода "GET_FILTER_CRITERIA", а что с этим дальше делать никак не придумаю. Как-то сделать динамический "read table" внутренней таблицы с учётом значений фильтров не получается.

Подскажите, пожалуйста, что делать в этой ситуации.
Название: Re: Отсеивание записей внутренней таблицы в соответствии с ALV-grid фильтрами.
Отправлено: Dmitriy от Июнь 14, 2011, 01:24:14 pm
Попробуйте метод GET_FILTERED_ENTRIES, сам не использовал, но вы посмОтрите и скажете, индексы каких строк он возвращает. По идее должен вернуть индексы оставшихся на экране. Тогда в цикле по возвращаемой таблице ET_FILTERED_ENTRIES типа LVC_T_FIDX возможно сформировать выгружаемую в MS Excel актуальную таблицу данных.
Название: Re: Отсеивание записей внутренней таблицы в соответствии с ALV-grid фильтрами.
Отправлено: knopix от Июнь 14, 2011, 01:57:19 pm
Пробовал... Возвращает индексы "отфильтрованных" строк, т.е. тех которые не нужны. Я вот подумал, сделать цикл по возвращаемой таблице и удалить строки с этими индексами из внутренней таблицы с данными.

Спасибо за совет.
Название: Re: Отсеивание записей внутренней таблицы в соответствии с ALV-grid фильтрами.
Отправлено: Dmitriy от Июнь 14, 2011, 02:11:48 pm
Возможно лучше в цикле сформировать новую внутреннюю табличку со сроками, которые вам нужны, а исходную, отображаемую на экране, которую вы подаёте в качестве changing параметра IT_OUTTAB в метод SET_TABLE_FOR_FIRST_DISPLAY оставить без изменений. Вдруг вам потом захочется использовать метод REFRESH_TABLE_DISPLAY.