You are on page 1of 2

Handling Multi-byte characters

When working on Asian projects, many times we face problem with multi-byte characters.

There are numerous situations where we need to Identify whether multi-byte characters are used or
not, number of bytes required for the display of one character, how many multi-byte characters are
used so that and so on.

Here are some useful tips for the same.

1. To Identify whether multi-byte characters are used or not.

Way 1:

DESCRIBE FIELD TEXT: LENGTH BYTELEN IN BYTE MODE,
                     LENGTH CHARLEN IN CHARACTER MODE.
IF BYTELEN <> CHARLEN.
*----- MULTI-BYTE CHARACTERS ARE USED.
ENDIF.

Way 2:

*----- Method DYNAMIC_OUTPUT_LENGTH calculate the actual Output Length
CALL METHOD CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
  EXPORTING
    FIELD = TEXT
  RECEIVING
    LEN   = BYTELEN.

CHARLEN = STRLEN( TEXT ).

IF BYTELEN <> CHARLEN.
*----- MULTI-BYTE CHARACTERS ARE USED.
ENDIF.

2. Calculation of bytes required for the display of one character

*----- like 2 for double byte characters

DESCRIBE FIELD TEXT: LENGTH BYTELEN IN BYTE MODE,
                     LENGTH CHARLEN IN CHARACTER MODE.

NUMBER_OF_BYTES = BYTELEN / CHARLEN.
3. Number of multi-byte characters used in given text

For this, let us consider example of Japanese Single and double byte characters.

TEXT = 'チェックスミトモテスト'.

CALL METHOD CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
  EXPORTING
    FIELD = TEXT
  RECEIVING
    LEN   = BYTELEN. " BYTELEN = 14

CHARLEN = STRLEN( TEXT ). " CHARLEN = 11

NUMBER_OF_DOUBLEBYTE_CHARACTERS = BYTELEN - CHARLEN = 3.

You might also like