2012-07-27 1 views
5

The pictureКак выбрать несколько диапазонов для параметра БЕЗ первого заполнения всех других необходимых параметров?

Я хотел бы иметь возможность выбора нескольких диапазонов для «Номер заказа на продажу».

Проблема: когда я нажимаю кнопку, отмеченную зеленым цветом, я получаю сообщение об ошибке «Заполните все необходимые поля ввода».

Я поставил свой основной блок обработки на событие СНВ-ВЫБОР.

Что делать, чтобы этого не произошло? Мне кажется, что я должен иметь возможность добавлять несколько вариантов без всяких хлопот при первом заполнении каждого другого обязательного поля.

ответ

6

С параметрами/опциями выбора, установленными в OBLIGATORY, это не сработает. У меня был очень таким же проблема некоторое время назад, и не было никакой возможности, чтобы заполнить Обязательные входные параметры с полезными значениями по умолчанию, так что я сделал следующее:

  • Удалить Обязательные варианты из всех отборных-опций и параметры
  • Handle чека на обязательный вход самостоятельно в случаях, не F4, помощь, F1 помощи или кнопку рядом с любой выберите опцию нажимается:

Код:

AT SELECTION-SCREEN ON s_reswk. 

IF sy-ucomm(1) <> '%' AND  " sel screen action request 
    sy-ucomm(1) <> '_' AND  " scope option 
    s_reswk IS INITIAL.   " Obligatory input missing 
    MESSAGE text-e01 TYPE 'E'. " Error message 
ENDIF. 
+3

... и пока вы на нем, используйте класс сообщений. Это позволит вам позже добавить текст документации. – vwegert

-2

Вот что я нашел, что полностью воспроизводит поведение, установленное дополнением OBLIGATORY:

1: Взять «ОБЯЗАТЕЛЬНОЕ» дополнение.

2: на ОПО:

LOOP AT SCREEN. 
    IF screen-name cs 'name-of-your-select-options-or-parameter'. 
    screen-required = 2. 
    MODIFY SCREEN. 
    ENDIF. 

3: в PAI:

if sscrfields-ucomm = 'ONLI'. 
    if 'name of your select-option-or-parameter' is initial. 
     clear sscrfields. 
     message 'Fill in all required fields.'(009) type 'E'. 
    endif. 
    endif. 

Обратите внимание на первый, если заявление содержит логический оператор А 'CS'. Это потому, что имя вашего контроля будет содержать и другие странные вещи. Например% _P_MATNR_% SCREEN %% (где ваш параметр был p_matnr).

Также необходимо сделать заявление: TABLES sscrfields..

+2

Это действительно плохая идея. Таким образом, вы принудительно вводите требуемое поле при прямом запуске программы, но пользователь сможет назначить его как фоновое задание без ввода того же параметра. Кроме того, в соответствии с документацией требуемый экран занимает 0 или 1. Теперь можно установить его на 2, но изменить его эффект или прекратить работу вообще без дальнейшего предупреждения. – vwegert