技术开发 频道

abap function

    【IT168 信息化

    REPORT Z_SEND_POPUP NO STANDARD PAGE HEADING.

    include <icon>.

    * Global data decleration 
    data: itab_uinfo like standard table of uinfo with header line. 
    data: itab_send like standard table of uinfo with header line. 
    data: box(1) TYPE c, 
    lines TYPE i, 
    w_text1 like sm04dic-popupmsg, 
    w_text2 like sm04dic-popupmsg, 
    message like SM04DIC-POPUPMSG.

    start-of-selection.

    set pf-status 'LIST'.

    * Text which should be send to other users 
    perform show_input_message.

    * First, show all User which are in the system...
perform show_loged_on_users.

    lines = sy-linno - 1.

    END-OF-SELECTION.

    AT USER-COMMAND.

    case sy-ucomm. 
    when 'EXEC'.

    * Determine Text 
    read line 2 field value w_text1. 
    w_text2 = w_text1.

    DO lines TIMES. 
    clear box. 
    READ LINE sy-index FIELD VALUE box. 
    IF box = 'X'. 
    itab_send-bname = itab_uinfo-bname. 
    itab_send-mandt = itab_uinfo-mandt. 
    append itab_send.

    endif. 
    enddo. 
    * Finally send message.... 
    perform send_message.

    when 'AUFF'.

    * Text which should be send to other users 
    perform show_input_message.

    * First, show all User which are in the system... 
    perform show_loged_on_users.

    lines = sy-linno - 1. 
    sy-lsind = sy-lsind - 1. 
    when others. 
    endcase.

    *&---------------------------------------------------------------------* 
    *& Form show_loged_on_users 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM show_loged_on_users.

    * Get all loged on users 
    perform get_loged_on_users.

    * Combine to only GUI - Users 
    perform combine_users.

    * Show Users 
    perform show_users_in_list.

    ENDFORM. " show_loged_on_users 
    *&---------------------------------------------------------------------* 
    *& Form get_loged_on_users 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM get_loged_on_users.

    data: itab_RFCHOSTS like standard table of RFCHOSTS with header line.

    CALL FUNCTION 'RFC_GET_LOCAL_DESTINATIONS' 
    TABLES 
    LOCALDEST = itab_RFCHOSTS 
    EXCEPTIONS 
    NOT_AVAILABLE = 1 
    OTHERS = 2. 
    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_RFCHOSTS.

    CALL FUNCTION 'THUSRINFO' Destination itab_rfchosts 
    TABLES 
    USR_TABL = itab_UINFO 
    EXCEPTIONS communication_failure = 17.

    endloop.

    ENDFORM. " get_loged_on_users 
    *&---------------------------------------------------------------------* 
    *& Form combine_users 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM combine_users.

    data: itab_loc_uinfo like standard table of uinfo with header line.

    itab_loc_uinfo[] = itab_uinfo[].

    clear itab_uinfo. refresh itab_uinfo.

    loop at itab_loc_uinfo. 
    if itab_loc_uinfo-stat = '2' and "GUI - User 
    itab_loc_uinfo-bname ne space. 
    read table itab_uinfo with key mandt = itab_loc_uinfo-mandt 
    bname = itab_loc_uinfo-bname. 
    if sy-subrc ne 0. 
    itab_uinfo = itab_loc_uinfo. 
    append itab_uinfo. 
    endif. 
    endif. 
    endloop.

    * finaly sort... 
    sort itab_uinfo by bname.

    ENDFORM. " combine_users 
    *&---------------------------------------------------------------------* 
    *& Form show_users_in_list 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM show_users_in_list.

    data: w_color type c,
w_BAPIBNAME like BAPIBNAME-BAPIBNAME,
w_BAPIADDR3 like BAPIADDR3.

    data: itab_return like standard table of BAPIRET2.

    loop at itab_uinfo. 
    * First, Color Handling.... 
    if w_color eq space. 
    format color col_heading. 
    w_color = 'X'. 
    else. 
    format color col_normal. 
    w_color = space. 
    endif.

    * Get Additional Information to the user..

    w_BAPIBNAME = itab_uinfo-bname.

    CALL FUNCTION 'BAPI_USER_GET_DETAIL' 
    EXPORTING 
    USERNAME = w_BAPIBNAME 
    IMPORTING 
    ADDRESS = w_BAPIADDR3 
    TABLES 
    RETURN = itab_return.

    write : / 
    ICON_HR_POSITION as icon, 
    box as checkbox, 
    itab_uinfo-mandt, itab_uinfo-bname, 
    w_bapiaddr3-FULLNAME, at sy-linsz ' '. 
    Hide: box, itab_uinfo-mandt, itab_uinfo-bname.

    endloop.

    ENDFORM. " show_users_in_list 
    *&---------------------------------------------------------------------* 
    *& Form show_input_message 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM show_input_message.

    w_text1 = ' Enter text here'.

    format color col_negative. 
    WRITE : ICON_BW_RA_SETTING_ACTIVE as icon, 
    'Please fill in the text for Sending:', 
    ICON_BW_RA_SETTING_ACTIVE as icon, 
    at sy-linsz ' ' 
    . 
    WRITE / w_text1 INPUT ON.

    ULINE.

    ENDFORM. " show_input_message 
    *&---------------------------------------------------------------------* 
    *& Form send_message 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM send_message.

    data: w_name like sy-uname, 
    w_mandt like sy-mandt, 
    w_icon1 like ICON-NAME, 
    w_icon2 like ICON-NAME, 
    w_icon3 like icon-name, 
    w_success type c, 
    w_succt(100) type c.

    concatenate sy-uname ':' w_text2 into message.

    loop at itab_send. 
    w_name = itab_send-bname. 
    w_mandt = itab_send-mandt.

    CALL FUNCTION 'TH_POPUP' 
    EXPORTING 
    CLIENT = w_mandt 
    USER = w_name 
    MESSAGE = message 
    * MESSAGE_LEN = 0 
    * CUT_BLANKS = ' ' 
    EXCEPTIONS 
    USER_NOT_FOUND = 1 
    OTHERS = 2 
    . 
    IF SY-SUBRC <> 0. 
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
    * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    else.

    w_success = 'X'.

    endif.

    endloop.

    refresh itab_send. 
    clear itab_send.

    if w_success ne space.

    w_icon1 = 'ICON_MANAGER'. 
    w_icon2 = 'ICON_PM_INSERT'. 
    w_icon3 = 'ICON_MESSAGE_INFORMATION_SMALL'.

    concatenate sy-uname 
    ':Your message has be send to the selected user(s)' 
    into w_succt.

    CALL FUNCTION 'POPUP_TO_CONFIRM' 
    EXPORTING 
    TITLEBAR = 'Send Message to User' 
    TEXT_QUESTION = w_succt 
    TEXT_BUTTON_1 = 'Yes' 
    ICON_BUTTON_1 = w_icon1 
    TEXT_BUTTON_2 = 'Yuhuu' 
    ICON_BUTTON_2 = w_icon2 
    DISPLAY_CANCEL_BUTTON = ' ' 
    POPUP_TYPE = w_icon3 
    * IMPORTING 
    * ANSWER = 
    * TABLES 
    * PARAMETER = 
    EXCEPTIONS 
    TEXT_NOT_FOUND = 1 
    OTHERS = 2 
    . 
    IF SY-SUBRC <> 0. 
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
    * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
    ENDIF. 
    endif. 
    ENDFORM. " send_message
 

0
相关文章