SAP SEND MESSAGE ALL USERS







 

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

*& Report ZCEM_POPUP
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zcem_popup.
INCLUDE <icon>.
DATA:       BEGIN OF usr_tabl OCCURS 0.
        INCLUDE STRUCTURE uinfo.
DATA:       END OF usr_tabl.

DATA:       l_length        TYPE i,
           t_abaplist      LIKE abaplist OCCURS WITH HEADER LINE,
           BEGIN OF t_user OCCURS 0,
               counter     TYPE i,
               selection   TYPE c,
               mandt       LIKE sy-mandt,
               bname       LIKE sy-uname,
               name_first  LIKE v_adrp_cp-name_first,
               name_last   LIKE v_adrp_cp-name_last,
               department  LIKE v_adrp_cp-department,
               tel_number  LIKE v_adrp_cp-tel_number,
           END OF t_user,
           l_client        LIKE sy-mandt,
           l_userid        LIKE uinfo-bname,
           l_opcode        TYPE x,
           l_funct_code(1TYPE c,
           l_test(200)     TYPE c.

l_opcode 2.
CALL 'ThUsrInfo' ID 'OPCODE' FIELD l_opcode
   ID 'TAB' FIELD usr_tabl-*sys*.

CLEAR t_userREFRESH t_user.
LOOP AT usr_tabl.
  t_user-mandt usr_tabl-mandt.
  t_user-bname usr_tabl-bname.
  APPEND t_user.
ENDLOOP.

SORT t_user.
DELETE ADJACENT DUPLICATES FROM t_user.
LOOP AT t_user.
  t_user-counter sy-tabix.
  SELECT v~name_first
         v~name_last
         v~department
         v~tel_number
      INTO (t_user-name_first,
            t_user-name_last,
            t_user-department,
            t_user-tel_number)
      FROM usr21 AS u
          JOIN v_adrp_cp AS v
            ON u~persnumber v~persnumber AND
               u~addrnumber v~addrnumber
      WHERE u~bname t_user-bname.
  ENDSELECT.
  MODIFY t_user.
ENDLOOP.
SORT t_user BY name_last name_first.
PERFORM display_list.

TOP-OF-PAGE.
  PERFORM display_menu.
* End of top-of-page

TOP-OF-PAGE DURING LINE-SELECTION.
  PERFORM display_menu.
* End of top-of-page during line-selection


AT LINE-SELECTION.
  IF sy-curow OR sy-curow 2.
    IF sy-cucol < 19.        "Select all
      t_user-selection 'X'.
      MODIFY t_user TRANSPORTING selection WHERE selection ''.
      PERFORM display_list.
    ELSEIF sy-cucol < 36.                                       "Deselect
*all
      CLEAR t_user-selection.
      MODIFY t_user TRANSPORTING selection WHERE selection 'X'.
      PERFORM display_list.
    ELSEIF sy-cucol < 50.                                       "Popup
*Message
      PERFORM transfer_selection.
      PERFORM popup_msg.
    ELSEIF sy-cucol < 67.
      PERFORM transfer_selection.                               "Sort by
*last name
      SORT t_user BY name_last.
      PERFORM display_list.
    ELSEIF sy-cucol < 81.
      PERFORM transfer_selection.
      SORT t_user BY name_first.                                 "Sort by
*first name
      PERFORM display_list.
    ELSEIF sy-cucol < 93.
      PERFORM transfer_selection.
      SORT t_user BY mandt.                                       "Sort by
*client
      PERFORM display_list.
    ENDIF.
  ENDIF.
* End of line-selection


*&---------------------------------------------------------------------*
*&      Form  DISPLAY_LIST
*&---------------------------------------------------------------------*
FORM display_list.
  sy-lsind 0.
  FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
  LOOP AT t_user.
    WRITE/ sy-vlinet_user-selection AS CHECKBOX,
             sy-vlinet_user-mandt,
             sy-vlinet_user-bname,
             sy-vlinet_user-name_first(15),
             sy-vlinet_user-name_last(15),
             sy-vlinet_user-department(20),
             sy-vlinet_user-tel_number(20)sy-vline.
    HIDEt_user-countert_user-selection.
  ENDLOOP.
  FORMAT COLOR OFF.
  WRITE/(108sy-uline.
ENDFORM.                    " DISPLAY_LIST

*&---------------------------------------------------------------------*
*&      Form  DISPLAY_MENU
*&---------------------------------------------------------------------*
FORM display_menu.
  FORMAT COLOR COL_HEADING HOTSPOT.
  WRITE:   (91sy-uline,
     / sy-vline NO-GAP(4icon_select_all NO-GAP,    'Select All',
       sy-vline NO-GAP(4icon_deselect_all NO-GAP,  'Deselect All',
       sy-vline NO-GAP(4icon_short_message NO-GAP'Send Popup',
       sy-vline NO-GAP(4icon_sort_up NO-GAP'Last Name' NO-GAP,
       sy-vline NO-GAP(4icon_sort_up NO-GAP'First Name' NO-GAP,
       sy-vline NO-GAP(4icon_sort_up NO-GAP'Client' NO-GAP,
       sy-vline,
     /(91sy-uline,
     /(108sy-uline.
  FORMAT HOTSPOT OFF.

  WRITE/ sy-vline' ',
           sy-vline'Cli',
           sy-vline'User        ',
           sy-vline'First Name     ',
           sy-vline'Last Name      ',
           sy-vline'Department          ',
           sy-vline'Telephone           ',
           sy-vline,
         /(108sy-uline.
  FORMAT COLOR OFF.
ENDFORM.                    " DISPLAY_MENU

*&---------------------------------------------------------------------*
*&      Form  TRANSFER_SELECTION
*&---------------------------------------------------------------------*
FORM transfer_selection.
  DO.
    READ LINE sy-index FIELD VALUE t_user-selection.
    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
    MODIFY t_user TRANSPORTING selection
           WHERE counter t_user-counter.
  ENDDO.
  CLEAR t_user.
ENDFORM.                    " TRANSFER_SELECTION

*&---------------------------------------------------------------------*
*&      Form  POPUP_MSG
*&---------------------------------------------------------------------*
FORM popup_msg.
  DATAl_msg      LIKE sm04dic-popupmsg VALUE 'Experimental Message',
        l_len      TYPE i,
        l_ret      TYPE c.

  LOOP AT t_user WHERE selection 'X'.
    PERFORM get_message CHANGING l_msg l_ret.
    EXIT.
  ENDLOOP.
  IF l_ret 'A'.            "User cancelled the message
    EXIT.
  ENDIF.
*   Get the message text
  l_len STRLENl_msg ).
  LOOP AT t_user WHERE selection '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 'I' NUMBER '315' WITH
          'No user selected!'.
    EXIT.
  ENDIF.
ENDFORM.                    " POPUP_MSG
*&---------------------------------------------------------------------*
*&      Form  GET_MESSAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_L_MSG  text                                                *
*----------------------------------------------------------------------*
FORM get_message CHANGING p_l_msg LIKE sm04dic-popupmsg
                         p_returncode TYPE c.
  DATABEGIN OF fields OCCURS 1.
          INCLUDE STRUCTURE sval.
  DATAEND OF fields,
        returncode TYPE c.

  fields-tabname 'SM04DIC'.
  fields-fieldname 'POPUPMSG'.
  fields-fieldtext 'Message :'.
  CONCATENATE ' - Msg from' sy-uname '.' INTO fields-value SEPARATED
          BY ' '.
  APPEND fields.

  CALL FUNCTION 'POPUP_GET_VALUES'
    EXPORTING
      popup_title 'Supply the popup 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.

Yorumlar

Bu blogdaki popüler yayınlar

Transaction Code assignment for Query created in SQVI - SQVI Raporu Tcode Bağlanması