业务需求:
在SAP项目中,会经常碰到如下需求:
1:在业务处理过程中,当执行完一步业务操作后,返回的消息描述过长,通过单一字段进行显示不完全;此时,可通过对话框表格显示的方式进行消息显示,如下图。
实现步骤:
一、ALV列添加热点响应代码。
二、FRM_SHOW_MESSAGE消息弹窗代码如下:
*&---------------------------------------------------------------------*
*& Form FRM_SHOW_MESSAGE
*&---------------------------------------------------------------------*
* 显示消息
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_SHOW_MESSAGE USING P_TYPE TYPE CHAR01
P_MESSAGE TYPE STRING.
DATA: BEGIN OF LS_MESSAGE,
TYPE LIKE BAPIRET2-TYPE,
NUMBER LIKE BAPIRET2-NUMBER,
MESSAGE LIKE BAPIRET2-MESSAGE,
END OF LS_MESSAGE.
DATA: LT_MESSAGE LIKE TABLE OF LS_MESSAGE,
LC_MESSAGE TYPE REF TO CL_SALV_TABLE,
LCX_SALV_MSG TYPE REF TO CX_SALV_MSG,
LR_COLUMNS TYPE REF TO CL_SALV_COLUMNS,
L_MESS TYPE STRING,
L_LINE TYPE I.
**备注:50个字符一行,消息拆行
L_LINE = STRLEN( P_MESSAGE ) DIV 50 + 1.
DO L_LINE TIMES.
LS_MESSAGE-TYPE = P_TYPE .
LS_MESSAGE-NUMBER = LS_MESSAGE-NUMBER + 1.
IF LS_MESSAGE-NUMBER = L_LINE.
LS_MESSAGE-MESSAGE = P_MESSAGE.
ELSE.
LS_MESSAGE-MESSAGE = P_MESSAGE+(50).
P_MESSAGE = P_MESSAGE+50.
ENDIF.
APPEND LS_MESSAGE TO LT_MESSAGE.
ENDDO.
**初始化MESSAGE报表
TRY.
CL_SALV_TABLE=>FACTORY( IMPORTING
R_SALV_TABLE = LC_MESSAGE
CHANGING T_TABLE = LT_MESSAGE
).
CATCH CX_SALV_MSG INTO LCX_SALV_MSG.
******获取异常文本
L_MESS = LCX_SALV_MSG->GET_TEXT( ).
ENDTRY.
LR_COLUMNS = LC_MESSAGE->GET_COLUMNS( ).
LR_COLUMNS->SET_OPTIMIZE('X') .
**抛出MESSAGE
LC_MESSAGE->SET_SCREEN_POPUP(
START_COLUMN = 1 "起始列
END_COLUMN = 100 "结束列
START_LINE = 1 "起始行
END_LINE = 10 ) . "结束行
LC_MESSAGE->DISPLAY( ).
ENDFORM.