You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何动态设置/取消cl_salv_table创建的ALV GRID确认提示

动态设置/取消CL_SALV_TABLE创建的ALV退出确认提示

要实现运行时动态控制ALV退出时的确认提示,你需要获取CL_SALV_TABLE底层的CL_GUI_ALV_GRID实例,通过修改其前端布局的CONFIRMATION_PROMPT字段来实现,具体步骤如下:

1. 创建CL_SALV_TABLE实例并获取底层GRID控件引用

不要直接调用display(),先完成实例创建并获取底层GRID的引用,后续可随时用这个引用修改布局:

DATA: gt_data TYPE STANDARD TABLE OF mara,
      lo_alv  TYPE REF TO cl_salv_table,
      lo_grid TYPE REF TO cl_gui_alv_grid.

" 填充数据到gt_data
SELECT * FROM mara INTO TABLE gt_data UP TO 10 ROWS.

" 创建CL_SALV_TABLE实例
DATA(lo_salv) = cl_salv_table=>factory(
  IMPORTING
    r_salv_table = lo_alv
  CHANGING
    t_table      = gt_data ).

" 获取底层CL_GUI_ALV_GRID控件引用
lo_grid = lo_alv->get_grid( ).

2. 动态修改确认提示状态

通过get_frontend_layout()获取当前布局,修改CONFIRMATION_PROMPT字段后再用set_frontend_layout()生效:

DATA(ls_layout) = lo_grid->get_frontend_layout( ).

" 开启退出确认提示
ls_layout-confirmation_prompt = 'X'.
lo_grid->set_frontend_layout( ls_layout ).

" 若要取消确认提示,只需将字段设为空:
" ls_layout-confirmation_prompt = ''.
" lo_grid->set_frontend_layout( ls_layout ).

3. 显示ALV

完成设置后调用display()显示ALV:

lo_alv->display( ).

运行时动态调整

如果需要在ALV显示后(比如用户点击自定义按钮时)修改确认状态,只需保留lo_grid的全局引用,在触发事件的代码块中重复步骤2即可,修改后立即生效,下次退出ALV时会遵循新的设置。


内容的提问来源于stack exchange,提问作者Вася Килобайтов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:43:20