- •Определение внутренней таблицы it (internal table) из трех строк.
- •Способы определения внутренней таблицы с и без строки заголовка
- •Примеры определения внутренних Таблиц
- •Программа добавляет 3 строки к внутренней таблице через строку заголовка
- •Использование exit, continue, stop, и check
- •Чтение единственной строки используя оператора read table
- •Использование ключевых выражений
- •Дополнение comparing
- •Формы для выражения сравнения в операторе read table
- •Пример. Самый эффективный способ вставить строки в сортированную внутреннюю таблицу с сохранением порядка сортировки.
- •Сортировка информационных наполнений внутренней таблицы
- •Порядок сортировки as text
- •Пример.
Порядок сортировки 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).