- •Тема 6 Первая Программа abap/4
- •1 Среда разработки (Development Environment)
- •2 Типы программ (Program types)
- •3. Создание первой программы и получение помощи
- •4 Синтаксис abap/4: оператор select, упрощенный оператор data
- •5. Системные переменные
- •6. Цепной Оператор
- •7. Оператор select single
- •9. Синтаксис программ, написанных на языке авар/4
5. Системные переменные
Системные переменные всегда доступными в пределах Вашей программы, они автоматически обновляются системой. Все системные переменные начинаются с префикса sy-.
Текущая системная дата доступна в системной переменной sy-datum, текущее время – sy-uzeit.
Все системные переменные определены в структуре DDIC syst. (Её можно просмотреть как обычную таблицу БД, с помощью se11), или двойной щелчок на названии любого поля sy в программе.
Две системных переменные очень часто используются в операторе select
sy-subrc – используется, чтобы определить, возвратил ли оператор select какие-нибудь строки. Если строки были найдены, значение sy-subrc будет 0. Если строки не были найдены, значение будет 4.
report ztx0206.
tables ztxlfa1.
select * from ztxlfa1 where lifnr > 'Z'.
write / ztxlfa1-lifnr.
endselect.
if sy-subrc <> 0.
write / 'No records found'.
endif.
No records found
sy-dbcnt – используется, чтобы определить число строк, возвращенных оператором select (проверьте значение sy-dbcnt после endselect). Вы можете также использовать эту системеую перемнную как счетчик цикла; между операторами select и endselect системная переменная sy-dbcnt содержит номер текущей итерации. После первого прохода цикла sy-dbcnt будет 1, после второго – 2, и так далее. После endselect она сохранит свое значение и, таким образом, будет содержать число выбранных строк.
report ztx0207.
tables ztxlfa1.
select * from ztxlfa1 order by lifnr.
write / sy-dbcnt.
write ztxlfa1-lifnr.
endselect.
write / sy-dbcnt.
write 'records found'.
1 1000
2 1010
3 1020
4 1030
5 1040
6 1050
7 1060
8 1070
9 1080
10 1090
11 2000
12 V1
13 V10
14 V11
15 V12
16 V2
17 V3
18 V4
19 V5
20 V6
21 V7
22 V8
23 V9
23 records found
Косая черта (/) начинает новую строку.
6. Цепной Оператор
Двоеточие (:) называется цепным оператором. Он используется, чтобы объединить строки программы, которые начинаются с одного и того же слова или последовательности слов. Например:
tables ztxlfa1.
tables ztxlfb1.
Или, можно использовать цепной оператор:
tables: ztxlfa1, ztxlfb1.
Цепные операторы используются, чтобы улучшить читаемость программы.
report ztx0208.
tables ztxlfa1.
select * from ztxlfa1 order by lifnr.
write: / sy-dbcnt, ztxlfa1-lifnr.
endselect.
write: / sy-dbcnt, 'records found'.
7. Оператор select single
select single оператор используется, чтобы получить единствунную запись базы данных. Упрощенный синтаксис для select single:
select single * from t1 [into wa] [where f1 op v1 and/or f2 op v2 ...].
* указывает, что в таблице должны быть получены все поля
t1 – название таблицы, ранее определенной на операторе tables wa – название рабочей области, которая соответствует структуре таблицы. f1 – название поля в таблице t1. op - один из следующих логических операторов: = <>> = <<=. v1 – литерал или переменная. Особенности оператора:
select single, не начинает цикл, потому что возвращает только одну строку. Поэтому endselect не используется.
Пример:
report ztx0209.
tables ztxlfa1.
select single * from ztxlfa1 where lifnr = 'V1'.
if sy-subrc = 0.
write: / ztxlfa1-lifnr, ztxlfa1-name1.
else.
write 'record not found'.
endif.
V1 Quantity First Ltd.
8. Комментарии. Есть два вида комментариев:
* (звездочка) в столбце указывает, что вся строка – комментарий. При этом закомментированная строка станет красной.
" (двойные кавычки) где-нибудь в строке указывают, что остаток строки – комментарий. Строка не будет выделена красным цветом.
Например:
* This is a comment
tables ztxlfa1. " This is also a comment
Нет никакого символа конечного комментария. Комментарий заканчивается в конце текущей строки.