SAPфорум.RU https://www.sapboard.ru/forum/ |
|
ФМ REUSE_ALV_GRID_DISPLAY https://www.sapboard.ru/forum/viewtopic.php?f=13&t=97966 |
Страница 1 из 1 |
Автор: | Maksimka [ Ср, сен 04 2019, 17:03 ] |
Заголовок сообщения: | ФМ REUSE_ALV_GRID_DISPLAY |
Добрый день уважаемые Abaper-ы. Возник такой вопрос с ФМ REUSE_ALV_GRID_DISPLAY. До этого момента ничего похожего не доводилось делать, поэтому как сделать ума не приложу. В общем данный ФМ выдаёт на экран ALV_GRID внутреннюю табличку. На этом Alv_Grid есть возможность убирать с экрана не нужные поля путём использования обычной кнопки редактирования форматов GUI-статуса. В общем мне нужно поймать ту табличку, что на данный момент отображается на экране с учётом убранных не нужных полей в отображаемом Alv_grid-е. Мне нужна эта обновлённая табличка чтобы передать её в Excel через другой ФМ, а там уже макросами я подправляю некоторые хотелки пользователей. Вот как бы мне поймать уже эту обновлённую табличку alv_grida? Стандартный вариант SAP через кнопку Excel GUI-статуса не подходит, не устраивает пользователей, хотя в стандартном случае он выгружает табличку уже без убранных полей. Я понимаю, что этих ФМ и различных классов для вывода на экран alv_grida уйма, но я попытался сделать то что мне нужно с помощью ФМ REUSE_ALV_GRID_DISPLAY. Может кто делал что то похожее? Буду весьма признателен за совет. |
Автор: | pberezin [ Чт, сен 05 2019, 08:09 ] |
Заголовок сообщения: | Re: ФМ REUSE_ALV_GRID_DISPLAY |
так настраиваете предварительно кнопкой "кубик-рубик" в ALVхе необходимый Формат вывода, с нужными полями, фильтрами, сортировкой, субитогами и проч. Потом в инструкцию пользователя прописываете чтото вроде "перед выгрузкой в эксель выберите формат такойто". Либо явно наименование этого формата передаёте в вызов ФМа REUSE, он тогда сразу применится. Там одна беда с теми Форматами - нет штатного механизма защиты Формата от изменений другими пользователями (как например галочка "Защитить вариант" у Вариантов селекционного экрана). А то пользователи-рукож*пы любят ставить галку "по умолчанию", и рано или поздно перезатирают Формат какимто другим. |
Автор: | Sam Stone [ Чт, сен 05 2019, 08:13 ] |
Заголовок сообщения: | Re: ФМ REUSE_ALV_GRID_DISPLAY |
Надо смотреть поле no_out в каталоге полей. Если работать напрямую с cl_gui_alv_grid, то его можно дергать через get_frontend_fieldcatalog(). Его можно дернуть через ФМ GET_GLOBALS_FROM_SLVC_FULLSCR. Оттуда и сам фиелдкаталог можно забрать. А дальше - дело кода. |
Автор: | Maksimka [ Чт, сен 05 2019, 09:36 ] |
Заголовок сообщения: | Re: ФМ REUSE_ALV_GRID_DISPLAY |
pberezin написал: так настраиваете предварительно кнопкой "кубик-рубик" в ALVхе необходимый Формат вывода, с нужными полями, фильтрами, сортировкой, субитогами и проч. Потом в инструкцию пользователя прописываете чтото вроде "перед выгрузкой в эксель выберите формат такойто". Либо явно наименование этого формата передаёте в вызов ФМа REUSE, он тогда сразу применится. Там одна беда с теми Форматами - нет штатного механизма защиты Формата от изменений другими пользователями (как например галочка "Защитить вариант" у Вариантов селекционного экрана). А то пользователи-рукож*пы любят ставить галку "по умолчанию", и рано или поздно перезатирают Формат какимто другим. Кубик рубик конечно вещь хорошая, через него выводится в Excel именно то что на данный момент на экране, но в моём случае есть не большая проблеммка связанная с длинными сроками, в отчёте есть очень длинные сроки, которые я при выводе в Excel с помощью ФМ ZBC_DOI_EXPORT_DATA_TO_EXCEL потом в самом файле Excel макросами делаю нужные мне размеры этих длинных срок и также делаю перенос текста по словам в этих длинных сроках. А вот через кубик рубик я сделать этого не могу, потому как оное просто выводит в Excel то что видит на экране. |
Автор: | pberezin [ Чт, сен 05 2019, 10:05 ] |
Заголовок сообщения: | Re: ФМ REUSE_ALV_GRID_DISPLAY |
ну у ALV есть ограничение на вывод на экран в 128 емнип символов, но в эксель при этом выгружается и более длинный текст поля. Хотя, если текст превышает разумные размеры (ну например полное наименование материала), там лучше отдельную специализированную выгружалку написать. А то бывает попадаются спецсимволы в таких текстах, что при выгрузке в эксель больших массивов колонки потом разъезжаются. Просто, если вы хотите выгружать "по отфильтрованному на экране", нужно тогда учитывать не только видимость колонок, но и фильтр (там есть КУГЫУ-ФМ получения et_filtered_erntires[] из АЛВхи). А так же наличие строк субитогов (системное поле row в строках АЛВхи анализировать тоже). |
Автор: | Maksimka [ Чт, сен 05 2019, 15:00 ] |
Заголовок сообщения: | Re: ФМ REUSE_ALV_GRID_DISPLAY |
pberezin написал: Просто, если вы хотите выгружать "по отфильтрованному на экране", нужно тогда учитывать не только видимость колонок, но и фильтр (там есть КУГЫУ-ФМ получения et_filtered_erntires[] из АЛВхи). А так же наличие строк субитогов (системное поле row в строках АЛВхи анализировать тоже). Меня не сильно интересует отфильтрованный список, именно видимость колонок мне и нужна. Что за функциональный модуль то я так и не понял? |
Автор: | baboon [ Чт, сен 05 2019, 16:04 ] |
Заголовок сообщения: | Re: ФМ REUSE_ALV_GRID_DISPLAY |
Sam Stone написал(а): Надо смотреть поле no_out в каталоге полей. Если работать напрямую с cl_gui_alv_grid, то его можно дергать через get_frontend_fieldcatalog(). Его можно дернуть через ФМ GET_GLOBALS_FROM_SLVC_FULLSCR. Оттуда и сам фиелдкаталог можно забрать. А дальше - дело кода. Из ФМ надо получить E_GRID, а из него, методом GET_FRONTEND_FIELDCATALOG - каталого полей. |
Автор: | Maksimka [ Пт, сен 13 2019, 07:18 ] |
Заголовок сообщения: | Re: ФМ REUSE_ALV_GRID_DISPLAY |
В общем если кому понадобится такая штука, вот реализация кода: Code: data: gt_fieldcat_local type lvc_t_fcat, go_grid type ref to cl_gui_alv_grid. form pf_stat_set using rt_extab type slis_t_extab. set pf-status 'LISTE_AL'. call function 'GET_GLOBALS_FROM_SLVC_FULLSCR' importing e_grid = go_grid. endform. form user_command using v_ucomm like sy-ucomm wa_selrow type slis_selfield. case v_ucomm. when 'EXCEL'. call method go_grid->get_frontend_fieldcatalog importing et_fieldcatalog = gt_fieldcat_local. В итоге в gt_fieldcat_local собирается список полей что отображаются на экране. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |