- •Определение внутренней таблицы it (internal table) из трех строк.
- •Способы определения внутренней таблицы с и без строки заголовка
- •Примеры определения внутренних Таблиц
- •Программа добавляет 3 строки к внутренней таблице через строку заголовка
- •Использование exit, continue, stop, и check
- •Чтение единственной строки используя оператора read table
- •Использование ключевых выражений
- •Дополнение comparing
- •Формы для выражения сравнения в операторе read table
- •Пример. Самый эффективный способ вставить строки в сортированную внутреннюю таблицу с сохранением порядка сортировки.
- •Сортировка информационных наполнений внутренней таблицы
- •Порядок сортировки as text
- •Пример.
Использование ключевых выражений
report ztx1107.
data: begin of it occurs 3,
f1(2) type n,
f2 type i,
f3(2) type c,
f4 type p,
end of it,
begin of w1,
f1 like it-f1,
f2 like it-f2,
end of w1,
w2 like it,
f(8).
it-f1 = '10'. it-f3 = 'AA'. it-f2 = it-f4 = 1. append it.
it-f1 = '20'. it-f3 = 'BB'. it-f2 = it-f4 = 2. append it.
it-f1 = '30'. it-f3 = 'CC'. it-f2 = it-f4 = 3. append it.
read table it with key f1 = '30' f2 = 3.
write: / 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ it-f1, it-f2, it-f3, it-f4.
f = 'F2'. "must be in uppercase
read table it into w2 with key (f) = 2.
write: /,
/ 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ it-f1, it-f2, it-f3, it-f4,
/ w2-f1, w2-f2, w2-f3, w2-f4.
clear w2.
w2-f1 = '10'. w2-f3 = 'AA'. w2-f2 = w2-f4 = 1.
read table it with key = w2.
write: /,
/ 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ it-f1, it-f2, it-f3, it-f4.
w1-f1 = '20'. w1-f2 = 2.
read table it into w2 with key w1.
write: /,
/ 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ it-f1, it-f2, it-f3, it-f4.
sy-subrc = 0
sy-tabix = 3
30 3 CC 3
sy-subrc = 0
sy-tabix = 2
30 3 CC 3
20 2 BB 2
sy-subrc = 0
sy-tabix = 1
10 1 AA 1
sy-subrc = 0
sy-tabix = 2
10 1 AA 1
Дополнение binary search
При использовании дополнения with key, желательно использовать дополнение binary search, которое использует алгоритм двоичного поиска вместо линейного просмотра таблицы и увеличивает производительность системы.
Без дополнений
Если ни index, ни ключевое выражение не определены, будет искаться строка, которая соответствует заданным по умолчаниям значениям строки заголовка. Пустому значению в заданном по умолчанию ключевом столбце будет соответствовать любое значение. Системные переменные sy-subrc и sy-tabix будут иметь те же значения, что и в операторе read table с использованием ключевого выражения.
Пример
report ztx1108.
data: begin of it occurs 3,
f1(2) type n, "character field - part of default key
f2 type i, "numeric field - not part of default key
f3(2) type c, "character field - part of default key
f4 type p, "numeric field - not part of default key
end of it.
it-f1 = '10'. it-f3 = 'AA'. it-f2 = it-f4 = 1. append it.
it-f1 = '20'. it-f3 = 'BB'. it-f2 = it-f4 = 2. append it.
it-f1 = '30'. it-f3 = 'CC'. it-f2 = it-f4 = 3. append it.
sort it by f1 f3.
clear it.
it(2) = ' '. it-f3 = 'BB'.
read table it binary search.
write: / 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ 'f1=', it-f1, 'f2=', it-f2, 'f3=', it-f3, 'f4=', it-f4.
clear it.
it-f1 = '30'. it-f3 = 'AA'.
read table it binary search.
write: / 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ 'f1=', it-f1, 'f2=', it-f2, 'f3=', it-f3, 'f4=', it-f4.
sy-subrc = 0
sy-tabix = 2
f1= 20 f2= 2 f3= BB f4= 2
sy-subrc = 4
sy-tabix = 3
f1= 30 f2= 0 f3= AA f4= 0