定义alv显示结构 下拉菜单和alv事件
DATA: gt_fieldcatalog TYPE lvc_t_fcat ,
gw_fieldcatalog TYPE lvc_s_fcat ,
gwa_layout TYPE lvc_s_layo ,
"---for call function
'REUSE_ALV_GRID_DISPLAY_LVC' .
gt_ddval TYPE lvc_t_drop ,
gw_ddval TYPE lvc_s_drop ,
g_repid TYPE sy-repid VALUE sy-repid ,
gt_events TYPE slis_t_event ,
gw_events TYPE slis_alv_event .
显示数据结构 新增
DATA: BEGIN OF gwa_modify_data ,
dd_ddval TYPE i ,
"保存alv单元格所对应的编号 = gt_ddval
对应的编号
zwswj(8)
,
"要创建下拉菜单的列名
end of gwa_modify_data
.
设置下拉菜单对应数据 :
FORM create_dropdown_values .
DATA:l_line1 TYPE i VALUE 0 .
DESCRIBE TABLE gt_modify_data LINES l_psjb .
LOOP AT gt_modify_data .
l_line1 = l_line1 + 1 .
"---微生物检验结果下拉选项
gw_ddval-handle = l_line1 .
gw_ddval-value = '合格'.
APPEND gw_ddval TO gt_ddval .
CLEAR gw_ddval .
gw_ddval-handle = l_line1 .
gw_ddval-value = '不合格'.
APPEND gw_ddval TO gt_ddval .
gt_modify_data-dd_zwswj = l_line1 .
MODIFY gt_modify_data .
ENDLOOP .
声明事件 ;
FORM create_event_exits .
gw_events-name = 'CALLER_EXIT'.
gw_events-form = 'CALLER_EXIT'.
APPEND gw_events TO gt_events.
ENDFORM.
注册下拉菜单事件
FORM caller_exit USING ls_data TYPE slis_data_caller_exit.
"alv 的底层是通过oo实现的, 通过调用上述方法获得alv句柄.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = l_ref_alv.
"注册下拉菜单 .
CALL METHOD l_ref_alv->set_drop_down_table
EXPORTING
it_drop_down = gt_ddval.
"注册回车事件 .
CALL method l_ref_alv->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter
exceptions
error = 1
others = 2 .
create object gt_event_receiver .
set handler gt_event_receiver->handle_modify for l_ref_alv .
ENDFORM.
*--------------------------------------------------------------------------------------------------
" 回车响应
DATA: g_grid TYPE REF TO cl_gui_alv_grid.
保存alv句柄
DATA: l_ref_alv TYPE REF TO cl_gui_alv_grid.
创建响应事件的类及类实现
* 生命类及定义方法类处理date_changed_finished 事件
class lcl_event_receiver definition .
public section .
methods handle_modify for event data_changed_finished of cl_gui_alv_grid
importing e_modified et_good_cells .
endclass .
class lcl_event_receiver implementation .
* 定义 method 方法
method handle_modify .
data: stb1 type lvc_s_stbl .
data: tmp type i .
loop at gt_modify_data into gwa_modify_data .
/////添加对行数据的处理内容
modify gt_modify_data from gwa_modify_data.
endloop .
"稳定刷新.
stb1-row = 'X' . "基于行的稳定刷新
stb1-col = 'X' . "基于列的稳定刷新.
CALL method l_ref_alv->refresh_table_display
exporting
is_stable = stb1 .
endmethod .
endclass .
DATA gt_event_receiver TYPE REF TO lcl_event_receiver.
" 类对象声明
注册事件 参见alv 下拉菜单显示
加载中,请稍候......