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

BC400_RU_ECC_2005

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

BC400

Урок: Работа с внутренними таблицами

Внутренняя таблица – это объект данных, в котором во время выполнения могут сохраняться несколько одинаково структурированных записей данных (табличных переменных). Количество записей данных ограничено только масштабом конкретных внедренных систем.

Исполняющая система ABAP осуществляет динамическое управление размером внутренней таблицы. Это означает, что разработчик не должен выполнять какие-либо действия по управлению памятью.

Отдельные наборы данных во внутренней таблице называются строками таблицы или записями таблицы.

Поэтому отдельные компоненты в строке носят название полей или столбцов внутренней таблицы.

Тип строки внутренней таблицы, определяемый с помощью любого типа данных, описывает структуру строк записей таблицы.

Таким образом, внутренние таблицы предоставляют простой способ обработки больших наборов данных в структурированном виде. Типичные способы использования внутренних таблиц:

сохранение данных из таблиц базы данных или последовательных файлов для последующей обработки;

форматирование данных для вывода на экран или для печати (например, сортировка);

форматирование данных для использования другими сервисами (например, для подпрограмм, функциональных модулей или при вызове метода).

Рисунок 70: Атрибуты внутренних таблиц

Следующие свойства полностью определяют внутреннюю таблицу:

 

© 2006 г. SAP AG All rights reserved. Авторские

121

06-04-2006

права защищены.

Глава 4: Основные языковые элементы ABAP

BC400

Тип строки

Тип строки описывает структуру записей таблицы. Для этого, как правило, необходимо указать тип структуры. Однако могут использоваться любые типы данных.

Ключ

Ключ внутренней таблицы состоит из ключевых полей с учетом порядка их расположения. Порядок ключевых полей используется, помимо прочего, для сортировки в соответствии с ключами. В зависимости от вида доступа, ключ может быть определен как уникальный или групповой. Уникальный ключ означает, что строка с определенными ключевыми значениями, возможно, является уникальной в пределах таблицы.

Тип таблицы

Существует три различных типа таблиц: стандартные

, отсортированные и хеш-таблицы . Из соображений производительности, следует выбирать соответствующий тип таблицы в зависимости от используемого вида доступа. На следующем рисунке показан выбор соответствующего типа таблицы.

Рисунок 71: Атрибуты и использование типов таблицы

Если доступ к записи таблицы осуществляется путем указания соответствующего номера строки, такой способ называется доступом по индексу.

Напротив, доступ к записи путем ввода ключевого значения называется доступом по ключу.

122

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Работа с внутренними таблицами

Из соображений производительности, следует выбрать наиболее подходящий из следующих трех типов таблиц в зависимости от вида доступа:

• В стандартных таблицах нумерация строк (индекс) является внутренней. Существует возможность доступа как по индексу, так и по ключу.

Этот тип таблицы следует выбирать в том случае, когда для доступа к внутренней таблице, главным образом, используется индекс.

• В отсортированных таблицах записи данных автоматически сортируются по восходящей по ключевым полям. В этом случае индекс также является внутренним. Существует возможность доступа как по индексу, так и по ключу.

Этот тип таблицы следует выбирать в том случае, когда для доступа к внутренней таблице, главным образом, используется ключ, или если требуется автоматическая сортировка таблицы по ключу.

• В хеш-таблицах для быстрого доступа по ключу используется управление записями данных посредством процедуры хеширования. Ключ должен быть уникальным. В случае хеш-таблиц возможен доступ только по ключу.

Этот тип таблицы следует выбирать в том случае, когда внутренняя таблица является чрезвычайно объемной, и используется только доступ по ключу.

В этом курсе рассматриваются только стандартные таблицы, однако (за исключением нескольких особых случаев) синтаксис для всех трех типов таблиц является идентичным.

 

© 2006 г. SAP AG All rights reserved. Авторские

123

06-04-2006

права защищены.

Глава 4: Основные языковые элементы ABAP

BC400

Рисунок 72: Определение внутренних таблиц с глобальными типами

Тип внутренней таблицы называется типом таблицы. Типы таблицы могут определяться глобально в ABAP-словаре или локально в программе. На приведенном выше рисунке показан тип таблицы, описанный в ABAP-словаре, а также определение в рамках программы табличной переменной со ссылкой на тип таблицы.

Для получения подробной информации относительно описания глобальных типов таблицы в ABAP-словаре см. онлайн-документацию, доступ к которой можно получить с помощью кнопки "i" при просмотре или ведении типа таблицы.

124

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Работа с внутренними таблицами

Рисунок 73: Определение внутренних таблиц с локальными типами

На вышеприведенном рисунке показана таблица, описанная локально в программе, а также определение табличной переменной в рамках программы со ссылкой на описанный тип таблицы.

Обратите внимание на то, что при перечислении ключевых полей в типе таблицы для некоторых видов обработки, например, “сортировки по ключу”, порядок следования полей имеет существенное значение. Для получения подробной информации относительно определения локальных типов таблиц см. документацию по ключевым словам для оператора TYPES.

Кроме того, можно непосредственно определить внутреннюю таблицу. Для этого следует просто использовать оператор DATA вместо оператора TYPES.

В предыдущих определениях внутренних таблиц всегда использовались объекты словаря – либо тип таблицы (SBC400_T_SBC400FOCC), либо, по крайней мере, тип структуры (SBC400FOCC). На следующем рисунке показано “независимое” определение таблицы.

 

© 2006 г. SAP AG All rights reserved. Авторские

125

06-04-2006

права защищены.

Глава 4: Основные языковые элементы ABAP

BC400

Рисунок 74: Независимое определение внутренних таблиц

Этот способ позволяет внедрить таблицы любой структуры без необходимости обращения к существующим структурам словаря.

На следующем рисунке представлен обзор возможных определений внутренних таблиц.

Рисунок 75: Возможные определения внутренних таблиц

В приведенном выше кратком тексте для определения таблицы неявно используются следующие значения по умолчанию:

тип таблицы: стандартная (по умолчанию);

126

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Работа с внутренними таблицами

уникальность ключа: не уникальный (единственный вариант для стандартной таблицы);

табличный ключ: ключ по умолчанию (все нечисловые поля таблицы являются ключевыми полями).

Рекомендация: Поскольку, как правило, использование ключа по умолчанию не является целесообразным, его можно применять для определения внутренней таблицы только в том случае, если ключ не требуется для обработки таблицы.

Внимание: Наиболее типичная синтаксическая ошибка начинающего пользователя заключается в следующем:

DATA itab TYPE TABLE OF <тип_таблицы> .

В этом случае будет определена внутренняя таблица, строки которой также будут являться внутренними таблицами (указанного типа)!

Рисунок 76: Определение структурированных объектов данных: обзор

 

© 2006 г. SAP AG All rights reserved. Авторские

127

06-04-2006

права защищены.

Глава 4: Основные языковые элементы ABAP

BC400

Рисунок 77: Доступ к отдельным записям (обзор)

Для обработки отдельной записи внутренней таблицы, как правило, требуется рабочая область, тип структурной переменной которой должен совпадать с типом строки внутренней таблицы. На вышеприведенном рисунке представлена обработка внутренней таблицы с использованием соответствующей рабочей области.

APPEND

Добавление содержимого структуры к внутренней таблице. Эта операция может использоваться только со стандартными таблицами.

INSERT

Вставка содержимого структуры во внутреннюю таблицу.

В случае стандартной таблицы это содержимое просто добавляется к таблице, в случае отсортированной таблицы содержимое вставляется в таблицу в требуемом месте согласно ключу, а в случае хеш-таблицы вставка производится в соответствии с хеш-алгоритмом.

READ

Копирование содержимого записи таблицы в структуру.

MODIFY

Перезапись строки внутренней таблицы с использованием содержимого структуры.

128

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Работа с внутренними таблицами

DELETE

Удаление строки внутренней таблицы.

COLLECT

Суммирование содержимого структуры в строке внутренней таблицы, имеющей тот же самый ключ. При этом добавляются только неключевые поля. Следовательно, этот оператор может использоваться только для тех таблиц, все неключевые поля которых являются числовыми.

Для получения подробной информации относительно описанных здесь ABAP-операторов см. соответствующую документацию по ключевым словам.

Рисунок 78: Обработка наборов записей (обзор)

LOOP . . . ENDLOOP

Оператор LOOP по очереди размещает строки внутренней таблицы в структуру, указанную в выражении INTO. В пределах оператора LOOP существует возможность вывода или изменения текущего содержимого структуры с последующей записью обратно в таблицу.

DELETE

Удаление строк внутренней таблицы, удовлетворяющих определенному <условию>.

 

© 2006 г. SAP AG All rights reserved. Авторские

129

06-04-2006

права защищены.

Глава 4: Основные языковые элементы ABAP

BC400

INSERT

Копирование содержимого нескольких строк внутренней таблицы в другую внутреннюю таблицу.

APPEND

Добавление содержимого нескольких строк внутренней таблицы к другой стандартной таблице.

Для получения подробной информации относительно описанных здесь ABAP-операторов см. соответствующую документацию по ключевым словам.

Рисунок 79: Пример синтаксиса: вставка строки

Существует возможность вставки строки во внутреннюю таблицу путем записи требуемых данных в подготовленную рабочую область с последующей вставкой во внутреннюю таблицу посредством оператора

INSERT.

В случае стандартных и хеш-таблиц происходит добавление строки. В случае отсортированной таблицы строка вставляется согласно ключу.

130

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

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