BADI EXIT等增强报W警告类消息

有时候需要在增强中做校验,
一般报E类型错误,
E类型会中断进程继续执行,所以直接报E类型message,就会弹出来,而且不继续执行

但是有时候需要报W类型警告

发现直接用W类型message是弹不出来的

但是标准程序是能报W类型警告,dubug标准操作后,得到如下方法;

  LOOP AT li_message_tab INTO lw_msg.
    CALL METHOD cl_message_mm=>create
      EXPORTING
        im_msgid    = 'ZMM00001'          "se91创建
        im_msgty    = 'W'                 "消息类型
        im_msgno    = '000'
        im_msgv1    = lw_msg-msgv1
        im_msgv2    = lw_msg-msgv2
        im_msgv3    = lw_msg-msgv3
        im_msgv4    = lw_msg-msgv4
        im_condense = mmpur_no           "直接用mmpur_no就行,是个系统全局变量,其实就是space
      EXCEPTIONS
        failure     = 01
        dialog      = 02.
    IF  sy-subrc = 1 OR sy-subrc = 2.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDLOOP.


报E类型错误,
1)可以直接使用message **** type ‘E'.
2)cl_message_mm=>create
3)Function :MESSAGE_STORE

另外,我曾用
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
这个函数报W类型错误,虽然确实是能弹出来,但是不知道为啥,在增强李使用此报W类型警告,会弹出来两次,
debug发现这个增强会调用两次,但是使用第一种方法就不会出现弹两次情况,不知道为什么

如果哪位大侠知道原因,请留言,谢谢
http://blog.sina.com.cn/sapliumeng
原文地址:https://www.cnblogs.com/senlinmu110/p/3802121.html