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

Программа добавляет 3 строки к внутренней таблице через строку заголовка

report ztx1104.

data: begin of it occurs 3,

f1(1),

f2(2),

end of it.

it-f1 = 'A'.

it-f2 = 'XX'.

append it to it. "appends header line IT to body IT

it-f1 = 'B'.

it-f2 = 'YY'.

append it. "same as line 8

it-f1 = 'C'.

append it. "the internal table now contains three rows.

sy-tabix = sy-subrc = 99.

loop at it. "same as: loop at it into it

write: / sy-tabix, it-f1, it-f2.

endloop.

write: / 'done. sy-tabix =', sy-tabix,

/ ' sy-subrc =', sy-subrc.

1 A XX

2 B YY

3 C YY

done. sy-tabix = 99

sy-subrc = 0

Ограничение чтения строк из внутренней таблицы

Используя дополнения from, to, и where, Вы можете ограничить число строк, прочитанных из внутренней таблицы.

Программа чтения некоторых строк таблицы

report ztx1105.

data: begin of it occurs 3,

f1(1),

f2(2),

end of it.

it-f1 = 'A'.

it-f2 = 'XX'.

append it.

it-f1 = 'B'.

it-f2 = 'YY'.

append it.

it-f1 = 'C'.

append it. "it now contains three rows

loop at it where f2 = 'YY'. "f2 is right, it-f2 would be wrong here

write: / sy-tabix, it-f1, it-f2.

endloop.

skip.

loop at it to 2. "same as: loop at it from 1 to 2.

write: / sy-tabix, it-f1, it-f2.

endloop.

skip.

loop at it from 2. "same as: loop at it from 2 to 3.

write: / sy-tabix, it-f1, it-f2.

endloop.

skip.

loop at it from 2 where f1 = 'C'.

write: / sy-tabix, it-f1, it-f2.

endloop.

2 B YY

3 C YY

1 A XX

2 B YY

2 B YY

3 C YY

3 C YY

Использование exit, continue, stop, и check

Таблица показывает работу операторов exit, continue, и check внутри цикла loop at/endloop.

Оператор

Действие оператора

exit

Немедленно заканчивает цикл и осуществляется переход на оператор после endloop.

Continue

Осуществляет переход на следующую итерацию цикла, минуя все операторы, стоящие после Continue.

Check exp

Если exp – истина, обработка продолжается, как будто этот оператор не был выполнен. Если exp ложь, осуществляется переход на следующую итерацию цикла как и в операторе continue.

Чтение единственной строки используя оператора read table

Чтобы определить положение и прочитать единственную строку от внутренней таблицы, используется ооператор read table. Он читает единственную строку, которая соответствует определенным критериям и помещает её в рабочую область.

read table it [into wa] [index i | with key keyexp [binary search] ] [comparing cmpexp] [transporting texp].

  • it – название внутренней таблицы.

  • wa – название рабочей области.

  • i – целочисленное значение номера строки в таблице. Например, 1 – первая строка в таблице, 2 – вторая, и так далее.

  • keyexp – выражение, определяющее значение, которое будет найдено.

  • cmpexp – выражение сравнения, определяющее тест, который будет выполнен на найденной строке.

  • texp – выражение, представляющее поля, которые будут перемещаться в рабочую область после того, как строка была найдена.

  • Если и comparing и transporting определены, comparing должно быть на первом месте.

Особенности оператора:

  • у wa должна быть та же самая структура как строка тела.

  • wa может быть строкой заголовка, или Field String, имеющей ту же самую структуру как строка в теле.

  • Если Вы не определяете рабочую область, по умолчанию система использует строку заголовка. Например, read table it into it читает одну строке из внутренней таблицы it и помещает её в заголовок it. Эквивалентный оператор – read table it.

Дополнение index

Внутренний индекс строки таблицы – номер строки. Например, первая строка в таблице – индекс 1, вторая – индекс 2, и так далее. В операторе read table, если index i определен, система восстанавливает i строку из внутренней таблицы и помещает её в рабочую область. Например, read table it index 7 читает седьмую строку из внутренней таблицы и помещает её в строку заголовка.

Если чтение было успешно (то есть, если i строка существует), sy-subrc установлен на нуль, и sy-tabix установлен в i.

Приме использования дополнения index

report ztx1106.

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.

write: / 'sy-subrc =', sy-subrc,

/ 'sy-tabix =', sy-tabix,

/ it-f1, it-f2, it-f3, it-f4.

read table it into wa index 1.

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.

read table it index 4.

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 = 0

sy-tabix = 2

20 2 BB 2

sy-subrc = 0

sy-tabix = 1

20 2 BB 2

10 1 AA 1

sy-subrc = 4

sy-tabix = 0

20 2 BB 2

10 1 AA 1

Дополнение addition

Если with key keyexp определен, система находит строку, которая соответствует ключевому выражению и помещает её в строку заголовка.

В таблице определены ключевые выражения и их особенности. Используя ключевое выражение, Вы можете определить единственную строку, которая будет найдена. Если более одной строки соответствует выражению, будет найдена первая.

Таблица ключевых выражений и их особенности

Ключевое выражение

Особенности выражения

c1 = v1 c2 = v2 ...

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

(f1) = v1 (f2) = v2 ...

То же самое как и выше, но f1 является переменной, которая содержит название компонента, который будет сравниваться. Значение в f1 должно быть в верхнем регистре. Если f1 – пробел, сравнение проигнорировано.

= wa

wa – рабочая область, идентичная по структуре срокам внутренней таблицы. Это ключевое выражение определяет местонахождение первой строки во внутренней таблице, которая полностью соответствует информационным наполнениям wa. Пробелы обрабатываются как заданные значения, которые будут найдены.

wa

wa – рабочая область, идентичная полностью или частично структуре внутренней таблицы. Если у wa есть n поля, поля wa соответствуют первым n полям внутренней строки таблицы. Это ключевое выражение определяет местонахождение первой строки во внутренней таблице, у которой n первых полей соответствуют информационным наполнениям wa. Пробелы обрабатываются как заданные значения, которые будут найдены.

Таблица значений SY-SUBRC и SY-TABIX после выполнения оператора read table it with key...

Результат

sy-subrc

sy-tabix

Чтение было успешно (строка соответствия была найдена),

0

индекс соответствия строке

Чтение неудачно, но строка с большим значением, чем то, что требуются, существует

4

индекс строки со следующим более высоким значением

Чтение неудачно, и никакие строки не нашлись

8

число строк в it + 1