Учебники

SAP ABAP — Операторы

ABAP предоставляет богатый набор операторов для работы с переменными. Все операторы ABAP подразделяются на четыре категории —

  • Арифметические Операторы
  • Операторы сравнения
  • Битовые операторы
  • Операторы символьных строк

Арифметические Операторы

Арифметические операторы используются в математических выражениях так же, как они используются в алгебре. Следующий список описывает арифметические операторы. Предположим, что целочисленная переменная A содержит 20, а переменная B содержит 40.

S.No. Арифметический оператор и описание
1

+ (Дополнение)

Добавляет значения по обе стороны от оператора. Пример: A + B даст 60.

2

— (вычитание)

Вычитает правый операнд из левого операнда. Пример: A — B даст -20.

3

* (Умножение)

Умножает значения по обе стороны от оператора. Пример: A * B даст 800.

4

/ (Отдел)

Делит левый операнд на правый операнд. Пример: B / A даст 2.

5

MOD (Модуль)

Делит левый операнд на правый и возвращает остаток. Пример: B MOD A даст 0.

+ (Дополнение)

Добавляет значения по обе стороны от оператора. Пример: A + B даст 60.

— (вычитание)

Вычитает правый операнд из левого операнда. Пример: A — B даст -20.

* (Умножение)

Умножает значения по обе стороны от оператора. Пример: A * B даст 800.

/ (Отдел)

Делит левый операнд на правый операнд. Пример: B / A даст 2.

MOD (Модуль)

Делит левый операнд на правый и возвращает остаток. Пример: B MOD A даст 0.

пример

REPORT YS_SEP_08. 
DATA: A TYPE I VALUE 150, 
B TYPE I VALUE 50, 
Result TYPE I. 
Result =  A / B. 
WRITE / Result.

Приведенный выше код производит следующий вывод —

3

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

Давайте обсудим различные типы операторов сравнения для разных операндов.

S.No. Оператор сравнения и описание
1

= (тест на равенство). Альтернативная форма EQ.

Проверяет, равны ли значения двух операндов или нет, если да, тогда условие становится истинным. Пример (A = B) не соответствует действительности.

2

<> (Критерий неравенства). Альтернативная форма NE.

Проверяет, равны ли значения двух операндов или нет. Если значения не равны, то условие становится истинным. Пример (A <> B) верный.

3

> (Больше, чем тест). Альтернативная форма GT.

Проверяет, больше ли значение левого операнда, чем значение правого операнда. Если да, то условие становится истинным. Пример (A> B) не соответствует действительности.

4

<(Меньше, чем тест). Альтернативная форма — LT.

Проверяет, меньше ли значение левого операнда, чем значение правого операнда. Если да, то условие становится истинным. Пример (A <B) верный.

5

> = (Больше или равно) Альтернативной формой является GE.

Проверяет, больше ли значение левого операнда или равно значению правого операнда. Если да, то условие становится истинным. Пример (A> = B) не соответствует действительности.

6

<= (Тест меньше или равен). Альтернативная форма — LE.

Проверяет, меньше ли значение левого операнда или равно значению правого операнда. Если да, то условие становится истинным. Пример (A <= B) верен.

7

а1 между а2 и а3 (интервальный тест)

Проверяет, находится ли a1 между a2 и a3 (включительно). Если да, то условие становится истинным. Пример (между B и C) верен.

8

НАЧАЛ

Условие становится истинным, если содержимое переменной не изменилось, и ему автоматически было присвоено начальное значение. Пример (A IS INITIAL) не соответствует действительности

9

НЕ НАЧИНАЕТСЯ

Условие становится истинным, если содержимое переменной изменилось. Пример (А НЕ НАЧАЛ) верен.

= (тест на равенство). Альтернативная форма EQ.

Проверяет, равны ли значения двух операндов или нет, если да, тогда условие становится истинным. Пример (A = B) не соответствует действительности.

<> (Критерий неравенства). Альтернативная форма NE.

Проверяет, равны ли значения двух операндов или нет. Если значения не равны, то условие становится истинным. Пример (A <> B) верный.

> (Больше, чем тест). Альтернативная форма GT.

Проверяет, больше ли значение левого операнда, чем значение правого операнда. Если да, то условие становится истинным. Пример (A> B) не соответствует действительности.

<(Меньше, чем тест). Альтернативная форма — LT.

Проверяет, меньше ли значение левого операнда, чем значение правого операнда. Если да, то условие становится истинным. Пример (A <B) верный.

> = (Больше или равно) Альтернативной формой является GE.

Проверяет, больше ли значение левого операнда или равно значению правого операнда. Если да, то условие становится истинным. Пример (A> = B) не соответствует действительности.

<= (Тест меньше или равен). Альтернативная форма — LE.

Проверяет, меньше ли значение левого операнда или равно значению правого операнда. Если да, то условие становится истинным. Пример (A <= B) верен.

а1 между а2 и а3 (интервальный тест)

Проверяет, находится ли a1 между a2 и a3 (включительно). Если да, то условие становится истинным. Пример (между B и C) верен.

НАЧАЛ

Условие становится истинным, если содержимое переменной не изменилось, и ему автоматически было присвоено начальное значение. Пример (A IS INITIAL) не соответствует действительности

НЕ НАЧИНАЕТСЯ

Условие становится истинным, если содержимое переменной изменилось. Пример (А НЕ НАЧАЛ) верен.

Примечание. Если тип данных или длина переменных не совпадают, выполняется автоматическое преобразование. Автоматическая настройка типа выполняется для одного или обоих значений при сравнении двух значений различных типов данных. Тип преобразования определяется типом данных и порядком предпочтения типа данных.

Ниже приведен порядок предпочтений —

  • Если одно поле имеет тип I, то другое преобразуется в тип I.

  • Если одно поле имеет тип P, то другое преобразуется в тип P.

  • Если одно поле имеет тип D, то другое преобразуется в тип D. Но типы C и N не преобразуются, и они сравниваются напрямую. Аналогично обстоит дело с типом T.

  • Если одно поле имеет тип N, а другое — тип C или X, оба поля преобразуются в тип P.

  • Если одно поле имеет тип C, а другое — тип X, тип X преобразуется в тип C.

Если одно поле имеет тип I, то другое преобразуется в тип I.

Если одно поле имеет тип P, то другое преобразуется в тип P.

Если одно поле имеет тип D, то другое преобразуется в тип D. Но типы C и N не преобразуются, и они сравниваются напрямую. Аналогично обстоит дело с типом T.

Если одно поле имеет тип N, а другое — тип C или X, оба поля преобразуются в тип P.

Если одно поле имеет тип C, а другое — тип X, тип X преобразуется в тип C.

Пример 1

REPORT YS_SEP_08. 

DATA: A TYPE I VALUE 115,
      B TYPE I VALUE 119.
      IF A LT B.
      WRITE: / 'A is less than B'.
      ENDIF

Приведенный выше код производит следующий вывод —

A is less than B 

Пример 2

REPORT YS_SEP_08. 

DATA: A TYPE I.
      IF A IS INITIAL.
      WRITE: / 'A is assigned'.
      ENDIF.

Приведенный выше код производит следующий вывод —

A is assigned.

Битовые операторы

ABAP также предоставляет ряд побитовых логических операторов, которые можно использовать для построения булевых алгебраических выражений. Битовые операторы могут быть объединены в сложные выражения с использованием скобок и так далее.

S.No. Побитовый оператор и описание
1

BIT-НЕ

Унарный оператор, который переворачивает все биты шестнадцатеричного числа на противоположное значение. Например, применение этого оператора к шестнадцатеричному числу, имеющему значение уровня бита 10101010 (например, «AA»), даст 01010101.

2

BIT-И

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

3

BIT-XOR

Двоичный оператор, который сравнивает каждое поле по битам, используя оператор логического XOR (исключающее ИЛИ).

4

БИТ-ИЛИ

Двоичный оператор, который сравнивает каждое поле побитово, используя логический оператор ИЛИ.

BIT-НЕ

Унарный оператор, который переворачивает все биты шестнадцатеричного числа на противоположное значение. Например, применение этого оператора к шестнадцатеричному числу, имеющему значение уровня бита 10101010 (например, «AA»), даст 01010101.

BIT-И

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

BIT-XOR

Двоичный оператор, который сравнивает каждое поле по битам, используя оператор логического XOR (исключающее ИЛИ).

БИТ-ИЛИ

Двоичный оператор, который сравнивает каждое поле побитово, используя логический оператор ИЛИ.

Например, ниже приведена таблица истинности, которая показывает значения, сгенерированные при применении логических операторов AND, OR или XOR к двухбитовым значениям, содержащимся в поле A и поле B.

Поле А Поле Б А ТАКЖЕ ИЛИ ЖЕ XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

Операторы символьных строк

Ниже приведен список операторов символьных строк —

S.No. Строка символов Оператор и описание
1

CO (содержит только)

Проверяет, состоит ли A только из символов в B.

2

CN (не содержит ТОЛЬКО)

Проверяет, содержит ли A символы, которых нет в B.

3

CA (содержит ЛЮБОЙ)

Проверяет, содержит ли A хотя бы один символ B.

4

Нет (не содержит)

Проверяет, не содержит ли A какой-либо символ B.

5

CS (содержит строку)

Проверяет, содержит ли A строку символов B.

6

NS (НЕ содержит строку)

Проверяет, не содержит ли A строку символов B.

7

CP (содержит шаблон)

Он проверяет, содержит ли A шаблон в B.

8

NP (НЕ содержит шаблон)

Он проверяет, не содержит ли A шаблон в B.

CO (содержит только)

Проверяет, состоит ли A только из символов в B.

CN (не содержит ТОЛЬКО)

Проверяет, содержит ли A символы, которых нет в B.

CA (содержит ЛЮБОЙ)

Проверяет, содержит ли A хотя бы один символ B.

Нет (не содержит)

Проверяет, не содержит ли A какой-либо символ B.

CS (содержит строку)

Проверяет, содержит ли A строку символов B.

NS (НЕ содержит строку)

Проверяет, не содержит ли A строку символов B.

CP (содержит шаблон)

Он проверяет, содержит ли A шаблон в B.

NP (НЕ содержит шаблон)

Он проверяет, не содержит ли A шаблон в B.

пример

REPORT YS_SEP_08. 
DATA: P(10) TYPE C VALUE 'APPLE',
      Q(10) TYPE C VALUE 'CHAIR'.
      IF P CA Q.
	
      WRITE: / 'P contains at least one character of Q'.
      ENDIF.

Приведенный выше код производит следующий вывод —