In SAP ABAP, you can compare strings using different methods depending on the requirement. Here are the common ways:
1. Using IF
for Simple Equality Comparison
DATA: lv_str1 TYPE string VALUE 'ABAP', lv_str2 TYPE string VALUE 'ABAP'.
IF lv_str1 = lv_str2. WRITE: 'Strings are equal'.ELSE. WRITE: 'Strings are not equal'.ENDIF.
- This checks if both strings are exactly the same (case-sensitive).
2. Using IF NOT
for Inequality
IF lv_str1 <> lv_str2. WRITE: 'Strings are different'.ENDIF.
- Checks if two strings are not equal.
3. Case-Insensitive Comparison (TO UPPER CASE
)
DATA: lv_str1 TYPE string VALUE 'ABAP', lv_str2 TYPE string VALUE 'abap'.
IF to_upper( lv_str1 ) = to_upper( lv_str2 ). WRITE: 'Strings are equal (case-insensitive)'.ELSE. WRITE: 'Strings are different'.ENDIF.
- Converts both strings to uppercase before comparing.
4. Checking If One String is Greater/Lesser (GT
, LT
)
DATA: lv_str1 TYPE string VALUE 'ABAP', lv_str2 TYPE string VALUE 'ABAC'.
IF lv_str1 GT lv_str2. WRITE: 'lv_str1 is greater'.ELSEIF lv_str1 LT lv_str2. WRITE: 'lv_str1 is smaller'.ELSE. WRITE: 'Strings are equal'.ENDIF.
- Strings are compared lexicographically (dictionary order).
5. Using COMPARE
Statement
DATA: lv_str1 TYPE string VALUE 'Hello', lv_str2 TYPE string VALUE 'hello', lv_result TYPE i.
COMPARE lv_str1 TO lv_str2.lv_result = sy-subrc.
IF lv_result = 0. WRITE: 'Strings are equal'.ELSE. WRITE: 'Strings are different'.ENDIF.
sy-subrc = 0
→ Strings are equal.sy-subrc ≠ 0
→ Strings are different.
6. Using MATCHES
for Pattern Matching (ABAP 7.40+)
DATA: lv_str TYPE string VALUE 'Hello ABAP'.
IF lv_str MATCHES 'Hello.*'. WRITE: 'String starts with Hello'.ELSE. WRITE: 'No match'.ENDIF.
- Useful for regular expression comparisons.
Best Practices
- Use
=
for basic equality checks. - Use
to_upper( )
for case-insensitive comparisons. - Use
MATCHES
for pattern-based comparisons (ABAP 7.40+). - Use
GT
/LT
for lexical ordering.