Вътрешна таблица на SAP ABAP: Създаване, четене, попълване, копиране и усилване; Изтрий

Съдържание:

Anonim

Какво е вътрешна таблица?

ВЪТРЕШНАТА ТАБЛИЦА се използва за получаване на данни от фиксирана структура за динамично използване в ABAP. Всеки ред във вътрешната таблица има една и съща структура на полето. Основното използване на вътрешните таблици е за съхраняване и форматиране на данни от таблица на базата данни в рамките на програма.

В този урок ще научите:

  • Какво е вътрешна таблица?
  • Какво е работна зона?
  • Разлика между вътрешната маса и работната зона?
  • Видове вътрешни таблици
  • Създаване на вътрешни таблици
  • Попълване на вътрешни таблици
  • Копиране на вътрешни таблици
  • Четене вътрешно
  • Изтриване на вътрешни таблици

Какво е работна зона?

Работните области са единични редове с данни. Те трябва да имат същия формат като всяка от вътрешните таблици. Използва се за обработка на данните във вътрешна таблица един по ред.

Разлика между вътрешната маса и работната зона?

Една снимка казва хиляда думи :-)

Видове вътрешни таблици

Има два типа вътрешни таблици.

  1. Вътрешни маси с HEADER линия
  2. Вътрешни маси без HEADER линия.

Вътрешни таблици с заглавна линия

  • Тук системата автоматично създава работната зона.
  • Работната област има същия тип данни като вътрешната таблица.
  • Тази работна зона се нарича HEADER линия.
  • Тук се извършват всички промени или всяко действие върху съдържанието на таблицата. В резултат на това записите могат да бъдат директно вмъкнати в таблицата или директно достъпни от вътрешната таблица.

Вътрешни таблици без заглавна линия :

  • Тук няма работна област, свързана с таблицата.
  • Работната зона трябва да бъде изрично посочена, когато имаме нужда от достъп до такива таблици.
  • Следователно тези таблици не могат да бъдат достъпни директно.

Създаване на вътрешни таблици

Има много начини за създаване на Вътрешна таблица. Нека ги разгледаме един по един -
1. Чрез използване на изявлението за тип
Нека сега създадем вътрешна таблица itab, използвайки оператора TYPE.
Синтаксисът е -

Типове: начало на ред,колона1 тип I,колона2 тип I,край на реда.

Пример:

ВИДОВЕ: начало на линия,empno тип I,empname (20) тип c,край на реда.

Операторът TYPES създава структурна линия, както е дефинирана.
За да създадете вътрешна таблица itab, използвайте следната команда-

Данни от тип itab се срещат 10.

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

Данни   [с заглавен ред].

Пример-

ДАННИ itab ТИП линия НАСТЪПВА 10 с заглавна линия.

Тук се създава вътрешна таблица itab от типовата линия с заглавна линия. Моля, обърнете внимание, че "със заглавна линия" не е задължително
3. Позовавайки се на съществуващия
синтаксис на структурата -

Данни  LIKE  се появяват n [с заглавна линия].

Пример-

ДАННИ itab КАТО sline НАСТЪПВА 10.

Тук се създава таблица itab със структура, същата като тази на линия
4. Чрез създаване на нова структура
Нека сега създадем вътрешна таблица със собствена структура. Тук таблицата по подразбиране се създава със заглавен ред .
Синтаксис -

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

Пример -

Данни: Началото на itab се случва 10,колона1 тип I,колона2 (4) тип С,колона3 като мара-ернам,Край на итаб.

Създадена е вътрешна таблица itab

Попълване на вътрешни таблици

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

Резултати: '' '0'
Първоначални редове добавя ред, инициализиран с правилната стойност за своя тип към таблицата. Тук col1 е символ, а col2 е цяло число. След това APPEND първоначален ред, добавя ред, инициализиран по отношение на типа данни на колоните, т.е. интервал за col1 и 0 за col2. 2. Използване на изразаCOLLECT COLLECT е друга форма на израз, използван за попълване на вътрешните таблици. Обикновено COLLECT се използва при вмъкване на редове във вътрешна таблица с уникален стандартен ключ.
Синтаксис-
СЪБИРАЙТЕ [ В] .

В случай на таблици с заглавна линия, опцията INTO е пропусната. Да предположим, че вече има запис, който има ключ, същият като този, който се опитвате да добавите, тогава нов ред не се добавя към таблицата, но се добавят числовите полета на двата записа и присъства само един запис, съответстващ на ключа . Стойността на SY-TABIX се променя на реда на оригиналния запис. Else COLLECT действа подобно на APPEND и SY-TABIX съдържа индекса на обработената линия. 3 . Използване на операторINSERT Изразът INSERT добавя ред / работна област към вътрешната таблица. Можете да посочите позицията, на която трябва да се добави новият ред, като използвате клаузата INDEX с израза INSERT.
Синтаксис
INSERT [ INTO / INITIAL LINE INTO]  [index ].
Тук работната област или INITIAL LINE се вмъква във вътрешната таблица при индекс .

Копиране на вътрешни таблици

Съдържанието на една вътрешна таблица може да бъде копирано в друга с помощта на израза APPEND LINES или INSERT LINES. По-опростен начин е да се използва манипулацията на следните синтаксиси.
ПРЕМЕСТИ  към .ИЛИ = .

Те копират съдържанието на ITAB1 в ITAB2. В случай на вътрешни таблици с заглавна линия трябва да използваме [] inorder, за да различаваме от работната област. Така че, за да копирате съдържанието на вътрешни таблици с заглавна линия, синтаксисът става,
itab1 [] = itab2 [].

Прочетете вътрешни таблици

Вече сме запознати със създаването на вътрешни таблици и попълването им с данни. Сега ще видим как всъщност използваме данните или извличаме данните от вътрешните таблици. 1. Използване на Loop -EndloopЕдин от начините за достъп или четене на вътрешната таблица е чрез използване на LOOP-ENDLOOP.
Синтаксис
LOOP AT <подходящо> [INTO ] ... ENDLOOP.

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

Този оператор чете текущия ред или ред, както е посочено от index . Стойността на SY-TABIX е индексът на прочетения ред. Ако се намери запис с посочения индекс, тогава SY-SUBRC е зададен на 0. Ако посоченият индекс е по-малък от 0, възниква грешка при изпълнението. Ако посоченият индекс надвишава размера на таблицата, тогава SY-SUBRC се задава на 4.

Изтриване на вътрешни таблици

Има много начини за изтриване на редове от вътрешна таблица. 1. Изтриване на линии в цикъл.
Това е най-простият начин за изтриване на редове.
Sytax
ИЗТРИВАНЕ .

Това изявление работи само в цикъл. Той изтрива текущия ред. Можете да изтриете редовете в цикъл условно, като добавите клаузата WHERE. 2. Изтриване на редове с помощта на индекса.
Това се използва за изтриване на ред от вътрешна таблица при всеки индекс на знанието.
Синтаксис
ИЗТРИВАНЕ  INDEX .
Редът с индекс се изтрива. Индексът на следващия ред се намалява с 1.