我正在尝试在应用程序工具栏中创建一个按钮,单击该按钮会显示一个下拉菜单。这是一个没有ALV网格的自定义屏幕,但我不能使用ALV类方法。我在GUI状态下创建按钮和fcode,并在我调用自定义屏幕时设置它,但我找不到任何方法将其转换为下拉菜单。还有其他方法吗?
我以为我可以使用cl_gui_toolbar
方法add_button和set_static_ctxmenu
,但我不确定如何获得对正在运行的工具栏实例的引用?
到目前为止我的代码:
*----------------------------------------------------------------------*
*& Form f_handle_menu_button
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_handle_menu_button.
DATA: go_toolbar TYPE REF TO cl_gui_toolbar,
go_menu TYPE REF TO cl_ctmenu.
CALL METHOD go_toolbar->add_button
EXPORTING
fcode = '&APPLY'
icon = ''
is_disabled = ''
butn_type = 1 "Pushbutton with Menu
text = 'Apply Status'.
CREATE OBJECT go_menu.
CALL METHOD go_menu->add_function
EXPORTING
fcode = '&STATUS1'
text = 'Status1'
icon = ' '
disabled = ' '
checked = ' '
hidden = ' '.
CALL METHOD go_menu->add_function
EXPORTING
fcode = '&STATUS2'
text = 'Status2'
icon = ' '
disabled = ' '
checked = ' '
hidden = ' '.
CALL METHOD go_toolbar->set_static_ctxmenu
EXPORTING
fcode = '&APPLY'
ctxmenu = go_menu.
ENDFORM. "F_HANDLE_MENU_BUTTON
答案 0 :(得分:1)
从应用程序工具栏触发模式对话框更易于实现,并且适合已建立的UI模式,例如选择ALV布局或在相应模块中选择财务,材料或采购文档。正如您从代码中看到的那样,add_function
的签名被硬编码为仅接受图标和文本。
尽管我希望看到这种情况发生,但我建议使用模态对话框而不是下拉菜单。