Читайте также: |
|
где 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 снова появляется экран выбора.
Перед обработкой блока AT SELECTION-SCREEN записи пользователя автоматически переносятся в соответствующие переменные в программе. Следовательно, в этом блоке обработки должны выполняться требуемые проверки ввода и полномочий. В случае отрицательного результата проверки пользователю может выдаваться сообщение об ошибке, после чего снова выводится экран выбора. Пользователь может ввести новые значения.
Однако при прерывании программы появится сообщение об ошибке в блоке
START-OF-SELECTION.
На следующем рисунке показан пример простой программы с проверкой полномочий и выводом диалогового сообщения об ошибке на экране выбора.
Более подробную информацию см. в документации по ключевым словам для
“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. |