ALV实现前,编辑该字段的fieldcat-edit = 'X' 可编辑。
在USER_COMMAND中进行如下操作:
LOOP AT lt_out INTO wa_out.
MOVE-CORRESPONDING wa_out TO ls_mod.
APPEND ls_mod TO lt_old.
CLEAR: wa_out,ls_mod.
ENDLOOP. "lt_old ALV显示前的数据
FORM user_command USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
DATA: lt_rows TYPE lvc_t_row WITH HEADER LINE.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
selfield-refresh = 'X'. "更新修改后的数据至内表
LOOP AT lt_out INTO wa_out.
MOVE-CORRESPONDING wa_out TO ls_mod.
APPEND ls_mod TO lt_new.
CLEAR: wa_out, ls_mod.
ENDLOOP. "lt_new 修改后的数据
CASE ucomm.
WHEN '&DATA_SAVE'."修改后点击保存时
"ALV所修改的行
CALL FUNCTION 'CTVB_COMPARE_TABLES' "改函数可比较两个表的增删改
EXPORTING