zoukankan      html  css  js  c++  java
  • ABAPHow to use Toolbar control(SAP样例摘抄)

     
    The SAP Toolbar control
     
    General
    Add method

    Add_button_group method
    Set_button state method
    Simple example

    Advanced example
    See also Set up event handling for controls for a general example of event handling
    Note: To get a list of all icons, use program SHOWICON.
    Adds a new button to the toolbar
       CALL METHOD go_toolbar->add_button
          EXPORTING fcode       = 'EXIT'                             "Function Code for button
                    icon                       = icon_system_end         "ICON name, You can use type pool ICON
                    is_disabled          = ' '                                     "Disabled = X
                    butn_type             = gc_button_normal         "Type of button, see below
                    text                        = 'Exit'                                "Text on button
                    quickinfo              = 'Exit program'                 "Quick info
                    is_checked          = ' '.                                     "Button selected
     
    Toolbar button types used in method ADD_BUTTON:
    Value
    Constant
    Meaning
    0
    cntb_btype_button
    Button (normal)
    1
    cntb_btype_dropdown
    Pushbutton with menu
    2
    cntb_btype_menu
    Menu
    3
    cntb_btype_sep
    Seperator
    4
    cntb_btype_group
    Pushbutton group
    5
    cntb_btype_check
    Checkbox
    6
     
    Menu entry
    This method is used to add a list of buttons to the toolbar. The buttons are defined in a table of type TTB_BUTTON, and it can be filled witha button definitions using method fill_buttons_data_table of the cl_gui_toolbar class. The button group is added to the toolbar using method add_button_group of the toolbar object. 
    * 1. Declare a table for buttons
    DATA: gi_button_group            TYPE ttb_button.
    * 2. Create buttons in button table
     CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
     EXPORTING
        fcode            = 'Disable'
    *    icon            =
    *    DISABLED        =
         butn_type       = cntb_btype_group
    *    TEXT            =
    *    QUICKINFO       =
    *    CHECKED         =
     changing
        data_table       = gi_button_group
    * EXCEPTIONS
    *    CNTB_BTYPE_ERROR = 1
    *    others           = 2
    .
    CALL METHOD cl_gui_toolbar=>fill_buttons_data_table..... add more buttons to the table
    *3. Add button group to toolbar
     CALL METHOD go_toolbar->add_button_group
        EXPORTING data_table = gi_button_group.
    Used to change the state of individual buttons at runtime. If the button should be removed, use the delete_button method.
    CALL METHOD go_toolbar->set_button_state
     EXPORTING
    *    ENABLED          = 'X'
    *     CHECKED         = ' '
         fcode                 =                      "Note: This is the function code of the button that should be changed
    * EXCEPTIONS
    *    CNTL_ERROR       = 1
    *    CNTB_ERROR_FCODE = 2
    *    others           = 3
            .
    This example shows how to create a toolbar with a single Exit button, used to exit the program.
    Steps:
    • Create a screen and add a custom container named TOOLBAR_CONTAINER
    Code:
       REPORT sapmz_hf_toolbar .
       TYPE-POOLS: icon.
       CLASS cls_event_handler DEFINITION DEFERRED.
       * G L O B A L   D A T A
       DATA:
         ok_code                    LIKE sy-ucomm,
       * Reference for conatiner
         go_toolbar_container       TYPE REF TO cl_gui_custom_container,
       * Reference for SAP Toolbar
         go_toolbar                 TYPE REF TO cl_gui_toolbar,
       * Event handler
         go_event_handler           TYPE REF TO cls_event_handler.
       * G L O B A L   T A B L E S
       DATA:
       * Table for registration of events. Note that a TYPE REF
       * to cls_event_handler must be created before you can
       * reference types cntl_simple_events and cntl_simple_event.
         gi_events                  TYPE cntl_simple_events,
       * Workspace for table gi_events
         g_event                    TYPE cntl_simple_event.
       *---------------------------------------------------------------------*
       *       CLASS cls_event_handler DEFINITION
       *---------------------------------------------------------------------*
       *       ........                                                      *
       *---------------------------------------------------------------------*
       CLASS cls_event_handler DEFINITION.
         PUBLIC SECTION.
           METHODS:
             on_function_selected
               FOR EVENT function_selected OF cl_gui_toolbar
                 IMPORTING fcode,
             on_dropdown_clicked
               FOR EVENT dropdown_clicked OF cl_gui_toolbar
                 IMPORTING fcode posx posy.
       ENDCLASS.
       *---------------------------------------------------------------------*
       *       CLASS cls_event_handler IMPLEMENTATION
       *---------------------------------------------------------------------*
       *       ........                                                      *
       *---------------------------------------------------------------------*
       CLASS cls_event_handler IMPLEMENTATION.
         METHOD on_function_selected.
           CASE fcode.
             WHEN 'EXIT'.
               LEAVE TO SCREEN 0.
           ENDCASE.
         ENDMETHOD.
         METHOD on_dropdown_clicked.
    *      Not implented yet
         ENDMETHOD.
       ENDCLASS.
       START-OF-SELECTION.
         SET SCREEN '100'.
       *&---------------------------------------------------------------------*
       *&      Module STATUS_0100 OUTPUT
       *&---------------------------------------------------------------------*
       *       text
       *----------------------------------------------------------------------*
       MODULE status_0100 OUTPUT.
         IF go_toolbar_container IS INITIAL.
       * Create container
           CREATE OBJECT go_toolbar_container
             EXPORTING
               container_name = 'TOOLBAR_CONTAINER'.
       * Create toolbar
           CREATE OBJECT go_toolbar
             EXPORTING
               parent = go_toolbar_container.
       * Add a button
           CALL METHOD go_toolbar->add_button
             EXPORTING fcode       = 'EXIT'            "Function Code
                       icon        = icon_system_end   "ICON name
                       is_disabled = ' '               "Disabled = X
                       butn_type   = cntb_btype_button "Type of button
                       text        = 'Exit'            "Text on button
                       quickinfo   = 'Exit program'    "Quick info
                       is_checked = ' '.              "Button selected
       * Create event table. The event ID must be found in the
       * documentation of the specific control
           CLEAR g_event.
           REFRESH gi_events.
           g_event-eventid    = go_toolbar->m_id_function_selected.
           g_event-appl_event = 'X'.    "This is an application event
           APPEND g_event TO gi_events.
           g_event-eventid    = go_toolbar->m_id_dropdown_clicked.
           g_event-appl_event = 'X'.
           APPEND g_event TO gi_events.
       *   Use the events table to register events for the control
           CALL METHOD go_toolbar->set_registered_events
               EXPORTING
                  events = gi_events.
       * Create event handlers
           CREATE OBJECT go_event_handler.
           SET HANDLER go_event_handler->on_function_selected
             FOR go_toolbar.
           SET HANDLER go_event_handler->on_dropdown_clicked
              FOR go_toolbar.
         ENDIF.
       ENDMODULE.                 " STATUS_0100 OUTPUT
    The toolbar in this example contains an Exit button, two buttons that enables/and disables a Print button, and a Menu button with a context menu.
    The Disable/Enable buttons are of type Pushbutton group which makes them act together, so when one of the buttons are selected (Down) the other is deselected (Up).
    Note that the context menu for the Menu button, must be created as a GUI status. You can create an empty GUI sttaus of type context, and then manually add menus. The context menu instance is created with type reference to class cl_ctmenu.
    Steps:
    • Create a screen and add a custom container named TOOLBAR_CONTAINER
    • Create a GUI status of type Context and name it TOOLBAR. Note that you can not add any buttons to the GUI sttaus at design time.
    The screen:
    In this screen shot the Disable button is activated which makes the Print button disabled:
    This screenshot shows the context menu and sub menu:
    The code:
       REPORT sapmz_hf_toolbar .
       TYPE-POOLS: icon.
       CLASS cls_event_handler DEFINITION DEFERRED.
       *--- G L O B A L   D A T A
       DATA:
         ok_code                    LIKE sy-ucomm,
       * Global varables for position of context menu
         g_posx                     TYPE i,
         g_posy                     TYPE i,
       * Reference for conatiner
         go_toolbar_container       TYPE REF TO cl_gui_custom_container,
       * Reference for SAP Toolbar
         go_toolbar                 TYPE REF TO cl_gui_toolbar,
       * Event handler
         go_event_handler           TYPE REF TO cls_event_handler,
       * Context menu
         go_context_menu            TYPE REF TO cl_ctmenu.
       *--- G L O B A L   T A B L E S
       DATA:
       * Table for registration of events. Note that a TYPE REF
       * to cls_event_handler must be created before you can
       * reference types cntl_simple_events and cntl_simple_event
         gi_events                  TYPE cntl_simple_events,
       * Workspace for table gi_events
         g_event                    TYPE cntl_simple_event,
       * Table for button group
         gi_button_group            TYPE ttb_button.
    *---------------------------------------------------------------------*
       *       CLASS   CLS_EVENT_HANDLER
       *---------------------------------------------------------------------*
       * This class handles the function_selected and dropdow_clicked events
       * from the toolbar
       *---------------------------------------------------------------------*
       CLASS cls_event_handler DEFINITION.
         PUBLIC SECTION.
           METHODS:
             on_function_selected
               FOR EVENT function_selected OF cl_gui_toolbar
                 IMPORTING fcode,
             on_dropdown_clicked
               FOR EVENT dropdown_clicked OF cl_gui_toolbar
                 IMPORTING fcode posx posy.
       ENDCLASS.
       CLASS cls_event_handler IMPLEMENTATION.
         METHOD on_function_selected.
       *-- Actions for buttons and context menus
           CASE fcode.
             WHEN 'EXIT'.
               LEAVE TO SCREEN 0.
             WHEN 'ENABLE'.
       *     Enable the PRINT button
               CALL METHOD go_toolbar->set_button_state
                 EXPORTING
                   enabled = 'X'
                   fcode   = 'PRINT'.
             WHEN 'DISABLE'.
       *     Disable the PRINT button
               CALL METHOD go_toolbar->set_button_state
                 EXPORTING
                   enabled = ' '
                   fcode   = 'PRINT'.
       *     Other menus and context menus
             WHEN 'PRINT'.
               CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
                    EXPORTING
                         textline1 = 'Printing'.
             WHEN 'CONTEXT1'.
               CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
                    EXPORTING
                         textline1 = 'Menu: Do something funny'.
             WHEN 'CONTEXT2'.
               CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
                    EXPORTING
                         textline1 = 'Menu: Do something crazy'.
             WHEN 'SUB1'.
               CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
                    EXPORTING
                         textline1 = 'Submenu: Do something boring'.
             WHEN 'SUB2'.
               CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
                    EXPORTING
                         textline1 = 'Submenu: Do something good'.
           ENDCASE.
         ENDMETHOD.
         METHOD on_dropdown_clicked.
       *-- Fires when a dropdown menu is clicked. After it has been
       *-- clicked a context menu is shown beside the button.
       *   Save x and y position of button for use with context menu
           CLEAR: g_posx, g_posy.
           g_posx = posx.
           g_posy = posy.
       * Create context menu for menu button
           PERFORM create_context_menu.
         ENDMETHOD.
       ENDCLASS.
       START-OF-SELECTION.
         SET SCREEN '100'.
       *&---------------------------------------------------------------------*
      *&      Module STATUS_0100 OUTPUT
       *&---------------------------------------------------------------------*
       *       text
       *----------------------------------------------------------------------*
       MODULE status_0100 OUTPUT.
         IF go_toolbar_container IS INITIAL.
       * Create container
           CREATE OBJECT go_toolbar_container
             EXPORTING
               container_name = 'TOOLBAR_CONTAINER'.
       * Create toolbar
           CREATE OBJECT go_toolbar
             EXPORTING
               parent = go_toolbar_container.
       * Add a button to the toolbar
           PERFORM add_button.
       * Add a button group to the toolbar
           PERFORM add_button_group.
       * Create event table. Note that the event ID must be found in the
       * documentation of the specific control
           CLEAR g_event. REFRESH gi_events.
           g_event-eventid    = go_toolbar->m_id_function_selected.
           g_event-appl_event = 'X'.    "This is an application event
           APPEND g_event TO gi_events.
           CLEAR g_event.
           g_event-eventid    = go_toolbar->m_id_dropdown_clicked.
           g_event-appl_event = 'X'.
           APPEND g_event TO gi_events.
       *   Use the events table to register events for the control
           CALL METHOD go_toolbar->set_registered_events
               EXPORTING
                  events = gi_events.
       * Create event handlers
           CREATE OBJECT go_event_handler.
           SET HANDLER go_event_handler->on_function_selected
             FOR go_toolbar.
           SET HANDLER go_event_handler->on_dropdown_clicked
              FOR go_toolbar.
         ENDIF.
       ENDMODULE.                 " STATUS_0100 OUTPUT
       *&---------------------------------------------------------------------*
       *&      Form add_button
       *&---------------------------------------------------------------------*
       *  Adds one pushbutton to the toolbar
       *----------------------------------------------------------------------*
       FORM add_button.
         CALL METHOD go_toolbar->add_button
           EXPORTING fcode       = 'EXIT'            "Function Code
                     icon        = icon_system_end   "ICON name
                     is_disabled = ' '               "Disabled = X
                     butn_type   = cntb_btype_button "Type of button
                     text        = 'Exit'            "Text on button
                     quickinfo   = 'Exit program'    "Quick info
                     is_checked = ' '.              "Button selected
       ENDFORM.                    " add_button
       *&---------------------------------------------------------------------*
       *&      Form add_button_group
       *&---------------------------------------------------------------------*
       * Adds a button group to the toolbar.
       * The buttons are added to table gi_button_group, and the table is used
       * as input to the Add_button_group method. Note that method Fill_buttons
       * is used to fill the table.
       *----------------------------------------------------------------------*
       FORM add_button_group.
       * Add a seperator
         CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
           EXPORTING
             fcode            = 'SEP1'
             icon             = ' '
             butn_type        = cntb_btype_sep
           CHANGING
             data_table       = gi_button_group.
         .
       * Add an Enable button
         CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
           EXPORTING
             fcode            = 'ENABLE'
             icon             = ' '
             butn_type        = cntb_btype_group
             text             = 'Enable'
             quickinfo        = 'Enable a print button'
            checked            = 'X'
           CHANGING
             data_table       = gi_button_group.
         .
       * Add a Disable button
         CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
           EXPORTING
             fcode            = 'DISABLE'
             icon             = ''
             butn_type        = cntb_btype_group
             text             = 'Disable'
             quickinfo        = 'Disable print button'
             checked          = ' '
           CHANGING
             data_table       = gi_button_group.
       * Add a seperator
         CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
           EXPORTING
             fcode            = 'SEP2'
             icon             = ' '
             butn_type        = cntb_btype_sep
           CHANGING
             data_table       = gi_button_group.
       * Add print button
         CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
           EXPORTING
             fcode              = 'PRINT'
             icon               = icon_print
             butn_type          = cntb_btype_button
             text               = 'Print'
             quickinfo          = 'Print something'
           CHANGING
             data_table         = gi_button_group.
       * Add a menu button
         CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
           EXPORTING
             fcode              = 'MENU'
             icon               = ' '
             butn_type          = cntb_btype_menu
             text               = 'Menu'
             quickinfo          = 'A menu buttonz'
           CHANGING
             data_table         = gi_button_group.
       * Add button group to toolbar
         CALL METHOD go_toolbar->add_button_group
           EXPORTING data_table = gi_button_group.
       ENDFORM.                    " add_button_group
       *&---------------------------------------------------------------------*
       *&      Form create_context_menu
       *&---------------------------------------------------------------------*
       * This form creates a context menu and a submenu for the menu button.
       *----------------------------------------------------------------------*
       FORM create_context_menu.
         DATA: lo_submenu TYPE REF TO cl_ctmenu.
         IF go_context_menu IS INITIAL.
       *-- Create context menu
           CREATE OBJECT go_context_menu.
           CALL METHOD go_context_menu->add_function
                EXPORTING
                    fcode = 'CONTEXT1'
                    text = 'Do something funny'.
           CALL METHOD go_context_menu->add_function
                EXPORTING
                    fcode = 'CONTEXT2'
                    text = 'Do something crazy'.
           CALL METHOD go_context_menu->add_separator.
       *   Create sub menu for the context menu
           CREATE OBJECT lo_submenu.
           CALL METHOD lo_submenu->add_function
                  EXPORTING
                      fcode = 'SUB1'
                      text = 'Do something boring'.
           CALL METHOD lo_submenu->add_function
                  EXPORTING
                      fcode = 'SUB2'
                      text = 'Do something good'.
       *-- Add sub menu to the context menu
           CALL METHOD go_context_menu->add_submenu
              EXPORTING
                  menu = lo_submenu
                  text = 'Do something else.....'.
         ENDIF.
       * Link menu to toolbar button. To position the context menu the
       * x and y positions of the menu button is used.
       * These values was retrieved in the On_dropdown_clicked
       * method of cls_event_handler
         CALL METHOD go_toolbar->track_context_menu
               EXPORTING
                   context_menu = go_context_menu
                   posx         = g_posx
                   posy         = g_posy.
       ENDFORM.                    " create_context_menu
     
  • 相关阅读:
    oracle中的exists 和not exists 用法详解
    再次谈谈easyui datagrid 的数据加载
    oracle之trunc(sysdate)
    小菜学习设计模式(五)—控制反转(Ioc)
    vim实用技巧
    003_Linux的Cgroup<实例详解>
    systemd在各个linux发行版的普及
    (部署新java程序,程序报错,需copy的一个包)——java使用siger 获取服务器硬件信息
    中国科学院国家授时中心
    Linux时间同步配置方法
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157296.html
Copyright © 2011-2022 走看看