sap tool bar control abap objects

14
General Add method Add_button_group method Set_button state method Simple example Advanced example General 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. Add method 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: Valu e Constant Meaning

Upload: api-3834175

Post on 14-Nov-2014

139 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sap Tool Bar Control Abap Objects

GeneralAdd methodAdd_button_group methodSet_button state method

Simple exampleAdvanced example

 

General

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.

Add method

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

Add_button_group method

Page 2: Sap Tool Bar Control Abap Objects

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 buttonsDATA: 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.

Set_button state method

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

Page 3: Sap Tool Bar Control Abap Objects

* others = 3 .

Simple example

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.

Page 4: Sap Tool Bar Control Abap Objects

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.

Page 5: Sap Tool Bar Control Abap Objects

* 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

Advanced example

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

Page 6: Sap Tool Bar Control Abap Objects

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,

Page 7: Sap Tool Bar Control Abap Objects

* 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 = ' '

Page 8: Sap Tool Bar Control Abap Objects

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

Page 9: Sap Tool Bar Control Abap Objects

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

Page 10: Sap Tool Bar Control Abap Objects

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.

Page 11: Sap Tool Bar Control Abap Objects

* 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'

Page 12: Sap Tool Bar Control Abap Objects

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