Кластеры данных — это тип хранилища, который может использоваться только программами ABAP. Кластер данных — это группа объектов данных, которые хранятся на носителе данных. Данные объектов данных могут храниться на разных носителях с использованием кластеров данных, а затем эти данные могут быть прочитаны программами ABAP.
Кластеры данных имеют формат, специфичный для ABAP, и к ним можно получить доступ только с помощью операторов IMPORT и EXPORT. Кластер данных состоит из раздела администрирования и раздела данных. Раздел администрирования хранит административную информацию о кластере данных, а раздел данных содержит сжатые объекты данных. Административная информация, хранящаяся в кластере данных, зависит от носителя данных.
Следующие носители поддерживают кластеры данных:
-Строка байтов
-Внутренняя таблица
-ABAP-память
-База данных
-Буферы приложений для перекрестных транзакций
При работе с кластерами данных используются следующие операторы:
EXPORT
Позволяет записывать объекты данных на носитель данных.
IMPORT
Позволяет извлекать объекты данных с носителя.
DELETE
Удаляет любой носитель информации.
FREE
Может использоваться для удаления памяти ABAP.
IMPORT DIRECTORY
Создает список всех объектов данных, которые ранее были экспортированы в таблицу базы данных.
Кластер данных, хранящийся в таблице базы данных, хранится постоянно, поэтому его можно позже импортировать с помощью программ ABAP. Мы обсудим хранение кластеров данных в таблице базы данных.
При хранении кластеров данных в таблицах базы данных таблица должна иметь определенную структуру. Эти структуры называются структурами INDX, поскольку они основаны на стандартной таблице INDX, предоставляемой SAP.
Структура таблицы должна удовлетворять следующим условиям:
Первым полем таблицы должно быть поле MANDT, если вы хотите хранить объекты данных, специфичные для клиента, и оно должно быть ключевым полем. Вам не нужно включать поле MANDT, если кластер данных должен храниться между клиентами.
Второе поле должно быть ключевым полем с именем RELID TYPE CHAR и LENGTH 2. В нем хранится двухсимвольная спецификация области, предоставленная при экспорте кластера данных. Спецификация области разбивает строки таблицы базы данных на несколько областей, чтобы кластеры данных с одним и тем же идентификатором могли существовать в таблице базы данных несколько раз.
Таблица должна содержать одно ключевое поле TYPE CHAR с любым именем для хранения идентификатора, указанного в операторе EXPORT.
Следующее поле должно быть ключевым полем с именем SRTF2 TYPE INT4. Он содержит номера строк хранимого кластера данных, который может занимать несколько строк и заполняется системой автоматически.
Может следовать любое количество компонентов с любыми именами и типами. Компоненты будут переданы оператором EXPORT. Оператор IMPORT TO снова считывает эти поля.
Последние два компонента должны называться CLUSTR и CLUSTD и иметь типы INT2 и LRAW любой длины. В CLUSTR хранится текущая длина поля CLUSTD каждой строки, тогда как CLUSTD содержит фактический кластер данных.
Экспорт кластеров данных в базу данных
Оператор EXPORT TO DATABASE экспортирует кластер данных в специальную базу данных таблицы INDX.
Вместе с оператором EXPORT предоставляется двухсимвольная спецификация области и идентификатор. Спецификация области разбивает строки таблицы базы данных на несколько областей, чтобы кластеры данных с одним и тем же идентификатором могли существовать в таблице базы данных несколько раз.
SELECT * FROM sflight WHERE carrid = 'AA' AND connid = 0017 INTO TABLE @DATA(gt_tab). IF sy-subrc IS NOT INITIAL. EXIT. ENDIF. EXPORT tab = gt_tab TO DATABASE ztest_indx_table(sa) ID 'TABLE'.
Импорт кластеров данных
С помощью оператора IMPORT импортируется кластер данных, который был записан в таблицу базы данных dbtab в области ar и под идентификатором, указанным в id с помощью оператора EXPORT.
Пример импорта кластеров данных с помощью оператора IMPORT.
DATA: gt_tab TYPE STANDARD TABLE OF sflight. IMPORT tab = gt_tab FROM DATABASE ztest_indx_table(sa) ID 'TABLE'.
Комментарии
Отправить комментарий