Внутренняя таблица SAP ABAP: создание, чтение, заполнение, копирование & Удалить

Содержание:

Anonim

Что такое внутренняя таблица?

ВНУТРЕННЯЯ ТАБЛИЦА используются для получения данных из фиксированной структуры для динамического использования в ABAP. Каждая строка внутренней таблицы имеет одинаковую структуру полей. В основном внутренние таблицы используются для хранения и форматирования данных из таблицы базы данных в программе.

В этом уроке вы узнаете:

  • Что такое внутренняя таблица?
  • Что такое рабочая зона?
  • Разница между внутренним столом и рабочей областью?
  • Типы внутренних таблиц
  • Создание внутренних таблиц
  • Заполнение внутренних таблиц
  • Копирование внутренних таблиц
  • Чтение внутреннего
  • Удаление внутренних таблиц

Что такое рабочая зона?

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

Разница между внутренним столом и рабочей областью?

Картинка говорит тысячу слов :-)

Типы внутренних таблиц

Есть два типа внутренних таблиц.

  1. Внутренние таблицы со строкой HEADER
  2. Внутренние таблицы без строки HEADER.

Внутренние таблицы со строкой заголовка

  • Здесь система автоматически создает рабочую область.
  • Рабочая область имеет тот же тип данных, что и внутренняя таблица.
  • Эта рабочая область называется линией ЗАГОЛОВОК.
  • Именно здесь выполняются все изменения или любые действия над содержимым таблицы. В результате записи могут быть непосредственно вставлены в таблицу или доступны напрямую из внутренней таблицы.

Внутренние таблицы без заголовка :

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

Создание внутренних таблиц

Есть много способов создать внутреннюю таблицу. Давайте рассмотрим их один за
другим. 1. С помощью оператора Type
Давайте теперь создадим внутреннюю таблицу itab с помощью оператора TYPE.
Синтаксис -

Типы: начало строки,column1 тип I,column2 тип I,конец линии.

Пример:

ТИПЫ: начало строки,empno тип I,empname (20) тип c,конец линии.

Оператор TYPES создает определенную строку структуры.
Чтобы создать внутреннюю таблицу itab, используйте следующую команду:

Появляется строка типа data itab 10.

Внутренняя таблица itab создается со структурой строки. Помимо объявления структуры внутренней таблицы, предложение OCCURS также определяет, сколько записей таблицы хранится в оперативной памяти (в данном случае 10). Дополнительные записи записываются в область подкачки и могут повлиять на производительность
2. Ссылаясь на другую таблицу
Вы можете создать внутреннюю таблицу, обратившись к существующей таблице. Существующая таблица может быть стандартной таблицей SAP, таблицей Z или другой внутренней таблицей.
Синтаксис-

Данные  <тип> [со строкой заголовка].

Пример-

DATA itab TYPE line ПРОИСХОДИТ 10 со строкой заголовка.

Здесь создается внутренняя таблица itab из строки типа со строкой заголовка. Пожалуйста , обратите внимание «с строкой заголовка» является необязательным
3.By со ссылкой на существующую структуру
Syntax-

Data  LIKE  встречается n [со строкой заголовка].

Пример-

ДАННЫЕ ИТАЛИ КАК ПРОИСХОДИТ 10.

Здесь создается таблица itab со структурой, аналогичной структуре sline
4. Создание новой структуры
Давайте теперь создадим внутреннюю таблицу с нашей собственной структурой. Здесь по умолчанию таблица создается со строкой заголовка .
Синтаксис -

Данные: начало  встречается ,<объявление компонента>,…,Конец .

Пример -

Данные: начало itab происходит 10,column1 тип I,column2 (4) тип C,column3 как mara-ernam,Конец итаб.

Внутренняя таблица itab создана

Заполнение внутренних таблиц

Теперь, когда мы успешно создали несколько внутренних таблиц, давайте посмотрим, как нам заполнить их некоторыми записями. Существуют различные методы, доступные для заполнения таблиц 1. Добавление данных построчно . Первый доступный метод - это использование оператора APPEND.
Используя оператор APPEND, мы можем либо добавить одну строку из другой рабочей области во внутреннюю таблицу, либо мы можем добавить одну начальную строку во внутреннюю таблицу ...
Синтаксис -
ДОБАВИТЬ [ К / НАЧАЛЬНАЯ СТРОКА К] 
.Здесь рабочая область  или начальная строка добавляется к внутренней таблице .
Системная переменная SY-TABIX содержит индекс добавленной строки.
Пример:
Данные: начало itab происходит 10,col1 тип C,col2 тип I,конец itab.Добавить начальную строку в itab.

Результаты: '' '0'
Начальные строки добавляют в таблицу строку, инициализированную правильным значением для ее типа. Здесь col1 - это символ, а col2 - целое число. Затем APPEND начальная строка добавляет строку, инициализированную в соответствии с типом данных столбцов, то есть пространство для col1 и 0 для col2. 2. Использование оператораCOLLECT COLLECT - это еще одна форма оператора, используемая для заполнения внутренних таблиц. Обычно COLLECT используется при вставке строк во внутреннюю таблицу с уникальным стандартным ключом.
Синтаксис-
СОБИРАЙТЕ [ В] <таблицу>.

В таблицах со строкой заголовка опция INTO опускается. Предположим, что уже существует запись, имеющая тот же ключ, что и тот, который вы пытаетесь добавить, тогда новая строка не добавляется в таблицу, но добавляются числовые поля обеих записей, и присутствует только одна запись, соответствующая ключу. . Значение SY-TABIX изменяется на строку исходной записи. Иначе COLLECT действует аналогично APPEND, а SY-TABIX содержит индекс обрабатываемой строки. 3 . Использование оператора INSERT ОператорINSERT добавляет строку / рабочую область во внутреннюю таблицу. Вы можете указать позицию, в которой должна быть добавлена ​​новая строка, используя предложение INDEX с оператором INSERT.
Синтаксис
INSERT [ В / НАЧАЛЬНАЯ СТРОКА В] <таблица> [индекс ].
Здесь рабочая область или INITIAL LINE вставляется во внутреннюю таблицу с индексом .

Копирование внутренних таблиц

Содержимое одной внутренней таблицы можно скопировать в другую с помощью оператора APPEND LINES или INSERT LINES. Более простой способ - использовать любой из следующих синтаксисов.
ПЕРЕМЕСТИТЬ  в .ИЛИ ЖЕ = .

Они копируют содержимое ITAB1 в ITAB2. В случае внутренних таблиц со строкой заголовка мы должны использовать [] в порядке, чтобы отличать от рабочей области. Итак, чтобы скопировать содержимое внутренних таблиц со строкой заголовка, синтаксис выглядит следующим образом:
itab1 [] = itab2 [].

Читать внутренние таблицы

Теперь мы знакомы с созданием внутренних таблиц и заполнением их данными. Теперь мы увидим, как мы на самом деле используем данные или извлекаем данные из внутренних таблиц. 1. Использование Loop -EndloopОдин из способов доступа или чтения внутренней таблицы - использование LOOP-ENDLOOP.
Синтаксис
ПЕТЛЯ НА  [INTO ]… КОНЕЦ.

Здесь, когда вы говорите LOOP AT ITABLE, внутренняя таблица ITABLE читается построчно. Вы можете получить доступ к значениям столбцов для этой строки в любой части структуры LOOP-ENDLOOP. Значение SY-SUBRC устанавливается в 0 , даже если читается только одна запись. 2. Использование READДругой метод чтения внутренней таблицы - использование оператора READ.
Синтаксис-
ПРОЧИТАЙТЕ ТАБЛИЦУ <таблица> [В ] ИНДЕКС .

Этот оператор читает текущую строку или строку, указанную индексом . Значение SY-TABIX - это индекс прочитанной строки. Если запись с указанным индексом найдена, тогда SY-SUBRC устанавливается в 0. Если указанный индекс меньше 0, возникает ошибка времени выполнения. Если указанный индекс превышает размер таблицы, SY-SUBRC устанавливается в 4.

Удаление внутренних таблиц

Есть много способов удалить строки из внутренней таблицы. 1. Удаление строк в цикле.
Это самый простой способ удаления строк.
Sytax
УДАЛИТЬ .

Этот оператор работает только внутри цикла. Удаляет текущую строку. Вы можете удалить строки в цикле условно, добавив предложение WHERE. 2. Удаление строк с помощью индекса.
Используется для удаления строки из внутренней таблицы по любому известному индексу.
Синтаксис
УДАЛИТЬ  ИНДЕКС .
Строка с индексом удаляется. Индекс следующей строки уменьшается на 1.