Главная страница

Руководство для участников курса Версия курса 2й квартал 2005 г. Продолжительность курса 5 Дн. Номер материала 50072594


Скачать 38.91 Mb.
НазваниеРуководство для участников курса Версия курса 2й квартал 2005 г. Продолжительность курса 5 Дн. Номер материала 50072594
АнкорBC400_RU_ECC_2005.pdf
Дата13.04.2017
Размер38.91 Mb.
Формат файлаpdf
Имя файлаBC400_RU_ECC_2005.pdf
ТипРуководство
#4748
страница14 из 23
1   ...   10   11   12   13   14   15   16   17   ...   23
Глава 9: Диалоги пользователя
BC400
Рисунок 136: Создание нескольких вторичных списков
Событие AT LINE-SELECTION также может быть инициировано выбором строки во вторичном списке. Это означает, что в этом случае также выполняется соответствующий блок обработки в программе. Следовательно,
для правильного выполнения в рамках блока должна существовать возможность определения того, в каком списке был произведен выбор текущей строки. Для этого можно использовать системное поле sy-lsind .
В данном поле отображается текущий уровень списка: “0” для основного списка, “1” для первого вторичного списка и т. д. На рисунке выше показана функция поля sy-lsind и то, каким образом этому полю присваивается значение: каждый раз при выборе строки значение в поле sy-lsind автоматически увеличивается на одну единицу; при каждом возврате на предыдущий уровень списка sy-lsind уменьшается на одну единицу.
Можно создать до 20 уровней списка.
Поле sy-lsind используется для управления обработкой в блоке AT
LINE-SELECTION
(например, с помощью оператора CASE).
Оператор WRITE всегда выполняется на текущем уровне списка.
Если при выборе строки в блоке AT LINE-SELECTION вторичный список не генерируется, то значение sy-lsind автоматически уменьшается на одну единицу. Затем на экране отображается тот уровень, на котором была выбрана строка.
240
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Списки
Рисунок 137: Простой пример синтаксиса
Показанная выше программа-образец имеет следующую функцию:

В основном списке выводится текст “ Основной список ” вместе с текущим значениемsy-lsind, равным нулю.

При выборе строки основного списка во вторичном списке появляется текст “ 1-ый вторичный список ” с текущим значением sy-lsind,
равным единице.

При выборе строки из вторичного списка появляется второй вторичный список, в котором выводится текст “ 2-ой вторичный список ” с текущим значением sy-lsind, равным двум.

При выборе строки во втором вторичном списке значение sy-lsind увеличивается до 3, но следующий вторичный список не создается.
Поэтому значениеsy-lsind автоматически уменьшается на одну единицу, и на экране снова отображается второй вторичный список.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
241

Глава 9: Диалоги пользователя
BC400
Рисунок 138: Пример использования вторичного списка
На рисунке выше показан пример программы, в которой используется основной и вторичный список:

Направления авиаперелетов с подробными данными должны отображаться в основном списке. Они считываются из таблицы базы данных SPFLI.

Во вторичном списке должно отображаться расписание рейсов для выбранного направления с соответствующими подробными данными.
Они считываются из таблицы базы данных SFLIGHT.
Для выбора соответствующей информации для вторичного списка (после выбора строки в основном списке) выбранная строка или, по крайней мере,
ключевые значения этой строки должны быть доступны для события AT
LINE-SELECTION
. Данная процедура показана на следующем рисунке.
242
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Списки
Рисунок 139: Буферизация специфичных для строки данных в скрытой
области
Для получения доступа к ключевым значениям выбранной строки
после выбора строки основного списка следует внедрить описанную ниже процедуру:

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

При выборе строки данные, скрытые для этой определенной строки,
снова становятся доступными.
Для сохранения специфичных для строки ключевых значений в скрытой области используется оператор HIDE (здесь: HIDE: wa_spfli-carrid,
wa_spfli-connid.
), который должен выполняться сразу после
генерации каждой строки основного списка. После выбора строки соответствующие ключевые значения переносятся обратно в исходные
поля (здесь: wa_spfli-carrid и wa_spfli-connid), и инициируется событие AT LINE-SELECTION. Эта процедура показана на рисунке ниже.
Рекомендация: Предварительный вывод полей HIDE с помощью оператора WRITE не требуется. Это означает, что с помощью оператора HIDE для каждой строки основного списка можно также сохранить информацию, которая не появляется в основном списке,
в скрытой области. Поле HIDE может также являться “плоской”
структурой.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
243

Глава 9: Диалоги пользователя
BC400
Рисунок 140: Поток данных для выбора строк
Рекомендация: В отличие от основных списков, вторичные списки не имеют фиксированных стандартных заголовков, поскольку эти заголовки могут присваиваться динамически. Следовательно, может возникнуть необходимость внедрения собственных заголовков с использованием операторов WRITE.
На следующем рисунке показан весь блок AT LINE-SELECTION
программы-образца. В этом блоке данные (здесь: расписание рейсов) в основном считываются и выводятся с помощью скрытых значений, которые были перенесены обратно в исходные поля.
244
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Списки
Рисунок 141: Экран исходного текста (пример приложения)
Рекомендация: Программа-образец имеет имя
SAPBC400UDD_DETAIL_LIST и является компонентом пакета BC400.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
245

Глава 9: Диалоги пользователя
BC400
246
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Списки
Упражнение 12: Списки
Цели упражнения
Выполнив это упражнение, вы сможете

внедрять в программу вторичные списки
Практический пример
При выборе пользователем строки основного списка на экране должен появляться вторичный список с подробной информацией.
Задание 1:
Подготовка к генерации вторичного списка
1.
Скопируйте программу ZBC400_##_SELECT_SFLIGHT или соответствующий шаблон SAPBC400DDS_AUTHORITY_CHECK в новую программу ZBC400_##_DETAIL_LIST.
2.
Убедитесь в том, что соответствующие ключевые значения для создания вторичного списка будут доступны в программе после выбора строки основного списка (даты рейса).
3.
Для создания основного и вторичного списка в программу необходимо внедрить два функциональных блока.
Задание 2:
Создание вторичного списка
1.
В первой строке вторичного списка выведите ключевую информацию из выбранного расписания рейсов. Ниже поместите горизонтальную линию и одну пустую строку.
2.
Из таблицы базы данных SBOOK должны выбираться все записи о
бронировании для выбранного расписания рейсов с последующим выводом во вторичном списке. Для вывода каждой записи о бронировании должны считываться только следующие поля:
BOOKID, CUSTOMID, CUSTTYPE, CLASS, ORDER_DATE,
SMOKER, CANCELLED.
Продолжение на следующей странице
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
247

Глава 9: Диалоги пользователя
BC400
3.
Дополнительно: Во вторичном списке выведите поля LOCCURAM
и LOCCURKEY: для этого необходимо использовать дополнение
CURRENCY
к оператору WRITE, которое позволит проверить, что сумма
LOCCURAM отформатирована согласно валюте LOCCURKEY.
Рекомендация:
WRITE: wa_sbook-loccuram
CURRENCY wa_sbook-loccurkey,
wa_sbook-loccurkey.
4.
Дополнительно: Выведите поле BOOKID с использованием цвета
COL_KEY.
248
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Списки
Решение 12: Списки
Задание 1:
Подготовка к генерации вторичного списка
1.
Скопируйте программу ZBC400_##_SELECT_SFLIGHT или соответствующий шаблон SAPBC400DDS_AUTHORITY_CHECK в новую программу ZBC400_##_DETAIL_LIST.
a)
Этот шаг выполняется в соответствии с обычной процедурой.
2.
Убедитесь в том, что соответствующие ключевые значения для создания вторичного списка будут доступны в программе после выбора строки основного списка (даты рейса).
a)
См. выдержку из исходного текста в примере решения.
3.
Для создания основного и вторичного списка в программу необходимо внедрить два функциональных блока.
a)
См. выдержку из исходного текста в примере решения.
Задание 2:
Создание вторичного списка
1.
В первой строке вторичного списка выведите ключевую информацию из выбранного расписания рейсов. Ниже поместите горизонтальную линию и одну пустую строку.
a)
См. выдержку из исходного текста в примере решения.
2.
Из таблицы базы данных SBOOK должны выбираться все записи о
бронировании для выбранного расписания рейсов с последующим выводом во вторичном списке. Для вывода каждой записи о бронировании должны считываться только следующие поля:
BOOKID, CUSTOMID, CUSTTYPE, CLASS, ORDER_DATE,
SMOKER, CANCELLED.
a)
См. выдержку из исходного текста в примере решения.
Продолжение на следующей странице
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
249

Глава 9: Диалоги пользователя
BC400
3.
Дополнительно: Во вторичном списке выведите поля LOCCURAM
и LOCCURKEY: для этого необходимо использовать дополнение
CURRENCY
к оператору WRITE, которое позволит проверить, что сумма
LOCCURAM отформатирована согласно валюте LOCCURKEY.
Рекомендация:
WRITE: wa_sbook-loccuram
CURRENCY wa_sbook-loccurkey,
wa_sbook-loccurkey.
a)
См. выдержку из исходного текста в примере решения.
4.
Дополнительно: Выведите поле BOOKID с использованием цвета
COL_KEY.
a)
См. выдержку из исходного текста в примере решения.
Результат
Выдержка из исходного текста (без необязательных компонентов):
SAPBC400UDS_DETAIL_LIST
REPORT
sapbc400uds_detail_list.
CONSTANTS actvt_display TYPE activ_auth VALUE ’03’.
DATA: wa_flight TYPE sbc400focc,
wa_sbook
TYPE sbook
PARAMETERS pa_car TYPE s_carr_id.
START-OF-SELECTION.
AUTHORITY-CHECK OBJECT ’S_CARRID’
ID ’CARRID’ FIELD pa_car
ID ’ACTVT’
FIELD actvt_display.
CASE sy-subrc.
WHEN 0.
SELECT carrid connid fldate seatsmax seatsocc FROM sflight
INTO CORRESPONDING FIELDS OF wa_flight
WHERE carrid = pa_car.
Продолжение на следующей странице
250
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Списки
wa_flight-percentage =
100 * wa_flight-seatsocc / wa_flight-seatsmax.
WRITE: / wa_flight-carrid,
wa_flight-connid,
wa_flight-fldate,
wa_flight-seatsocc,
wa_flight-seatsmax,
wa_flight-percentage,’%’.
*
Hide key values of the current line
HIDE: wa_flight-carrid, wa_flight-connid, wa_flight-fldate.
ENDSELECT.
IF sy-subrc NE 0.
WRITE: ’No ’, pa_car, ’flights found !’.
ENDIF.
WHEN OTHERS.
WRITE: / ’Authority-Check Error’(001).
ENDCASE.
CLEAR wa_flight.
AT LINE-SELECTION.
IF sy-lsind = 1.
WRITE: / wa_flight-carrid,
wa_flight-connid,
wa_flight-fldate.
ULINE.
SKIP.
*
Reading bookings of the selected flight
SELECT bookid customid custtype class order_date
smoker cancelled
FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook
WHERE carrid = wa_flight-carrid
AND
connid = wa_flight-connid
AND
fldate = wa_flight-fldate.
*
Creating detail list
WRITE: / wa_sbook-bookid,
wa_sbook-customid,
wa_sbook-custtype,
wa_sbook-class,
wa_sbook-order_date,
wa_sbook-smoker,
wa_sbook-cancelled.
ENDSELECT.
Продолжение на следующей странице
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
251

Глава 9: Диалоги пользователя
BC400
ENDIF.
CLEAR wa_flight.
Выдержка из исходного текста (с необязательными компонентами):
SAPBC400UDS_DETAIL_LIST1
REPORT
sapbc400uds_detail_list1.
CONSTANTS actvt_display TYPE activ_auth VALUE ’03’.
DATA: wa_flight TYPE sbc400focc,
wa_sbook
TYPE sbook.
PARAMETERS pa_car TYPE s_carr_id.
START-OF-SELECTION.
AUTHORITY-CHECK OBJECT ’S_CARRID’
ID ’CARRID’ FIELD pa_car
ID ’ACTVT’
FIELD actvt_display.
CASE sy-subrc.
WHEN 0.
SELECT carrid connid fldate seatsmax seatsocc FROM sflight
INTO CORRESPONDING FIELDS OF wa_flight
WHERE carrid = pa_car.
wa_flight-percentage =
100 * wa_flight-seatsocc / wa_flight-seatsmax.
WRITE: / wa_flight-carrid,
wa_flight-connid,
wa_flight-fldate,
wa_flight-seatsocc,
wa_flight-seatsmax,
wa_flight-percentage,’%’.
*
Hide key values of the current line
HIDE: wa_flight-carrid, wa_flight-connid, wa_flight-fldate.
ENDSELECT.
IF sy-subrc NE 0.
WRITE: ’No ’, pa_car, ’flights found !’.
ENDIF.
WHEN OTHERS.
WRITE: / ’Authority-Check Error’(001).
Продолжение на следующей странице
252
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Списки
ENDCASE.
CLEAR wa_flight.
AT LINE-SELECTION.
IF sy-lsind = 1.
WRITE: / wa_flight-carrid,
wa_flight-connid,
wa_flight-fldate.
ULINE.
SKIP.
*
Reading bookings of the selected flight
SELECT bookid customid custtype class order_date smoker cancelled loccuram loccurkey
FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook
WHERE carrid = wa_flight-carrid
AND
connid = wa_flight-connid
AND
fldate = wa_flight-fldate.
*
Creating detail list
WRITE: / wa_sbook-bookid COLOR col_key,
wa_sbook-customid,
wa_sbook-custtype,
wa_sbook-class,
wa_sbook-order_date,
wa_sbook-smoker,
wa_sbook-cancelled,
wa_sbook-loccuram CURRENCY wa_sbook-loccurkey,
wa_sbook-loccurkey.
ENDSELECT.
ENDIF.
CLEAR wa_flight.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
253

Глава 9: Диалоги пользователя
BC400
Резюме по уроку
Теперь вы сможете:

описывать атрибуты и преимущества ABAP-списков

внедрять заголовки списков и столбцов

внедрять многоуровневые списки

внедрять интерактивные списки
254
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Экран выбора
Урок:
Экран выбора
Обзор урока
На этом уроке рассматриваются преимущества использования экрана выбора. В дополнение к предыдущим определениям PARAMETERS,
здесь также представлена опция ограничения SELECT-OPTIONS, которая позволяет установить более сложные ограничения для выбора данных.
Кроме того, описывается использование ABAP-событий AT
SELECTION-SCREEN
для внедрения проверки ввода или проверки полномочий с возможным выводом диалогового сообщения об ошибках на экране выбора.
Цели урока
Прослушав этот урок, вы сможете

описывать свойства и преимущества экранов выбора

внедрять опции ограничения выбора данных на экране выбора

внедрять проверку ввода и полномочий с выводом диалога при обнаружении ошибок на экране выбора
Практический пример
С помощью экрана выбора программы можно разрешить пользователям устанавливать намного более сложные ограничения для выбора данных,
чем те, которые допускаются простыми определениями PARAMETERS. В
случае отрицательного результата проверки ввода или полномочий на экране выбора должно появляться соответствующее сообщение об ошибке, после чего пользователь может выполнить повторную попытку ввода.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
255

Глава 9: Диалоги пользователя
BC400
Преимущества экранов выбора
Рисунок 142: Архитектура и цель использования экрана выбора
Экраны выбора используются для ввода критериев выбора в целях выбора данных. Например, при создании программой списка данных из очень большой таблицы базы данных часто целесообразно предварительно выбрать те записи данных, которые действительно необходимы пользователю,
и считывать из базы данных только эти записи. Помимо сокращения потребности в памяти, это также позволяет сократить нагрузку на сеть.
256
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Экран выбора
Рисунок 143: Атрибуты экрана выбора
Экран выбора имеет следующие стандартные функции:

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

Выполняется автоматическая проверка типов: если пользователем были введены данные, тип которых не соответствует типу поля ввода,
то они игнорируются SAP GUI и не появляются на экране выбора.

Помимо указания отдельных значений (PARAMETERS), на экране выбора можно также внедрить сложные критерии выбора
(SELECT-OPTIONS). В качестве ограничений могут вводиться интервалы, сравнительные условия или даже модели.

Если поле ввода определяется с помощью элемента словаря (т.е.
является элементом данных), то при нажатии функциональной клавиши
F1
(справка по вводу) можно вызвать документацию по полям
(документацию элемента данных).
С помощью функциональной клавиши F4 (справка по вводу)
вызывается средство поиска элемента данных, предназначенное для
просмотра допустимых значений ввода.

Созданные экраны выбора могут быть сохранены как варианты для повторного использования или обработки в фоновом режиме.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
257

1   ...   10   11   12   13   14   15   16   17   ...   23


написать администратору сайта