REPORT zbasis_users NO STANDARD PAGE HEADING MESSAGE-ID z03. CONTROLS : tctrl TYPE TABLEVIEW USING SCREEN 9000. TABLES : modus. SELECTION-SCREEN BEGIN OF SCREEN 100. selection-screen begin of line. selection-screen position 2. parameters : p_text(30). PARAMETERS : p_mess(50). selection-screen end of line. SELECTION-SCREEN END OF SCREEN 100. TABLES : usr41,sscrfields. DATA : BEGIN OF it_usr41 OCCURS 0. INCLUDE STRUCTURE usr41. DATA : name(30), t_name(20), no_ses TYPE i, END OF it_usr41. DATA : fld1(25), fld2(25). DATA : message(60). DATA : BEGIN OF result OCCURS 10, text(100), END OF result. DATA : fname(30). DATA : val(30). DATA : nm(2) TYPE n. DATA : th_opcode(1) TYPE x. DATA: strtid(10), modes LIKE sy-index. DATA : linno TYPE i. DATA : tmpcode LIKE sy-tcode. CONSTANTS : opcode_mode_count LIKE th_opcode VALUE 3. at selection-screen output. loop at screen. if screen-name = 'P_TEXT'. screen-input = 0. screen-display_3d = 0. modify screen. endif. endloop. START-OF-SELECTION. * AUTHORITY-CHECK OBJECT 'ZBASISMESS' ID 'TCD' FIELD sy-tcode. * IF sy-subrc <> 0. * MESSAGE i010. * EXIT. * ENDIF. PERFORM select_and_fill. END-OF-SELECTION. SET PF-STATUS 'S9000'. PERFORM write_data. AT LINE-SELECTION. PERFORM send_mess_single. AT USER-COMMAND. sy-lsind = 0. CASE sy-ucomm. WHEN 'SEND'. PERFORM send_message_all. WHEN 'SESS'. PERFORM show_session. WHEN 'REFR'. PERFORM select_and_fill. PERFORM write_data. ENDCASE. TOP-OF-PAGE. PERFORM write_top_page. TOP-OF-PAGE DURING LINE-SELECTION. PERFORM write_top_page. *&---------------------------------------------------------------------* *& Form select_and_fill *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM select_and_fill. SELECT * FROM usr41 CLIENT SPECIFIED INTO CORRESPONDING FIELDS OF TABLE it_usr41 . LOOP AT it_usr41. CLEAR : message,fld1,fld2. SPLIT it_usr41-terminal AT '-' INTO fld1 fld2. it_usr41-terminal = fld1. it_usr41-t_name = fld2. CONCATENATE 'nbtstat -a' fld2 INTO message SEPARATED BY space. CALL 'SYSTEM' ID 'COMMAND' FIELD message ID 'TAB' FIELD result-*sys*. LOOP AT result. IF result-text CS '<03>'. it_usr41-name = result-text. ENDIF. ENDLOOP. CALL 'ThUsrInfo' ID 'OPCODE' FIELD opcode_mode_count ID 'TID' FIELD it_usr41-termid ID 'MODES' FIELD modes. it_usr41-no_ses = modes. MODIFY it_usr41. ENDLOOP. SORT it_usr41 BY mandt bname. ENDFORM. " select_and_fill *&---------------------------------------------------------------------* *& Form write_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM write_data. LOOP AT it_usr41. WRITE :/ '|',it_usr41-mandt,10 '|',it_usr41-bname,'|', it_usr41-name+0(15) HOTSPOT ON COLOR 4,'|', it_usr41-terminal+0(18), '|',it_usr41-t_name+0(12),'|'. IF it_usr41-no_ses > 3. WRITE : it_usr41-no_ses COLOR 6,'|'. ELSE. WRITE : it_usr41-no_ses,'|'. ENDIF. AT LAST. SUM. WRITE :/ sy-uline(93). WRITE :/79 '|',it_usr41-no_ses COLOR 3,'|'. WRITE :/79 sy-uline(15). ENDAT. ENDLOOP. ENDFORM. " write_data *&---------------------------------------------------------------------* *& Form write_top_page *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM write_top_page. DESCRIBE TABLE it_usr41 LINES nm. WRITE :/ sy-uline(93). WRITE :/ '|', 'There are ', nm ,' users logged into T02',93 '|'. WRITE :/ sy-uline(93). FORMAT COLOR 1 ON. WRITE :/ '|','Client','|','Login',25 '|', 'NT-Username',43 '|', 'IP Address',64 '|','Mac Name',79 '|', 'Sessions',93 '|'. FORMAT COLOR 1 OFF. WRITE :/ sy-uline(93). ENDFORM. " write_top_page *&---------------------------------------------------------------------* *& Form send_mess_single *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM send_mess_single. GET CURSOR FIELD fname VALUE val. IF fname = 'IT_USR41-NAME'. CLEAR : message. p_mess = 'Pls reduce sessions in T02 **admin**'. concatenate 'Message to be sent to' val into p_text separated by space. CALL SELECTION-SCREEN 100 STARTING AT 10 10 ENDING AT 100 10. IF sy-subrc = 0. CONCATENATE 'net send' val p_mess INTO message SEPARATED BY space. CALL 'SYSTEM' ID 'COMMAND' FIELD message ID 'TAB' FIELD result-*sys*. ENDIF. ENDIF. ENDFORM. " send_mess_single *&---------------------------------------------------------------------* *& Form send_message_all *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM send_message_all. p_text = 'Message to be Sent to ALL'. p_mess = 'Pls reduce sessions in T02 **admin**'. CALL SELECTION-SCREEN 100 STARTING AT 10 10 ENDING AT 100 10. IF sy-subrc = 0. LOOP AT it_usr41. CONCATENATE 'net send' it_usr41-name+0(15) p_mess INTO message SEPARATED BY space. CALL 'SYSTEM' ID 'COMMAND' FIELD message ID 'TAB' FIELD result-*sys*. ENDLOOP. ENDIF. ENDFORM. " send_message_all *&---------------------------------------------------------------------* *& Form show_session *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM show_session. CLEAR : it_usr41. linno = sy-lilli - 5. READ TABLE it_usr41 INDEX linno. IF sy-subrc = 0. WRITE it_usr41-termid TO strtid LEFT-JUSTIFIED. SET PARAMETER ID 'TID' FIELD strtid. CALL 'ThUsrInfo' ID 'OPCODE' FIELD opcode_mode_count ID 'TID' FIELD it_usr41-termid ID 'MODES' FIELD modes. IF modes = 0. EXIT. ENDIF. CALL SCREEN 9000 STARTING AT 4 4 ENDING AT 62 15. PERFORM select_and_fill. PERFORM write_data. ENDIF. ENDFORM. " show_session *&---------------------------------------------------------------------* *& Module my_mod OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE my_mod OUTPUT. CLEAR tmpcode. SELECT SINGLE tcode INTO tmpcode FROM tstct WHERE ttext = modus-mtcode. ENDMODULE. " my_mod OUTPUT