Меню

Как сделать селекционный экран менее громоздким?

|

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

Проблема: громоздкий селекционный экран

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

Существует несколько способов сделать селекционный экран более компактным и удобным для пользователей. К ним относятся использование дополнительных селекционных экранов, блоков закладок (tabstrip), динамической модификации и вариантов селекционных экранов. Они помогают сократить объем информации и упростить процесс выбора опций пользователем.

Дополнительные селекционные экраны

В отчете кроме основного селекционного экрана (с умалчиваемым номером 1000) можно создавать явно определенные селекционные экраны. (Дабы не называть их «явноопределенными», буду называть их «дополнительные»). Такие же селекционные экраны можно создавать не только в отчетах, но и в модульных пулах и функциональных группах.

Их элементы помещаются между командами
SELECTION-SCREEN BEGIN OF SCREEN <screen_no>.
SELECTION-SCREEN END OF SCREEN <screen_no>.

На основном селекционном экране можно определить нажимные кнопки
SELECTION-SCREEN PUSHBUTTON <position_option> <button>
     USER-COMMAND <f-code>.

<position_option> – опции позиционирования, определяющие размеры и место на селекционном экране, где предъявляется кнопка;

<button> – либо текстовый элемент текстового пула формата TEXT-<XXX>, либо имя не длиннее 8 символов; содержимое <button> определяет текст и/или иконку, предъявляемую на кнопке;

<f-code> – функциональный код, сопоставляемый с кнопкой, функциональный код, соотнесенный с той кнопкой, которую выбирает пользователь помещается в системное поле sy-ucomm.

В блоке обработке события AT ELECTION-SCREEN в зависимости от того, какую кнопку нажал пользователь можно вызвать дополнительный селекционный экран на весь экран командой

CALL SELECTION-SCREEN END OF SCREEN <screen_no>.
или в модальном окне поверх основного селекционного экрана командой
CALL SELECTION-SCREEN END OF SCREEN <screen_no>
     STARTING AT <X1> <Y1> ENDING AT <X2> <Y2>.

<X1> и <Y1> - координаты верхнего левого угла
<X2> и <Y2> - координаты нижнего правого угла.

Таким образом, менее важные компоненты не будут постоянно предъявляться на основном селекционном экране, но будут предъявляться на дополнительном и лишь по требованию пользователя.

Блоки закладок (tabstrip)

Можно создать селекционные подэкраны. Их элементы помещаются между командами
SELECTION-SCREEN BEGIN OF SCREEN <screen_no> AS SUBSCREEN.
SELECTION-SCREEN END OF SCREEN <screen_no>.

Закладка (tab) определяется командой
SELECTION-SCREEN TAB (<length>) <tab>
     USER-COMMAND <f-code> DEFAULT SCREEN <screen_no>.

<length> – задаваемая целочисленным литералом максимальная длина текста на закладке;

<tab> – либо текстовый элемент текстового пула формата TEXT-<XXX>, либо имя не длиннее 8 символов; содержимое <button> определяет текст и/или иконку, предъявляемую на закладке;

<f-code> – функциональный код, сопоставляемый с закладкой, функциональный код, функциональный код выбранной пользователем закладки помещается в системное поле sy-ucomm. Для правильной работы блока закладок требуется, чтобы функциональные коды закладок различались.

<screen_no> – номер подэкрана, размещаемого на закладке. Обычно это селекционные подэкраны, но могут быть и диалоговые.

Блок закладок создается из нескольких закладок, определения которых помещаются между командами
SELECTION-SCREEN BEGIN OF TABBED BLOCK <tab_block>
     FOR <line_count> LINES.
SELECTION-SCREEN END OF BLOCK.

<tab_block> – имя управляющей структуры блока закладок;
<line_count> – задаваемое целочисленным литералом число строк (высота) блока закладок.

Динамическая модификация

В блоке обработки события AT SELECTION-SCREEN OUTPUT можно динамически модифицировать селекционный экран: можно предъявлять тексты и содержимое полей ввода интенсивной окраской, защищать их от ввода, уменьшать размер полей ввода и вообще удалять с селекционного экрана его компоненты. Делается это внутри цикла по экрану, определяемому командами

LOOP AT SREEN.
ENDLOOP.

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

Варианты селекционных экранов

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

Вы можете получить дополнительные знания о селекционных экранах, приняв участие в мастер-классе 17 мая 2023 года «Интерактивность на селекционных экранах» или пройдя курс ABA_41 «ABAP. Отчеты и селекционные экраны». Оба мероприятия будут полезны для того, чтобы узнать, как создавать и использовать селекционные экраны.

Курс и мастер-класс отличаются по продолжительности (мастер класс – 4 часа, курс 8 часов). В курсе дополнительно рассматриваются такие темы как устройство отчета, форматирование страниц списков (заголовки, подвалы), варианты селекционных экранов, EnjoySAP-объекты. В ходе курса участникам предлагается сделать 8 упражнений, чтобы практически освоить рассматриваемый материал.

Автор

Василий Ковальский

ABAP эксперт, эксперт преподавания ABAP с 1998 г.

Инструктор учебного центра SAP и ExpertRP. 25 лет преподавания ABAP (с 1998). 
▪ Certified Development Professional – ABAP with SAP NetWeaver 7.0;
▪ Certified Development Associate – ABAP with SAP NetWeaver 7.50;
▪ Certified Development Specialist – ABAP for SAP HANA 2.0.

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

Референт многих курсов SAP. Автор 11 статей на SAPLand, 1 на Хабре. Провел 31 вебинар.