- •Содержание
- •Repository
- •Средства тестирования и анализа
- •Утилита Workbench Organizer
- •Резюме
- •Резюме
- •Резюме
- •Глава 6.Моделирование сущностей и связей
- •Глава 10. Подпрограммы и функции
- •Создание функций увеличения возможности многократного использования текстов
- •Функциональные группы и функции
- •Чтение единственного элемента таблицы
- •Извлечение единственного поля
- •Получение статистической информации
- •Упорядочение результатов запроса
- •Динамическая выборка данных
- •Использование составных критериев выборки Select-Options
- •Динамическое присвоение имен таблиц
- •Вложенные циклы select
- •Представления, определенные в АВАР/4 Dictionary
- •Размер внутренней таблицы
- •Сортировка элементов внутренней таблицы
- •Вставка нескольких строк
- •Изменение таблиц базы данных с помощью команды update
- •Изменение отдельного элемента
- •Изменение нескольких элементов
- •Удаление элементов таблицы базы данных с помощью команды delete
- •Динамическое задание имен таблиц
- •Резюме
- •Временное хранение
- •Пропуск объектов
- •Использование локальных имен для объектов памяти
- •Очистка содержимого объектов памяти
- •Создание отчета
- •Сравнение двух отчетов, разработанных с использованием разных средств
- •Создание программного текста
- •Обработка данных с помощью событий get
- •Что применять: команду select или Logical Databases
- •Задание составных критериев выборки
- •Порядок обработки событий get
- •Работа с несколькими таблицами
- •Глава 16. Пользовательский интерфейс для создания отчетов
- •Определение параметров для экрана выбора
- •События экрана выбора
- •Повышение производительности программы
- •Резюме
- •Детализация объектов
- •Двойной щелчок мышью: событие at line-selection
- •Определение статуса графического интерфейса
- •Проектирование инструментальной линейки приложения
- •Изменение стандартной инструментальной линейки
- •Положение курсора и скрытая информация
- •Команда hide
- •Команда get cursor
- •Фреймы (кадры)
- •Глава 18. Выполнение программы-отчета
- •Вычисление даты в варианте
- •Описание учебной задачи
- •Создание диалоговой программы
- •Создание экрана
- •Задание фрейма с заголовком
- •Работа с сообщениями
- •Вывод сообщения из программы
- •Логический рабочий блок (LUW)
- •Механизм блокировки системы R/3
- •Глава 22. Расширенные функции графического интерфейса
- •Глава 25. Автоматическая генерация программы
- •Связь между программами
- •Вызов удаленной функции
- •Резюме
- •Удаление связей объектов
- •Резюме
- •Приложения
- •Использование Logical Databases при работе с утилитой АВАР/4 Query
- •Простейшие запросы
- •Получение перечня программных элементов
- •Создание заданий (Tasks) и запросы на изменения (Change Requests)
160 |
|
Глава 14 |
|
|
|
|
|
Составные объекты данных АВАР/4 строятся из записей и внутренних таблиц. Например, в главе 4 описывалось применение вложенных внутренних таблиц, каждая строка которых содержит поля или другие внутренние таблицы. Однако до сих пор речь шла только о внутренних таблицах, которые использовались как временные объекты и "время жизни" которых исчислялось временем выполнения той программы, где они были определены.
В системе R/3 оперативные данные приложений хранятся в таблицах базы данных. В предыдущих главах было показано, как считывать или изменять эти данные, используя операторы Open SQL типа select или insert. В отличие от внутренних таблиц таблицы базы имеют "плоскую" структуру, т.е. элементы таблицы состоят только из полей и не содержат других таблиц. Содержимое объектов локальных программ, таких как записи или внутренние таблицы, допускается сохранять в таблицах реляционной базы данных. Однако в этом случае такой объект должен быть преобразован в плоскую структуру.
Применение команд export и import обеспечивает запись этих составных объектов в базу данных и чтение из нее с помощью одной операции. Операторы export и import дают возможность объединять несколько составных объектов разных типов, хранить и извлекать их как один объект. Они позволяют импортировать составные объекты с различным количеством вложенных объектов без излишних преобразований.
Благодаря технологии export и import осуществляется экспорт составных объектов как во временные объекты, сохраняющиеся в рабочих программах (хранилище носит название АВАР/4 Memory), так и в постоянные таблицы базы данных. Особенно эффективно использование АВАР/4 Memory при передаче большого количества составных объектов в вызываемую программу (при этом может быть несколько уровней вызова). При создании постоянных составных объектов с помощью команды export (второй способ сохранения таблиц) не нужно заботиться о преобразовании вложенных таблиц в плоскую структуру.
Технология export и import дает солидные преимущества при работе с приложениями, которые применяют объекты данных, построенные из одной или нескольких таблиц или содержащие вложенные внутренние таблицы. В частности, в учебном примере можно одновременно использовать внутренние таблицы, содержащие информацию о клиентах и заказах.
Временное хранение
Допустим, требуется передать набор локальных объектов данных в программу для временного хранения. Для этого используется оператор export с дополнением to memory, после которого указывается идентификатор id. Рассмотрим тот же пример программы для туристического агентства. Приведенные ниже тексты содержат две внутренние таблицы — all_customers и all_bookings, которые с помощью одного оператора export передаются за один шаг как единый кластер во временную рабочую область основной памяти, заданную посредством идентификатора CUSTBOOK (идентификатор кластера, содержащего обе внутренние таблицы).
Все таблицы, содержащиеся в кластере CUSTBOOK, можно извлечь с помощью одного оператора import:
В данном примере внутренние таблицы all_customers и all_bookings, хранящиеся в кластере памяти CUSTBOOK, копируются во внутренние таблицы программы с такими же именами.
Разрешается задавать любые имена объектов данных, в которые импортируется таблица из памяти. Подробные пояснения приведены • разделе "Использование локальных имен
объектов памяти".
Размер идентификатора, указанного после дополнения id, не должен превышать 32 символов. Команда export всегда заново записывает содержимое рабочей области памяти, указанной с помощью идеи-
Экспорт и импорт составных объектов данных |
|
161 |
|
|
|
|
|
тификатора, поэтому фактически в кластере памяти находятся части данных, которые были экспортированы последней командой export. Значение системного кода возврата sysubrc после команды import, не равное нулю, говорит о том, что по заданному идентификатору кластера памяти не содержится объекта данных. При этом на экран выводится сообщение, что не получено никаких данных.
Операторы import и export могут работать с одним кластером, содержащим любое количество разных объектов, например поля, записи, внутренние таблицы и вложенные
внутренние таблицы.
Пропуск объектов
Часто, используя оператор import, не нужно извлекать все объекты, записанные в память, некоторые из них вполне можно пропустить. Например, из того же кластера CUSTBOOK приведенной ранее программы можно считать только таблицу all_bookings без таблицы all_customers:
Имена экспортируемых объектов (в примере — содержимое CUSTBOOK) и имена в операторе import (в приведенных выше текстах — all_bookings) определяют, какой объект считывается. Если имя объекта в операторе import не содержится в объекте Memory, то в этот объект ничего не будет считано. Например, используя тот же кластер CUSTBOOK, можно воспользоваться следующим программным кодом:
Здесь внутренняя таблица new_customers останется пустой после считывания, поскольку таблица с таким именем не экспортировалась. Возможность применения различных имен для объектов одинаковой структуры будет рассмотрена в следующем разделе.
Несоответствие имен объектов экспортируемой и импортируемой структур приводит к ошибке в выполнении программы.
Использование локальных имен для объектов памяти
Оператор import допускает переключение имен объектов с помощью дополнения to, которое указывается после имени каждого импортируемого объекта. Например, если внутренняя таблица, в которую необходимо считать таблицу all_bookings, называется new_bookings, то она заполняется следующим образом:
В этом случае новая внутренняя таблица new_bookings, объявленная в операторе data, заполняется таблицей all_bookings, которая содержится в кластере CUSTBOOK. Таблица all_customers не извлекается.
Переключение имен при экспорте таблиц можно осуществить с помощью аналогичной записи, но с дополнением from :
Содержимое таблицы old_customers экспортируется в таблицу all_customers, а таблицы old_bookings — в all_bookings, и обе они размещаются в объекте памяти с именем CUSTBOOK.
Очистка содержимого объектов памяти
Используя команду free memory, можно освободить определенную часть памяти. Если идентификатор не указывается, то из памяти удаляется все:
И приведенном примере стирается содержимое кластера CUSTBOOK, а его имя автоматически удаляется.
Часть V
Созданиеотчетов
Глава 15. Считывание данных с помощью Logical Databases
Глава 16. Интерфейс пользователя с отчетной подсистемой Report
Глава 17. Движение вглубь объекта и дополнительные возможности при работе со списками
Глава 18. Выполнение отчета
Глава15
Считываниедонных с помощью Logical Databases
•Что такое Logical Databases
•Что использовать: команду select или Logical Databases
•Задание составных критериев выборки
•Работа с несколькими таблицами
•Преимущества использования Logical Databases
