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

Руководство для участников курса Версия курса 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
страница17 из 23
1   ...   13   14   15   16   17   18   19   20   ...   23
Глава 9: Диалоги пользователя
BC400
Специальное экранное поле, в котором в программу переносится соответствующий код функции, называется полем команды и отображается на экране по умолчанию. Для получения возможности использования этого поля необходимо присвоить ему определенное имя. В большинстве случаев этому полю присваивается имя OK_CODE.
Внутренний программный объект данных описывается с использованием этого же имени путем присвоения соответствующего типа системному полю
sy-ucomm (см. рисунок выше).
Рисунок 173: Архитектура выполнения для управления
последовательностью экранов
Оператор CALL SCREEN используется для инициирования обработки
экрана. Эта обработка включает в себя следующие шаги (выполняются автоматически):
Обработка PBO
На стадии подготовки к выводу экрана осуществляется последовательная обработка PBO-модулей, перечисленные в блоке
PBO.
Перенос поля из программы в экран
После обработки PBO содержимое полей структуры TABLES
переносится в экранные поля с такими же именами.
Вывод экрана
Экран с присвоенными значениями отправляется на сервер презентации
(SAPGUI) и выводится для просмотра пользователем.
294
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Экран
Перенос поля из экрана в программу
Каждая операция пользователя на экране инициирует перенос содержимого полей в поля с теми же именами в структуре TABLES.
Обработка PAI
В качестве реакции на выполнение операции пользователя осуществляется последовательная обработка модулей, перечисленных в
PAI.
Модули являются блоками исходного текста без интерфейса. Они вводятся при помощи операторов ABAP MODULE и ENDMODULE. Для каждой субфункции в PBO или PAI должен быть внедрен соответствующий модуль.
Внимание: Логика выполнения экрана (PBO/PAI) содержит только ссылки на модули, внедренные в программе и состоящие из операторов ABAP. Исходный текст ABAP невозможно сохранить непосредственно в логике выполнения.
Рисунок 174: Анализ кода функции в событии PAI
На рисунке выше показана реакция программы на операцию пользователя.
Соответствующий код функции, перенесенный в поле OK_CODE,
анализируется непосредственно перед обработкой PAI.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
295

Глава 9: Диалоги пользователя
BC400
Как правило, модуль с основной обработкой в PAI имеет имя
USER_COMMAND_nnnn, где nnnn обозначает номер экрана.
Рекомендация: В модуле может осуществляться доступ ко
всем глобальным объектам данных программы. Переменные,
определяемые в пределах модуля, всегда являются глобальными.
Рисунок 175: Создание модулей с использованием навигации вперед
Имеется два способа создания модуля:
С использованием навигации вперед из логики выполнения
Для создания соответствующего модуля из логики выполнения экрана дважды щелкните по ссылке на модуль (см. рисунок выше).
С использованием области навигации навигатора по объектам
Можно также создать модуль из списка объектов программы. Для этого используется контекстного меню программы. В этом случае необходимо помнить о том, что в логику выполнения экрана должна быть включена соответствующая ссылка на новый модуль.
Модуль может вызываться из логики выполнения нескольких экранов
(возможность многократного использования).
296
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Экран
Учтите, что модули с MODULE ... OUTPUT являются PBO-модулями
и могут быть вызваны только при помощи PBO экрана. Соответственно,
PAI-модули, начинающиеся с текста MODULE ... INPUT , могут вызываться только в рамках PAI.
Рисунок 176: Следующий экран 0 (результат)
При вводе атрибута экрана “следующий экран =0 ” сначала завершается обработка этого экрана, а затем выполняется возврат к обработке c точки вызова экрана.
Рисунок 177: Следующий экран: “тот же экран” (результат)
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
297

Глава 9: Диалоги пользователя
BC400
Если в качестве следующего экрана введен номер текущего экрана, то после закрытия его обработка выполняется повторно.
Рисунок 178: Динамическая перезапись следующего экрана по
умолчанию
ABAP-оператор SET SCREEN из модуля (как правило, PAI-модуля)
используется для динамической перезаписи следующего экрана по умолчанию, указанного в атрибутах экрана (см. рисунок выше). Это позволяет внедрить следующий стандарт SAP: при нажатии Enter
выполняется возврат к тому же экрану; для перехода к другим экранам используются только другие кнопки. Для этого следует ввести в качестве следующего экрана номер текущего экрана (следующий экран по умолчанию) и разрешить переход к другим экранам (с использованием команды SET SCREEN) только из PAI при выборе определенных кнопок.
(По умолчанию при нажатии Enter код функции не вставляется в поле команды на экране). Следовательно, в программу в качестве кода функции переносится начальное значение поля (пробел).
Примечание: При повторной обработке того же экрана все PBO-модули выполняются повторно. При необходимости заполнения структуры TABLES
в PBO-модуле следует убедиться в том, что изменения данных, внесенные пользователем, не перезаписываются на экране при повторном вызове модуля.
298
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Экран
Рисунок 179: Пример синтаксиса: анализ кодов функций
В этом примере используются две экранные кнопки:

При выборе Назад (код функции BACK) для следующего экрана автоматически устанавливается значение "0", и происходит возврат к точке вызова экрана. В данном случае это означает возврат к основному списку, поскольку экран передается в блоке AT LINE-SELECTION без генерации вторичного списка. На следующем экране в строке статусов появится сообщение 057, поскольку экран был передан с типом "S".

При выборе Сохранить (код функции SAVE ) программа реагирует так же, как и при выборе Назад, но с выводом другого сообщения в основном списке. На одном из следующих уроков программа будет расширена путем добавления возможности изменения записей данных в базе данных.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
299

Глава 9: Диалоги пользователя
BC400
Рисунок 180: Случайный перенос кода функции
В разделе ниже приведено описание отдельного сценария с целью пояснения необходимости выполнения еще одного шага программы.
При выборе пользователем строки основного списка появляется экран изменения соответствующих данных. После изменения данных на экране и выбора Сохранить пользователь возвращается к основному списку, а изменения передаются в базу данных. Если после этого пользователь выбирает новую запись, то при нажатии Enter повторная обработка экрана
не выполняется, а вместо этого в базе данных выполняется операция сохранения с последующим возвратом пользователя к основному списку.
Почему?
При сохранении данных пользователем код функции "SAVE" переносится в переменную ok_code программы. При вызове экрана во второй раз
(после повторного выбора строки) в экран переносится содержимое поля
PBO. Поскольку переменная ok_code все еще содержит значение "SAVE",
выполняется перенос в поле команды экрана. При нажатии Enter (что по умолчанию не приводит к вставке кода функции в поле команды, а только инициирует перенос поля из экрана в программу, в том числе обработку
PAI) некорректный код функции "SAVE", который все еще находится в поле команды, переносится во внутреннюю переменную ok_code и анализируется в PAI:
300
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Экран
Рисунок 181: Предотвращение случайных кодов функций
Для устранения описанной выше нежелательной реакции программы необходимо обеспечить отсутствие случайно перенесенных кодов функций в экранном поле команды. Для этого имеется две возможности:

инициализация внутренней переменной ok_code в PBO-модуле перед переносом поля на экран;

добавление вспомогательного поля в обработку PAI, копирование в это поле значение переменной ok_code и немедленная инициализация
ok_code.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
301

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

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

создавать экраны

вызывать существующие экраны из программы
Практический пример
Программа SAPBC400UDT_DYNPRO позволяет просмотреть все бронирования одним турагентством в виде списка. Эту программу необходимо расширить следующим образом:
При двойном щелчке по строке появляется экран, содержащий поля
просмотра и ввода для соответствующей записи бронирования. После каждой операции пользователя на экране программа осуществляется возврат к основному списку.
Задание 1:
Создание и вызов экрана
1.
Скопируйте шаблон SAPBC400UDT_DYNPRO в новую программу
ZBC400_##_DYNPRO_1.
2.
Ознакомьтесь с программой. Протестируйте программу с использованием номера турагентства 1##, где ## является номером группы.
3.
Измените программу так, чтобы при выборе пользователем строки из основного списка (двойным щелчком или при помощи F2) вызывался экран. Создайте этот экран (номер экрана 100) с использованием навигации вперед.
4.
При указании атрибутов присвойте номер экрана 0 в качестве номера следующего экрана для обеспечения возврата пользователя к основному списку после выполнения любой операции на экране 100.
Задание 2:
Размещение и ведение элементов экрана
1.
Создайте на экране поля ввода/вывода для данных бронирования.
Для присвоения типов полей используйте структуру SDYN_BOOK
ABAP-словаря. Необходимо включить следующие поля:
Продолжение на следующей странице
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
303

Глава 9: Диалоги пользователя
BC400
Ключевые поля таблицы бронирования CARRID, CONNID, FLDATE и
BOOKID необходимо скопировать вместе с названиями полей. Это относится и к полям CUSTOMID (номер клиента) и LOCCURAM
(сумма).
Поле LOCCURKEY (код валюты) необходимо скопировать без
названия поля. Оно появляется справа от поля суммы.
2.
Выполните ведение атрибутов элементов экрана:
Поля CARRID, CONNID, FLDATE, BOOKID и CUSTOMID должны отображаться как поля вывода (атрибут Поле вывода).
В поле LOCCURAM соответствующее значение из программы должно отображаться как изменяемое (атрибуты Поле ввода + Поле вывода).
Поле кода валюты LOCCURKEY должно отображаться как
неизменяемое поле только для просмотра без “рамки поля” (атрибут
Только вывод).
304
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Экран
Решение 14: Создание и вызов экрана
Задание 1:
Создание и вызов экрана
1.
Скопируйте шаблон SAPBC400UDT_DYNPRO в новую программу
ZBC400_##_DYNPRO_1.
a)
Этот шаг выполняется в соответствии с обычной процедурой.
2.
Ознакомьтесь с программой. Протестируйте программу с использованием номера турагентства 1##, где ## является номером группы.
a)
Этот шаг выполняется в соответствии с обычной процедурой.
3.
Измените программу так, чтобы при выборе пользователем строки из основного списка (двойным щелчком или при помощи F2) вызывался экран. Создайте этот экран (номер экрана 100) с использованием навигации вперед.
a)
См. выдержку из исходного текста в примере решения.
b)
Создайте экран с использованием навигации вперед: дважды щелкните по значению 100 в операторе CALL SCREEN 100..
4.
При указании атрибутов присвойте номер экрана 0 в качестве номера следующего экрана для обеспечения возврата пользователя к основному списку после выполнения любой операции на экране 100.
a)
Выполните ведение атрибутов экрана в соответствии с требованиями.
Задание 2:
Размещение и ведение элементов экрана
1.
Создайте на экране поля ввода/вывода для данных бронирования.
Для присвоения типов полей используйте структуру SDYN_BOOK
ABAP-словаря. Необходимо включить следующие поля:
Ключевые поля таблицы бронирования CARRID, CONNID, FLDATE и
BOOKID необходимо скопировать вместе с названиями полей. Это относится и к полям CUSTOMID (номер клиента) и LOCCURAM
(сумма).
Продолжение на следующей странице
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
305

Глава 9: Диалоги пользователя
BC400
Поле LOCCURKEY (код валюты) необходимо скопировать без
названия поля. Оно появляется справа от поля суммы.
a)
Перейдите к графическому редактору форматов.
b)
Используйте ключ Словарь/Программа.
c)
Введите SDYN_BOOK.
d)
Нажмите кнопку Вызов из словаря.
e)
Выберите требуемые поля.
f)
Для поля “LOCCURKEY” выберите опцию без текста.
g)
Для подтверждения нажмите Enter и перетащите эти поля на экран.
2.
Выполните ведение атрибутов элементов экрана:
Поля CARRID, CONNID, FLDATE, BOOKID и CUSTOMID должны отображаться как поля вывода (атрибут Поле вывода).
В поле LOCCURAM соответствующее значение из программы должно отображаться как изменяемое (атрибуты Поле ввода + Поле вывода).
Продолжение на следующей странице
306
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Экран
Поле кода валюты LOCCURKEY должно отображаться как
неизменяемое поле только для просмотра без “рамки поля” (атрибут
Только вывод).
a)
Для перехода к атрибутам поля дважды щелкните по элементу экрана или используйте кнопку Список элементов.
Результат
Выдержка из исходного текста: SAPBC400UDS_DYNPRO_1
REPORT
sapbc400uds_dynpro_1.
CONSTANTS actvt_display TYPE activ_auth VALUE ’03’.
PARAMETERS pa_anum TYPE sbook-agencynum.
* workarea for SELECT
DATA wa_sbook TYPE sbook.
START-OF-SELECTION.
SELECT carrid connid fldate bookid
FROM sbook
INTO CORRESPONDING FIELDS OF wa_sbook
WHERE agencynum = pa_anum.
AUTHORITY-CHECK OBJECT ’S_CARRID’
ID ’CARRID’ FIELD wa_sbook-carrid
ID ’ACTVT’
FIELD actvt_display.
IF sy-subrc = 0.
WRITE: / wa_sbook-carrid COLOR col_key,
wa_sbook-connid COLOR col_key,
wa_sbook-fldate COLOR col_key,
wa_sbook-bookid COLOR col_key,
ENDIF.
ENDSELECT.
AT LINE-SELECTION.
CALL SCREEN 100.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
307

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

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

заполнять поля экрана данными из программы
Практический пример
Экран программы ZBC400_##_DYNPRO должен отображать подробные данные выбранной записи бронирования. Необходимо обеспечить возможность изменения данных пользователем в программе после выхода из экрана.
Задание 1:
Подготовка
1.
Расширьте программу ZBC400_##_DYNPRO_1 или скопируйте шаблон SAPBC400UDS_DYNPRO_1 с присвоением ему нового имени
ZBC400_##_DYNPRO_2 для дальнейшей обработки.
2.
Для создания рабочей области в программе используйте оператор
TABLES. Эта рабочая область будет использоваться в качестве интерфейса экрана. Она должна иметь то же имя, что и структура,
используемая на экране.
3.
Проверьте доступность ключевых полей выбранной записи бронирования при выборе пользователем строки основного списка
(HIDE).
Задание 2:
Проверка полномочий и сбор данных перед вызовом экрана
1.
Требуется изменить программу для обеспечения возможности изменения данных в базе данных. Проверьте, что обработка экрана возможна только при наличии у пользователя полномочий на
изменение данных выбранной авиакомпании. Если пользователь не имеет полномочий, выполняется возврат к основному списку с выводом сообщения 047 класса BC400. Используется вид сообщения "S".
При наличии у пользователя необходимых полномочий выполняется считывание выбранных записей (всех полей) из таблицы базы данных
SBOOK в рабочей области wa_sbook. При этом единичном доступе
Продолжение на следующей странице
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
309

Глава 9: Диалоги пользователя
BC400
также осуществляется сбор информации об отсутствующих данных бронирования и проверка актуальности данных, доступных для вывода на экран.
2.
Непосредственно перед вызовом экрана соответствующие данные копируются из wa_sbook в рабочую область TABLES для их автоматического переноса в экран.
310
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Экран
Решение 15: Экраны: перенос данных
Задание 1:
Подготовка
1.
Расширьте программу ZBC400_##_DYNPRO_1 или скопируйте шаблон SAPBC400UDS_DYNPRO_1 с присвоением ему нового имени
ZBC400_##_DYNPRO_2 для дальнейшей обработки.
a)
Этот шаг выполняется в соответствии с обычной процедурой.
2.
Для создания рабочей области в программе используйте оператор
TABLES. Эта рабочая область будет использоваться в качестве интерфейса экрана. Она должна иметь то же имя, что и структура,
используемая на экране.
a)
Этот шаг выполняется в соответствии с обычной процедурой.
3.
Проверьте доступность ключевых полей выбранной записи бронирования при выборе пользователем строки основного списка
(HIDE).
a)
См. выдержку из исходного текста в примере решения.
Задание 2:
Проверка полномочий и сбор данных перед вызовом экрана
1.
Требуется изменить программу для обеспечения возможности изменения данных в базе данных. Проверьте, что обработка экрана возможна только при наличии у пользователя полномочий на
изменение данных выбранной авиакомпании. Если пользователь не имеет полномочий, выполняется возврат к основному списку с выводом сообщения 047 класса BC400. Используется вид сообщения "S".
При наличии у пользователя необходимых полномочий выполняется считывание выбранных записей (всех полей) из таблицы базы данных
SBOOK в рабочей области wa_sbook. При этом единичном доступе также осуществляется сбор информации об отсутствующих данных бронирования и проверка актуальности данных, доступных для вывода на экран.
a)
См. выдержку из исходного текста в примере решения.
2.
Непосредственно перед вызовом экрана соответствующие данные копируются из wa_sbook в рабочую область TABLES для их автоматического переноса в экран.
a)
См. выдержку из исходного текста в примере решения.
Продолжение на следующей странице
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
311

1   ...   13   14   15   16   17   18   19   20   ...   23


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