Abap 设置消息语句的语言

Abap 设置消息语句的语言,abap,Abap,我通过RFC(其登录语言设置为“DE”)与set系统用户以批处理模式访问我的编码。在发生错误的情况下,我使用一条消息语句,以便其他系统上的应用程序可以处理此错误 MESSAGE i001(ztest) INTO DATA(e_error). 这封信被翻译成几种语言。根据其他系统上用户的语言,我需要翻译消息。但无论更改sy langu或使用SET(LOCALE)语言语句,消息仍然以德语返回,系统用户原始设置(如关键字文档中所述“如果文本环境是使用语句SET LOCALE设置的,则消息显示语言将忽

我通过RFC(其登录语言设置为“DE”)与set系统用户以批处理模式访问我的编码。在发生错误的情况下,我使用一条消息语句,以便其他系统上的应用程序可以处理此错误

MESSAGE i001(ztest) INTO DATA(e_error).
这封信被翻译成几种语言。根据其他系统上用户的语言,我需要翻译消息。但无论更改sy langu或使用SET(LOCALE)语言语句,消息仍然以德语返回,系统用户原始设置(如关键字文档中所述“如果文本环境是使用语句SET LOCALE设置的,则消息显示语言将忽略此设置)。

在进行此更改之前,我们使用了文本元素,而文本元素是有效的。

是否可以在运行时更改消息语句使用的语言?

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


显然,如果消息有占位符,您还有一些工作要做。

解决方法可以是,不使用
消息
,只选择消息的文本和您需要的语言(在我的示例中为英语):


显然,如果消息中有占位符,您还有一些工作要做。

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

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

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

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

      不久前,我遇到过类似的情况,您是否能够通过SU01、登录语言或地址语言设置批处理用户语言?这会影响您的邮件语言,但我也没有感到满意。我的问题是,我与另一个系统上的用户绑定。我认为我无法(或者更确切地说是被允许)设置批处理用户语言为我的模块的每次调用更改用户本身的语言。是的,我都不被允许更改它。最终,你必须翻译消息并将其传输到其他系统。你说你想让调用计算机对此消息做出反应?你不应该发送错误代码吗(例如,信息类别和编号)而不是翻译的自由文本?我收到的消息是在另一个系统上向用户显示的错误消息。我不久前也遇到过类似的情况,您是否能够通过SU01、登录语言或地址语言设置批处理用户语言?这会影响您的消息语言,但我也不满意。我的问题是,我是bound给另一个系统上的用户。我认为我不能(或者更确切地说是被允许)为我的模块的每次调用更改用户本身的语言。是的,我都不被允许更改它。最终,你必须翻译消息并将其传输到其他系统。你说你想让调用计算机对此消息做出反应?你不应该发送错误代码吗(例如,消息类别和编号)而不是翻译的自由文本?我收到的消息是在另一个系统上向用户显示的错误消息。有一个功能模块
      格式化消息
      ,它既可以返回任何语言的文本,也可以替换占位符;这是在非常旧的版本(<3.0)中使用的模块当语句
      消息
      无法替换占位符时。有一个功能模块
      格式化消息
      ,它既可以返回任何语言的文本,也可以替换占位符;这是非常旧的版本(<3.0)中使用的模块语句
      消息
      无法替换占位符时。
      SELECT SINGLE text
             INTO @DATA(e_error)
             FROM t100
             WHERE sprsl EQ 'E'
               AND arbgb EQ 'ZTEST'
               AND msgnr EQ '001'.