- •Определение внутренней таблицы it (internal table) из трех строк.
- •Способы определения внутренней таблицы с и без строки заголовка
- •Примеры определения внутренних Таблиц
- •Программа добавляет 3 строки к внутренней таблице через строку заголовка
- •Использование exit, continue, stop, и check
- •Чтение единственной строки используя оператора read table
- •Использование ключевых выражений
- •Дополнение comparing
- •Формы для выражения сравнения в операторе read table
- •Пример. Самый эффективный способ вставить строки в сортированную внутреннюю таблицу с сохранением порядка сортировки.
- •Сортировка информационных наполнений внутренней таблицы
- •Порядок сортировки as text
- •Пример.
Дополнение comparing
comparing находит различия между информационными наполнениями рабочей области и строки, которая была найдена до того как помещена в рабочую область. Используйте это дополнение вместе с index или with key. Если, после того, как строка была найдена, информационные наполнения рабочей области полностью совпадает с найденной строкой, значение системной переменной sy-subrc будет 0. Если информационные наполнения будут различными, то sy-subrc будет 2, и информационные наполнения будут записаны поверх найденной строкой. Если строка не будет найдена, то sy-subrc будет> 2, и информационные наполнения останутся неизменными.
Формы для выражения сравнения в операторе read table
Cmpexp |
Description Описание |
f1 f2 ... |
После того, как строка найдена, значение f1 в найденной строке сравнивается со значением f1 в рабочей области. Затем значение f2 сравнивается со значением f2 в рабочей области, и так далее. Если они все равны, sy-subrc установлен в 0. Если хотя бы одно отличается, sy-subrc установлена в 2. |
all fields |
Все поля сравниваются так же как и f1 f2.... |
no fields |
Поля не сравниваются. Это – значение по умолчанию. |
Пример
report ztx1109.
data: begin of it occurs 3,
f1(2) type n,
f2 type i,
f3(2) type c,
f4 type p,
end of it,
wa like it.
it-f1 = '10'. it-f3 = 'AA'. it-f2 = it-f4 = 1. append it.
it-f1 = '20'. it-f3 = 'BB'. it-f2 = it-f4 = 2. append it.
it-f1 = '30'. it-f3 = 'CC'. it-f2 = it-f4 = 3. append it.
read table it index 2 comparing f1.
write: / 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ it-f1, it-f2, it-f3, it-f4.
read table it into wa index 1 comparing f2 f4.
write: /,
/ 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ it-f1, it-f2, it-f3, it-f4,
/ wa-f1, wa-f2, wa-f3, wa-f4.
it = wa.
read table it with key f3 = 'AA' comparing all fields.
write: /,
/ 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ it-f1, it-f2, it-f3, it-f4,
/ wa-f1, wa-f2, wa-f3, wa-f4.
sy-subrc = 2
sy-tabix = 2
20 2 BB 2
sy-subrc = 2
sy-tabix = 1
20 2 BB 2
10 1 AA 1
sy-subrc = 0
sy-tabix = 1
10 1 AA 1
10 1 AA 1
Дополнение transporting
transporting используется для перемещения полей из найденной строки в рабочую область. Если это дополнение определено, только значения указанных компонентов будут перемещены в рабочую область. Если строка не найдена, transporting ничего не делает.
Формы для выражения transporting в операторе read table
texp |
Описание |
f1 f2 ... |
После того, как строка найдена, значение f1 в найденной строке накладывается на значение f1 в рабочей области. Затем значение f2 накладывается на значение f2 в рабочей области, и так далее. Только компоненты, перечисленные после transporting будут перемещены. Все другие компоненты остаются неизменными. |
All fields |
Все поля транспортируются. Это – значение по умолчанию, и имеет тот же самый эффект как дополнение transporting. |
no fields |
Никакие поля не транспортируются. Ни одно из полей в рабочей области не изменено. |
Это дополнение полезно, если Вы хотите только проверить на существование строки во внутренней таблице, не нарушая информационные наполнения строки заголовка. Например, прежде, чем добавить строку, Вы хотели бы определить, существует ли уже такая строка во внутренней таблице.