Порядок сортировки для строк, у которых есть одинаковые значения, не предсказуем

Формы для выражения transporting в операторе read table

texp Описание
f1 f2... После того, как строка найдена, значение f1 в найденной строке накладывается на значение f1 в рабочей области. Затем значение f2 накладывается на значение f2 в рабочей области, и так далее. Только компоненты, перечисленные после transporting будут перемещены. Все другие компоненты остаются неизменными.
All fields Все поля транспортируются. Это – значение по умолчанию, и имеет тот же самый эффект как дополнение transporting.
no fields Никакие поля не транспортируются. Ни одно из полей в рабочей области не изменено.

Это дополнение полезно, если Вы хотите только проверить на существование строки во внутренней таблице, не нарушая информационные наполнения строки заголовка. Например, прежде, чем добавить строку, Вы хотели бы определить, существует ли уже такая строка во внутренней таблице.

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: