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

BC400_RU_ECC_2005

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

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)См. выдержку из исходного текста в примере решения.

Продолжение на следующей странице

 

© 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

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