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

Порядок сортировки as text

В операционной системе, каждый символ, который Вы видите на экране, представлен числовым значением. Например, когда программа ABAP/4 выполняется на платформе ASCII, у символа o есть десятичное значение ASCII 111, и p 112. Поэтому p следует после o в таблице кодов.

Когда язык содержит символы с диакритическим знаком, то например, o и ö (умлаутом) являются отличными и отдельными символами, каждым с индивидуальным числовым значением. (В ASCII значение ö – 246). Когда Вы сортируете данные, содержащие символы с диакритическим знаком, формы с диакритическим знаком должны следовать за формами не с диакритическим знаком. Например, o и ö должны следовать вместе, и только затем p. Однако, двойные значения символов нес диакритическим знаком и с диакритическим знаком не следуют за друг другом в таблице кодов. Поэтому, дополнение as text необходимо, чтобы изменить порядок сортировки так, чтобы символы с диакритическим знаком были сортированы правильно.

as text изменяет порядок сортировки так, чтобы символы с диакритическим знаком были сортированы правильно.

Особенности дополнения as text:

  • Дополнение as text может использоваться только с типом поля c.

  • Дополнение может быть записано после название внутренней таблицы, тогда оно применяется ко всем символьным полям внутренней таблицы.

  • Если дополнение записано после конкретного поля, то применяется только для сортировки этого поля.

Пример.

report ztx1112.

data: begin of it occurs 4,

t(30),

end of it.

it-t = 'Higgle'. append it.

it-t = 'Hoffman'. append it.

it-t = 'Höllman'. append it.

it-t = 'Hubble'. append it.

write: / 'sy-langu=', sy-langu.

sort it. "sorts by default key. t is type c, therefore sorts by t.

loop at it.

write: / it-t.

endloop.

skip.

set locale language 'D'. "Equivalent to signing on in German

write: / 'sy-langu=', sy-langu.

sort it as text. "as text here applies to all type c components

*same as: sort it by t as text.

loop at it.

write: / it-t.

endloop.

sy-langu= E

Higgle

Hoffman

Hubble

Höllman

sy-langu= D

Higgle

Hoffman

Höllman

Hubble

Резюме

  • Внутренняя таблица – набор строк, сохраненных в оперативной памяти на сервере приложений. Она состоит из строки заголовка и тела. Строка заголовка является дополнительной. Строка заголовка – неявная рабочая область для внутренней таблицы.

  • Дополнение occurs определяет внутреннюю таблицу. Оно используется для выделения памяти для внутренней таблицы. Однако значение, указанное в occurs не ограничивает число строк, которые Вы можете добавить к внутренней таблице.

  • Оператор loop at используется для чтения множества строк внутренней таблицы. Каждая строка помещается в строку заголовка или явную рабочую область по одной. Использование from, to и where определяют строки, которые будут возвращены. В цикле, sy-tabix содержит относительный номер строки, начиная с 1. После endloop, sy-subrc будет нулем, если какие-нибудь строки были обработаны в цикле.

  • Для управления работой цикла loop at используются операторы exit, continue и check. exit заканчивает цикл и передает управления на оператор после endloop. continue завершает текущую итерацию цикла. check аналогичен continue, если логическое выражение ложно, если логическое выражение истинно, он ничего не делает.

  • Оператор read table используется для чтения единственной строки внутренней таблицы. Использование дополнения index – самый эффективный способ определить местонахождение строки. Дополнение with key, определяет местонахождение строки, определяя значение, которое будет найдено. comparing определяет, отличаются ли значения в рабочей области от значений в найденной строке. transporting избегает ненужного или нежелательного присваивания значений найденной строки рабочей области.

  • Оператор sort сортирует внутреннюю таблицу по заданным полям. Если поля не заданы, таблица сортируется по заданным по умолчанию полям ключа (полям типа c, n, d, t, и x).