ABAP Keyword Documentation →  ABAP − Reference →  Processing Internal Data →  Numeric Calculations → 

arith_exp - Arithmetic Expressions  Syntax Diagram

Short Reference

Syntax

... [+|-] operand1
    [{+|-|*|/|DIV|MOD|**} [+|-] operand2
    [{+|-|*|/|DIV|MOD|**} [+|-] operand3
    ... ]] ... .


Effect

An arithmetic expression expresses a calculation. The result of an arithmetic expression is a numeric value of the calculation type assigned to the arithmetic expression. In an arithmetic expression arith_exp, the arithmetic operators +, -, *, /, DIV, MOD, or ** can be used to join an operand operand1 with one or more operands operand2, operand3 ... Brackets are also possible. Arithmetic expressions can occur in the reader positions of certain statements, in particular on the right side of an assignment with the assignment operator =. When used as the operand of the lossless operator EXACT, an arithmetic expression can be checked for a lossless calculation.

The operand positions operand are general expression positions, which means that numeric data objects, predefined functions, functional methods, or compound arithmetic expressions can be specified. The arithmetic operators +, -, *, /, DIV, MOD, and ** join two adjacent operands. When the expression is evaluated, a numeric value is calculated and joined with the next adjacent operand. The priority of this join depends on the operators used.

Each operand can be preceded by the signs + or -, in any order and separated by one or more blanks. The effect of using a sign is the same as specifying the expression +1 * or -1 *, which means that a sign has the same priority as a multiplication.

If functional methods or character-like expressions are specified as operands, they are listed from left to right and from inside to outside before the remainder of the expression is evaluated. The return values are buffered to be used in the corresponding operand positions. Here, character-like processing functions and string expressions are only possible as arguments of description functions.

Notes

Example

The following program excerpt computes the hyperbolic sine with the Eulerian formula in calculation type decfloat34 and with the predefined function sinh in calculation type f and displays the difference.

TYPES:
  BEGIN OF line,
    x TYPE string,
    y TYPE string,
  END OF line.
DATA
  output TYPE TABLE OF line WITH EMPTY KEY.

DO 2001 TIMES.
  TRY.
      DATA(x) = sy-index - 1001.
      DATA(result1) = CONV decfloat16(
                             ( exp( x ) - exp( -1 * x ) ) / 2 ).
      DATA(result2) = CONV f( sinh( x ) ).
      DATA(diff)    =  abs( result1 - result2 ).
      IF diff <> 0.
        APPEND VALUE #( x = |{ x }|
                        y = |{ diff STYLE = SCIENTIFIC }| ) TO output.
      ENDIF.
    CATCH cx_sy_conversion_overflow cx_sy_arithmetic_overflow.
  ENDTRY.
ENDDO.
cl_demo_output=>display( output ).

Exceptions

Catchable Exceptions

CX_SY_ARG_OUT_OF_DOMAIN

CX_SY_ARITHMETIC_OVERFLOW

CX_SY_CONVERSION_NO_NUMBER

CX_SY_CONVERSION_OVERFLOW

CX_SY_PRECISION_LOSS

CX_SY_UNSUPPORTED_FUNCTION

CX_SY_ZERODIVIDE

Non-Catchable Exceptions




Continue
arith_exp - Arithmetic Operators
arith_exp - ( )
arith_exp - Calculation Type
arith_exp - Lossless Calculations