FB_MESSAGES_DISPLAY_POPUP

DATA:  
  GT_SMESG     TYPE TSMESG,
  GT_SMESG_ALL TYPE TSMESG.

FORM deal_bapi_ret TABLES bapi_ret CHANGING err_status
 DATA: ls_smesg TYPE smesg.
 DATA(lv_zeile) = lines( gt_smesg_all[] ).


 refresh gt_smesg.

 LOOP AT bapi_ret ASSIGNING <fs_ret>.
    clear err_status.
    IF <fs_ret>-type = 'E'  OR <fs_ret>-type = 'A' OR <fs_ret> = 'X' .
      err_status = abap_true.  "失败
    ENDIF.

    CLEAR ls_smesg.
    ls_smesg-zeile = lv_zeile + sy-tabix.
    ls_smesg-msgty = <fs_ret>-type.
    ls_smesg-arbgb = <fs_ret>-id.
    ls_smesg-txtnr = <fs_ret>-number.
    ls_smesg-msgv1 = <fs_ret>-message_v1.
    ls_smesg-msgv2 = <fs_ret>-message_v2.
    ls_smesg-msgv3 = <fs_ret>-message_v3.
    ls_smesg-msgv4 = <fs_ret>-message_v4.
    APPEND errmsg TO gt_smesg.
  ENDLOOP.
 
  APPEND LINES OF gt_smesg TO gt_smesg_all.

  CALL FUNCTION 'FB_MESSAGES_DISPLAY_POPUP'
      EXPORTING
        it_smesg        = gt_smesg[]
      EXCEPTIONS
        no_messages     = 1
        popup_cancelled = 2
        OTHERS          = 3.
ENDFORM.

FORM message_collect USING msgty msgv1 msgv2 msgv3 msgv4.
  DATA: ls_smesg TYPE smesg.
  DATA(lv_zeile) = lines( gt_smesg_all[] ).
  ls_smesg-zeile = lv_zeile + 1.
  ls_smesg-msgty = msgty.
 * ls_smesg-arbgb = '00'.
 * ls_smesg-txtnr = '000'.
  ls_smesg-msgv1 = msgv1.
  ls_smesg-msgv2 = msgv2.
  ls_smesg-msgv3 = msgv3.
  ls_smesg-msgv4 = msgv4.
  INSERT ls_smesg INTO gt_smesg_all INDEX ls_smesg-zeile.
ENDFORM.
原文地址:https://www.cnblogs.com/imimjx/p/13157395.html