На протяжении всей своей профессиональной деятельности, связанной с системой SAP (а программирование на ABAP в ней занимает не самую последнюю роль), я не перестаю радоваться наличию и возможностям внутренних таблиц. Ведь массив, в котором данные организованы почти так же, как в базе данных – это очень удобная вещь… При этом также радует и набор инструментов: возможность индексного доступа, агрегирующие функции и т.д.

Декларация внутренней таблицы

 

Начнем с декларации внутренней таблицы. Сделать это возможно разными способами:

Первый способ, который мы рассмотрим — декларация в коде программы. В данном способе все поля описываются прямо в коде программы, поля могут ссылаться на словарь системы, а могут быть объявлены как со ссылкой на определенный тип данных. Пример:

data: begin of itab occurs 0,
field1(10) type c,
field2(20) type c,
      end of itab.

Способ не самый оптимальные (особенно если таблица имеет большое количество полей), но бывает полезен.

Самый простой способ:

Data itab like mseg occurs 100.

В данном случае мы объявили в программе таблицу itab имеющую структуру как в таблице словаря mseg. Occurs 100 означает, что мы резервируем в память на 100 записей данной таблицы, но это лишь предполагаемый максимальный размер таблицы, фактически размер таблицы не ограничивается ничем, кроме памяти сервера приложений. Но указанный выше метод пример декларации внутренней таблицы не является единственным, ведь мы можем использовать произвольные поля внутренней таблицы, описанные, нарпимер, со ссылкой на тип данных или собранные из различных таблиц базы данных.

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

DATA: i_mara TYPE TABLE OF mara.

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

TYPES: BEGIN OF ty_table,id(5)    TYPE n,name(10) TYPE c,END OF ty_table.

DATA: it1 TYPE TABLE OF ty_table.

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

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

DATA: wa_table TYPE ty_table.

DATA: it2 LIKE TABLE OF wa_table.

В данном случае мы сначала определили структуру wa_table на основании типа ty_table, а затем декларировали таблицу it2 на основании этой структуры.
[/paid_content]

   
© 2013 sap-blog.ru
Яндекс.Метрика