ABAP message 关键字的作用是要么显示在当前用户的登录语言中,从数据库表 T100的msg字段中指定的短消息文本,要么显示作为消息的任何文本。
以下是可用的变体:
- 如果没有指定RAISING或INTO中的任何一个,语句MESSAGE将中断程序流并发送消息。该语句MESSAGE的基本形式的确切行为(即文本如何显示以及在MESSAGE语句之后程序流如何继续)取决于在msg或text中指定的消息类型,并且与上下文相关。
- 语句MESSAGE使用RAISING补充在函数模块或方法中触发非基于类的异常。如果未处理该异常,消息将以与未指定RAISING 补充时相同的方式发送。
- 如果指定了INTO补充,程序流不会被中断,而是将消息的短文本分配给一个字段。
MESSAGE 关键字执行后对应系统变量的值:
sy-msgid:在发送消息后,包含消息类别,并在发送任何文本后包含值"00"。
sy-msgno:在发送消息后,包含消息编号,并在发送任何文本后包含值"001"。
sy-msgty:包含发送消息或文本时使用的消息类型的标识符。
sy-msgv1到sy-msgv4:在发送消息后,按顺序包含在WITH补充后指定的数据对象的内容。在发送任何文本后,包含数据对象文本的前200个字符。
未使用 RAISING 或 INTO中的任何一个补充发送的消息是与用户进行交互的一种方式。除了类型为"X"的消息外,语句MESSAGE 应该仅在表示逻辑层中使用,而不应在应用逻辑层中使用。
如果使用SET LOCALE语句设置了文本环境,则显示消息的语言将忽略此设置。
当使用 DISPLAY LIKE dtype
变式时,当使用此补充时,将显示dtype中指定的消息类型的图标,而不是关联的图标。dtype预期是一个类似字符的数据对象,其中包含大写字母"A"、“E”、“I”、"S"或"W"中的一个值。
对于默认显示在对话框中的消息,短文本仍然会作为对话框显示。如果dtype包含"A"或"I",则类型为"E"或"W"的消息(除了PBO和LOAD-OF-PROGRAM的消息)将显示为对话窗口。类型为"S"的消息始终显示在状态栏中,与dtype无关。对于PBO和LOAD-OF-PROGRAM的类型为"I"的消息也是如此。类型为"X"的消息总是会引发运行时错误。