Foro -Documentación -Código fuente -Contacto -Empleo

Buscar

Traducir

Amazon

ZAVISO_GENERAL PDF Imprimir E-mail
Usar puntuación: / 0
MaloBueno 
Código fuente - Informativos
Lunes, 27 de Junio de 2005 06:24
Avisos a usuarios que estén ejecutando una transacción

REPORT ZAVISO_GENERAL .

*Lista de usuarios activos utilizando una transación
 TABLES:
             TSTC,
             TSTCT.

DATA: OPCODE TYPE X,
      MSG_LENGTH like sy-index,
      LOC_CUT_BLANKS TYPE X VALUE 1.

DATA: BEGIN OF USR_TABL OCCURS 10.
        INCLUDE STRUCTURE UINFO.
        INCLUDE STRUCTURE rfchosts.
DATA: END OF USR_TABL.

DATA: BEGIN OF USR_LISTE OCCURS 10.
        INCLUDE STRUCTURE UINFO.
DATA: END OF USR_LISTE.

DATA: BEGIN OF desti OCCURS 100.
        INCLUDE STRUCTURE rfchosts.
DATA: END OF desti.
data: begin of g_aviso occurs 0.
        include structure zaviso.
data: end of g_aviso.

SELECT-OPTIONS: S_TCODE FOR TSTC-TCODE.
PARAMETERS: P_MSG(128) DEFAULT 'Mensaje...' lower case.
START-OF-SELECTION.

 CLEAR USR_TABL.
 FREE  USR_TABL.
* Buscamos los destinos lógicos del sistema.
CALL FUNCTION 'RFC_GET_LOCAL_DESTINATIONS'
       TABLES
            localdest = desti.
* Por cada destino buscamos los usuarios conectados
loop at desti.
 REFRESH usr_liste. CLEAR usr_liste.
  CALL FUNCTION 'THUSRINFO' DESTINATION desti
       TABLES usr_tabl  =  usr_liste
       EXCEPTIONS communication_failure = 17
                  system_failure        = 17.
  if sy-subrc eq 0.
    loop at usr_liste.
      move-corresponding usr_liste to usr_tabl.
      usr_tabl-rfcdest = desti-rfcdest.
      append usr_tabl.
    endloop.
  endif.
endloop.
* Recorremos la tabla interna para la transacción dada por pantalla
  describe field p_msg length msg_length.
  LOOP AT USR_TABL WHERE TCODE IN S_TCODE.
* Mandamos un mensaje a cada uno de los usuairos que este conectado.
     g_aviso-mandt = sy-mandt.
     g_aviso-usr = usr_tabl-bname.
     g_aviso-msg = p_msg.
     g_aviso-msg_leng = msg_length.
     append g_aviso.
  ENDLOOP.

  IF SY-SUBRC <> 0.
     MESSAGE I001(38) WITH 'NO SE HAN ENCONTRADO USUARIOS CONECTADOS'
                           ' A ESTA TRANSACCIÓN'.
  else.
    loop at g_aviso.
     insert into zaviso values g_aviso.
     COMMIT WORK AND WAIT.
    endloop.
* Esta función la he tenido que crear yo para poder llamarla con el parámetro
* destination y poder especificarle la máquina en la que quiero que se ejecute.
    CALL FUNCTION 'ZSEND_POP_UP' DESTINATION usr_tabl-RFCDEST.
  ENDIF.

* La función debe ser Módulo de acceso remoto para poder llamarla con el parámetro
* Destination, lo he hecho accediendo a una tabla de base de datos porque no me salía
* cargando parametros de memoria, y por lo visto estas funciones no dejan pasarle parámetros
* de import.
FUNCTION ZSEND_POP_UP.
*"----------------------------------------------------------------------
*"*"Interfase local
*"----------------------------------------------------------------------
DATA: V_POP_UP(1) TYPE X VALUE 31,
      V_CUT_BLANKS TYPE X VALUE 1.

Data: begin of g_zaviso occurs 0.
       include structure zaviso.
Data: end of g_zaviso.

SELECT *
  appending corresponding fields of table g_zaviso
 FROM zaviso.

loop at g_zaviso.
  CALL 'ThUsrInfo' ID 'OPCODE' FIELD v_pop_up
      ID 'CLIENT'       FIELD g_zaviso-mandt
      ID 'USR'          FIELD g_zaviso-usr
      ID 'MSG'          FIELD g_zaviso-msg
      ID 'MSG_LEN'      FIELD g_zaviso-msg_leng
      ID 'CUT_BLANKS'   FIELD v_cut_blanks.
endloop.

delete zaviso from table g_zaviso.
ENDFUNCTION.
Comentarios
Buscar
¡Sólo los usuarios registrados pueden escribir comentarios!

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
home search