Почему языковая клавиша отображается как 1 символ вместо 2?

#abap

Вопрос:

Я пытался научиться использовать шаблоны строк и сталкивался с отображением символов.

То, что я пытался показать, это:

Языковой ключ входа в систему SAP RU

используя эту строку кода:

 WRITE: |{ text-003 } { sy-langu }|.  

Но вместо этого он отображает только:

Языковой ключ входа в систему SAP E

он отображает только первый символ языка вместо полных 2 букв, которые являются EN

Ответ №1:

Коды языков SAP отображаются в виде двух букв, но внутренне сохраняются только как одна. Существуют различные типы данных, в которых внутреннее и внешнее представление различаются. Это называется процедурой преобразования и определяется на уровне домена в словаре ABAP.

Если вы хотите преобразовать во внешнее представление языкового поля, используйте функциональный модуль CONVERSION_EXIT_ISOLA_OUTPUT . Если вы хотите сделать обратное — преобразовать представление пользовательского интерфейса в представление базы данных — используйте CONVERSION_EXIT_ISOLA_INPUT .

Комментарии:

1. не знаю, как это использовать, но попробую. Спасибо

Ответ №2:

Чтобы завершить ответ Филиппа, вы также можете использовать WRITE преобразование из базы данных во внешнее представление, оно автоматически выполнит поиск нужной процедуры преобразования ( ISOLA когда речь идет о SY-LANGU ):

 DATA display_language_code TYPE c LENGTH 2. WRITE sy-langu TO display_language_code. ASSERT display_language_code = 'EN'.