Периодически надо покинуть экран без заполнения обязательных полей. И если этот экран нарисован в 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.