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/