Обязательные поля и выход из экрана

Периодически надо покинуть экран без заполнения обязательных полей. И если этот экран нарисован в Screen Painter  все просто и легко,  но если мы рисовали экран при помощи Parameters и Select-options  выйти так просто, скорее всего не получится.

Небольшой  лайвхак.
Объявляем данные поля не обязательными
PARAMETERS p_werks  TYPE werks_d.
В событии AT SELECTION-SCREEN OUTPUT  устанавливаем  required = 2 для поля
LOOP AT SCREEN.
IF  screen-name = 'P_MATNR'.
screen-required = '2'.
MODIFY SCREEN.
ENDIF.

Поле отобразится с “галкой”, но при этом не будет обязательным
В событии  AT SELECTION-SCREEN проверяем поле и выводим сообщение о необходимости его заполнения
IF  p_matnr IS INITIAL  AND  sy-ucomm <> 'BACK' AND  sy-ucomm <> 'UP' AND sy-ucomm <> 'EXIT' .
MESSAGE text-001 TYPE 'E' .
ENDIF.

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

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