Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 11 День 11 Внутренние таблицы 2011.doc
Скачиваний:
3
Добавлен:
20.11.2019
Размер:
379.39 Кб
Скачать

Пример. Самый эффективный способ вставить строки в сортированную внутреннюю таблицу с сохранением порядка сортировки.

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