1. 单条消息的输出
在ABAP中,可以直接使用MESSAGE关键字来输出消息。通过指定Message Type可以控制消息的类型。
例如使用下面代码,可以直接输出一个‘E’类型的消息。
MESSAGE e001(VF).
运行效果如下:
2. 多条消息的输出
但在很多场景中,需要一次输出多个消息。此时,可以使用MESSAGES_SHOW这一组消息函数。
示例代码如下:
TYPES:
BEGIN OF ts_msg,
msgty TYPE msgty,
msgid TYPE msgid,
msgno TYPE syst_msgno,
msgv1 TYPE msgv1,
msgv2 TYPE msgv2,
msgv3 TYPE msgv3,
msgv4 TYPE msgv4,
text TYPE string,
logsys TYPE logsys,
exception TYPE REF TO cx_root,
END OF ts_msg,
tt_msg TYPE STANDARD TABLE OF ts_msg WITH EMPTY KEY.
*====================================================
START-OF-SELECTION.
*====================================================
DATA: lv_corr_wanted TYPE char30,
lv_msg_sel TYPE smesg,
lv_exit_cmd TYPE bal_s_excm.
DATA lt_msg TYPE tt_msg.
MESSAGE e001(vf) INTO DATA(lv_msg).
APPEND CORRESPONDING #( sy ) TO lt_msg.
MESSAGE w005(vf) INTO lv_msg.
APPEND CORRESPONDING #( sy ) TO lt_msg.
MESSAGE i010(vf) INTO lv_msg.
APPEND CORRESPONDING #( sy ) TO lt_msg.
CALL FUNCTION 'MESSAGES_INITIALIZE'.
LOOP AT lt_msg ASSIGNING FIELD-SYMBOL(<ls_msg>).
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
arbgb = <ls_msg>-msgid
msgty = <ls_msg>-msgty
msgv1 = <ls_msg>-msgv1
msgv2 = <ls_msg>-msgv2
msgv3 = <ls_msg>-msgv3
msgv4 = <ls_msg>-msgv4
txtnr = <ls_msg>-msgno
EXCEPTIONS
OTHERS = 1.
ASSERT sy-subrc = 0.
ENDLOOP.
CALL FUNCTION 'MESSAGES_STOP'
EXCEPTIONS
OTHERS = 0.
CALL FUNCTION 'MESSAGES_SHOW'
EXPORTING
object = 'Message title'
show_linno = abap_false
i_use_grid = abap_true
IMPORTING
corrections_wanted = lv_corr_wanted
msg_selected = lv_msg_sel
e_exit_command = lv_exit_cmd
EXCEPTIONS
OTHERS = 1.
ASSERT sy-subrc = 0.
WRITE: 'done'.
运行效果如下:
通过判断用户的选择值,可以控制程序后续的运行方式。
>本博客专注于技术分享,干货满满,持续更新。
>欢迎关注❤️、点赞👍、转发📣!