‎2008 Apr 07 4:42 AM
dose the following form have any problems ? it checks ok,but doesn't work ,it means when i right-click in carrid input field it doesn't show context menu .
==========================
FORM on_ctmenu_carrid USING l_menu TYPE REF TO cl_ctmenu.
CALL METHOD l_menu->add_function
EXPORTING
fcode = 'DISP'
text = 'display details'.
CALL METHOD l_menu->add_function
EXPORTING
fcode = 'CLAR'
text = 'clear all'.
ENDFORM. "on_ctmenu_carrid
===========================
‎2008 Apr 07 4:43 AM
‎2008 Apr 07 4:58 AM
Try like this
FORM on_ctmenu_carrid USING l_menu TYPE REF TO cl_ctmenu.
DATA: l_menu TYPE REF TO cl_ctmenu.
CREATE OBJECT l_menu.
CALL METHOD l_menu->add_function
EXPORTING
fcode = 'DISP'
text = 'display details'.
CALL METHOD l_menu->add_function
EXPORTING
fcode = 'CLAR'
text = 'clear all'.
ENDFORM. "on_ctmenu_carrid
‎2008 Apr 07 8:50 AM
add
===============
DATA: l_menu TYPE REF TO cl_ctmenu.
CREATE OBJECT l_menu.
===============
it tips l_menu has already been decalred
‎2008 Apr 07 8:53 AM
comment or remove this one and try
DATA: l_menu TYPE REF TO cl_ctmenu.
‎2008 Apr 07 8:59 AM
it check ok,but when i right-click in carrid field it never show context menu , but filled carrid field with "DAT"
it too puzzled me !
‎2008 Apr 07 9:16 AM
This is sample program try to make use of it
Context Menus
The user interface of a screen is defined by a GUI status, which you define in the Menu Painter and assign the type Dialog status. For each dialog status, the system
automatically creates a standard context menu, which the user can display by clicking the righthand mouse button on the screen (or choosing Shift+F10). The standard context menu contains all of the function keys to which functions are assigned. It therefore makes it easy to access any function code that is available using the keyboard, since normally only the most important are assigned to the application toolbar.
However, as well as the standard context menu, you can define context-specific menus for any of the following screen elements:
Input/output fields
Text fields
Table controls
Group boxes
Subscreens
When you select one of these elements using the right-hand mouse button, you can create a dynamic context menu in the ABAP program. This may contain any functions, and is not
restricted to function keys. You cannot assign context menus to pushbuttons, checkboxes, or radio buttons. However, you can assign unique function codes to them instead.
Example
The following example shows some of the technical possibilities for creating context menus, but
does not necessarily observe all of the style guidelines.
REPORT demo_dynpro_context_menu.
DATA: field1 TYPE i VALUE 10,
field2 TYPE p DECIMALS 4.
DATA: prog TYPE sy-repid,
flag(1) TYPE c VALUE 'X'.
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
prog = sy-repid.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET TITLEBAR 'TIT100'.
IF flag = 'X'.
SET PF-STATUS 'SCREEN_100' EXCLUDING 'REVEAL'.
ELSEIF flag = ' '.
SET PF-STATUS 'SCREEN_100' EXCLUDING 'HIDE'.
ENDIF.
LOOP AT SCREEN.
IF screen-group1 = 'MOD'.
IF flag = 'X'.
screen-active = '1'.
ELSEIF flag = ' '.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ELSEIF screen-name = 'TEXT_IN_FRAME'.
IF flag = 'X'.
screen-active = '0'.
ELSEIF flag = ' '.
screen-active = '1'.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE.
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE user_command_0100.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'HIDE'.
flag = ' '.
WHEN 'REVEAL'.
flag = 'X'.
WHEN 'SQUARE'.
field2 = field1 ** 2.
WHEN 'CUBE'.
field2 = field1 ** 3.
WHEN 'SQUAREROOT'.
field2 = field1 ** ( 1 / 2 ).
WHEN 'CUBICROOT'.
field2 = field1 ** ( 1 / 3 ).
ENDCASE.
ENDMODULE.
*******************************************************
Callback-Routines
*******************************************************
FORM on_ctmenu_text USING l_menu TYPE REF TO cl_ctmenu.
CALL METHOD:l_menu->load_gui_status
EXPORTING program = prog
status = 'CONTEXT_MENU_1'
menu = l_menu.
ENDFORM.
FORM on_ctmenu_frame USING l_menu TYPE REF TO cl_ctmenu.
CALL METHOD:l_menu->load_gui_status
EXPORTING program = prog
status = 'CONTEXT_MENU_2'
menu = l_menu,
l_menu->load_gui_status
EXPORTING program = prog
status = 'CONTEXT_MENU_1'
menu = l_menu,
l_menu->set_default_function
EXPORTING fcode = 'HIDE'.
ENDFORM.
FORM on_ctmenu_reveal USING l_menu TYPE REF TO cl_ctmenu.
CALL METHOD:l_menu->load_gui_status
EXPORTING program = prog
status = 'CONTEXT_MENU_3'
menu = l_menu,
l_menu->load_gui_status
EXPORTING program = prog
status = 'CONTEXT_MENU_1'
menu = l_menu,
l_menu->set_default_function
EXPORTING fcode = 'REVEAL'.
ENDFORM.
FORM on_ctmenu_input USING l_menu TYPE REF TO cl_ctmenu.
DATA calculate_menu TYPE REF TO cl_ctmenu.
CREATE OBJECT calculate_menu.
CALL METHOD: calculate_menu->add_function
EXPORTING fcode = 'SQUARE'
text = text-001,
calculate_menu->add_function
EXPORTING fcode = 'CUBE'
text = text-002,
calculate_menu->add_function
EXPORTING fcode = 'SQUAREROOT'
text = text-003,
calculate_menu->add_function
EXPORTING fcode = 'CUBICROOT'
text = text-004,
l_menu->add_submenu
EXPORTING menu = calculate_menu
text = text-005.
ENDFORM.