设置MESSAGE语句的语言

时间:2018-11-08 14:47:03

标签: sap abap

我通过RFC将一组系统用户以批处理方式访问我的编码,该用户的登录语言设置为“ DE”。如果发生错误,我将使用一条消息语句,以便其他系统上的应用程序可以处理此错误。

MESSAGE i001(ztest) INTO DATA(e_error).

该消息已翻译成多种语言。根据其他系统上用户的语言,我需要翻译消息。但是无论更改sy-langu还是使用SET(LOCALE)LANGUAGE语句,该消息仍将以德语返回,即系统用户的原始设置(如关键字文档中所述:“如果使用语句SET LOCALE设置了文本环境, ,该信息会被显示的语言所忽略。'

在进行此更改之前,我们使用了与之兼容的文本元素。
可以在运行时更改MESSAGE语句使用的语言吗?

2 个答案:

答案 0 :(得分:3)

第二种可能的解决方法是:

  • 使启用了RFC的功能模块(RFM 1)返回消息ID +消息编号+ 4个可选变量
  • 调用RFM 1之后,调用程序将调用启用RFC的功能模块BAPI_MESSAGE_GETDETAIL,以获取所需语言(参数LANGUAGE或LANGUAGE_ISO)的文本。

答案 1 :(得分:1)

一种解决方法是,不使用MESSAGE,而只是选择具有所需语言(在我的示例中为英语)的消息文本:

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

很明显,如果邮件中有占位符,则您还有更多工作要做。