In SAP ABAP, integer division follows specific rules because ABAP does not support direct integer division where the result remains an integer. Instead, division in ABAP always produces a decimal result unless explicitly converted.
1. Normal Division (Decimal Result)
When dividing two integers, ABAP returns a decimal value.
DATA: lv_num1 TYPE I VALUE 10, lv_num2 TYPE I VALUE 3, lv_result TYPE F. "Floating-point type
lv_result = lv_num1 / lv_num2.WRITE: lv_result. "Output: 3.3333333
2. Integer Division (Truncate Decimal Part)
To perform integer division and discard the decimal part, use DIV
keyword:
DATA: lv_num1 TYPE I VALUE 10, lv_num2 TYPE I VALUE 3, lv_result TYPE I.
lv_result = lv_num1 DIV lv_num2.WRITE: lv_result. "Output: 3
3. Modulo (Remainder Calculation)
If you need the remainder, use MOD
:
DATA: lv_remainder TYPE I.
lv_remainder = lv_num1 MOD lv_num2.WRITE: lv_remainder. "Output: 1
4. Using Float for Precise Division
If you want a precise result, use F
(Floating-point) or P
(Packed decimal) types:
DATA: lv_result TYPE P DECIMALS 2.
lv_result = lv_num1 / lv_num2.WRITE: lv_result. "Output: 3.33