- •Тема 9 Операторы присваивания, преобразования и вычисления
- •1. Работа с системными переменными
- •Обычно используемые системные переменные
- •2. Операторы присваивания
- •Использование оператора move
- •Правильное и неправильное использование присваивания
- •Преобразования Данных
- •Использование move c Field Strings
- •3. Выполнение вычислений
Тема 9 Операторы присваивания, преобразования и вычисления
Основные вопросы:
системные переменные;
оператор clear и его действие на переменные и Field Strings;
выполнение присваивания с использованием операторов move и move-corresponding;
преобразования данных с использование операторов присваивания;
правила записи математических выражений.
1. Работа с системными переменными
Есть 171 системная переменная, доступная в каждой программе ABAP/4. Системные переменные не нужно определять, они автоматически определены и всегда доступны. Чтобы отобразить список системных переменных, выполните транзакцию se11 и отобразите структуру DDIC syst.
При использовании в программе системных переменных используются псевдонимы syst или sy (они эквивалентны). Однако большинство программистов использует sy. (Например sy-datum или syst-datum).
Обычно используемые системные переменные
Имя |
Описание |
sy-datum |
Текущая дата |
sy-uzeit |
Текущее время |
sy-uname |
Текущий пользовательский id |
sy-subrc |
Последний код возврата |
sy-mandt |
Мандант |
sy-pagno |
Номер текущей страницы вывода |
sy-colno |
Номер текущего столбца вывода |
sy-linno |
Номер текущей строки вывода |
sy-vline |
Вертикальная линия |
sy-uline |
Горизонтальная линия |
sy-repid |
Текущее название отчета |
sy-cprog |
Имя основной программы |
sy-tcode |
Код текущей транзакции |
sy-dbcnt |
В операторе select, содержит текущий итеративный счетчик. После endselect, содержит число строк, которые соответствуют выражению where. |
Пример 1. Использование базовых системных переменных
report ztx0901.
tables ztxlfa1.
parameters land1_1 like ztxlfa1-land1 obligatory default 'US'.
write: / 'Current date:', sy-datum,
/ 'Current time:', sy-uzeit,
/ 'Current user:', sy-uname,
/ 'Vendors having country code', land1,
/.
select * from ztxlfa1
where land1 = land1_1
order by lifnr.
write: / sy-dbcnt, ztxlfa1-lifnr.
endselect.
write: / sy-dbcnt, 'records found'.
if sy-subrc <> 0.
write: / 'No vendors exist for country', 'land1.
endif.
Current date: 1998/02/22
Current time: 14:38:24
Current user: KENGREENWOOD
Vendors having country code US
1 1040
2 1080
3 1090
4 2000
5 V1
6 V2
7 V3
8 V4
9 V5
10 V7
10 records found
Пример 2. Использование системных переменных
Необходимо написать программу, которая, учитывая код страны как входной параметр, выписывает описание страны от таблицы ztxt005t на текущем языке входа в систему пользователя. ztxt005t – текстовая таблица, содержащая описания кода страны на различных языках. Первичный ключ – mandt, spras (язык), и land1.
Текущий язык входа в систему сохраняется в системной переменной sy-langu.
report ztx0903.
tables ztxt005t.
parameters land1_1 like ztxlfa1-land1 obligatory default 'US'.
select single * from ztxt005t
where spras = sy-langu "current logon language
and land1 = land1_1.
if sy-subrc = 0.
write: 'Description:', ztxt005t-landx.
else.
write: 'No description exists for', land1_1.
endif.
Description: United States