Символ # в переменной не может быть обработан - PullRequest
2 голосов
/ 05 мая 2019

Я получил CSV-файл из моего внешнего интерфейса в виде XString, и после преобразования в String он выглядит следующим образом:

debugger show variable

На следующем шаге я пытаюсь выполнить SPLIT lv_string AT '##' INTO TABLE itab, чтобы я мог получить свои данные, но они ничего не разделяют, itab содержит одну строку, равную lv_string.

Если я попытаюсь REPLACE '#' IN lv_string WITH space, lv_string не изменится и sy-subrc будет равно 4.

С моей точки зрения, у меня есть эта проблема, потому что в этом контексте SAP использует символ # в качестве символа для непечатаемых символов (которые являются результатом байта-> строки преобразования) .

Мой вопрос: как я могу использовать SPLIT / REPLACE с # в этом случае?

Я также подумал, что могу изменить кодовую страницу SAP при преобразовании XString в строку, но я уже использую кодовую страницу SAP 4110 (utf-8) и не знаю лучшей альтернативы ...

1 Ответ

8 голосов
/ 05 мая 2019

Когда вы отображаете переменную с помощью отладчика, она отображает общий символ # (U + 0023) для всех управляющих символов , которым не назначен глиф («непечатные символы», как выскажем).

Если переменная соответствует содержимому текстового файла, и ## часто встречается, есть большая вероятность, что это комбинация управляющих символов U + 000D и U + 000A, которые соответствуютна « символ новой строки » в файлах Windows.

В бэкэнд-отладчике вы можете проверить шестнадцатеричные значения этих символов, нажав кнопку «Шестнадцатеричный» (показано на скриншоте).

Вы можете использовать переменную CL_ABAP_CHAR_UTILITIES=>CR_LF, которая содержит эти два управляющих символа.

...