Anda di halaman 1dari 5

REPORT ZSMS NO STANDARD PAGE HEADING.

INCLUDE <icon>.

DATA: BEGIN OF usr_tabl OCCURS 0.


INCLUDE STRUCTURE uinfo.
DATA: END OF usr_tabl.

DATA: l_length TYPE i,


t_abaplist LIKE abaplist OCCURS 0 WITH HEADER LINE,
BEGIN OF t_user OCCURS 0,
counter TYPE i,
selection TYPE c,
mandt LIKE sy-mandt,
bname LIKE sy-uname,
name_first LIKE v_adrp_cp-name_first,
name_last LIKE v_adrp_cp-name_last,
department LIKE v_adrp_cp-department,
tel_number LIKE v_adrp_cp-tel_number,
END OF t_user,
l_client LIKE sy-mandt,
l_userid LIKE uinfo-bname,
l_opcode TYPE x,
l_funct_code(1) TYPE c,
l_test(200) TYPE c.

l_opcode = 2.
CALL 'ThUsrInfo' ID 'OPCODE' FIELD l_opcode
ID 'TAB' FIELD usr_tabl-*sys*.

CLEAR t_user. REFRESH t_user.


LOOP AT usr_tabl.
t_user-mandt = usr_tabl-mandt.
t_user-bname = usr_tabl-bname.
APPEND t_user.
ENDLOOP.

SORT t_user.
DELETE ADJACENT DUPLICATES FROM t_user.
LOOP AT t_user.
t_user-counter = sy-tabix.
SELECT v~name_first
v~name_last
v~department
v~tel_number
INTO (t_user-name_first,
t_user-name_last,
t_user-department,
t_user-tel_number)
FROM usr21 AS u
JOIN v_adrp_cp AS v
ON u~persnumber = v~persnumber AND
u~addrnumber = v~addrnumber
WHERE u~bname = t_user-bname.
ENDSELECT.
MODIFY t_user.
ENDLOOP.
SORT t_user BY name_last name_first.
PERFORM display_list.
TOP-OF-PAGE.
PERFORM display_menu.
* End of top-of-page

TOP-OF-PAGE DURING LINE-SELECTION.


PERFORM display_menu.
* End of top-of-page during line-selection

AT LINE-SELECTION.
IF sy-curow = 2.
IF sy-cucol < 19.
t_user-selection = 'X'.
MODIFY t_user TRANSPORTING selection WHERE selection = ''.
PERFORM display_list.
ELSEIF sy-cucol < 36.
CLEAR t_user-selection.
MODIFY t_user TRANSPORTING selection WHERE selection = 'X'.
PERFORM display_list.
ELSEIF sy-cucol < 50.
PERFORM transfer_selection.
PERFORM popup_msg.
ELSEIF sy-cucol < 67.
PERFORM transfer_selection.
SORT t_user BY name_last.
PERFORM display_list.
ELSEIF sy-cucol < 81.
PERFORM transfer_selection.
SORT t_user BY name_first.
PERFORM display_list.
ELSEIF sy-cucol < 93.
PERFORM transfer_selection.
SORT t_user BY mandt.
PERFORM display_list.
ENDIF.
ENDIF.
* End of line-selection

*&---------------------------------------------------------------------*
*& Form DISPLAY_LIST
*&---------------------------------------------------------------------*
FORM display_list.
sy-lsind = 0.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
LOOP AT t_user.
WRITE: / sy-vline, t_user-selection AS CHECKBOX,
sy-vline, t_user-mandt,
sy-vline, t_user-bname,
sy-vline, t_user-name_first(15),
sy-vline, t_user-name_last(15),
sy-vline, t_user-department(20),
sy-vline, t_user-tel_number(20), sy-vline.
HIDE: t_user-counter, t_user-selection.
ENDLOOP.
FORMAT COLOR OFF.
WRITE: /(108) sy-uline.
ENDFORM. " DISPLAY_LIST
*&---------------------------------------------------------------------*
*& Form DISPLAY_MENU
*&---------------------------------------------------------------------*
FORM display_menu.
FORMAT COLOR COL_HEADING HOTSPOT.
WRITE: (91) sy-uline,
/ sy-vline NO-GAP, (4) icon_select_all NO-GAP, 'Select All',
sy-vline NO-GAP, (4) icon_deselect_all NO-GAP, 'Deselect All',
sy-vline NO-GAP, (4) icon_short_message NO-GAP, 'Send Popup',
sy-vline NO-GAP, (4) icon_sort_up NO-GAP, 'Last Name' NO-GAP,
sy-vline NO-GAP, (4) icon_sort_up NO-GAP, 'First Name' NO-GAP,
sy-vline NO-GAP, (4) icon_sort_up NO-GAP, 'Client' NO-GAP,
sy-vline,
/(91) sy-uline,
/(108) sy-uline.
FORMAT HOTSPOT OFF.

WRITE: / sy-vline, ' ',


sy-vline, 'Cli',
sy-vline, 'User ',
sy-vline, 'First Name ',
sy-vline, 'Last Name ',
sy-vline, 'Department ',
sy-vline, 'Telephone ',
sy-vline,
/(108) sy-uline.
FORMAT COLOR OFF.
ENDFORM. " DISPLAY_MENU

*&---------------------------------------------------------------------*
*& Form TRANSFER_SELECTION
*&---------------------------------------------------------------------*
FORM transfer_selection.
DO.
READ LINE sy-index FIELD VALUE t_user-selection.
IF sy-subrc <> 0.
EXIT.
ENDIF.
MODIFY t_user TRANSPORTING selection
WHERE counter = t_user-counter.
ENDDO.
CLEAR t_user.
ENDFORM. " TRANSFER_SELECTION

*&---------------------------------------------------------------------*
*& Form POPUP_MSG
*&---------------------------------------------------------------------*
FORM popup_msg.
DATA: l_msg LIKE sm04dic-popupmsg VALUE 'Experimental Message',
l_len TYPE i,
l_ret TYPE c.

LOOP AT t_user WHERE selection = 'X'.


PERFORM get_message CHANGING l_msg l_ret.
EXIT.
ENDLOOP.
IF l_ret = 'A'. "User cancelled the message
EXIT.
ENDIF.
* Get the message text
TRANSLATE l_msg+1 TO LOWER CASE.

l_len = strlen( l_msg ).


LOOP AT t_user WHERE selection = 'X'.
CALL FUNCTION 'TH_POPUP'
EXPORTING
client = t_user-mandt
user = t_user-bname
message = l_msg
message_len = l_length
* CUT_BLANKS = ' '
EXCEPTIONS
user_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
WRITE: 'User ', t_user-bname, 'not found.'.
ENDIF.
ENDLOOP.
IF sy-subrc <> 0.
* Big error! No user has been selected.
MESSAGE ID 'AT' TYPE 'E' NUMBER '315' WITH
'No user selected!'.
EXIT.
ENDIF.
ENDFORM. " POPUP_MSG
*&---------------------------------------------------------------------*
*& Form GET_MESSAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_L_MSG text *
*----------------------------------------------------------------------*
FORM get_message CHANGING p_l_msg LIKE sm04dic-popupmsg
p_returncode TYPE c.
DATA: BEGIN OF fields OCCURS 1.
INCLUDE STRUCTURE sval.
DATA: END OF fields,
returncode TYPE c.

fields-tabname = 'SM04DIC'.
fields-fieldname = 'POPUPMSG'.
fields-fieldtext = 'Message :'.
* CONCATENATE ' - Msg from' SY-UNAME '.' INTO FIELDS-VALUE SEPARATED
* BY ' '.
APPEND fields.

CALL FUNCTION 'POPUP_GET_VALUES'


EXPORTING
popup_title = 'Supply the popup message'
IMPORTING
returncode = p_returncode
TABLES
fields = fields.

IF p_returncode = 'A'.
EXIT.
ELSE.
READ TABLE fields INDEX 1.
p_l_msg = fields-value.
ENDIF.
ENDFORM. " GET_MESSAGE

Anda mungkin juga menyukai