SAP ABAP - Создание внутренних таблиц
Оператор DATA используется для объявления внутренней таблицы. Программе нужно указать, где таблица начинается и заканчивается. Поэтому используйте оператор BEGIN OF, а затем объявите имя таблицы. После этого используется добавление OCCURS, за которым следует число, здесь 0. OCCURS сообщает SAP, что создается внутренняя таблица, а 0 означает, что изначально она не будет содержать никаких записей. Затем он будет расширяться по мере заполнения данными.
Ниже приводится синтаксис -
DATA: BEGIN OF <internal_tab> Occurs 0,
Создадим поля на новой строке. Например, создайте «имя», которое объявлено как LIKE ZCUSTOMERS1-name. Создайте еще одно поле с именем «dob», НАПРАВЛЕНИЕ ZCUSTOMERS1-dob. Первоначально полезно присвоить именам полей во внутренних таблицах те же имена, что и другим полям, которые были созданы где-то еще. Наконец, объявите конец внутренней таблицы с помощью «END OF <internal_tab>». как показано в следующем коде -
DATA: BEGIN OF itab01 Occurs 0,
name LIKE ZCUSTOMERS1-name,
dob LIKE ZCUSTOMERS1-dob,
END OF itab01.
Здесь itab01 обычно используется для сокращения при создании временных таблиц в SAP. Предложение OCCURS используется для определения тела внутренней таблицы путем объявления полей таблицы. Когда используется предложение OCCURS, вы можете указать числовую константу 'n' для определения дополнительной памяти по умолчанию, если это необходимо. По умолчанию размер памяти, используемый предложением OCCUR 0, составляет 8 КБ. Теперь структура внутренней таблицы создана, и можно написать код для заполнения ее записями.
Внутренняя таблица может быть создана с использованием строки заголовка или без нее. Для создания внутренней таблицы со строкой заголовка используйте либо предложение BEGIN OF перед предложением OCCURS, либо предложение WITH HEADER LINE после предложения OCCURS в определении внутренней таблицы. Чтобы создать внутреннюю таблицу без строки заголовка, используйте предложение OCCURS без предложения BEGIN OF.
Вы также можете создать внутреннюю таблицу как локальный тип данных (тип данных, используемый только в контексте текущей программы) с помощью оператора TYPES. Этот оператор использует предложение TYPE или LIKE для ссылки на существующую таблицу.
Синтаксис для создания внутренней таблицы как локального типа данных -
TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF
<line_type_itab> WITH <key> INITIAL SIZE <size_number>.
Здесь <internal_tab_type> указывает тип таблицы для внутренней таблицы <internal_tab>, а <line_type_itab> указывает тип для строки внутренней таблицы. В операторе TYPES вы можете использовать предложение TYPE, чтобы указать тип строки внутренней таблицы в качестве типа данных, и предложение LIKE, чтобы указать тип строки как объект данных. Указание ключа для внутренней таблицы не является обязательным, и если пользователь не указывает ключ, система SAP определяет тип таблицы с произвольным ключом.
INITIAL SIZE <size_number> создает объект внутренней таблицы, выделяя ему начальный объем памяти. В предыдущем синтаксисе предложение INITIAL SIZE резервирует пространство памяти для строк таблицы size_number. Каждый раз, когда объявляется объект внутренней таблицы, размер таблицы не принадлежит типу данных таблицы.
Note - При первом заполнении внутренней таблицы потребляется гораздо меньше памяти.
пример
Step 1- Откройте редактор ABAP, выполнив код транзакции SE38. Появится начальный экран редактора ABAP.
Step 2 - На начальном экране введите имя программы, установите переключатель «Исходный код» и нажмите кнопку «Создать», чтобы создать новую программу.
Step 3- В диалоговом окне «ABAP: Атрибуты программы» введите краткое описание программы в поле «Заголовок», выберите параметр «Исполняемая программа» в раскрывающемся меню «Тип» в поле группы «Атрибуты». Щелкните кнопку Сохранить.
Step 4 - Напишите следующий код в редакторе ABAP.
REPORT ZINTERNAL_DEMO.
TYPES: BEGIN OF CustomerLine,
Cust_ID TYPE C,
Cust_Name(20) TYPE C,
END OF CustomerLine.
TYPES mytable TYPE SORTED TABLE OF CustomerLine
WITH UNIQUE KEY Cust_ID.
WRITE:/'The mytable is an Internal Table'.
Step 5 - Сохраните, активируйте и выполните программу как обычно.
В этом примере mytable является внутренней таблицей, а уникальный ключ определяется в поле Cust_ID.
Приведенный выше код дает следующий вывод -
The mytable is an Internal Table.