Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Context Menu

Former Member
0 Likes
1,130

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

===========================

6 REPLIES 6
Read only

Former Member
0 Likes
944

i have set the carrid input-field's ON-CTMENU with "CARRID"

Read only

Former Member
0 Likes
944

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

Read only

0 Likes
944

add

===============

DATA: l_menu TYPE REF TO cl_ctmenu.

CREATE OBJECT l_menu.

===============

it tips l_menu has already been decalred

Read only

0 Likes
944

comment or remove this one and try

DATA: l_menu TYPE REF TO cl_ctmenu.

Read only

0 Likes
944

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 !

Read only

0 Likes
944

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.