Enviar Mensajes Popup a Usuarios | ABAP

Les dejo un código #sap-abap para enviar mensajes PopUp a usuarios que se encuentren dentro de un mandante.

Al ejecutarlo, nos pedirá que escribamos el mensaje a enviar, posteriormente lo ejecutamos y nos enviará una ventana donde seleccionaremos los usuarios a los que enviaremos el mensaje, para finalizar nos muestra un Log de a quienes se envió el mensaje.

Saludos

REPORT MENSAJES NO STANDARD PAGE HEADING LINE-SIZE 255.

TABLES: USR41, SPOPLI.

DATA: l_length   TYPE i,
      USER_TEXT  LIKE AGR_TEXTS-TEXT,
      TERMINAL   LIKE USR41-TERMINAL,
      RESPUESTA(2),
      IP(15),
      PC(16).

DATA: ITAB LIKE SPOPLI OCCURS 0 WITH HEADER LINE.
DATA: NOMBRE LIKE SY-UNAME.
DATA: FLAG(1).


PARAMETERS: l_msg  LIKE sm04dic-popupmsg default 'Escribir texto'.



*-------------------------------------------------------------------

---*
START-OF-SELECTION.
*-------------------------------------------------------------------

---*

  PERFORM TOMAR_DATOS_DESTINATARIOS.
  PERFORM TOMAR_DECISION.

  CHECK RESPUESTA NE 'A'.

  TRANSLATE L_MSG USING '= '.
  l_length = strlen( l_msg ).

  LOOP AT ITAB WHERE SELFLAG = 'X'.
    PERFORM TH_POPUP.
  ENDLOOP.







********************************************************************

****
*                           SUBRUTINAS                               

  *
********************************************************************

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

---*
*&      Form  TOMAR_DATOS_DESTINATARIOS
*&------------------------------------------------------------------

---*
FORM TOMAR_DATOS_DESTINATARIOS.

  SELECT * FROM  USR41 INTO USR41.

    CONCATENATE PC ',' ITAB-VAROPTION INTO ITAB-VAROPTION.

    MOVE USR41-BNAME TO ITAB-VAROPTION.
    ITAB-SELFLAG = ' '.
    APPEND ITAB.
    CLEAR ITAB.

  ENDSELECT.

ENDFORM.                    "TOMAR_DATOS_DESTINATARIOS

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

---*
*&      Form  TOMAR_DECISION
*&------------------------------------------------------------------

---*
FORM TOMAR_DECISION.
  DATA: RESTO.

  CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
    EXPORTING
      MARK_FLAG          = 'X'
      MARK_MAX           = 10
      TEXTLINE1    =
      'MARCA A LOS USUARIOS QUE QUIERAS ENVIAR EL MENSAJE'
      TITEL              = 'DESTINATARIOS'
    IMPORTING
      ANSWER             = RESPUESTA
    TABLES
      T_SPOPLI           = ITAB
    EXCEPTIONS
      NOT_ENOUGH_ANSWERS = 1
      TOO_MUCH_ANSWERS   = 2
      TOO_MUCH_MARKS     = 3
      OTHERS             = 4.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  LOOP AT ITAB WHERE SELFLAG = 'X'.
    IF FLAG = ' '.
      FLAG = 'X'.
      WRITE: 3 'Usuarios que han recibido el mensaje:'.
      WRITE: 41 ITAB-VAROPTION.
    ELSE.
      WRITE: /41 ITAB-VAROPTION.
    ENDIF.
  ENDLOOP.

ENDFORM.                    "TOMAR_DECISION
*&------------------------------------------------------------------

---*
*&      Form  TH_POPUP
*&------------------------------------------------------------------

---*
FORM TH_POPUP .
  CLEAR NOMBRE.

  MOVE ITAB-VAROPTION TO NOMBRE.
  CALL FUNCTION 'TH_POPUP'
               EXPORTING
                    client         = sy-mandt
                    user           = NOMBRE
                    MESSAGE        = l_msg
                    message_len    = l_length
*                     CUT_BLANKS     = ' '
               EXCEPTIONS
                    user_not_found = 1
                    OTHERS         = 2.

ENDFORM.                    " TH_POPUP
5 Me gusta

Muy útil el código, gracias por compartirlo!!! :+1:

1 me gusta

Muy usado para hacer bromas con los compañeros XD

3 Me gusta