08-24-2011 7:48 PM
Hello ladies and gentlemen,
I have a question and am not sure if the thing I want to do is even possible. Please don`t laugh.
ALV has "ordinary buttons" as well as some more fancy ones - like those which immediately open a "list box" of actions.
I would lik to have such a button on my status bar. I don`t remember any transaction/ report where one could see such thing, that`s why I think that might not be even possible.
My program changes ALV grids during the processing and buttons which are relevant all the time are of course on the status bar and those, which are "stage" relevant are on the specific grid status bar. That`s why I need something on the status and if that could be fancy, it would be super cool. Any suggestions?
Thanks,
cheers Otto
08-24-2011 7:58 PM
Hi
Do you mean something like the list shown by the right button of the mouse?
Max
08-24-2011 7:58 PM
Hi
Do you mean something like the list shown by the right button of the mouse?
Max
08-24-2011 8:08 PM
Not a context menu, Max:)) I can search and these are all over the place.
But sometimes ALV has these fancy buttons: its a button which is little wider with an arrow pointing down on the right side. If you click the button something like a context menu opens up.
You can see it in ALV for example when you want to export the content to the file or send it to Excel in-place.
Example: transaction SU21, there is printer icon of this type and a create button with this "context menu". Or an example could be that GOS thing... hmmm... that mean that if I find that GOS thing, I could take a look how it is done:))
Any idea where to begin?
Thanks for your time and effort
Otto
08-24-2011 8:21 PM
Uhm
Perhasp something like it's explained in program demo BCALV_GRID_07
Max
08-24-2011 8:39 PM
I think we have a mutual understanding about what I want to have. But you don`t understand where.
I don`t want that on the ALV bar, I want that on status GUI bar.
I need that to be "available for all process steps" and so above the changing grids.
Otto
08-24-2011 9:14 PM
Ok
I don't think it's possible to have on status gui, I've never seen something like that, because there's the menu bar (I know there's no icon).
Max
08-25-2011 7:01 AM
Hi
I think (perhaps it's just your opinion too) the only solution is to add a new button like GOS
I post my first investigation;
DATA: MY_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR.
DATA: MY_CONTAINER TYPE REF TO CL_GUI_GOS_CONTAINER.
DATA: LP_ICON TYPE ICONNAME.
DATA: LP_QUICK TYPE ICONQUICK.
DATA: LT_EVENT TYPE CNTL_SIMPLE_EVENTS.
DATA LS_EVENT TYPE CNTL_SIMPLE_EVENT.
CLASS LCL_HANDLE_EVENT DEFINITION DEFERRED.
DATA TOOL_EVENT TYPE REF TO LCL_HANDLE_EVENT.
*
CLASS LCL_HANDLE_EVENT DEFINITION.
PUBLIC SECTION.
METHODS: ON_DROPDOWN_CLICKED FOR EVENT DROPDOWN_CLICKED
OF CL_GUI_TOOLBAR.
METHODS: ON_FUNCTION_SELECTED FOR EVENT FUNCTION_SELECTED
OF CL_GUI_TOOLBAR.
ENDCLASS. "lcl_handle_event DEFINITION
*
CLASS LCL_HANDLE_EVENT IMPLEMENTATION.
METHOD ON_DROPDOWN_CLICKED.
DATA LO_MENU TYPE REF TO CL_CTMENU.
* Dysplay the context menu: in progress
ENDMETHOD. "ON_DROPDOWN_CLICKED
METHOD ON_FUNCTION_SELECTED.
ENDMETHOD. "ON_FUNCTION_SELECTED
ENDCLASS. "lcl_handle_event IMPLEMENTATION
START-OF-SELECTION.
CREATE OBJECT MY_CONTAINER
EXPORTING
WIDTH = 58
NO_AUTODEF_PROGID_DYNNR = 'X'
EXCEPTIONS
OTHERS = 5.
CHECK SY-SUBRC = 0.
CREATE OBJECT MY_TOOLBAR
EXPORTING
PARENT = MY_CONTAINER.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
NAME = 'ICON_WS_PLANE'
ADD_STDINF = SPACE
IMPORTING
RESULT = LP_ICON
EXCEPTIONS
OTHERS = 0.
LP_QUICK = 'New Menu'.
CALL METHOD MY_TOOLBAR->ADD_BUTTON
EXPORTING
FCODE = 'MY_MENU'
ICON = LP_ICON
BUTN_TYPE = 1
QUICKINFO = LP_QUICK.
CLEAR LT_EVENT.
LS_EVENT-EVENTID = CL_GUI_TOOLBAR=>M_ID_FUNCTION_SELECTED.
LS_EVENT-APPL_EVENT = SPACE.
APPEND LS_EVENT TO LT_EVENT.
LS_EVENT-EVENTID = CL_GUI_TOOLBAR=>M_ID_DROPDOWN_CLICKED.
LS_EVENT-APPL_EVENT = SPACE.
APPEND LS_EVENT TO LT_EVENT.
CALL METHOD MY_TOOLBAR->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = LT_EVENT.
CREATE OBJECT TOOL_EVENT.
SET HANDLER TOOL_EVENT->ON_DROPDOWN_CLICKED FOR MY_TOOLBAR.
WRITE 'Hello'.
The work is in progress of course, but let me know if you're interested about that, because I like it and perhaps we can exchange some views, some idea
Max
08-25-2011 1:52 PM
Second step:
DATA: MY_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR.
DATA: MY_CONTAINER TYPE REF TO CL_GUI_GOS_CONTAINER.
DATA: LP_ICON TYPE ICONNAME.
DATA: LP_QUICK TYPE ICONQUICK.
DATA: LT_EVENT TYPE CNTL_SIMPLE_EVENTS.
DATA LS_EVENT TYPE CNTL_SIMPLE_EVENT.
CLASS LCL_HANDLE_EVENT DEFINITION DEFERRED.
DATA TOOL_EVENT TYPE REF TO LCL_HANDLE_EVENT.
*
CLASS LCL_HANDLE_EVENT DEFINITION.
PUBLIC SECTION.
METHODS: ON_DROPDOWN_CLICKED FOR EVENT DROPDOWN_CLICKED
OF CL_GUI_TOOLBAR
IMPORTING FCODE POSX POSY.
METHODS: ON_FUNCTION_SELECTED FOR EVENT FUNCTION_SELECTED
OF CL_GUI_TOOLBAR.
ENDCLASS. "lcl_handle_event DEFINITION
*
CLASS LCL_HANDLE_EVENT IMPLEMENTATION.
METHOD ON_DROPDOWN_CLICKED.
DATA: MY_MENU TYPE REF TO CL_CTMENU,
SUB_MENU TYPE REF TO CL_CTMENU.
CREATE OBJECT MY_MENU.
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION1'
TEXT = 'Do something...1' ).
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION2'
TEXT = 'Do something...2' ).
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION3'
TEXT = 'Do something...3' ).
* Separator
MY_MENU->ADD_SEPARATOR( ).
* Create sub menu
CREATE OBJECT SUB_MENU.
SUB_MENU->ADD_FUNCTION( FCODE = 'SUB1'
TEXT = 'Do something...1' ).
SUB_MENU->ADD_FUNCTION( FCODE = 'SUB2'
TEXT = 'Do something...2' ).
*-- Add sub menu to the context menu
MY_MENU->ADD_SUBMENU( MENU = SUB_MENU
TEXT = 'Do something else.....' ).
CALL METHOD MY_TOOLBAR->TRACK_CONTEXT_MENU
EXPORTING
CONTEXT_MENU = MY_MENU
POSX = POSX
POSY = POSY.
ENDMETHOD. "ON_DROPDOWN_CLICKED
METHOD ON_FUNCTION_SELECTED.
ENDMETHOD. "ON_FUNCTION_SELECTED
ENDCLASS. "lcl_handle_event IMPLEMENTATION
START-OF-SELECTION.
CREATE OBJECT MY_CONTAINER
EXPORTING
WIDTH = 58
NO_AUTODEF_PROGID_DYNNR = 'X'
EXCEPTIONS
OTHERS = 5.
CHECK SY-SUBRC = 0.
CREATE OBJECT MY_TOOLBAR
EXPORTING
PARENT = MY_CONTAINER.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
NAME = 'ICON_WS_PLANE'
ADD_STDINF = SPACE
IMPORTING
RESULT = LP_ICON
EXCEPTIONS
OTHERS = 0.
LP_QUICK = 'New Menu'.
CALL METHOD MY_TOOLBAR->ADD_BUTTON
EXPORTING
FCODE = 'MY_MENU'
ICON = LP_ICON
BUTN_TYPE = 1
QUICKINFO = LP_QUICK.
CLEAR LT_EVENT.
LS_EVENT-EVENTID = CL_GUI_TOOLBAR=>M_ID_FUNCTION_SELECTED.
LS_EVENT-APPL_EVENT = SPACE.
APPEND LS_EVENT TO LT_EVENT.
LS_EVENT-EVENTID = CL_GUI_TOOLBAR=>M_ID_DROPDOWN_CLICKED.
LS_EVENT-APPL_EVENT = SPACE.
APPEND LS_EVENT TO LT_EVENT.
CALL METHOD MY_TOOLBAR->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = LT_EVENT.
CREATE OBJECT TOOL_EVENT.
SET HANDLER TOOL_EVENT->ON_DROPDOWN_CLICKED FOR MY_TOOLBAR.
WRITE 'Hello'.
.
Max
08-25-2011 3:03 PM
Third step
DATA: MY_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR.
DATA: MY_CONTAINER TYPE REF TO CL_GUI_GOS_CONTAINER.
DATA: LP_ICON TYPE ICONNAME.
DATA: LP_QUICK TYPE ICONQUICK.
DATA: LT_EVENT TYPE CNTL_SIMPLE_EVENTS.
DATA LS_EVENT TYPE CNTL_SIMPLE_EVENT.
CLASS LCL_HANDLE_EVENT DEFINITION DEFERRED.
DATA TOOL_EVENT TYPE REF TO LCL_HANDLE_EVENT.
*
CLASS LCL_HANDLE_EVENT DEFINITION.
PUBLIC SECTION.
METHODS: ON_DROPDOWN_CLICKED FOR EVENT DROPDOWN_CLICKED
OF CL_GUI_TOOLBAR
IMPORTING FCODE POSX POSY.
METHODS: ON_FUNCTION_SELECTED FOR EVENT FUNCTION_SELECTED
OF CL_GUI_TOOLBAR
IMPORTING FCODE.
ENDCLASS. "lcl_handle_event DEFINITION
*
CLASS LCL_HANDLE_EVENT IMPLEMENTATION.
METHOD ON_DROPDOWN_CLICKED.
DATA: MY_MENU TYPE REF TO CL_CTMENU,
SUB_MENU TYPE REF TO CL_CTMENU.
CHECK FCODE = 'MY_MENU'.
CREATE OBJECT MY_MENU.
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION1'
TEXT = 'Do something...1' ).
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION2'
TEXT = 'Do something...2' ).
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION3'
TEXT = 'Do something...3' ).
* Separator
MY_MENU->ADD_SEPARATOR( ).
* Create sub menu
CREATE OBJECT SUB_MENU.
SUB_MENU->ADD_FUNCTION( FCODE = 'SUB1'
TEXT = 'Do something...1' ).
SUB_MENU->ADD_FUNCTION( FCODE = 'SUB2'
TEXT = 'Do something...2' ).
*-- Add sub menu to the context menu
MY_MENU->ADD_SUBMENU( MENU = SUB_MENU
TEXT = 'Do something else.....' ).
CALL METHOD MY_TOOLBAR->TRACK_CONTEXT_MENU
EXPORTING
CONTEXT_MENU = MY_MENU
POSX = POSX
POSY = POSY.
ENDMETHOD. "ON_DROPDOWN_CLICKED
METHOD ON_FUNCTION_SELECTED.
CASE FCODE.
WHEN 'MY_MENU'. MESSAGE I208(00) WITH 'Press on Icon'.
WHEN 'OPTION1'. MESSAGE I208(00) WITH 'Option 1'.
WHEN 'OPTION2'. MESSAGE I208(00) WITH 'Option 2'.
WHEN 'OPTION3'. MESSAGE I208(00) WITH 'Option 3'.
WHEN 'SUB1'. MESSAGE I208(00) WITH 'Sub Option 1'.
WHEN 'SUB2'. MESSAGE I208(00) WITH 'Sub Option 2'.
ENDCASE.
ENDMETHOD. "ON_FUNCTION_SELECTED
ENDCLASS. "lcl_handle_event IMPLEMENTATION
START-OF-SELECTION.
CREATE OBJECT MY_CONTAINER
EXPORTING
WIDTH = 58
NO_AUTODEF_PROGID_DYNNR = 'X'
EXCEPTIONS
OTHERS = 5.
CHECK SY-SUBRC = 0.
CREATE OBJECT MY_TOOLBAR
EXPORTING
PARENT = MY_CONTAINER.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
NAME = 'ICON_WS_PLANE'
ADD_STDINF = SPACE
IMPORTING
RESULT = LP_ICON
EXCEPTIONS
OTHERS = 0.
LP_QUICK = 'New Menu'.
CALL METHOD MY_TOOLBAR->ADD_BUTTON
EXPORTING
FCODE = 'MY_MENU'
ICON = LP_ICON
BUTN_TYPE = 1
QUICKINFO = LP_QUICK.
CLEAR LT_EVENT.
LS_EVENT-EVENTID = CL_GUI_TOOLBAR=>M_ID_FUNCTION_SELECTED.
LS_EVENT-APPL_EVENT = SPACE.
APPEND LS_EVENT TO LT_EVENT.
LS_EVENT-EVENTID = CL_GUI_TOOLBAR=>M_ID_DROPDOWN_CLICKED.
LS_EVENT-APPL_EVENT = SPACE.
APPEND LS_EVENT TO LT_EVENT.
CALL METHOD MY_TOOLBAR->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = LT_EVENT.
CREATE OBJECT TOOL_EVENT.
SET HANDLER TOOL_EVENT->ON_DROPDOWN_CLICKED FOR MY_TOOLBAR.
SET HANDLER TOOL_EVENT->ON_FUNCTION_SELECTED FOR MY_TOOLBAR.
WRITE 'Hello'.
Max
08-25-2011 6:16 PM
and 4
DATA: MY_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR.
DATA: MY_CONTAINER TYPE REF TO CL_GUI_GOS_CONTAINER.
DATA: LP_ICON TYPE ICONNAME.
DATA: LP_QUICK TYPE ICONQUICK.
DATA: LT_EVENT TYPE CNTL_SIMPLE_EVENTS.
DATA LS_EVENT TYPE CNTL_SIMPLE_EVENT.
CLASS LCL_HANDLE_EVENT DEFINITION DEFERRED.
DATA TOOL_EVENT TYPE REF TO LCL_HANDLE_EVENT.
*
CLASS LCL_HANDLE_EVENT DEFINITION.
PUBLIC SECTION.
METHODS: ON_DROPDOWN_CLICKED FOR EVENT DROPDOWN_CLICKED
OF CL_GUI_TOOLBAR
IMPORTING FCODE POSX POSY.
METHODS: ON_FUNCTION_SELECTED FOR EVENT FUNCTION_SELECTED
OF CL_GUI_TOOLBAR
IMPORTING FCODE.
ENDCLASS. "lcl_handle_event DEFINITION
*
CLASS LCL_HANDLE_EVENT IMPLEMENTATION.
METHOD ON_DROPDOWN_CLICKED.
DATA: MY_MENU TYPE REF TO CL_CTMENU,
SUB_MENU TYPE REF TO CL_CTMENU.
CREATE OBJECT MY_MENU.
CASE FCODE.
WHEN 'MY_MENU'.
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION1'
TEXT = 'Do something...1' ).
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION2'
TEXT = 'Do something...2' ).
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION3'
TEXT = 'Do something...3' ).
* Separator
MY_MENU->ADD_SEPARATOR( ).
* Create sub menu
CREATE OBJECT SUB_MENU.
SUB_MENU->ADD_FUNCTION( FCODE = 'SUB1'
TEXT = 'Do something...1' ).
SUB_MENU->ADD_FUNCTION( FCODE = 'SUB2'
TEXT = 'Do something...2' ).
*-- Add sub menu to the context menu
MY_MENU->ADD_SUBMENU( MENU = SUB_MENU
TEXT = 'Do something else.....' ).
WHEN 'MY_MENU2'.
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION21'
TEXT = 'Do something crazy' ).
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION22'
TEXT = 'Do something funny' ).
ENDCASE.
CALL METHOD MY_TOOLBAR->TRACK_CONTEXT_MENU
EXPORTING
CONTEXT_MENU = MY_MENU
POSX = POSX
POSY = POSY.
ENDMETHOD. "ON_DROPDOWN_CLICKED
METHOD ON_FUNCTION_SELECTED.
CASE FCODE.
WHEN 'MY_MENU'. MESSAGE I208(00) WITH 'Press on Icon Plane'.
WHEN 'MY_MENU2'. MESSAGE I208(00) WITH 'Press on Icon Truck'.
WHEN 'OPTION1'. MESSAGE I208(00) WITH 'Option 1'.
WHEN 'OPTION2'. MESSAGE I208(00) WITH 'Option 2'.
WHEN 'OPTION3'. MESSAGE I208(00) WITH 'Option 3'.
WHEN 'SUB1'. MESSAGE I208(00) WITH 'Sub Option 1'.
WHEN 'SUB2'. MESSAGE I208(00) WITH 'Sub Option 2'.
WHEN 'OPTION21'. MESSAGE I208(00) WITH 'Option 2/1'.
WHEN 'OPTION22'. MESSAGE I208(00) WITH 'Option 2/2'.
ENDCASE.
ENDMETHOD. "ON_FUNCTION_SELECTED
ENDCLASS. "lcl_handle_event IMPLEMENTATION
START-OF-SELECTION.
CREATE OBJECT MY_CONTAINER
EXPORTING
WIDTH = 120
NO_AUTODEF_PROGID_DYNNR = 'X'
EXCEPTIONS
OTHERS = 5.
CHECK SY-SUBRC = 0.
CREATE OBJECT MY_TOOLBAR
EXPORTING
PARENT = MY_CONTAINER.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
NAME = 'ICON_WS_PLANE'
ADD_STDINF = SPACE
IMPORTING
RESULT = LP_ICON
EXCEPTIONS
OTHERS = 0.
LP_QUICK = 'New Menu'.
CALL METHOD MY_TOOLBAR->ADD_BUTTON
EXPORTING
FCODE = 'MY_MENU'
ICON = LP_ICON
BUTN_TYPE = 1
QUICKINFO = LP_QUICK.
CLEAR LP_ICON.
LP_QUICK = 'New Menu 2'.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
NAME = 'ICON_TRANSPORT'
ADD_STDINF = SPACE
IMPORTING
RESULT = LP_ICON
EXCEPTIONS
OTHERS = 0.
CALL METHOD MY_TOOLBAR->ADD_BUTTON
EXPORTING
FCODE = 'MY_MENU2'
ICON = LP_ICON
BUTN_TYPE = 1
QUICKINFO = LP_QUICK.
CLEAR LT_EVENT.
LS_EVENT-EVENTID = CL_GUI_TOOLBAR=>M_ID_FUNCTION_SELECTED.
LS_EVENT-APPL_EVENT = SPACE.
APPEND LS_EVENT TO LT_EVENT.
LS_EVENT-EVENTID = CL_GUI_TOOLBAR=>M_ID_DROPDOWN_CLICKED.
LS_EVENT-APPL_EVENT = SPACE.
APPEND LS_EVENT TO LT_EVENT.
CALL METHOD MY_TOOLBAR->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = LT_EVENT.
CREATE OBJECT TOOL_EVENT.
SET HANDLER TOOL_EVENT->ON_DROPDOWN_CLICKED FOR MY_TOOLBAR.
SET HANDLER TOOL_EVENT->ON_FUNCTION_SELECTED FOR MY_TOOLBAR.
WRITE 'Hello'.
Max
08-25-2011 7:07 PM
Ok
in this last updating, I've added a text for icon only
I hope I can be interesting for you
DATA: MY_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR.
DATA: MY_CONTAINER TYPE REF TO CL_GUI_GOS_CONTAINER.
DATA: LP_ICON TYPE ICONNAME.
DATA: LP_QUICK TYPE ICONQUICK.
DATA: LT_EVENT TYPE CNTL_SIMPLE_EVENTS.
DATA LS_EVENT TYPE CNTL_SIMPLE_EVENT.
CLASS LCL_HANDLE_EVENT DEFINITION DEFERRED.
DATA TOOL_EVENT TYPE REF TO LCL_HANDLE_EVENT.
*
CLASS LCL_HANDLE_EVENT DEFINITION.
PUBLIC SECTION.
METHODS: ON_DROPDOWN_CLICKED FOR EVENT DROPDOWN_CLICKED
OF CL_GUI_TOOLBAR
IMPORTING FCODE POSX POSY.
METHODS: ON_FUNCTION_SELECTED FOR EVENT FUNCTION_SELECTED
OF CL_GUI_TOOLBAR
IMPORTING FCODE.
ENDCLASS. "lcl_handle_event DEFINITION
*
CLASS LCL_HANDLE_EVENT IMPLEMENTATION.
METHOD ON_DROPDOWN_CLICKED.
DATA: MY_MENU TYPE REF TO CL_CTMENU,
SUB_MENU TYPE REF TO CL_CTMENU.
CREATE OBJECT MY_MENU.
CASE FCODE.
WHEN 'MY_MENU'.
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION1'
TEXT = 'Do something...1' ).
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION2'
TEXT = 'Do something...2' ).
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION3'
TEXT = 'Do something...3' ).
* Separator
MY_MENU->ADD_SEPARATOR( ).
* Create sub menu
CREATE OBJECT SUB_MENU.
SUB_MENU->ADD_FUNCTION( FCODE = 'SUB1'
TEXT = 'Do something...1' ).
SUB_MENU->ADD_FUNCTION( FCODE = 'SUB2'
TEXT = 'Do something...2' ).
*-- Add sub menu to the context menu
MY_MENU->ADD_SUBMENU( MENU = SUB_MENU
TEXT = 'Do something else.....' ).
WHEN 'MY_MENU2'.
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION21'
TEXT = 'Do something crazy' ).
MY_MENU->ADD_FUNCTION( FCODE = 'OPTION22'
TEXT = 'Do something funny' ).
ENDCASE.
CALL METHOD MY_TOOLBAR->TRACK_CONTEXT_MENU
EXPORTING
CONTEXT_MENU = MY_MENU
POSX = POSX
POSY = POSY.
ENDMETHOD. "ON_DROPDOWN_CLICKED
METHOD ON_FUNCTION_SELECTED.
CASE FCODE.
WHEN 'MY_MENU'. MESSAGE I208(00) WITH 'Press on Icon Plane'.
WHEN 'MY_MENU2'. MESSAGE I208(00) WITH 'Press on Icon Truck'.
WHEN 'OPTION1'. MESSAGE I208(00) WITH 'Option 1'.
WHEN 'OPTION2'. MESSAGE I208(00) WITH 'Option 2'.
WHEN 'OPTION3'. MESSAGE I208(00) WITH 'Option 3'.
WHEN 'SUB1'. MESSAGE I208(00) WITH 'Sub Option 1'.
WHEN 'SUB2'. MESSAGE I208(00) WITH 'Sub Option 2'.
WHEN 'OPTION21'. MESSAGE I208(00) WITH 'Option 2/1'.
WHEN 'OPTION22'. MESSAGE I208(00) WITH 'Option 2/2'.
ENDCASE.
ENDMETHOD. "ON_FUNCTION_SELECTED
ENDCLASS. "lcl_handle_event IMPLEMENTATION
START-OF-SELECTION.
CREATE OBJECT MY_CONTAINER
EXPORTING
WIDTH = 160
NO_AUTODEF_PROGID_DYNNR = 'X'
EXCEPTIONS
OTHERS = 5.
CHECK SY-SUBRC = 0.
CREATE OBJECT MY_TOOLBAR
EXPORTING
PARENT = MY_CONTAINER.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
NAME = 'ICON_WS_PLANE'
ADD_STDINF = SPACE
IMPORTING
RESULT = LP_ICON
EXCEPTIONS
OTHERS = 0.
LP_QUICK = 'New Menu'.
CALL METHOD MY_TOOLBAR->ADD_BUTTON
EXPORTING
FCODE = 'MY_MENU'
ICON = LP_ICON
BUTN_TYPE = 1
QUICKINFO = LP_QUICK.
CLEAR LP_ICON.
LP_QUICK = 'New Menu 2'.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
NAME = 'ICON_TRANSPORT'
ADD_STDINF = SPACE
IMPORTING
RESULT = LP_ICON
EXCEPTIONS
OTHERS = 0.
CALL METHOD MY_TOOLBAR->ADD_BUTTON
EXPORTING
FCODE = 'MY_MENU2'
ICON = LP_ICON
BUTN_TYPE = 1
TEXT = 'Go on!'
QUICKINFO = LP_QUICK.
CLEAR LT_EVENT.
LS_EVENT-EVENTID = CL_GUI_TOOLBAR=>M_ID_FUNCTION_SELECTED.
LS_EVENT-APPL_EVENT = SPACE.
APPEND LS_EVENT TO LT_EVENT.
LS_EVENT-EVENTID = CL_GUI_TOOLBAR=>M_ID_DROPDOWN_CLICKED.
LS_EVENT-APPL_EVENT = SPACE.
APPEND LS_EVENT TO LT_EVENT.
CALL METHOD MY_TOOLBAR->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = LT_EVENT.
CREATE OBJECT TOOL_EVENT.
SET HANDLER TOOL_EVENT->ON_DROPDOWN_CLICKED FOR MY_TOOLBAR.
SET HANDLER TOOL_EVENT->ON_FUNCTION_SELECTED FOR MY_TOOLBAR.
WRITE 'Hello'.
Max
11-15-2011 7:12 PM
Hello Max,
my apologies for not answering for such a long time. I forgot. I was on vacation when we had our conversation and then forgot.
The trick I used to make possible what I was up to was to create a button that was changing status GUI. This way I got enough space for twice as much buttons. But your solution is much MUCH better, thank you for that!!
If you can accept my apology. I feel bad about breaking the rule of trust here on SDN. Two months is way too long.
See you around, next time I plan to be more nice.
Cheers Otto
11-16-2011 8:43 AM