ABAP报错时,可以将多条消息报在屏幕上,类似创建采购订单时的message,两种方法
一 . 通过类 CL_ISU_ERROR_LOG
二. 通过函数 SUSR_DISPLAY_LOG
1. 类: CL_ISU_ERROR_LOG
实现效果
实现方式
*message 对象
DATA GO_MSG TYPE REF TO CL_ISU_ERROR_LOG.
CREATE OBJECT GO_MSG.
此处模拟message获取
DATA: BEGIN OF GT_MSG OCCURS 0 ,
X_MSGID TYPE SYMSGID ,
X_MSGTY TYPE SYMSGTY ,
X_MSGNO TYPE SYMSGNO ,
X_MSGV1 TYPE C ,
X_MSGV2 TYPE C ,
X_MSGV3 TYPE C ,
X_MSGV4 TYPE C ,
END OF GT_MSG.
CLEAR GT_MSG .
GT_MSG-X_MSGID = 'ZGJX'.
GT_MSG-X_MSGTY = 'E'.
GT_MSG-X_MSGNO = 002.
APPEND GT_MSG .
CLEAR GT_MSG .
GT_MSG-X_MSGID = 'ZGJX'.
GT_MSG-X_MSGTY = 'E'.
GT_MSG-X_MSGNO = 004.
APPEND GT_MSG .
CLEAR GT_MSG .
GT_MSG-X_MSGID = 'ZGJX'.
GT_MSG-X_MSGTY = 'E'.
GT_MSG-X_MSGNO = 015.
APPEND GT_MSG .
调用 ADD_MESSAGE ,将message添加到一起,通过DISPLAY_MESSAGES展示出来
LOOP AT GT_MSG."添加message
CALL METHOD GO_MSG->ADD_MESSAGE
EXPORTING
X_MSGID = GT_MSG-X_MSGID
X_MSGTY = GT_MSG-X_MSGTY
X_MSGNO = GT_MSG-X_MSGNO
* X_MSGV1 =
* X_MSGV2 =
* X_MSGV3 =
* X_MSGV4 =
.
ENDLOOP.
*展示messages
CALL METHOD GO_MSG->DISPLAY_MESSAGES
EXPORTING
X_SINGLE_IN_STATUS_LINE = 'X'
EXCEPTIONS
ERROR_OCCURRED = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
2. CALL FUNCTION 'SUSR_DISPLAY_LOG'
DATA lt_return TYPE STANDARD TABLE OF bapiret2.
"显示所有失败消息S
CALL FUNCTION 'SUSR_DISPLAY_LOG'
EXPORTING
display_in_popup = 'X'
TABLES
it_log_bapiret2 = lt_return
EXCEPTIONS
parameter_error = 1
OTHERS = 2.