Селекционный экран sap что это

Глава 1. Создание ALV GRID. Часть 2

ABAP OBJECTS ALV

§ 2. Селекционный экран

Необходимо создать следующие объекты:

SELECTION SCREEN 1100

Экран ввода данных.

Вызов селекционного экрана и передача данных с экрана в класс контроллер.

В se80 создаем группу функций ZFG_MVC_001.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Рис. 1

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Рис. 2

В TOP инклуде описываем селекционный экран номер 1100.

SELECTION-SCREEN: BEGIN OF SCREEN 1100 TITLE title_01.
SELECT-OPTIONS: s_carrid FOR spfli-carrid.
SELECT-OPTIONS: s_connid FOR spfli-connid.
SELECTION-SCREEN: END OF SCREEN 1100.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Рис. 3

Для того чтобы класс контроллер смог вызвать данный селекционный экран, необходимо создать функциональный модуль (ZFM_MVC_001_SEL_SCR_1100) вызова экрана 1100.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Рис. 4

Данный функциональный модуль будет возвращать в класс контроллер данные

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

Источник

Селекционный экран sap что это

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Часто есть необходимость для ввода только входных данных, для этих целей можно использовать экраны выбора. Экраны выбора предоставляют стандартизированный интерфейс SAP.

Вводим имя программы и нажимаем Создать. Как обычно задаем стандартные атрибуты, сохраняем в пакет ZKRE_PRO1, назначаем транспортный запрос. Итак введем такой текст в наш редактор.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Запускаем на выполнение.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Детальный синтаксис команд можно просмотреть если в редакторе выделить ключевое слово например SELECTION-SCREEN и нажать F1.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

В коде программы есть text-001 так называемая текстовая переменная. Пока она еще не создана. Двойной щелчек в тексте программы мышью по text-001 позволит нам создать ее.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Нажав YES, попадаем в следующий экран.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Где мы вводим непосредственно сам текст и устанавливаем длину в 40 символов. Переключившись на вкладку Selections Texts видим что там имеются названия наших элементов на экране выбора.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Здесь можно ввести произвольный текст, а можно отметив галочки справа, тем самым скопировав описание полей автоматом.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Сохраняем и активируем. Запуств на выполнение программу увидим как изменился экран.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Отредактируем текст программы, сделаем поле Name обязательным и добавим кнопку.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Двойной клик по textbt1 – создадим надпись на кнопке.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Сохраняем и активируем нашу новую текстовую переменную. Теперь на кнопке имеется надпись.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Сделаем кнопку активной, т.е. чтобы при ее нажатии поля экрана выбора очищались. Добавим в код следующий блок.

Обсуждения : 4 комментария

Комментарии

Виталий

Ошибка в программе.

Ругается на функционал кнопки

Ошибка:
Неизвестное поле «SSCRFIELDS-UCOMM». Оно не содержится ни в одной из указанных таблиц, не определено через оператор «DATA»

Виталий

Пересохранился. Заработало. СТранно(

Дмитрий

Добрый день. У меня была такая же проблема:
после REPORT не хватает
TABLES: sscrfields.

Чтобы оставить комментарий, необходимо Войти или Зарегистрироваться.

Источник

Вариант селекционного экрана

Варианты селекционного экрана знает каждый. Если не знает, то срочно надо узнать что это. Они сильно облегчают жизнь пользователя и САПера. Особенно для отчетов, а, если еще и к ним ALV вариант настроить, то совсем красиво получается. Так вот, есть еще такие вариант, как системные. Это те, которые просто так не изменить. Помогает сохранить пользователям руки и не отрывать их, когда они что-нибудь перезатирают друг у друга.

Системные варианты начинаются с SAP& для саповских вариантов и CUS& для клиентских. Эти варианты хранятся в 000 манданте и переносятся транспортными запросами.

А еще в вариантах можно делать подстановки:

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Настройки варианта селекционного экрана

Если тип ‘D’ D: Dynamic date calculation, то встаем на поле Name of variable и нажимаем F4. Выбираем нужную нам математику. Удобно, когда нужно строить отчеты по четким границам (например, по календарному месяцу). Или запускать программы с фильтами. Фантазируйте! Мечты сбываются 🙂

Для табличных переменных есть волшебная штука — табличка TVARVC. Запускаем транзакцию STVARV, создаем свою переменную и присваиваем значения, которые должны подставиться на селекционнике в варианте. Получается шоколадная штука. Мы создаем системный вариант, в нем указываем переменную для видов оплаты (например, фонд оплаты труда), а в TVARVC прописываем все виды оплаты. И эту переменную используем во всех отчетах. Красота!

Источник

Иван Болховитинов

Если транзакция является отчётом, то у неё есть экран выбора.

И если параметров много, и вы часто заполняете их одинаково, то имеет смысл запомнить это в виде шаблона. Вот этот шаблон и называется вариантом.

А теперь – в подробностях…

Что это такое?

Экраном выбора (селекционным экраном) является экран, сформированный операторами PARAMETERS, SELECT-OPTIONS с вариациями. Он всегда имеет номер 1000. Такой экран может сгенерирован только автоматически и только для программы типа REPORT. Вносить вручную изменения в такой экран – запрещается.

Если соотносить с вариантами транзакций (SHD0), то тут полное разделение:

Функции вариантов экрана выбора и вариантов транзакций реализованы похоже (похоже, но не то же).

Над экраном выбора всегда горит стандартная кнопка сохранения, и если её нажать, то появится экран сохранения:

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Вот тут можно порасставлять галочки и сохранить под нужным именем.

В-целом очень похоже на варианты транзакций, вот только значения “по-умолчанию” напрямую не показываются и напрямую не вписываются. Не очень приятное поведение.

Если к программе создан хотя бы один вариант, то появляется кнопочка, нажав которую можно выбрать варианты из списка:

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

NB: Мне вообще не нравится принятое название “селекционный экран” или “селективный экран”. В английском всё просто “Selection screen”. Официально он называется всё-таки “экран выбора”, в этом можно убедиться в транзакции SE93.

Переносы

Варианты экрана выбора делятся на два вида:

Маркер CUS& нужно вводить ручками. Что-то вроде этого можно найти и в вариантах ALV, но там используется другой маркер-префикс: это прямой слеш, да и означает этот маркер чуть другое.

Если пользовательский вариант хочется перенести, то можно воспользоваться программой RSTRANSP. Можно включить и ручками, но там нужно будет склеить правильно имя объекта.

Если говорить о систематическом подходе, то лучше всегда придерживаться стандартной логики:

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

Использование

Пока пользователь у нас может только запустить отчёт, и потом выбрать из списка нужный. Можно сократить этот шаг:

Защита

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

А вот снять защиту с системного варианта непросто. Даже если зайти под владельцем, то снимать флаг защиты бесполезно – он при сохранении будет поставлен обратно. Получается что нельзя сменить владельца системного отчёта.

Ситуацию усложняет тот факт, что системные варианты хранятся в 000 манданте (и как следствие они являются независимыми от манданта). А лично меня не тянет идти ради этого в нулевой мандант. Поэтому даже снять флаг защиты с полпинка не получится. Ну а таблица не секретная: VARID; надо только написать вручную запрос учитывая мандант.

Снимаете защиту, и при следующем сохранении он защитится обратно, но уже на вас.

На закуску

Можно поглядеть на кучку программ RSVAR* – там есть небольшие помогалки на разные случаи.

Если что и стоит разведать дополнительно, то это механизм использования переменных.

С датой всё просто: если поле является датой, то там появляются дополнительные вкусняшки:

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

А вот если вам нужна какая-то условная константа с динамическим расчётом (например, код БЕ из профиля пользователя), то необходимо сделать какие-то дополнительные шаги. Вот это стоило бы копнуть дополнительно.

Может кто даст наводку?

Планирование

Есть стандартная функция платформы: можно запланировать регулярный запуск отчёта (например: ежедневно).

Если ввести параметры на экране выбора и запланировать запуск в фоновом режиме, то будет создан технический вариант вроде &0000000000012. В данном случае не играет роли, если вы перед этим вызвали какой-либо вариант для предварительного заполнения этих полей.

Поэтому если у вас есть динамические переменные выбора в варианте, то планировать следует из SM36 (где можно напрямую указать вариант), а не из SA38.

11 комментариев

Варианты настройки зависят от прикладного компонента (в СО, к примеру, они свои) и в этих компонентах есть свои настройки “по-умолчанию”. Общего для разных модулей при настройке вариантов мало, нужно конкретную ситуацию смотреть.

Само собой, обсуждение вариантов тут не затрагивает те вещи, которые пишутся напрямую в тексте ABAP-программы. И в каждой программе готовы появиться какие-то свои “феньки” в экранах выбора.

Вот например, у меня есть стандартный трюк: если данный пользователь имеет права только на одну БЕ, то эту БЕ я прописываю на экране выбора и закрываю ввод. А это делается старым добрым ABAP-ом, без всяких вариантов.

Небольшое замечание не по сути статьи. Утверждение
“Технически экраном выбора (селекционным экраном) является экран, сформированный операторами PARAMETERS, SELECT-OPTIONS. Он всегда имеет номер 1000. Такой экран может сформирован только для программы типа REPORT.” является не полностью корректным. Selection-screen может иметь и другой номер. Их может быть > 1. Никто не мешает создать его, например, в группе функций и затем вызвать через CALL SELECTION-SCREEN XXXX. А вот СТАНДАРТНЫЙ selection screen действительно имеет фиксированный номер 1000 и может быть только в программах типа REPORT.

Да, разумеется, есть такое пространство для манёвра. Просто в контексте данной статьи это не существенно.

> Никто не мешает создать его
Спорно. Я бы стал мешать разработчику так делать 😉

Технически спорные формулировки тут ещё есть. Например:
>Если транзакция является отчётом, то у неё есть экран выбора.
Отчёт можно сделать и без экрана выбора. Но вот нормальные отчёты так никто не делает.

>> Никто не мешает создать его
>Спорно. Я бы стал мешать разработчику так делать
Я лично не вижу причин запрещать, поскольку адекватное применение этому имеется. Например, экраны выбора применяются в стандартной группе функций V56L.

Спасибо Иван за статью. Даже не представишь как ты мне помог)

Огромное спасибо за статью, Иван. Если впервые с этим сталкиваешься, как я, то информация очень полезная.

А вот если вам нужна какая-то условная константа с динамическим расчётом (например, код БЕ из профиля пользователя), то необходимо сделать какие-то дополнительные шаги. Вот это стоило бы копнуть дополнительно.

транзакция STVARV.
Но не думаю, что выйдет связать с профилем пользователя.

Выйдет конечно, но только если поле экрана выбора связано с MEMORY ID в ABAP:
PARAMETERS: p_bukrs TYPE bkpf-bukrs MEMORY ID buk.

Просто оно обладает недостатками:
а) не всегда будет работать для стандарта, где иногда может не быть связки поля с MEMORY ID
б) если пользователь в сессии заранее перебивал поле другими значениями, тогда будут подставлены последние, а не значения из профиля

Источник

Глава 2. Два ALV GRID на одном экране. Часть 2

ABAP OBJECTS ALV

§2. Селекционный экран

Необходимо создать следующие объекты:

SELECTION SCREEN 1100

Экран ввода данных.

Вызов селекционного экрана и передача данных с экрана в класс контроллер.

Создаем функциональный модуль вызова селекционного экрана аналогично пункту 1.1.2.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Рис. 1

CALL SELECTION-SCREEN 1100.

IF sy-subrc = 0.
e_repid = sy-repid.
PERFORM set_context CHANGING es_context.
ELSE.
RAISE exit_program.
ENDIF.
ENDFUNCTION.

Тестируем функциональный модуль.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Рис. 2

§3. Класс модель

Необходимо создать следующие объекты:

Создаем класс выбора данных ZCL_MVC_002_MODEL. Транзакция SE24.

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Рис. 3

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Рис. 4

Селекционный экран sap что это. Смотреть фото Селекционный экран sap что это. Смотреть картинку Селекционный экран sap что это. Картинка про Селекционный экран sap что это. Фото Селекционный экран sap что это

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *