system message send

Source is as follows.

[@more@]

REPORT zsend.
data: list like uinfo occurs 0 with header line.
*data: ZSEND like ZSEND occurs 0 with header line.
DATA: IT_F4_DENNO LIKE STANDARD TABLE OF ZSEND.
data lf_dynprofield LIKE help_info-dynprofld.
DATA ret_tab like DDSHRETVAL occurs 0 with header line.
DATA RET_FIELD LIKE DFIES occurs 0 with header line.
DATA T_ZSEND TYPE STANDARD TABLE OF ZSEND.
DATA: L_CPROG TYPE SY-CPROG,
L_DYNNR TYPE SY-DYNNR.
DATA t_return like ddshretval occurs 0 with header line.

tables zdata.

parameters:P_USER like SY-UNAME,
p_mess like SM04DIC-POPUPMSG.

INITIALIZATION.

***********************************************************
*AT SELECTION-SCREEN
***********************************************************
at selection-screen.
perform check.

***********************************************************
*AT SELECTION-SCREEN
***********************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_user.

CALL FUNCTION 'TH_USER_LIST'
TABLES
LIST = list.

SELECT NUM NAME
INTO CORRESPONDING FIELDS OF TABLE T_ZSEND
FROM ZSEND
FOR ALL ENTRIES IN list
where num = list-BNAME.

L_CPROG = SY-CPROG.
L_DYNNR = SY-DYNNR.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = 'ZSEND'
RETFIELD = 'NUM'
DYNPPROG = L_CPROG
DYNPNR = L_DYNNR
DYNPROFIELD = 'P_USER'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = T_ZSEND
return_tab = t_return
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

***********************************************************
*start-of-selection
***********************************************************
start-of-selection.
DATA L_NAME TYPE ZSEND-NAME.
CLEAR L_NAME.
SELECT SINGLE NAME INTO L_NAME FROM ZSEND WHERE NUM = sy-uname.
concatenate L_NAME 'saying:' p_mess into p_mess SEPARATED BY ' '.

CALL FUNCTION 'TH_POPUP'
EXPORTING
CLIENT = '101'
USER = p_user
MESSAGE = p_mess.

if sy-subrc eq 0.
message s108(04) with 'haha ,success to send !'.
data num1 type n.
select max( num ) into num1 from zdata.

zdata-num = num1 + 1.
zdata-name = l_name.
zdata-msg = p_mess.
insert zdata.

if sy-subrc = 0.
commit work.
else.
rollback work.
endif.
endif.

***********************************************************
*check
***********************************************************
FORM check.
CALL FUNCTION 'TH_USER_LIST'
TABLES
LIST = list.

read table list with key bname = p_user mandt = '101'.

if sy-subrc <> 0.
read table list with key bname = p_user.
message e108(04) with 'the user not on this client, but in'
list-mandt.
endif.

ENDFORM. " check

请使用浏览器的分享功能分享到微信等