Нужно ли конвертировать значение? - PullRequest
3 голосов
/ 25 сентября 2019

Когда я выбирал единицу из таблицы базы данных, через транзакцию SE16N я заметил, что для одного и того же поля есть два разных значения.Не преобразованное и преобразованное значение.С моим SELECT заявлением я получаю необращенное.Нужно ли конвертировать это значение, чтобы продолжить работу с ним?

Converted and unconverted values via SE16N

Ответы [ 2 ]

4 голосов
/ 25 сентября 2019

Прежде всего, вероятно, стоит объяснить, что такое понятия «преобразованное значение» и «не преобразованное значение» (что более известно как «внешнее значение» и «внутреннее значение»).

Внутренние значенияявляются фактическими значениями, используемыми программами и хранящимися в базе данных, а внешние значения рассчитываются только во время отображения, на экране, распечатке и т. д.

Очень практично видеть значимыеКод, как объяснил Legxis, для внутреннего значения единицы измерения "ST" (единица измерения, которая указывает, что число представляет собой количество штук, английский пользователь предпочел бы видеть PCS (английское слово ""», в то время как немецкий пользователь предпочитает видеть ST (немецкое слово "Stücks").

Алгоритм преобразования определяется на уровне домена DDIC (код транзакции SE11) через " поле преобразования", 5-символьный код, который определяет функциональные модули преобразования, которые вызываются автоматически во время отображения. Напримерce, Единица измерения относится к области MEINS, которая имеет подпрограмму CUNIT, которая соответствует функциональным модулям CONVERSION_EXIT_CUNIT_INPUT и CONVERSION_EXIT_CUNIT_OUTPUT.

  • CONVERSION_EXIT_CUNIT_INPUT выполняетпреобразование из внешнего значения (отображается) во внутреннее значение (программа и база данных)
  • CONVERSION_EXIT_CUNIT_OUTPUT выполняет преобразование из внутреннего значения (программа и база данных) во внешнее значение (отображается)

Эти функциональные модули автоматически вызываются в технологиях рендеринга SAP, таких как SAP GUI, SAPscript, Smart Form, SAP Adobe form, BSP, Web Dynpro и т. Д. Функциональный модуль «OUTPUT» также вызывается при вызове оператора ABAP WRITE.

Обратите внимание, что «выходная длина», определенная для домена DDIC, может иметь некоторое значение, поскольку можно определить выходную длину (отображаемую), превышающую внутреннюю длину.Например, код языка хранится внутри одного символа, но отображается на двух символах.Например, на английском языке код языка «V» (Швеция) отображается «SW» (Швеция), а код языка «S» (Испания) - «SP» (Испания).

НаконецЕсли вы хорошо понимаете концепцию, вы должны сделать вывод, что вам обычно не нужно ничего преобразовывать самостоятельно.Это может быть полезно, только если вы хотите определить интерфейс, который не является одной из технологий, поддерживаемых SAP, упомянутых выше.

1 голос
/ 25 сентября 2019

Строки таблицы, которые вы SELECT в ABAP, содержат только неконвертированные значения.Используйте их, например, JOIN для других таблиц или для вызова методов / функциональных модулей.Преобразование имеет значение только при отображении данных.

Кстати: тем не менее, эти преобразования с "добрыми намерениями" могут вызвать проблемы.Например, значения с типом NUMC (числовые символы) часто обрезаются / удаляются во время преобразования, когда имеют начальные нули.Но некоторые функциональные модули не работают, если отсутствуют эти ведущие нули.

...