SAP ABAP: Difference Between STRING and XSTRING

STRING and XSTRING are different data types in SAP ABAP, each serving a specific purpose. Let’s compare them in detail.


1. What is STRING?

Example: Working with STRING

DATA: lv_text TYPE string VALUE 'Hello ABAP!'.
WRITE: lv_text. " Output: Hello ABAP!

βœ… Best for: Storing and manipulating readable text.


2. What is XSTRING?

Example: Working with XSTRING

DATA: lv_binary_data TYPE xstring.
lv_binary_data = 'A1B2C3'X. " Hexadecimal format
WRITE: lv_binary_data. " Output: (Binary representation)

βœ… Best for: Handling non-textual or compressed data.


3. Key Differences Between STRING and XSTRING

FeatureSTRING (Text)XSTRING (Binary)
Data TypeCharacter-based (Unicode)Binary (Hexadecimal)
PurposeStoring readable textStoring raw binary data
StorageDynamically allocatedDynamically allocated
EncodingUTF-16 (Unicode)Hexadecimal
Use CaseNames, descriptions, text processingFiles, images, encryption, compressed data
ProcessingText manipulation functions (CONCATENATE, SPLIT, REPLACE)Requires conversion (SCMS_BINARY_TO_STRING, SCMS_STRING_TO_BINARY)

4. Converting Between STRING and XSTRING

πŸ”Ή Converting STRING to XSTRING (Text to Binary)

Use the SCMS_STRING_TO_XSTRING function module.

DATA: lv_string TYPE string VALUE 'Hello ABAP!',
lv_xstring TYPE xstring.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
text = lv_string
IMPORTING
buffer = lv_xstring.
WRITE: lv_xstring. " Output: Binary representation

πŸ”Ή Converting XSTRING to STRING (Binary to Text)

Use the SCMS_XSTRING_TO_STRING function module.

DATA: lv_xstring TYPE xstring,
lv_string TYPE string.
lv_xstring = '48656C6C6F2041424150'X. " Hex for 'Hello ABAP'
CALL FUNCTION 'SCMS_XSTRING_TO_STRING'
EXPORTING
buffer = lv_xstring
IMPORTING
text = lv_string.
WRITE: lv_string. " Output: Hello ABAP!

5. When to Use STRING vs. XSTRING

ScenarioUse STRINGUse XSTRING
Storing user inputβœ…βŒ
Handling XML or JSONβœ…βŒ
Working with binary files (PDF, Images)βŒβœ…
Encrypting passwordsβŒβœ…
Storing SAP long textsβœ…βŒ
Sending HTTP/REST API responsesβœ…βœ… (for binary responses)

Conclusion