Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

BC400_RU_ECC_2005

.pdf
Скачиваний:
1462
Добавлен:
21.05.2015
Размер:
40.8 Mб
Скачать

BC400

Урок: Экран

Экранные кнопки

Рисунок 169: Уровень выполнения 3: внедрение экранных кнопок

В третьем шаге данного примера внедряются различные кнопки, и программа конфигурируется для выполнения соответствующей обработки операций пользователя:

Путем нажатия кнопки Назад пользователь может вернуться к основному списку без сохранения изменений в таблице базы данных. В строке статусов основного списка появится следующее сообщение: “Выход из экрана без сохранения”.

Путем нажатия кнопки Сохранить пользователь может сохранить изменения в базе данных и вернуться к основному списку с выводом соответствующего сообщения в строке статусов. (Обновление базы данных в программе пока не внедрено. Однако для этого уже имеется соответствующая кнопка.)

Для повторного отображения экрана пользователь нажимает кнопку

Enter.

В настоящем разделе рассматривается следующее:

логика выполнения экрана в блоках обработки PBO и PAI;

модули PBO и PAI как блоки обработки соответствующих событий;

внедрение экранных кнопок и анализ операций пользователя.

 

© 2006 г. SAP AG All rights reserved. Авторские

291

06-04-2006

права защищены.

Глава 9: Диалоги пользователя

BC400

Рисунок 170: Схема выбора экранной кнопки

При нажатии кнопки пользователем исполняющая система копирует присвоенный код функции в специальное поле экрана (типа "OK"). Это поле экрана, как правило, имеет имя ok_code.

Содержимое этого специального поля экрана автоматически переносится при наличии в пределах программы объекта данных с таким же именем. После этого инициируется обработка PAI, в течение которой при помощи перенесенного в программу кода функции собирается информация об операции пользователя и выполняется соответствующая обработка.

В следующих разделах описываются способы определения экранных кнопок, использующих специальное поле экрана типа "OK", описания объекта данных с таким же именем в программе и внедрения реакции на соответствующую операцию пользователя.

292

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Экран

Рисунок 171: Определение экранных кнопок и присвоение кодов функций

На приведенном выше рисунке показан процесс определения кнопок в графическом редакторе экранов. Каждой кнопке необходимо присвоить имя и код функции. Для этого выполняется ведение атрибутов поля.

Рисунок 172: Внедрение переноса кода функции

 

© 2006 г. SAP AG All rights reserved. Авторские

293

06-04-2006

права защищены.

Глава 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.

 

© 2006 г. SAP AG All rights reserved. Авторские

295

06-04-2006

права защищены.

Глава 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: Следующий экран: “тот же экран” (результат)

 

© 2006 г. SAP AG All rights reserved. Авторские

297

06-04-2006

права защищены.

Глава 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 ) программа реагирует так же, как и при выборе Назад, но с выводом другого сообщения в основном списке. На одном из следующих уроков программа будет расширена путем добавления возможности изменения записей данных в базе данных.

 

© 2006 г. SAP AG All rights reserved. Авторские

299

06-04-2006

права защищены.

Глава 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]