zoukankan      html  css  js  c++  java
  • ABAP Message Popup

     

    REPORT ZNBHTEST009 NO STANDARD PAGE HEADING.
    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 0 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(1) TYPE C,
                L_TEST(200)     TYPE C.

    L_OPCODE = 2.
    CALL 'ThUsrInfo' ID 'OPCODE' FIELD L_OPCODE
        ID 'TAB' FIELD USR_TABL-*SYS*.

    CLEAR T_USER. REFRESH 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 = 2.
        IF SY-CUCOL < 19.
            T_USER-SELECTION = 'X'.
            MODIFY T_USER TRANSPORTING SELECTION WHERE SELECTION = ''.
            PERFORM DISPLAY_LIST.
        ELSEIF SY-CUCOL < 36.
            CLEAR T_USER-SELECTION.
            MODIFY T_USER TRANSPORTING SELECTION WHERE SELECTION = 'X'.
            PERFORM DISPLAY_LIST.
        ELSEIF SY-CUCOL < 50.
            PERFORM TRANSFER_SELECTION.
            PERFORM POPUP_MSG.
        ELSEIF SY-CUCOL < 67.
            PERFORM TRANSFER_SELECTION.
            SORT T_USER BY NAME_LAST.
            PERFORM DISPLAY_LIST.
        ELSEIF SY-CUCOL < 81.
            PERFORM TRANSFER_SELECTION.
            SORT T_USER BY NAME_FIRST.
            PERFORM DISPLAY_LIST.
        ELSEIF SY-CUCOL < 93.
            PERFORM TRANSFER_SELECTION.
            SORT T_USER BY MANDT.
            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-VLINE, T_USER-SELECTION AS CHECKBOX,
                 SY-VLINE, T_USER-MANDT,
                 SY-VLINE, T_USER-BNAME,
                 SY-VLINE, T_USER-NAME_FIRST(15),
                 SY-VLINE, T_USER-NAME_LAST(15),
                 SY-VLINE, T_USER-DEPARTMENT(20),
                 SY-VLINE, T_USER-TEL_NUMBER(20), SY-VLINE.
        HIDE: T_USER-COUNTER, T_USER-SELECTION.
    ENDLOOP.
    FORMAT COLOR OFF.
    WRITE: /(108) SY-ULINE.
    ENDFORM.                    " DISPLAY_LIST

    *&---------------------------------------------------------------------*
    *&      Form  DISPLAY_MENU
    *&---------------------------------------------------------------------*
    FORM DISPLAY_MENU.
        FORMAT COLOR COL_HEADING HOTSPOT.
        WRITE:   (91) SY-ULINE,
           / SY-VLINE NO-GAP, (4) ICON_SELECT_ALL NO-GAP,    'Select All',
             SY-VLINE NO-GAP, (4) ICON_DESELECT_ALL NO-GAP,  'Deselect All',
             SY-VLINE NO-GAP, (4) ICON_SHORT_MESSAGE NO-GAP, 'Send Popup',
             SY-VLINE NO-GAP, (4) ICON_SORT_UP NO-GAP, 'Last Name' NO-GAP,
             SY-VLINE NO-GAP, (4) ICON_SORT_UP NO-GAP, 'First Name' NO-GAP,
             SY-VLINE NO-GAP, (4) ICON_SORT_UP NO-GAP, 'Client   ' NO-GAP,
             SY-VLINE,
           /(91) SY-ULINE,
           /(108) SY-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,
              /(108) SY-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.
        DATA: L_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 = STRLEN( L_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 'E' 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.
    DATA: BEGIN OF FIELDS OCCURS 1.
            INCLUDE STRUCTURE SVAL.
    DATA: END 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.                    " GET_MESSAGE
     

  • 相关阅读:
    TOJ3650 Legal or Not
    Fork/Join框架之双端队列
    [每日一题] OCP1z0-047 :2013-08-26 TIMESTAMP WITH LOCAL TIME ZONE....................112
    [C++基础]C++中静态成员函数如何访问非静态成员
    HDU 1504 Disk Tree
    Android Checkbox Example
    STM32F103定时器输出PWM波控制直流电机
    SICP 习题 (1.7) 解题总结
    Linux磁盘及文件系统管理 4---- Linux文件系统挂载管理
    推荐《Linux 多线程服务器端编程》
  • 原文地址:https://www.cnblogs.com/godwar/p/1217115.html
Copyright © 2011-2022 走看看