Возникла необходимость разделять строку на отдельные слова. На первый взгляд решение показалось банальным
1 2 3 4 5 |
DATA: lt_item TYPE TABLE OF char200, lv_string TYPE string. lv_string = 'Во глубине сибирских руд'. SPLIT lv_string AT space INTO TABLE lt_item. |
Однако в какой-то момент столкнулся с проблемой — пользователь в строку каким-то образом ввел какой-то пробел, который не определялся как значение переменной space. Таким образом при попытке деления на отдельные слова в строку таблицы попадали два слова с пробелом между ними.
В процессе отладки выяснилось, что знак, который выглядит как пробел имеет 16-ричное значение ‘A000’, в то время как обычный пробел имеет значение ‘2000’.
Потом уже подсказали, что имеется несколько разновидностей пробелов, которые описаны в статье по ссылке https://habr.com/ru/post/23250/
Решением данной проблемы было заменой такого неразрывного пробела на обычный в начальной строке перед оператором SPLIT:
1 2 3 |
DATA: lv_c_a0 TYPE c. lv_c_a0 = cl_abap_conv_in_ce=>uccp( '00A0' ). REPLACE ALL OCCURRENCES OF lv_c_a0 IN lv_string WITH space. |