首页 > 解决方案 > 在 ABAP 中的消息语句中显示变量

问题描述

如何在不使用消息类的情况下在消息语句中显示变量?

IF acct_bal < min_bal.
    MESSAGE 'customer balance less than minimum. Balance-->', acct_bal TYPE 'E'.
ENDIF.

我的程序有语法错误,因为系统不允许acct_bal进入消息语句。我不想使用带有占位符的消息类来执行此操作:

Program z_test.
DATA: acct_bal TYPE 'I' value 10,
min_bal TYPE 'I' value 100.
IF acct_bal < min_bal.
    MESSAGE 'customer balance less than minimum. Balance-->', acct_bal type 'E'.
ENDIF.

标签: abap

解决方案


有很多可能性。这里是其中的一些。

您可以使用字符串模板来实现您想要的:

MESSAGE |customer balance less than minimum. Balance-->{ acct_bal }| TYPE 'E'.

或者,如果您希望您的信息可以通过文本符号进行翻译:

MESSAGE |{ replace( val = 'customer balance less than minimum. Balance-->&1'(001)
                    sub = '&1' with = acct_bal ) }| TYPE 'E'.

或者,如果您希望您的消息可以通过消息类进行翻译,请通过事务代码创建一个消息 ID SE91,其中包含文本customer balance less than minimum. Balance-->&1,例如001消息类中的 ID ZMSGCLASS

MESSAGE e001(zmsgclass) TYPE 'E' WITH acct_bal.

等等。

ABAP 文档 - MESSAGE中的更多信息。


推荐阅读