
BC400_RU_ECC_2005
.pdf
BC400 |
Урок: Списки |
Рисунок 137: Простой пример синтаксиса
Показанная выше программа-образец имеет следующую функцию:
•В основном списке выводится текст “ Основной список ” вместе с текущим значениемsy-lsind, равным нулю.
•При выборе строки основного списка во вторичном списке появляется текст “ 1-ый вторичный список ” с текущим значением sy-lsind, равным единице.
•При выборе строки из вторичного списка появляется второй вторичный список, в котором выводится текст “ 2-ой вторичный список ” с текущим значением sy-lsind, равным двум.
•При выборе строки во втором вторичном списке значение sy-lsind увеличивается до 3, но следующий вторичный список не создается. Поэтому значениеsy-lsind автоматически уменьшается на одну единицу, и на экране снова отображается второй вторичный список.
|
© 2006 г. SAP AG All rights reserved. Авторские |
241 |
06-04-2006 |
права защищены. |

Глава 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 может также являться “плоской” структурой.
|
© 2006 г. SAP AG All rights reserved. Авторские |
243 |
06-04-2006 |
права защищены. |

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

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

Глава 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.
Продолжение на следующей странице
|
© 2006 г. SAP AG All rights reserved. Авторские |
247 |
06-04-2006 |
права защищены. |

Глава 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)См. выдержку из исходного текста в примере решения.
Продолжение на следующей странице
|
© 2006 г. SAP AG All rights reserved. Авторские |
249 |
06-04-2006 |
права защищены. |

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