Вы находитесь на странице: 1из 6

*&---------------------------------------------------------------------*

*& Report Z_MESSENGER


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_messenger.
*********************************************************************
*Type pools
*********************************************************************
TYPE-POOLS: slis.
*********************************************************************
*Global data
*********************************************************************
DATA:
xrepid
LIKE sy-repid.
*********************************************************************
*Internal tables
*********************************************************************
DATA: BEGIN OF t_usr_tabl OCCURS 0.
INCLUDE STRUCTURE uinfo.
DATA: END OF t_usr_tabl.
DATA: BEGIN OF
counter
selection
mandt
bname
name_first
name_last
department
tel_number
box,
END OF t_user.

t_user OCCURS 0,
TYPE i,
TYPE c,
LIKE sy-mandt,
LIKE sy-uname,
LIKE v_adrp_cp-name_first,
LIKE v_adrp_cp-name_last,
LIKE v_adrp_cp-department,
LIKE v_adrp_cp-tel_number,

*********************************************************************
*Structures
*********************************************************************
DATA:
wa_fieldcat TYPE slis_fieldcat_alv,
t_fieldcat TYPE slis_t_fieldcat_alv,
e_layout
TYPE slis_layout_alv,
e_print
TYPE slis_print_alv,
wa_heading
TYPE slis_listheader,
t_heading
TYPE slis_t_listheader.
*********************************************************************
*Includes
*********************************************************************
INCLUDE <icon>.
********************************************************************************
****
***
START-OF-SELECTION
***
********************************************************************************

****
START-OF-SELECTION.
* Users on-line
PERFORM users_online.
* Display
PERFORM display_alv.
************************************************************************
* Routines
*
************************************************************************
*&---------------------------------------------------------------------*
*&
Form display_alv
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM display_alv .
xrepid = sy-repid.
PERFORM print_alv.
PERFORM fieldcat_alv.
PERFORM layout_alv.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
= sy-repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout
= e_layout
it_fieldcat
= t_fieldcat
i_save
= 'A'
is_print
= e_print
TABLES
t_outtab
= t_user
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
IF sy-subrc <> 0.
ENDIF.
ENDFORM.
" display_alv
*&---------------------------------------------------------------------*
*&
Form print_alv
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM print_alv .
CLEAR e_print.
e_print-no_print_selinfos = 'X'.

e_print-no_print_listinfos = 'X'.
ENDFORM.
" print_alv
*&---------------------------------------------------------------------*
*&
Form fieldcat_alv
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM fieldcat_alv .
*
REFRESH t_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-seltext_m
APPEND wa_fieldcat TO
CLEAR wa_fieldcat.

= 'BNAME'.
'T_USER'.
= 'User'.
t_fieldcat.

wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-seltext_m
wa_fieldcat-no_zero =
APPEND wa_fieldcat TO
CLEAR wa_fieldcat.

= 'TERM'.
'T_USER'.
= 'Terminal'.
'X'.
t_fieldcat.

*
ENDFORM.
" fieldcat_alv
*&---------------------------------------------------------------------*
*&
Form layout_alv
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM layout_alv .
CLEAR e_layout.
e_layout-zebra = 'X'.
e_layout-colwidth_optimize = 'X'.
e_layout-expand_fieldname = 'X'.
e_layout-box_fieldname = 'BOX'.
ENDFORM.
" layout_alv
*&---------------------------------------------------------------------*
*&
Form USERS_ONLINE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM users_online .
DATA:
l_opcode TYPE x VALUE 2.
CLEAR:
t_user.

REFRESH:
t_user.
CALL 'ThUsrInfo' ID 'OPCODE' FIELD l_opcode
ID 'TAB' FIELD t_usr_tabl-*sys*.
LOOP AT t_usr_tabl.
t_user-mandt = t_usr_tabl-mandt.
t_user-bname = t_usr_tabl-bname.
APPEND t_user.
ENDLOOP.
ENDFORM.
" USERS_ONLINE
*&---------------------------------------------------------------------*
*&
Form USER_COMMAND
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM user_command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield.
selfield-refresh = 'X'.
CASE ucomm.
WHEN 'DISPLAY'.
PERFORM message.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*&
Form SET_PF_STATUS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
data:
wa_fcode type slis_extab.
wa_fcode-fcode = '&REFRESH'.
append wa_fcode to rt_extab.
wa_fcode-fcode = '&ETA'.
append wa_fcode to rt_extab.
SET PF-STATUS 'STANDARD' EXCLUDING rt_extab.
ENDFORM.
"set_pf_status
*&---------------------------------------------------------------------*
*&
Form MESSAGE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*

FORM message .
DATA:
l_msg
l_len
l_ret
DATA:

LIKE sm04dic-popupmsg VALUE 'Experimental Message',


TYPE i,
TYPE c.
l_length

TYPE i.

LOOP AT t_user WHERE box = 'X'.


PERFORM get_message CHANGING l_msg l_ret.
EXIT.
ENDLOOP.
IF l_ret = 'A'.
EXIT.
ENDIF.

"User cancelled the message

Get the message text


l_len = STRLEN( l_msg ).
LOOP AT t_user WHERE box = '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!'.
EXIT.
ENDIF.
ENDFORM.

" MESSAGE

*&---------------------------------------------------------------------*
*&
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 ' - Message from ' sy-uname '.' INTO fields-value SEPARATED
BY ' '.
APPEND fields.
CALL FUNCTION 'POPUP_GET_VALUES'
EXPORTING
popup_title = 'Write your 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

Вам также может понравиться