Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 21 День 21 Экраны выбора.doc
Скачиваний:
19
Добавлен:
24.11.2019
Размер:
201.22 Кб
Скачать

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.