在自定义屏幕的应用程序工具栏中使用下拉菜单创建按钮

时间:2014-03-04 07:07:35

标签: sap abap dynpro

我正在尝试在应用程序工具栏中创建一个按钮,单击该按钮会显示一个下拉菜单。这是一个没有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

1 个答案:

答案 0 :(得分:1)

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

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