###### Summary -

In this topic, we described about the below sections -

Operators are symbols that used to describe the compiler to perform operations on variables and values. ABAP supports various operators to process data by using variables or values.

### Operator Types -

All ABAP operators are classified into below categories. Those are -

Operators that perform special operations for operands.

Operators | Description | Symbols |
---|---|---|

Declaration operators | The declaration operators declare variables or field symbols for operands. | DATA and FIELD-SYMBOL |

Constructor operators | The constructor operators construct values for data objects of specific data types in constructor expressions. | NEW, VALUE, CONV, CORRESPONDING, CAST, REF, EXACT, REDUCE, FILTER, COND, and SWITCH |

Operators that join multiple operands in a single expression.

Operators | Description | Symbols |
---|---|---|

Assignment operators | The assignment operator = assigns the source field value to the target field. For assignments, the casting operator ?= does a down cast. The operator = also connects actual parameters with formal parameters. |
?=, = |

Arithmetic operators | The arithmetic operators perform arithmetic operations on two or more numeric operands. The characters + and β also behave as signs in arithmetic expressions. |
+, -, *, /, DIV, MOD, and ** |

Bit operators | The bit operators perform bit operations on two or more byte-like operands. The bit operator BIT-NOT negates a byte-like operand. |
BIT-AND, BIT-OR, BIT-NOT and BIT-XOR |

String operators | The string operator put together two character-like operands and forms a string expression. | && |

Relational operators | Relational operators used to compare two or more operands of any data type.
Relational operators and join two or more operands of any data type to form a relational expression or comparison expression. There are additional relational operators for specific data types. The predicate operator βISβ qualifying an operand. |
=, <>, <, >, <=,>=, IS, BETWEEN |

Boolean operators | Boolean operators used to join or combine two or more logical expressions. The result of a logical expression is either true or false. The Boolean operator NOT negates the result of a logical expression. The Boolean operators join the results of individual logical expressions with a logical expression. |
AND, OR, NOT and EQUIV |

Operator that joins two operands in compilations.

Operators | Description | Symbols |
---|---|---|

Literal operator | The literal operator joins two literals or two strings with a literal or a string. | & |

#### Example -

Below example shows how the some of the operations coded in the program.

#### Code -

```
*&---------------------------------------------------------------------*
*& Report Z_OPERATORS
*&---------------------------------------------------------------------*
*& Written by TutorialsCampus
*&---------------------------------------------------------------------*
REPORT Z_OPERATORS.
* Declaring variables
DATA: W_NUM1 TYPE I VALUE 10,
W_NUM2 TYPE I VALUE 3,
W_ADD TYPE I,
W_OB1 TYPE X VALUE 'B2',
W_NOT TYPE X,
W_R TYPE STRING,
W_OP1 TYPE I VALUE 40,
W_OP2 TYPE I VALUE 60,
W_OP3 TYPE I VALUE 80.
* Adding two variables (Arithmetic Operation)
W_ADD = W_NUM1 + W_NUM2.
WRITE: 'Result of W_NUM1 + W_NUM2: ', W_ADD.
* Applying BIT-NOT on W_OB1 and produces the result W_NOT.
* (Bitwise Operation)
W_NOT = BIT-NOT W_OB1.
WRITE: /'Result of BIT-NOT on W_OB1: ',W_NOT.
* Concatenation (&) of srings enclosed in two "|" (String Operation)
W_R = | HELLO | & | WORLD..! |.
WRITE : /'Output-1: ',W_R.
* Verifying W_OP1 less than W_OP2 (Relational Operation)
IF W_OP1 LT W_OP2.
WRITE /'W_OP1 LESS THAN W_OP2'.
ENDIF.
* Logical AND expression (Boolean Operation)
IF ( W_OP1 LT W_OP2 ) AND ( W_OP2 LT W_OP3 ).
WRITE /'Both logical expressions are true'.
ELSE.
WRITE /'Both logical expressions are not true'.
ENDIF.
```

#### Output -

#### Explaining Example -

In the above example, each and every statement is preceeded with a comment to explain about the statement. Go through them to get clear understanding of example code.

**W_ADD = W_NUM1 + W_NUM2**, adds W_NUM1, W_NUM2 values and stores result in W_ADD.

**W_NOT = BIT-NOT W_OP1**, applies BIT-NOT on W_OP1 and produces the result W_NOT.

**W_R = | HELLO | & | WORLD..! |**, concatenation (&) of srings enclosed in two "|" and retains all spaces after concatenation.

**IF W_OP1 LT W_OP2**, verifying W_OP1 is LESS THAN (LT) W_OP2. If yes, display 'W_OP1 LESS THAN W_OP2'.

**IF ( W_OP1 LT W_OP2 ) AND ( W_OP2 LT W_OP3 )**, verifies ( W_OP1 LT W_OP2 ) and ( W_OP2 LT W_OP3 ) are true or not. If true, displays 'Both logical expressions are true'. otherwise, 'Both logical expressions are not true' gets displayed.