3. Форматирование экранов выбора (selection screens)
Использование оператора selection-screen
Элементы экрана выбора могут быть объединены в связные модули, названные блоками. Эти логические блоки - в основном, особенность экрана, которая формирует комбинацию элементов ввода экрана и может быть создана с описательным заголовком кадра. Логические блоки помогают делать опции выбора проще, чтобы понять и использовать.
Синтаксис selection-screen block … with frame (блок с рамкой)
selection-screen begin of block block0 with frame title text-000.
Дополнительно, в операторе могут использоваться:
selection-screen comment -- комментарий к экрану выбора.
selection-screen uline -- поместит подчеркивание на экране в указанном местоположении для указанной длины
selection-screen position -- определяет позицию комментария для следующего параметра на экране
selection-screen begin-of-line and selection-screen end-of-line -- все определения между этими двумя операторами помещены рядом друг с другом на той же самой строке
selection-screen skip n -- создает n пустых строк на экране выбора
4. Параметры Экрана Выбора
Оператор parameter на экранах выбора создает структуру данных в программе, которая используется для ввода данных.
Домен описывает свойства полей таблицы. Он определяет диапазон значений достоверных данных для полей ввода и определенных характеристик. Домены определяют атрибуты, такие как тип поля, длина, и возможные отношения внешнего ключа. Изменение домена автоматически изменит атрибуты всех элементов данных, прикрепленных к тому домену. Это - то, вследствие того, что элементы данных в домене наследовали все свойства домена, к которому на них ссылаются.
С оператором parameter Вы можете включить ключевые слова, которые могут ограничить ввод с определенными опциями:
lower case -- не преобразовывать автоматически в верхний регистр
obligatory -- поле является обязательным
default -- определяет значения по умолчанию
Переключатели. Синтаксис оператора:
parameters: testparm as checkbox default 'X'.
В этом примере начальное значение установлено в X для логической обработки программы.
Оператор select-options генерирует внутреннюю таблицу выбора, которая содержит ввод для заданных полей ввода.
Синтаксис select-options
Оператор select-options аналог оператора parameters, в котором он создает критерии выбора для поля базы данных. Основное различие между этими двумя - то, что оператор select-options создает два входных поля FROM и TO, в противоположность только единственному полю ввода оператора parameters.
select-options ex sele for table-field default 'VALUELOW' to 'VALUEHI'.
Оператор select-options отображает строку, у которой обычно есть два поля для входных данных. Он может содержать только одно поле, если указано дополнение no-intervals .
Радиокнопки
Синтаксис для группы переключателя
selection-screen begin of block rad_blk with frame title text-000.
parameters: rad_ex1 radiobutton group one,
rad_ex2 radiobutton group one,
rad_ex3 radiobutton group one.
selection-screen end of block rad_blk.
Пример программы экрана выбора
report YJACOBJX message-id Y6.
* Database Table Definitions
tables: mara.
selection-screen skip 1.
selection-screen begin of block block0 with frame title text-000.
selection-screen skip 1.
selection-screen begin of line.
selection-screen pushbutton 10(20) text-003 user-command engl.
selection-screen pushbutton 50(20) text-004 user-command germ.
selection-screen end of line.
selection-screen end of block block0.
* Selection parameters
selection-screen skip 2.
selection-screen begin of block block1 with frame title text-001
no intervals.
selection-screen begin of line.
parameters: p_ex1 radiobutton group rad1 .
selection-screen comment 5(30) text-ex1.
selection-screen end of line.
parameters: p_jdate1 type d default sy-datum.
selection-screen skip 1.
selection-screen begin of line.
parameters: p_ex2 radiobutton group rad1 .
selection-screen comment 5(30) text-ex2.
selection-screen end of line.
select-options: s_jdate2 for mara-laeda.
selection-screen skip 1.
selection-screen begin of line.
parameters: p_ex3 radiobutton group rad1.
selection-screen comment 5(20) text-ex3.
selection-screen end of line.
parameters: p_jdate3 like mara-laeda.
selection-screen skip 1.
selection-screen begin of line.
parameters: p_ex4 radiobutton group rad1 .
selection-screen comment 5(30) text-ex4.
selection-screen end of line.
select-options: s_jdate4 for mara-laeda no-extension no intervals.
selection-screen end of block block1.
selection-screen skip.
selection-screen begin of block block2 with frame title text-002
no intervals.
selection-screen begin of line.
parameters: P_ex5 as checkbox.
selection-screen comment 5(30) text-ex5.
selection-screen end of line.
selection-screen skip.
selection-screen begin of line.
parameters: P_ex6 as checkbox.
selection-screen comment 5(30) text-ex6.
selection-screen end of line.
selection-screen skip.
selection-screen begin of line.
parameters: P_ex7 as checkbox.
selection-screen comment 5(30) text-ex7.
selection-screen end of line.
selection-screen end of block block2.
* AT selection-screen.
AT selection-screen.
if ( p_ex1 = 'X' ) and
( ( p_jdate1 = 'IEQ?' ) or ( p_jdate1 is initial ) ).
message E017 with 'Selection Option with Default field has no value'.
elseif ( p_ex1 = 'X' ) and
not ( ( p_jdate1 = 'IEQ?' ) or ( p_jdate1 is initial ) ).
message I017 with 'We are now using Example 1'.
endif.
if ( p_ex2 = 'X' ) and
( ( s_jdate2 = 'IEQ?' ) or ( s_jdate2 is initial ) ).
message E017 with 'Selection Option using for field has no value'.
elseif ( p_ex2 = 'X' ) and
not ( ( s_jdate2 = 'IEQ?' ) or ( s_jdate2 is initial ) ).
message I017 with 'And now Example 2 is selected'.
endif.
if ( p_ex3 = 'X' ) and
( ( p_jdate3 = 'IEQ?' ) or ( p_jdate3 is initial ) ).
message E017 with 'Parameter w/ like statement field has no value'.
elseif ( p_ex3 = 'X' ) and
not ( ( p_jdate3 = 'IEQ?' ) or ( p_jdate3 is initial ) ).
message I017 with 'We are now using Example 3'.
endif.
if ( p_ex4 = 'X' ) and
( ( s_jdate4 = 'IEQ?' ) or ( s_jdate4 is initial ) ).
message E017 with 'Selection Option with no interval has no value'.
elseif ( p_ex4 = 'X' ) and
not ( ( s_jdate4 = 'IEQ?' ) or ( s_jdate4 is initial ) ).
message I017 with 'We are now using Example 4'.
endif.
if p_ex5 = 'X'.
perform get_price_data.
else.
message I017 with 'No Pricing Data selected'.
endif.
if p_ex6 = 'X'.
perform get_cost_data.
else.
message I017 with 'No Costing Data selected'.
endif.
if p_ex7 = 'X'.
perform get_revenue_data.
else.
message I017 with 'No Revenue Data selected'.
endif.
form get_cost_data.
...
endform.
form get_revenue_data.
...
endform.
form get_price_data.
...
endform.
Оператор message (cообщения)
Сообщения хранятся в таблице T100. Сообщения являются описательными и помогают пользователю понимать процесс выполнения программы.
Каждый оператор сообщения может быть связан с различными типами сообщения, которые имеют различные эффекты на результат программы.
S-Success (успех), это сообщение отображается на следующем экране в строке состояния.
A-Abend (аварийное-прекращение-задачи), текущая транзакция остановлена, и сообщение отображено, пока пользователь не подтверждает его.
E-Error (ошибка), пользователь должен ввести данные, чтобы продолжить.
W-Warning (предупреждение), пользователь может или изменить входные данные или нажать Enter, чтобы продолжить.
I-Information (информация), пользователь должен нажать ввод для продолжения в том же самом пункте в программе.
Для задания сообщения ипользуется оператор message-id в начале программы. Синтаксис оператора:
report example line-count 65 line-size 132 message-id fs.