Работа с кодировками

SAP предоставляет разработчикам возможность преобразовывать наборы символов из одной кодовой страницы в другую, из внутреннего представления SAP системы в необходимую кодировку. Кодовая страница представлена четырехзначным номером.  Для того чтобы получить описание по номеру кодовой страницы можно воспользоваться ФМ: SCP_CODEPAGE_BY_EXTERNAL_NAME или посмотреть содержимое таблицы TCP00A.  Для того чтобы получить кодовую страницу используемую на сервере приложений в настоящий момент, можно воспользоваться статическим методом GET_APPSERVER_CODEPAGE из класса CL_ABAP_CONV_UC_NUMBER.

Примеры кодовых страниц:

Кодовая страница Текстовое описание
124 IBM EBCDIC 00697/00297
1100 iso-8859-1
1105 US-ASCII (7 bits)
1160 windows-1252
4102 utf-16be
4103 utf-16le
4110 utf-8
8000 Shift-JIS
8300 BIG5

Проблемы, связанные с перекодированием:

  • Конвертация не всегда возможна, т.к. символы из исходной кодировки могут не существовать в той, в которую преобразуем.
  • Последовательность байтов в исходной кодировке не опознана. Проблема может быть связана с некорректным определением номера исходной кодировки.

Для преобразования в ABAP создан набор классов CL_ABAP_CONV* :

  • CL_ABAP_CONV_OBJ – универсальный класс для перекодирования
  • CL_ABAP_CONV_IN_CE – преобразование набора символов во внутреннее представление системы
  • CL_ABAP_CONV_OUT_CE – преобразование из внутреннего представления системы в указанную кодировку
  • CL_ABAP_CONV_X2X_CE – преобразование набора символов из одной кодировки в другую
  • CL_ABAP_CONV_UC_NUMBER – преобразование набора символов в формат UNICODE в байтовом представлении.

Ссылка на SAP Wiki по теме.