【IT168 信息化】
REPORT Z_SEND_POPUP NO STANDARD PAGE HEADING.
include <icon>.
* Global data decleration
data: itab_uinfo like standard table of uinfo with header line.
data: itab_send like standard table of uinfo with header line.
data: box(1) TYPE c,
lines TYPE i,
w_text1 like sm04dic-popupmsg,
w_text2 like sm04dic-popupmsg,
message like SM04DIC-POPUPMSG.
start-of-selection.
set pf-status 'LIST'.
* Text which should be send to other users
perform show_input_message.
* First, show all User which are in the system...
perform show_loged_on_users.
lines = sy-linno - 1.
END-OF-SELECTION.
AT USER-COMMAND.
case sy-ucomm.
when 'EXEC'.
* Determine Text
read line 2 field value w_text1.
w_text2 = w_text1.
DO lines TIMES.
clear box.
READ LINE sy-index FIELD VALUE box.
IF box = 'X'.
itab_send-bname = itab_uinfo-bname.
itab_send-mandt = itab_uinfo-mandt.
append itab_send.
endif.
enddo.
* Finally send message....
perform send_message.
when 'AUFF'.
* Text which should be send to other users
perform show_input_message.
* First, show all User which are in the system...
perform show_loged_on_users.
lines = sy-linno - 1.
sy-lsind = sy-lsind - 1.
when others.
endcase.
*&---------------------------------------------------------------------*
*& Form show_loged_on_users
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM show_loged_on_users.
* Get all loged on users
perform get_loged_on_users.
* Combine to only GUI - Users
perform combine_users.
* Show Users
perform show_users_in_list.
ENDFORM. " show_loged_on_users
*&---------------------------------------------------------------------*
*& Form get_loged_on_users
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_loged_on_users.
data: itab_RFCHOSTS like standard table of RFCHOSTS with header line.
CALL FUNCTION 'RFC_GET_LOCAL_DESTINATIONS'
TABLES
LOCALDEST = itab_RFCHOSTS
EXCEPTIONS
NOT_AVAILABLE = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
loop at itab_RFCHOSTS.
CALL FUNCTION 'THUSRINFO' Destination itab_rfchosts
TABLES
USR_TABL = itab_UINFO
EXCEPTIONS communication_failure = 17.
endloop.
ENDFORM. " get_loged_on_users
*&---------------------------------------------------------------------*
*& Form combine_users
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM combine_users.
data: itab_loc_uinfo like standard table of uinfo with header line.
itab_loc_uinfo[] = itab_uinfo[].
clear itab_uinfo. refresh itab_uinfo.
loop at itab_loc_uinfo.
if itab_loc_uinfo-stat = '2' and "GUI - User
itab_loc_uinfo-bname ne space.
read table itab_uinfo with key mandt = itab_loc_uinfo-mandt
bname = itab_loc_uinfo-bname.
if sy-subrc ne 0.
itab_uinfo = itab_loc_uinfo.
append itab_uinfo.
endif.
endif.
endloop.
* finaly sort...
sort itab_uinfo by bname.
ENDFORM. " combine_users
*&---------------------------------------------------------------------*
*& Form show_users_in_list
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM show_users_in_list.
data: w_color type c,
w_BAPIBNAME like BAPIBNAME-BAPIBNAME,
w_BAPIADDR3 like BAPIADDR3.
data: itab_return like standard table of BAPIRET2.
loop at itab_uinfo.
* First, Color Handling....
if w_color eq space.
format color col_heading.
w_color = 'X'.
else.
format color col_normal.
w_color = space.
endif.
* Get Additional Information to the user..
w_BAPIBNAME = itab_uinfo-bname.
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
EXPORTING
USERNAME = w_BAPIBNAME
IMPORTING
ADDRESS = w_BAPIADDR3
TABLES
RETURN = itab_return.
write : /
ICON_HR_POSITION as icon,
box as checkbox,
itab_uinfo-mandt, itab_uinfo-bname,
w_bapiaddr3-FULLNAME, at sy-linsz ' '.
Hide: box, itab_uinfo-mandt, itab_uinfo-bname.
endloop.
ENDFORM. " show_users_in_list
*&---------------------------------------------------------------------*
*& Form show_input_message
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM show_input_message.
w_text1 = ' Enter text here'.
format color col_negative.
WRITE : ICON_BW_RA_SETTING_ACTIVE as icon,
'Please fill in the text for Sending:',
ICON_BW_RA_SETTING_ACTIVE as icon,
at sy-linsz ' '
.
WRITE / w_text1 INPUT ON.
ULINE.
ENDFORM. " show_input_message
*&---------------------------------------------------------------------*
*& Form send_message
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM send_message.
data: w_name like sy-uname,
w_mandt like sy-mandt,
w_icon1 like ICON-NAME,
w_icon2 like ICON-NAME,
w_icon3 like icon-name,
w_success type c,
w_succt(100) type c.
concatenate sy-uname ':' w_text2 into message.
loop at itab_send.
w_name = itab_send-bname.
w_mandt = itab_send-mandt.
CALL FUNCTION 'TH_POPUP'
EXPORTING
CLIENT = w_mandt
USER = w_name
MESSAGE = message
* MESSAGE_LEN = 0
* CUT_BLANKS = ' '
EXCEPTIONS
USER_NOT_FOUND = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
else.
w_success = 'X'.
endif.
endloop.
refresh itab_send.
clear itab_send.
if w_success ne space.
w_icon1 = 'ICON_MANAGER'.
w_icon2 = 'ICON_PM_INSERT'.
w_icon3 = 'ICON_MESSAGE_INFORMATION_SMALL'.
concatenate sy-uname
':Your message has be send to the selected user(s)'
into w_succt.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Send Message to User'
TEXT_QUESTION = w_succt
TEXT_BUTTON_1 = 'Yes'
ICON_BUTTON_1 = w_icon1
TEXT_BUTTON_2 = 'Yuhuu'
ICON_BUTTON_2 = w_icon2
DISPLAY_CANCEL_BUTTON = ' '
POPUP_TYPE = w_icon3
* IMPORTING
* ANSWER =
* TABLES
* PARAMETER =
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endif.
ENDFORM. " send_message