BC400_RU_ECC_2005
.pdfBC400 |
Урок: Экран |
Решение 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)См. выдержку из исходного текста в примере решения.
Продолжение на следующей странице
|
© 2006 г. SAP AG All rights reserved. Авторские |
311 |
06-04-2006 |
права защищены. |
Глава 9: Диалоги пользователя |
BC400 |
Результат
Выдержка из исходного текста: SAPBC400UDS_DYNPRO_2
REPORT sapbc400uds_dynpro_2.
CONSTANTS: actvt_display TYPE activ_auth VALUE ’03’, actvt_change TYPE activ_auth VALUE ’02’.
PARAMETERS pa_anum TYPE sbook-agencynum.
*workarea for SELECT DATA wa_sbook TYPE sbook.
*workarea for data communication with screen
TABLES sdyn_book.
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.
HIDE: wa_sbook-carrid, wa_sbook-connid, wa_sbook-fldate, wa_sbook-bookid.
ENDIF.
ENDSELECT.
CLEAR wa_sbook.
AT LINE-SELECTION.
Продолжение на следующей странице
312 |
© 2006 г. SAP AG All rights reserved. Авторские |
|
права защищены. |
06-04-2006 |
BC400 |
Урок: Экран |
AUTHORITY-CHECK OBJECT ’S_CARRID’
ID ’CARRID’ FIELD wa_sbook-carrid
ID ’ACTVT’ FIELD actvt_change.
IF sy-subrc = 0.
SELECT SINGLE * FROM sbook INTO wa_sbook
WHERE carrid = wa_sbook-carrid
AND connid = wa_sbook-connid
AND fldate = wa_sbook-fldate
AND bookid = wa_sbook-bookid.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_sbook TO sdyn_book.
CALL SCREEN 100.
ELSE.
MESSAGE s176(bc400).
ENDIF.
ELSE .
MESSAGE s047(bc400) WITH wa_sbook-carrid.
ENDIF.
CLEAR wa_sbook.
|
© 2006 г. SAP AG All rights reserved. Авторские |
313 |
06-04-2006 |
права защищены. |
Глава 9: Диалоги пользователя |
BC400 |
314 |
© 2006 г. SAP AG All rights reserved. Авторские |
|
права защищены. |
06-04-2006 |
BC400 |
Урок: Экран |
Упражнение 16: Экраны: динамическое определение следующего экрана
Цели упражнения
Выполнив это упражнение, вы сможете
•создавать на экранах кнопки
•анализировать коды функций, инициируемых пользователем посредством кнопок, для соответствующего управления выполнением программы
•настраивать динамическое определение последующих экранов
Практический пример
На экране программы ZBC400_ _DYNPRO_1 ## необходимо внедрить две кнопки с соответствующими функциями.
Задание 1:
Определение кнопок
1.Расширьте программу ZBC400_##_DYNPRO_1 или скопируйте шаблон SAPBC400UDS_DYNPRO_2 с присвоением ему нового имени ZBC400_##_DYNPRO_3 для дальнейшей обработки.
2.На экране определите кнопку для возврата к основному списку (Назад) и кнопку для сохранения измененных данных в базе данных
(Сохранить).
Имя кнопки |
Текст |
Код функции |
PUSH_BACK |
Назад |
BACK |
PUSH_SAVE |
Сохранить (или |
SAVE |
|
пиктограмма |
|
|
ICON_SYSTEM_SAVE) |
|
Задание 2:
Внедрение динамического управления последующими экранами
1.Присвойте имя экранному полю типа "OK" и определите объект данных с таким же именем (и соответствующим типом) в программе. Рекомендуется использовать имя OK_CODE.
Продолжение на следующей странице
|
© 2006 г. SAP AG All rights reserved. Авторские |
315 |
06-04-2006 |
права защищены. |
Глава 9: Диалоги пользователя |
BC400 |
2.Выполните навигацию в логике выполнения. Создайте PAI-модуль посредством навигации вперед. В этом модуле внедрите следующую обработку кода функции:
Код функции |
Операция |
|
|
BACK |
Назад к основному списку |
|
|
SAVE |
Вывод информационного сообщения 060 |
|
класса сообщений BC400 и возврат к |
|
основному списку |
|
|
Любая другая операция |
Повторная обработка экрана 100 |
|
|
3.Проверьте, что при выборе Enter всегда появляется экран 100,
независимо от истории навигации. Для этого в модуле PBO должно быть инициализировано поле ok-кода.
316 |
© 2006 г. SAP AG All rights reserved. Авторские |
|
права защищены. |
06-04-2006 |
BC400 |
Урок: Экран |
Решение 16: Экраны: динамическое определение следующего экрана
Задание 1:
Определение кнопок
1.Расширьте программу ZBC400_##_DYNPRO_1 или скопируйте шаблон SAPBC400UDS_DYNPRO_2 с присвоением ему нового имени ZBC400_##_DYNPRO_3 для дальнейшей обработки.
a)Этот шаг выполняется в соответствии с обычной процедурой.
2.На экране определите кнопку для возврата к основному списку (Назад) и кнопку для сохранения измененных данных в базе данных
(Сохранить).
Имя кнопки |
Текст |
Код функции |
PUSH_BACK |
Назад |
BACK |
PUSH_SAVE |
Сохранить (или |
SAVE |
|
пиктограмма |
|
|
ICON_SYSTEM_SAVE) |
|
a)Этот шаг выполняется в соответствии с описанием в учебных материалах.
Задание 2:
Внедрение динамического управления последующими экранами
1.Присвойте имя экранному полю типа "OK" и определите объект данных с таким же именем (и соответствующим типом) в программе. Рекомендуется использовать имя OK_CODE.
a)Этот шаг выполняется в соответствии с описанием в учебных материалах.
b)См. выдержку из исходного текста в примере решения.
2.Выполните навигацию в логике выполнения. Создайте PAI-модуль посредством навигации вперед. В этом модуле внедрите следующую обработку кода функции:
Продолжение на следующей странице
|
© 2006 г. SAP AG All rights reserved. Авторские |
317 |
06-04-2006 |
права защищены. |
Глава 9: Диалоги пользователя |
BC400 |
Код функции |
Операция |
BACK |
Назад к основному списку |
SAVE |
Вывод информационного сообщения 060 |
|
класса сообщений BC400 и возврат к |
|
основному списку |
|
|
Любая другая операция |
Повторная обработка экрана 100 |
|
|
a)См. выдержку из исходного текста в примере решения.
3.Проверьте, что при выборе Enter всегда появляется экран 100,
независимо от истории навигации. Для этого в модуле PBO должно быть инициализировано поле ok-кода.
a)См. выдержку из исходного текста в примере решения.
Результат
Выдержка из исходного текста: SAPBC400UDS_DYNPRO_3
REPORT sapbc400uds_dynpro_3.
CONSTANTS: actvt_display TYPE activ_auth VALUE ’03’, actvt_change TYPE activ_auth VALUE ’02’.
PARAMETERS pa_anum TYPE sbook-agencynum.
*workarea for SELECT DATA wa_sbook TYPE sbook.
*workarea for data communication with screen TABLES sdyn_book.
*variable for function code of user action
DATA ok_code LIKE sy-ucomm.
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’
Продолжение на следующей странице
318 |
© 2006 г. SAP AG All rights reserved. Авторские |
|
права защищены. |
06-04-2006 |
BC400 |
Урок: Экран |
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.
HIDE: wa_sbook-carrid, wa_sbook-connid, wa_sbook-fldate, wa_sbook-bookid.
ENDIF.
ENDSELECT.
CLEAR wa_sbook.
AT LINE-SELECTION.
AUTHORITY-CHECK OBJECT ’S_CARRID’
ID ’CARRID’ FIELD wa_sbook-carrid
ID ’ACTVT’ FIELD actvt_change.
IF sy-subrc = 0.
SELECT SINGLE * FROM sbook INTO wa_sbook
WHERE carrid = wa_sbook-carrid
AND connid = wa_sbook-connid
AND fldate = wa_sbook-fldate
AND bookid = wa_sbook-bookid.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_sbook TO sdyn_book.
CALL SCREEN 100.
ELSE.
MESSAGE s176(bc400).
ENDIF.
ELSE .
MESSAGE s047(bc400) WITH wa_sbook-carrid.
ENDIF.
CLEAR wa_sbook.
Продолжение на следующей странице
|
© 2006 г. SAP AG All rights reserved. Авторские |
319 |
06-04-2006 |
права защищены. |
Глава 9: Диалоги пользователя |
BC400 |
*& |
-------------------------------------------------------------- |
|
* |
*& |
Module |
CLEAR_OK_CODE OUTPUT |
* |
*& |
-------------------------------------------------------------- |
|
* |
*& |
text |
|
* |
*& |
-------------------------------------------------------------- |
|
* |
MODULE clear_ok_code OUTPUT. |
|
||
|
CLEAR ok_code. |
|
|
ENDMODULE. |
" CLEAR_OK_CODE |
OUTPUT |
|
*& |
-------------------------------------------------------------- |
|
* |
*& |
Module |
USER_COMMAND_0100 INPUT |
* |
*& |
-------------------------------------------------------------- |
|
* |
*& |
text |
|
* |
*& |
-------------------------------------------------------------- |
|
* |
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ’BACK’.
SET SCREEN 0.
WHEN ’SAVE’.
MOVE-CORRESPONDING sdyn_book TO wa_sbook.
MESSAGE i060(bc400).
SET SCREEN 0.
ENDCASE. |
|
ENDMODULE. |
" USER_COMMAND_0100 INPUT |
Логика выполнения для экрана 100:
PROCESS BEFORE OUTPUT.
MODULE clear_ok_code.
PROCESS AFTER INPUT.
MODULE user_command_100.
320 |
© 2006 г. SAP AG All rights reserved. Авторские |
|
права защищены. |
06-04-2006 |