如何动态设置/取消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,提问作者Вася Килобайтов
相关产品推荐
相关产品推荐

