Що таке внутрішня таблиця?
ВНУТРІШНЯ ТАБЛИЦЯ використовується для отримання даних із фіксованої структури для динамічного використання в ABAP. Кожен рядок внутрішньої таблиці має однакову структуру поля. Основне використання внутрішніх таблиць - для зберігання та форматування даних із таблиці бази даних у програмі.
У цьому підручнику ви дізнаєтесь:
- Що таке внутрішня таблиця?
- Що таке робоча зона?
- Різниця між внутрішнім столом та робочою зоною?
- Типи внутрішніх таблиць
- Створення внутрішніх таблиць
- Заповнення внутрішніх таблиць
- Копіювання внутрішніх таблиць
- Читання внутрішнє
- Видалення внутрішніх таблиць
Що таке робоча зона?
Робочі області - це окремі рядки даних. Вони повинні мати той самий формат, що і будь-яка внутрішня таблиця. Застосовується для обробки даних у внутрішній таблиці по одному рядку.
Різниця між внутрішнім столом та робочою зоною?
На малюнку написано тисячу слів :-)
Типи внутрішніх таблиць
Існує два типи внутрішніх таблиць.
- Внутрішні таблиці з рядком HEADER
- Внутрішні таблиці без рядка HEADER.
Внутрішні таблиці із заголовком
- Тут система автоматично створює робочу зону.
- Робоча область має той самий тип даних, що і внутрішня таблиця.
- Ця робоча область називається HEADER line.
- Тут виконуються всі зміни або будь-які дії щодо вмісту таблиці. В результаті цього записи можна безпосередньо вставити в таблицю або отримати безпосередній доступ із внутрішньої таблиці.
Внутрішні таблиці без заголовка :
- Тут немає робочої області, пов’язаної з таблицею.
- Робоча область повинна бути чітко вказана, коли нам потрібен доступ до таких таблиць.
- Отже, до цих таблиць неможливо отримати прямий доступ.
Створення внутрішніх таблиць
Є багато способів створити Внутрішню таблицю. Давайте розглянемо їх по одному -
1. За
допомогою оператора типу Давайте тепер створимо Внутрішню таблицю itab, використовуючи оператор TYPE.
Синтаксис -
Типи: початок рядка,стовпець1 тип I,колонка2 тип I,кінець рядка.
Приклад:
ТИПИ: початок рядка,тип I,empname (20) тип c,кінець рядка.
Оператор TYPES створює структурну лінію, як визначено.
Щоб насправді створити Внутрішню таблицю itab, використовуйте таку команду:
Дані itab типу рядок зустрічається 10.
Внутрішня таблиця itab створюється зі структурою рядка. Окрім оголошення структури внутрішньої таблиці, речення OCCURS також визначає, скільки записів таблиці зберігається в основному сховищі (в даному випадку 10). Додаткові записи виписуються в область підкачки та можуть впливати на продуктивність
2. Посилаючись на іншу таблицю
Ви можете створити внутрішню таблицю, посилаючись на існуючу таблицю. Існуюча таблиця може бути стандартною таблицею SAP, таблицею Z або іншою внутрішньою таблицею.
Синтаксис -
Дані[із рядком заголовка].
Приклад-
ДАНІ itab ТИП Рядок НАСТУПАЄ 10 із заголовком.
Тут створюється внутрішня таблиця itab з рядка типу з рядком заголовка. Зверніть увагу, що "з рядком заголовка" є необов’язковим
3. Посилаючись на існуючий
синтаксис структури -
ДаніLIKE трапляються n [із рядком заголовка].
Приклад-
ДАНІ itab ПОДОБАЄТЬСЯ СЛІНІВ ВИНИКАЄ 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] .
У випадку таблиць із заголовком, опція INTO опущена. Припустимо, що вже є запис із ключем, таким самим, як той, який ви намагаєтесь додати, тоді новий рядок не додається до таблиці, але додаються числові поля обох записів і присутній лише один запис, що відповідає ключу . Значення SY-TABIX змінено на рядок вихідного запису. Else COLLECT діє аналогічно APPEND, а SY-TABIX містить індекс обробленої лінії. 3 . Використання оператораINSERT Інструкція INSERT додає рядок / робочу область до внутрішньої таблиці. Ви можете вказати позицію, в якій слід додати новий рядок, використовуючи речення INDEX із оператором INSERT.
Синтаксис
INSERT [Тут робоча областьINTO / INITIAL LINE INTO] [index ].
Копіювання внутрішніх таблиць
Вміст однієї внутрішньої таблиці можна скопіювати в іншу за допомогою оператора APPEND LINES або INSERT LINES. Більш простий спосіб - використовувати тані з наступних синтаксисів.ПЕРЕМІСТИТИДо .АБО = .
Вони копіюють вміст ITAB1 до ITAB2. У випадку внутрішніх таблиць із заголовком рядка ми повинні використовувати [] inorder, щоб відрізнити від робочої області. Отже, для копіювання вмісту внутрішніх таблиць із заголовком стає синтаксис,
itab1 [] = itab2 [].
Прочитайте внутрішні таблиці
Зараз ми знайомі зі створенням внутрішніх таблиць та заповненням їх даними. Зараз ми побачимо, як ми насправді використовуємо дані або отримуємо дані з внутрішніх таблиць. 1. Використання Loop -EndloopОдин із способів отримати доступ або прочитати внутрішню таблицю - це використання LOOP-ENDLOOP.Синтаксис
ЗАКЛЮЧИТИ В <підходящому> [В]… ЗАВЕРШЕННЯ.
Тут, коли ви говорите LOOP AT ITABLE, тоді внутрішня таблиця ITABLE читається рядок за рядком. Ви можете отримати доступ до значень стовпців для цього рядка під час будь-якої частини структури LOOP-ENDLOOP. Значення SY-SUBRC встановлюється на 0 , навіть якщо зчитується лише один запис. 2. Використання READІншим методом читання внутрішньої таблиці є використання оператора READ.
Синтаксис -
ЧИТАЙТЕ ТАБЛИЦЮ <підходить> [ІНТО] ІНДЕКС .
Цей оператор читає поточний рядок або рядок, як зазначено індексом
Видалення внутрішніх таблиць
Існує багато способів видалення рядків із внутрішньої таблиці. 1. Видалення рядків у циклі.Це найпростіший спосіб видалення рядків.
Ситакс
ВИДАЛИТИ.
Це твердження працює лише в циклі. Він видаляє поточний рядок. Ви можете видалити рядки в циклі умовно, додавши речення WHERE. 2. Видалення рядків за допомогою індексу.
Це використовується для видалення рядка з внутрішньої таблиці за будь-яким індексом знань.
Синтаксис
ВИДАЛИТИРядок з індексомІНДЕКС .