Кластеры данных

SAP Постоянные данные ABAP Кластеры данных

Кластеры данных — это тип хранилища, который может использоваться только программами 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'.

Комментарии