Установить язык для заявления MESSAGE - PullRequest
0 голосов
/ 08 ноября 2018

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

MESSAGE i001(ztest) INTO DATA(e_error).

Сообщение переведено на несколько языков. В зависимости от языка пользователя в другой системе, мне нужно перевести сообщение. Но независимо от того, что изменилось в sy-lom или с помощью инструкции SET (LOCALE) LANGUAGE, сообщение все равно возвращается на немецком языке, что является исходной настройкой для пользователей системы (как указано в документации по ключевым словам 'Если текстовая среда установлена ​​с помощью инструкции SET LOCALE , это игнорируется языком, на котором отображается сообщение. '

До этого изменения мы использовали текстовые элементы, с которыми он работал.
Можно ли изменить язык, используемый оператором MESSAGE во время выполнения?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Второй возможный обходной путь:

  • заставить ваш функциональный модуль с поддержкой RFC (RFM 1) вернуть идентификатор сообщения + номер сообщения + 4 необязательные переменные
  • после вызова RFM 1 вызывающая программа вызывает функциональный модуль с поддержкой RFC BAPI_MESSAGE_GETDETAIL, чтобы получить текст на нужном языке (параметр LANGUAGE или LANGUAGE_ISO).
0 голосов
/ 08 ноября 2018

В качестве обходного пути вместо использования MESSAGE можно просто выбрать текст сообщения с нужным вам языком (английский в моем примере):

SELECT SINGLE text
       INTO @DATA(e_error)
       FROM t100
       WHERE sprsl EQ 'E'
         AND arbgb EQ 'ZTEST'
         AND msgnr EQ '001'.

Очевидно, что если в сообщении есть местозаполнитель (и), у вас есть еще много работы.

...