在INITIALIZATION上显示信息消息

时间:2016-05-18 06:36:56

标签: abap

我希望用户注意到他当前使用的报告已被弃用并被另一个报告替换。因此,我需要在程序启动时有一个类似信息消息的弹出窗口。

但是当我尝试像这样运行我的代码时:

INITIALIZATION.
    MESSAGE i355(zz).

该消息仅显示在状态栏中。

这种方法在用户方面看起来不错:

INITIALIZATION.
    DATA: w_mes TYPE string.
    MESSAGE i355(zz) INTO w_mes.
    CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
      EXPORTING
        textline1 = w_mes.

但事实上它非常混乱。

在程序启动时是否有更顺畅的方式显示信息消息?

3 个答案:

答案 0 :(得分:3)

根据behavior matrix of the MESSAGE statement in Dialog Processing,这是不可能的。您可能希望将语句移动到其他部分,例如: G。 START-OF-SELECTION

答案 1 :(得分:1)

您可以将DISPLAY LIKE用于最初类型为E的邮件,以实现您想要的效果,但用户将无法执行此弃用版本。

 INITIALIZATION.
   MESSAGE e184(sabapdocu) WITH 'Sorry, Batory!' DISPLAY LIKE 'I'.

此类消息将显示为弹出窗口。

答案 2 :(得分:0)

可以想象,这不允许保留使用SUBMIT从所有上下文调用报表程序的能力(即批处理,rfc,更新)以及允许外部子例程调用(PERFORM ABC IN PROGRAM XYZ) 。

在需要此类事情的情况下,最好配置一个事务代码(使用SE93)以某种方式调用程序,以便显示消息。

以下是使用本地课程的简单示例:

CLASS lcl_selcr_mess DEFINITION.
PUBLIC SECTION.
METHODS
  start.                                                "#EC CALLED
ENDCLASS.  

CLASS lcl_selcr_mess IMPLEMENTATION.
  METHOD start.
    MESSAGE i001(00) WITH 'Deprecated...' DISPLAY LIKE 'I'.
    CALL SELECTION-SCREEN 1000.
  ENDMETHOD.
ENDCLASS.                 

Method of a class(OO Transaction)

如果你觉得这种方法是突兀的,我怀疑这也可以通过创建一个"虚拟"屏幕仅显示消息,然后将流程传递到选择屏幕。创建一个对话框事务来调用虚拟屏幕。