Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Program Flow Logic →  Expressions and Functions for Conditions →  log_exp - Logical Expressions →  rel_exp - Comparison Expressions →  rel_exp - Comparison Rules →  rel_exp - Comparing Elementary Data Types →  rel_exp - Comparison Type of Elementary Data Objects 

rel_exp - Comparison Type of Numeric Data Objects

The following tables show the comparison types for comparisons between numeric data types and other data types. If the type of an operand is not the same as the comparison type, then it is converted to this type. The comparison rules for the comparison types determine how the comparison is performed.

Other versions: 7.31 | 7.40 | 7.54


Note

If a decimal floating point number is involved in a comparison, the comparison is always made with the type decfloat34.

Comparisons with Numeric Data Types

- decfloat34 decfloat16 f p i s b
decfloat34 decfloat34 decfloat34 decfloat34 decfloat34 decfloat34 decfloat34 decfloat34
decfloat16 decfloat34 decfloat34 decfloat34 decfloat34 decfloat34 decfloat34 decfloat34
f decfloat34 decfloat34 f f f f f
p decfloat34 decfloat34 f p p p p
i decfloat34 decfloat34 f p i i i
s decfloat34 decfloat34 f p i s s
b decfloat34 decfloat34 f p i s b

Value Ranges and Length Adjustments

  • When two operands with data type p are compared, numbers with more than 31 decimal places are edited internally to ensure that there is no overflow.

  • When two operands with data type p but with different lengths are compared, the shorter operand is converted to the length of the longer operand.

  • When two operands with data type p but with different numbers of decimal places are compared, the operand with fewer decimal places is converted to a number with the same number of decimal places as the other operand.

  • When an operand with type p is compared with an operand with type i, s, or b, the comparison type p has 31 decimal places and the number of decimal places of the operand of type p.

Comparisons with Character-Like Data Types

- decfloat34 decfloat16 f p i s b
d,t decfloat34 decfloat34 f p i i i
string, c, n decfloat34 decfloat34 f p i i i

Value Ranges and Length Adjustments

  • When the types string and c are compared with packed numbers of the type p, the comparison type p has 31 decimal places together with the decimal portion of the operand of type p. This can raise exceptions if overflows occur.

  • When the type n is compared with packed numbers of the type p, the numeric text can contain up to 31 places, excluding leading zeroes and regardless of how big the decimal portion of the type p operand is.

  • When the types string, c, and n are compared with whole numbers of the types i, s, and b, the number value in the character-like operand does not need to fit the value range of the comparison type i. If the number value is not in the value range, the comparison produces the correct result and no exception is raised.

Comparisons with Byte-Like Data Types

- decfloat34 decfloat16 f p i, s, b
xstring, x decfloat34 decfloat34 f p i

Length Adjustments

The comparison type p has 31 decimal places and the number of places in the decimal portion in the operand of type p.


Note

When converting byte-like data types to numeric types, note that all bytes are ignored except for the final four.