Синтаксис оператора append

Примеры определения внутренних Таблиц

Определение Внутренней Таблицы

Основные понятия

СОЦИАЛЬНЫЕ ПОКАЗАТЕЛИ

Наименование показателя Код строки Причитается по расчету Израсходовано Перечислено в фонды
         
Отчисления в государственные внебюджетные фонды: в Фонд социального страхования        
в Пенсионный фонд        
в Фонд занятости        
на медицинское страхование        
Отчисление в негосударственные пенсионные фонды     X  
Страховые взносы по договорам добровольного страхования пенсий      
Среднесписочная численность работников    
Денежные выплаты и поощрения, не связанные с производством продукции, выполнением работ, оказанием услуг    
Доходы по акциям и вкладам в имущество организации    
   

Внутренняя таблица (internal table) – временная таблица, сохраненная в оперативной памяти на сервере приложений. Она создается и заполняется программой во время выполнения и уничтожается, когда программа выполнилась. Как и таблица базы данных, внутренняя таблица состоит из одной или более строк с идентичной структурой, но в отличие от таблицы базы данных, она не может использоваться после завершения программы. Она используется как временная память для обработки данных или как временный буфер.

Внутренняя таблица состоит из тела и дополнительной строки заголовка (см рисунок).

Тело (body) держит строки внутренней таблицы. Все строки имеют одинаковую структуру. Термин «внутренняя таблица» обычно относится к телу внутренней таблицы.

Строка заголовка (header line) – field string с той же самой структурой как и содержимое таблицы (тела), но она может содержать только единственную строку. Это – буфер, используемый изменения содержимого внутренней таблицы.

Определение внутренней таблицы it (internal table) из трех строк.

Для задания внутренней таблицы будет использоваться имя внутренней таблицы – it (Internal Table).

Чтобы определить тело внутренней таблицы, необходимо определить Field String с дополнением occurs n. Дополнение occurs создает тело внутренней таблицы. Память для тела внутренней таблицы выделяется не при её описании, а при добавлении первой строки во внутреннюю таблицу. Без occurs, у Вас есть только field string.

Чтобы определить внутреннюю таблицу со строкой заголовка необходимо использовать оператор begin of или with header line в определении. При определении внутренней таблицы с помощью begin of автоматически создается строка заголовка. Если Вы используете like вместо begin of, у внутренней таблицы не будет строки заголовка, если Вы не добавите with header line после выражения occurs.

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

Способы определения внутренней таблицы с и без строки заголовка

report ztx1101.

data: begin of it1 occurs 10, "has a header line

f1,

f2,

f3,

end of it1.

data it2 like ztxlfa1 occurs 100. "doesn't have a header line

data it3 like ztxlfa1 occurs 100 with header line. "it does now

Замечание: На рисунке представлено определение внутренней таблицы со строкой заголовка. При этом есть одна особенность: и тело и строку заголовка называются it. it – название тела, и it – также название строки заголовка. В зависимости от того, куда Вы помещаете имя it в Вашем коде система автоматически определяет, к чему Вы обращаетесь.

Использование в операторе присваивания it всегда обращается к строке заголовка. Например, it-f1 = 'A' обращаться к компоненту f1 строки заголовка it.

report ztx1102.

data: begin of it1 occurs 10, "has a header line

f1,

f2,

f3,

end of it1.

data it2 like ztxlfa1 occurs 100. "doesn't have a header line

data it3 like ztxlfa1 occurs 100 with header line. "it does now

data it4 like it3 occurs 100. "doesn't have a header line

data begin of it5 occurs 100. "has a header line

include structure ztxlfa1.

data end of it5.

data begin of it6 occurs 100. "this is why you might use

include structure ztxlfa1. "the include statement

data: delflag,

rowtotal,

end of it6.

data: begin of it7 occurs 100, "don't do it this way

s like ztxlfa1, "component names will be

end of it7. "prefixed with it7-s-

data it8 like sy-index occurs 10

with header line.

data: begin of it9 occurs 10,

f1 like sy-index,

end of it9.

Добавление данных во внутреннюю таблицу, используя оператор append

Чтобы добавить только одну строку к внутренней таблице, Вы можете использовать оператор append. append копирует одну строку из рабочей области и помещает её в конец внутренней таблицы. Рабочая область может быть строкой заголовка, или это может быть любая другая Field String, имеющая ту же самую структуру как строка в теле внутренней таблицы.

append [ wa to] [initial line to] it.

  • wa – название рабочей области.
  • it – название ранее определенной внутренней таблицы.

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

  • wa должна иметь ту же структуру как строка тела.
  • wa может быть строкой заголовка, или это может быть любой Field String, имеющий ту же самую структуру как строка в теле.
  • Если Вы не определяете рабочую область, по умолчанию система использует строку заголовка. Строка заголовка – заданная по умолчанию рабочая область.
  • После выполнения оператора append, системная переменная sy-tabix устанавливается в относительный номер строки, добавленной во внутреннюю таблицу. Например, после добавления первой строки, sy-tabix будет установлен в 1. После добавления второй строки sy-tabix будет 2, и так далее.

Оператор append it to it добавляет строку заголовка, названную it к телу с именем it.

Оператор append it делает то же самое, потому что заданная по умолчанию рабочая область – строка заголовка. Именно в этом формате оператор append обычно используется.

Рабочая область, заданная явно в операторе append, называется явной рабочей областью (explicit work area). Любой Field String, имеющая ту же самую структуру как строка внутренней таблицы, может использоваться как явная рабочая область. Если рабочая область не задана, неявная рабочая область (строка заголовка) используется по умолчанию.

Оператор append initial line to it добавляет строку, содержащую начальные значения (пробелы и нули) к внутренней таблице. Этот оператор аналогичен последовательному выполнению двух операторов: clear it и append it.

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

report ztx1103.

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

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

it-f1 = 'B'.

it-f2 = 'YY'.

append it. "same as line 8

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

it-f1 = 'C'.

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

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

sy-tabix = 1

sy-tabix = 2

sy-tabix = 3

Порядок добавления строк во внутреннюю таблицу


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



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