1

我正在尝试在应用程序工具栏中创建一个按钮,单击该按钮会显示一个下拉菜单。这是一个没有 ALV 网格的自定义屏幕,所以我不能使用 ALV 类方法。我在我的 GUI 状态中创建了按钮和 fcode,并在调用自定义屏幕时对其进行了设置,但我找不到任何方法将其转换为下拉菜单。我还有其他方法可以做到吗?

我以为我可以使用cl_gui_toolbaradd_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
4

1 回答 1

1

从应用程序工具栏触发模态对话框更容易实现并且适合已建立的 UI 模式,例如选择 ALV 布局或在这些相应模块中选择财务、材料或采购文档。正如您从代码中看到的那样, 的签名add_function被硬编码为仅接受图标和文本。

尽管我希望看到这种情况发生,但我建议使用模式对话框而不是下拉菜单。

于 2014-03-06T14:30:31.713 回答