REPORT ZTREXPA800 . *======================================================================* * Titre : Envoi d'un message aux utilisateurs * * Programme : ZTREXPA800 * * Description : Programme permettant d'envoyer un message * * popup aux utilisateurs connectés * *======================================================================* * Date Création : 15.12.2003 * Auteur : Abdel SIDHOM * * www.saptechno.com * *======================================================================* ************************************************************************ * DECLARATION des DONNEES * ************************************************************************ TABLES : USR02, RFCHOSTS. DATA: BEGIN OF WT_DESTI OCCURS 100. INCLUDE STRUCTURE RFCHOSTS. DATA: END OF WT_DESTI. * Table contenant des données vus de Al08 DATA: BEGIN OF WT_USR_TABL OCCURS 0. INCLUDE STRUCTURE UINFO. DATA: END OF WT_USR_TABL. * Table contenant des users vus de AL08 DATA: BEGIN OF WT_USR OCCURS 0, BNAME LIKE UINFO-BNAME, RFCDEST LIKE RFCHOSTS-RFCDEST, END OF WT_USR. * Table contenant des users extraits de usr02 DATA: BEGIN OF WT_USR02 OCCURS 0, BNAME LIKE UINFO-BNAME, END OF WT_USR02. DATA : W_MSG(80), W_LINES TYPE I. " Nbr de lines dans une table ************************************************************************ * ECRAN DE SELECTION ************************************************************************ PARAMETERS : P_MESS LIKE SM04DIC-POPUPMSG LOWER CASE OBLIGATORY. SELECT-OPTIONS : S_USRS FOR USR02-BNAME, S_DEST FOR RFCHOSTS-RFCDEST NO INTERVALS. ************************************************************************ * INITIALIZATION * ************************************************************************ INITIALIZATION. PERFORM INIT. ************************************************************************ * CORPS DU PROGRAMME * ************************************************************************ START-OF-SELECTION. * Extraction des users connectés PERFORM EXTRACTION. PERFORM POPUP. END-OF-SELECTION. ************************************************************************ * FORMS ************************************************************************ * *&---------------------------------------------------------------------* *& Form extraction *&---------------------------------------------------------------------* FORM EXTRACTION. * Lire usr02 SELECT BNAME INTO CORRESPONDING FIELDS OF TABLE WT_USR02 FROM USR02 WHERE USTYP = 'A' AND BNAME IN S_USRS. SORT WT_USR02 BY BNAME. * Recupere les users actifs sur tous les serveur REFRESH WT_USR. LOOP AT WT_DESTI WHERE RFCDEST IN S_DEST. REFRESH : WT_USR_TABL. * Les connexions actuelles par serveur CALL FUNCTION 'THUSRINFO' DESTINATION WT_DESTI TABLES USR_TABL = WT_USR_TABL EXCEPTIONS COMMUNICATION_FAILURE = 17 MESSAGE W_MSG. IF NOT W_MSG IS INITIAL. MESSAGE I368(00) WITH W_MSG. ENDIF. * Ajout dans la liste IF NOT WT_USR_TABL[] IS INITIAL. LOOP AT WT_USR_TABL. MOVE-CORRESPONDING WT_USR_TABL TO WT_USR. WT_USR-RFCDEST = WT_DESTI-RFCDEST. APPEND WT_USR. CLEAR WT_USR. ENDLOOP. ENDIF. ENDLOOP. SORT WT_USR. DELETE ADJACENT DUPLICATES FROM WT_USR. * Filtre sur les utilisateurs LOOP AT WT_USR. READ TABLE WT_USR02 WITH KEY BNAME = WT_USR-BNAME BINARY SEARCH. CHECK SY-SUBRC <> 0. DELETE WT_USR. ENDLOOP. ENDFORM. " extraction *&---------------------------------------------------------------------* *& Form POPUP *&---------------------------------------------------------------------* * Envoi du message *----------------------------------------------------------------------* FORM POPUP. DESCRIBE TABLE WT_USR LINES W_LINES. FORMAT COLOR 5 INTENSIFIED. WRITE :/ W_LINES , 'Utilisateur(s) dialogue sélectionné(s)'. SKIP. FORMAT RESET. LOOP AT WT_USR. CALL FUNCTION 'TH_POPUP' DESTINATION WT_USR-RFCDEST EXPORTING CLIENT = SY-MANDT USER = WT_USR-BNAME MESSAGE = P_MESS EXCEPTIONS USER_NOT_FOUND = 1 OTHERS = 2 . WRITE :/ '|', WT_USR-BNAME,'|', WT_USR-RFCDEST,'|','CR = ',SY-SUBRC, '|'. ENDLOOP. ENDFORM. " POPUP *&---------------------------------------------------------------------* *& Form INIT *&---------------------------------------------------------------------* FORM INIT. * Recupere les serveurs actifs CALL FUNCTION 'RFC_GET_LOCAL_DESTINATIONS' TABLES LOCALDEST = WT_DESTI. LOOP AT WT_DESTI. S_DEST-SIGN = 'I'. S_DEST-OPTION = 'EQ'. S_DEST-LOW = WT_DESTI-RFCDEST. APPEND S_DEST. ENDLOOP. ENDFORM. " INIT