Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

SELECT-OPTIONSname FORdata_object.

DATA it_spfli TYPE sbc400_t_spfli. DATA wa_spfli LIKE LINE OF it_spfli. | ID ’ACTVT’ FIELD ’02’. | WRITE: / ’Authority-Check Error’(001). ENDCASE. | PERFORM write_list USING it_flight. | CLEAR wa_sbook. | MODULE user_command_100. | SET PF-STATUSи SET TITLEBAR | MODULE STATUS_0100. | MODULE status_0100. | MESSAGE e149(bc400). ENDIF. |


Читайте также:
  1. SELECT-OPTIONSname FORdata_object.

 

 

где name является именем критерия выбора, а data_object – уже определенной переменной. На основе такого определения в рамках программы создается внутренняя таблица с определенным именем (в данном случае so_car) и генерируется экран выбора с возможностью ввода данных для ограничения указанной переменной (в данном случае wa_spfli-carrid).

 

При нажатии Выполнить записи пользователя переносятся в автоматически сгенерированную внутреннюю таблицу. Эта таблица всегда состоит из четырех столбцов: sign, option, low и high. На рисунке выше показано, какие записи создаются для тех или иных введенных пользователем значений:

 

• Если введено значение "LH", то создается строка со значениями "I" (включительно), "EQ" (равно), "LH" и "пробел".

• Если введен интервал "AA"-"DL", то создается строка со значениями

"I" (включительно), "BT" (между), "AA" и "DL".

• Если "BA" вводится как отдельное значение, которое должно быть исключено, создается строка со значениями "E" (исключительно), "EQ" (равно), "BA" и "пробел".


 

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

 

Если I_1,..., I_n и E_1,..., E_m являются включающими/исключающими условиями внутренней таблицы, то для ограничения выбора данных используется следующее сложное условие:

 

 


 

 

AND...


( I_1 OR... OR I_n ) AND (NOT E_1 )

 

AND (NOT E_m )


 

 

Если таблица не заполнена в связи с отсутствием ограничений, то условия

WHERE всегда относятся к соответствующему полю.

 

Рекомендация: Оператор IN также может использоваться в логических выражениях:

 

IF wa_spfli-carrid IN so_car.

 

При определении критерия выбора следует учитывать те же три особенности,

что и для оператора PARAMETERS (см. выше).

 

Если внутренняя таблица критерия выбора заполняется с использованием дополнения DEFAULT или оператора APPEND до вывода экрана выбора (INITIALIZATION), то ее содержимое отображается на экране выбора в качестве предлагаемых условий, которые могут быть перезаписаны.

 

Более подробную информацию см. в документации по ключевым словам для

SELECT-OPTIONS.


 

Событие после экрана выбора

 

 

 

 

 

Рисунок 150: Событие AT SELECTION-SCREEN

 

Событие AT SELECTION-SCREEN на экране выбора может инициироваться как нажатием клавиши Enter, так и выбором Выполнить (F8). После выполнения определенного блока обработки инициируется следующее событие START-OF-SELECTION и, в случае выбора Выполнить, начинается соответствующая обработка. Однако при нажатии Enter снова появляется экран выбора.


 

 

 

 
Рисунок 151: Диалоги при обнаружении ошибок в AT SELECTION- SCREEN

 

Перед обработкой блока AT SELECTION-SCREEN записи пользователя автоматически переносятся в соответствующие переменные в программе. Следовательно, в этом блоке обработки должны выполняться требуемые проверки ввода и полномочий. В случае отрицательного результата проверки пользователю может выдаваться сообщение об ошибке, после чего снова выводится экран выбора. Пользователь может ввести новые значения.

 

Однако при прерывании программы появится сообщение об ошибке в блоке

START-OF-SELECTION.

 

На следующем рисунке показан пример простой программы с проверкой полномочий и выводом диалогового сообщения об ошибке на экране выбора.


 

 

 

 
Рисунок 152: Пример синтаксиса: проверка полномочий с диалогом об ошибке

 

Более подробную информацию см. в документации по ключевым словам для

“AT SELECTION-SCREEN”.


 


 

Упражнение 13: Экран выбора

 

 

Цели упражнения

 

Выполнив это упражнение, вы сможете

• использовать ABAP-оператор SELECT-OPTIONS для внедрения сложных критериев выбора на экране выбора

• использовать сложные ограничения для выбора данных из базы данных

• программировать диалоги при обнаружении ошибок с использованием стандартного экрана выбора

 

 

Практический пример

 

На экране выбора пользователи должны иметь возможность ввода сложных ограничений для выбора из базы данных нескольких записей, а не отдельного значения.

 

Кроме этого, в случае отсутствия у пользователя полномочий на работу с запрошенными данными на экране выбора должно отображаться соответствующее сообщение об ошибке.

 

Задание 1:

 

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

 

1. Скопируйте программу ZBC400_##_DETAIL_LIST или соответствующий шаблон SAPBC400UDS_DETAIL_LIST в новую программу ZBC400_##_SEL_SCREEN.

 

2. На экране выбора должна существовать возможность ввода сложных ограничений по номеру направления (CONNID).

 

Рекомендация: При присвоении типа авиакомпании и номеру направления должна использоваться ссылка на поля с такой же структурой. Это позволит пользователю получить контекстно-зависимую справку.

 

3. Ограничения, введенные пользователем, должны использоваться для выбора данных из таблицы базы данных SFLIGHT.

 

Продолжение на следующей странице


 

Задание 2:

 

Внедрение проверки полномочий с диалогом при обнаружении ошибок на экране выбора

 

1. Измените программу так, чтобы в случае отсутствия полномочий

на работу с данными введенной авиакомпании в списке выдавалось соответствующее сообщение об ошибке, после чего снова отображался бы экран выбора для повторного ввода данных.

 

Рекомендация: Класс сообщений BC400 уже содержит подходящее сообщение, которое можно использовать.


 

Решение 13: Экран выбора

 

Задание 1:

 

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

 

1. Скопируйте программу ZBC400_##_DETAIL_LIST или соответствующий шаблон SAPBC400UDS_DETAIL_LIST в новую программу ZBC400_##_SEL_SCREEN.

 

a) Этот шаг выполняется в соответствии с обычной процедурой.

 

2. На экране выбора должна существовать возможность ввода сложных ограничений по номеру направления (CONNID).

 

Рекомендация: При присвоении типа авиакомпании и номеру направления должна использоваться ссылка на поля с такой же структурой. Это позволит пользователю получить контекстно-зависимую справку.

 

a) См. выдержку из исходного текста в примере решения.

 

3. Ограничения, введенные пользователем, должны использоваться для выбора данных из таблицы базы данных SFLIGHT.

 

a) См. выдержку из исходного текста в примере решения.

 

Задание 2:

 

Внедрение проверки полномочий с диалогом при обнаружении ошибок на экране выбора

 

1. Измените программу так, чтобы в случае отсутствия полномочий

на работу с данными введенной авиакомпании в списке выдавалось соответствующее сообщение об ошибке, после чего снова отображался бы экран выбора для повторного ввода данных.

 

Рекомендация: Класс сообщений BC400 уже содержит подходящее сообщение, которое можно использовать.

 

a) См. выдержку из исходного текста в примере решения.

 

Результат

 

Выдержка из исходного текста: SAPBC400UDS_SEL_SCREEN

 

 

REPORT sapbc400uds_sel_screen.

 

 

Продолжение на следующей странице


 

CONSTANTS actvt_display TYPE activ_auth VALUE ’03’.

 

 

DATA: wa_flight TYPE sbc400focc, wa_sbook TYPE sbook.

 

PARAMETERS pa_car LIKE wa_flight-carrid.

 

 


Дата добавления: 2015-11-16; просмотров: 51 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Wa_sbook-loccurkey.| CALL SCREEN 100.

mybiblioteka.su - 2015-2024 год. (0.015 сек.)