Автор Тема: Отсеивание записей внутренней таблицы в соответствии с ALV-grid фильтрами.  (Прочитано 6578 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн knopix

  • Newbie
  • *
  • Сообщений: 34
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Здравствуйте...

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

Подскажите, пожалуйста, что делать в этой ситуации.
« Последнее редактирование: Июнь 14, 2011, 12:09:56 pm от knopix »

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Кухня
  • Newbie
  • *
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Попробуйте метод GET_FILTERED_ENTRIES, сам не использовал, но вы посмОтрите и скажете, индексы каких строк он возвращает. По идее должен вернуть индексы оставшихся на экране. Тогда в цикле по возвращаемой таблице ET_FILTERED_ENTRIES типа LVC_T_FIDX возможно сформировать выгружаемую в MS Excel актуальную таблицу данных.

Оффлайн knopix

  • Newbie
  • *
  • Сообщений: 34
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Пробовал... Возвращает индексы "отфильтрованных" строк, т.е. тех которые не нужны. Я вот подумал, сделать цикл по возвращаемой таблице и удалить строки с этими индексами из внутренней таблицы с данными.

Спасибо за совет.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Кухня
  • Newbie
  • *
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Возможно лучше в цикле сформировать новую внутреннюю табличку со сроками, которые вам нужны, а исходную, отображаемую на экране, которую вы подаёте в качестве changing параметра IT_OUTTAB в метод SET_TABLE_FOR_FIRST_DISPLAY оставить без изменений. Вдруг вам потом захочется использовать метод REFRESH_TABLE_DISPLAY.