Here sample code which splits ABAP string to internal table.
It retains whole words and doesn’t break them between lines.
This important if your string contains condition, which should be used in dynamic WHERE statement.
CONSTANTS:
co_max TYPE i VALUE 15.
DATA:
lv_string TYPE string,
lv_sum TYPE i,
lv_txt1(co_max) TYPE c,
lt_txt1 LIKE TABLE OF lv_txt1,
lv_len1 TYPE i,
lv_txt2(co_max) TYPE c,
lt_txt2 LIKE TABLE OF lv_txt2,
lv_len2 TYPE i.
lv_string = 'WHERE BNAME = ''SAP*'' AND NRPRO = ''001'''.
SPLIT lv_string AT ' ' INTO TABLE lt_txt1.
LOOP AT lt_txt1 INTO lv_txt1.
lv_len1 = strlen( lv_txt1 ).
ASSERT lv_len1 <= co_max.
lv_len2 = strlen( lv_txt2 ).
lv_sum = lv_len1 + lv_len2 + 1.
IF lv_sum <= co_max.
CONCATENATE lv_txt2 lv_txt1 INTO lv_txt2 SEPARATED BY ' '.
CONDENSE lv_txt2.
ELSE.
APPEND lv_txt2 TO lt_txt2.
lv_txt2 = lv_txt1.
ENDIF.
ENDLOOP.
APPEND lv_txt2 TO lt_txt2.
LOOP AT lt_txt2 INTO lv_txt2.
WRITE: / lv_txt2.
ENDLOOP.
* Output:
*
* WHERE BNAME =
* 'SAP*' AND
* NRPRO = '001'
See other related notes on my website: