普通ALV的单元格编辑控制的写法很容易在网上找到,但对于动态内表需要有一些小改造,可参考下方代码。
新增fieldcat输出列,设置为技术字段,并参考表和字段后再根据fieldcat字段列创建动态内表。
FIELD-SYMBOLS:<ft_data> TYPE STANDARD TABLE.
gt_fieldcat = VALUE #( BASE gt_fieldcat ( fieldname = 'CELLTAB' tech = abap_true ref_table = 'WTY_PARTNER_DYNPRO' ref_field = 'STYL' ) ).
"创建动态内表
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = gt_fieldcat
IMPORTING
ep_table = gt_data.
ASSIGN gt_data->* TO <ft_data>.
设置layout
gs_layout-stylefname = 'CELLTAB'. "行/单元格可编辑
单元格编辑控制
-
DATA fstyle TYPE lvc_t_styl. " 单元格样式 ASSIGN COMPONENT 'CELLTAB' OF STRUCTURE <dyn_emp> TO FIELD-SYMBOL(<fs_style>). IF sy-subrc = 0. fstyle = VALUE #( BASE fstyle ( fieldname = lv_feid style = cl_gui_alv_grid=>mc_style_disabled ) ). MOVE-CORRESPONDING fstyle TO <fs_style>. ENDIF.