【SAP】ABAP——ALV显示后保存修改后的数据至数据库表
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
·
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
table_old = lt_old
table_new = lt_new
key_length = 10
IMPORTING
table_mod = lt_mod.
LOOP AT lt_mod INTO ls_mod.
PERFORM convert_input USING ls_mod-matnr.
MODIFY lt_mod FROM ls_mod.
CLEAR:ls_mod.
ENDLOOP.
MODIFY zmmt1001 FROM TABLE lt_mod.
IF sy-subrc = 0.
COMMIT WORK.
MESSAGE '保存成功!' TYPE 'S'.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败!' TYPE 'E'.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM.
更多推荐
已为社区贡献2条内容
所有评论(0)