- •Определение внутренней таблицы it (internal table) из трех строк.
- •Способы определения внутренней таблицы с и без строки заголовка
- •Примеры определения внутренних Таблиц
- •Программа добавляет 3 строки к внутренней таблице через строку заголовка
- •Использование exit, continue, stop, и check
- •Чтение единственной строки используя оператора read table
- •Использование ключевых выражений
- •Дополнение comparing
- •Формы для выражения сравнения в операторе read table
- •Пример. Самый эффективный способ вставить строки в сортированную внутреннюю таблицу с сохранением порядка сортировки.
- •Сортировка информационных наполнений внутренней таблицы
- •Порядок сортировки as text
- •Пример.
Пример. Самый эффективный способ вставить строки в сортированную внутреннюю таблицу с сохранением порядка сортировки.
report ztx1110.
data: begin of it occurs 3,
f1(2) type n,
f2 type i,
f3(2) type c,
f4 type p,
end of it.
it-f1 = '40'. it-f3 = 'DD'. it-f2 = it-f4 = 4. append it.
it-f1 = '20'. it-f3 = 'BB'. it-f2 = it-f4 = 2. append it.
sort it by f1.
do 5 times.
it-f1 = sy-index * 10.
it-f3 = 'XX'.
it-f2 = it-f4 = sy-index.
read table it
with key f1 = it-f1
binary search
transporting no fields.
if sy-subrc <> 0.
insert it index sy-tabix.
endif.
enddo.
loop at it.
write: / it-f1, it-f2, it-f3, it-f4.
endloop.
10 1 XX 1
20 2 BB 2
30 3 XX 3
40 4 DD 4
50 5 XX 5
Сортировка информационных наполнений внутренней таблицы
Чтобы отсортировать информационные наполнения внутренней таблицы, используйте оператора sort. Строки могут быть сортированы по одному или более столбцам в порядке возрастания или убывания.
sort it [descending] [as text] [by f1 [ascending|descending] [as text]
f2 ...].
it – название внутренней таблицы.
f1 и f2 – компоненты it.
... представляет любое число имен полей записанных в любом порядке с дополнениями ascending, descending, и/или as text.
Особенности оператора:
ascending (возрастание) – сортировка по умолчанию.
Если дополнение descending записано после sort или перед какими-нибудь составляющими названиями, оно становится значением по умолчанию и применяет ко всем компоненты. Это значение по умолчанию может быть отменено на индивидуальном компоненте, определяя ascending после нужного названия.
Если никакое поля не определены, внутренняя таблица отсортирована по ключевым полям (все поля типа c, n, p, d, и t) в порядке возрастания.
Порядок сортировки для строк, у которых есть одинаковые значения, не предсказуем.
Пример. Использование оператор sort, чтобы переупорядочить строки внутренней таблицы
report ztx1111.
data: begin of it occurs 5,
i like sy-index,
t,
end of it,
alpha(5) value 'CBABB'.
do 5 times varying it-t from alpha+0 next alpha+1.
it-i = sy-index.
append it.
enddo.
loop at it.
write: / it-i, it-t.
endloop.
skip.
sort it by t.
loop at it.
write: / it-i, it-t.
endloop.
skip.
sort it by t.
loop at it.
write: / it-i, it-t.
endloop.
skip.
sort it by t i.
loop at it.
write: / it-i, it-t.
endloop.
skip.
sort it by t descending i.
*same as: sort it descending by t i ascending.
loop at it.
write: / it-i, it-t.
endloop.
skip.
sort it.
*same as: sort it by t.
loop at it.
write: / it-t.
endloop.
1 C
2 B
3 A
4 B
5 B
3 A
2 B
4 B
5 B
1 C
3 A
5 B
4 B
2 B
1 C
3 A
2 B
4 B
5 B
1 C
1 C
2 B
4 B
5 B
3 A
A
B
B
B
C