SAP自定义工具栏按钮

1 在GUI状态里添加自定义的按钮,保存、激活;

2 修改代码:

(1)自定义的按钮的触发 FRM_USER_COMMAND 这个模块里面。

(2)这里注意 FRM_USER_COMMAND 的参数是两个,把自定义的按钮和触发后的操作写在CASE里面。

 3 效果展示如下:

贴一下完整代码:

FORM display_data .
* alv 显示定义
  DATA: i_grid_settings TYPE lvc_s_glay,
        lt_fieldcat     TYPE slis_t_fieldcat_alv,
        lr_aggregations TYPE REF TO cl_salv_aggregations.
  DATA:gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
       gs_layout   TYPE slis_layout_alv.

* 自定义ALV 显示方式
  DEFINE fill_alv.
    clear gt_fieldcat.
    gt_fieldcat-fieldname = &1.  "变量1 字段名
    gt_fieldcat-seltext_m = &2 .  "变量2 字段描述
    gt_fieldcat-outputlen = &3 .  "变量2 字段描述
    gt_fieldcat-NO_ZERO = &4.
    append gt_fieldcat.
  END-OF-DEFINITION.
  fill_alv 'CARRID' '航线代码' '3' 'X'.
  fill_alv 'AIRPFROM' '起飞机场' '3' 'X'.
  fill_alv 'CONNID' '航线连接' '4' 'X'.
  fill_alv 'FLTIME' '航班时间' '10' 'X'.
  fill_alv 'CITYFROM' '起飞城市' '20' 'X'.
  fill_alv 'CITYTO' '目标城市' '20' 'X'.

  LOOP AT gt_fieldcat.
    MODIFY gt_fieldcat.
    IF gt_fieldcat-fieldname = ' FLTIME'.
      gt_fieldcat-edit = 'X'.
      gt_fieldcat-outputlen = '50'.
    ENDIF.
    MODIFY gt_fieldcat.
  ENDLOOP.

  i_grid_settings-edt_cll_cb = 'X'. "退出可编辑单元格时回调

  gs_layout-zebra        = 'X'.
  gs_layout-colwidth_optimize = 'X'.
  gs_layout-box_fieldname = 'ZSEL'. "定义边框选中栏
  gs_layout-window_titlebar = '查询表'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'SET_PF_STATUS'
      i_callback_user_command  = 'FRM_USER_COMMAND'
      i_grid_settings          = i_grid_settings
      is_layout                = gs_layout
      it_fieldcat              = gt_fieldcat[]
      it_sort                  = lt_sort
*     it_events                = i_events
      i_save                   = 'A'
    TABLES
      t_outtab                 = gt_tab
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.

ENDFORM.                    " DISPLAY_DATA


FORM frm_user_command USING ucomm TYPE sy-ucomm
                            p_selfld TYPE slis_selfield.
  CASE ucomm.
    WHEN '&BACK'.
      leave to screen 0.
  ENDCASE.

ENDFORM.

总结:自定义按钮体现在i_callback_user_command  = 'FRM_USER_COMMAND' 中,其中FRM_USER_COMMAND是自定义的过程。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 ABAP 中,可以通过使用 CL_SALV_TABLE 类来创建 ALV 报表。要在 ALV 工具栏上添按钮,可以使用以下步骤: 1. 首先,在程序中创建一个实例化的 CL_SALV_TABLE 对象,并为其设置数据源和显示选项。 2. 然后,使用方法 GET_FUNCTIONS 获取 CL_SALV_FUNCTIONS 对象的实例。这个对象可以用来添自定义功能到 ALV 工具栏。 3. 使用方法 SET_TOOLBAR_DISPLAY_MODE 设置工具栏的显示模式。通常,可以将其设置为 SHOW_WITH_MENU,以便在工具栏上显示下拉菜单。 4. 使用方法 ADD_FUNCTION 添一个新的功能按钮。在这个方法中,可以指定按钮的图标、tooltip 文本、处理逻辑等等。 以下是一个简单的示例代码,演示如何在 ALV 工具栏上添一个自定义按钮: ``` DATA: lo_alv TYPE REF TO cl_salv_table, lo_functions TYPE REF TO cl_salv_functions. * 创建 ALV 对象并设置数据源 CREATE OBJECT lo_alv EXPORTING list_display = abap_true. lo_alv->set_data( itab ). * 获取工具栏函数对象 lo_functions = lo_alv->get_functions( ). * 设置工具栏显示模式 lo_functions->set_toolbar_display_mode( cl_salv_functions=>c_toolbar_display_mode-show_with_menu ). * 添自定义按钮 lo_functions->add_function( text = 'My Button' icon = icon_mybutton tooltip = 'Click to do something' function = 'MY_BUTTON_CLICK' ). * 处理函数逻辑 FORM my_button_click. " 在这里处理按钮点击事件的逻辑 ENDFORM. ``` 在这个示例代码中,图标 `icon_mybutton` 和函数 `MY_BUTTON_CLICK` 都需要自己定义。你可以使用 SAP 提供的标准图标,也可以创建自己的图标。函数 `MY_BUTTON_CLICK` 是一个自定义函数,它将在用户点击按钮时被调用,你可以在这个函数中执行任何你需要的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值