Создание поля динамического выбора обязательно
Мне нужно определить одно поле динамического выбора, как требуется, я использую стартовый вариант при выполнении tcode.
При назначении экрана атрибутов вариантов отсутствует опция "обязательное поле" при динамическом выборе, только "защищать поле". Есть идеи, как это реализовать?
1 ответ
При назначении экрана атрибутов вариантов не требуется указывать поля при динамическом выборе
Есть Required
атрибут в экранном варианте, и его можно использовать для обязательного заполнения регулярного поля, а также для динамического выбора.
Если вам этого не хватает, проверьте ваш релиз или, возможно, ваша установка повреждена. Я не верю, что это зависит от кода.
Если вы говорите о динамическом выборе, то вы можете защитить только поля. Пример с демонстрационной программойDEMO_LIST_OUTPUT
(который основан на F1S
Логическая база данных):
Вы можете защитить только эти поля от ввода, а все остальные атрибуты деактивированы (они не реализованы, как вы можете видеть в подпрограмме MODIFY_SCREEN
программы SAPLSSEL
).
Единственный возможный обходной путь для имитации обязательного поля - реализовать код ABAP после того, как пользователь ввел выбор (или нет). Например, в программеDEMO_LIST_OUTPUT
, вы можете добавить этот код ABAP, который проверяет, что поле экрана "Номер соединения" содержит значение, когда пользователь выполняет программу:
TABLES sscrfields.
AT SELECTION-SCREEN.
DATA dynsel TYPE rsds_trange.
CALL FUNCTION 'RS_REFRESH_FROM_DYNAMICAL_SEL'
EXPORTING
curr_report = sy-repid
mode_write_or_move = 'W'
IMPORTING
p_trange = dynsel
EXCEPTIONS
not_found = 1
wrong_type = 2.
DATA(connid) = VALUE spfli-connid(
dynsel[ tablename = 'SPFLI'
]-frange_t[ fieldname = 'CONNID'
]-selopt_t[ 1 ]-low OPTIONAL ).
IF sscrfields-ucomm = 'ONLI' AND connid IS INITIAL.
MESSAGE 'Flight Connection number is required' TYPE 'E'.
ENDIF.
NB: протестировано с помощью ABAP 7.52. Динамический выбор может быть реализован неявно через логические базы данных (которые устарели с ABAP 7.02 или 7.31) или явно путем вызова функциональных модулей.FREE_SELECTIONS_INIT
а также FREE_SELECTIONS_DIALOG
.