编辑ALV后更新对应的内表
2010 1 5 04:52 PM 4547次查看
这个问题是有一个可编辑的ALV表格,用户编辑完后点update按钮,需要将编辑后的数据更新到数据库。
最初的要求是更新其中的一个字段,而且只有一行数据,所以可以这样实现:
form f_user_command using r_ucomm like sy-ucomm rs_selfield type slis_selfield.
case r_ucomm.
when 'UPD'.
read table gt_msgreturn ASSIGNING <fs_msg> index rs_selfield-tabindex.
<fs_msg>-text = rs_selfield-value.
多余的代码我就没列出了,这里的gt_msgreturn是ALV对应的内表,而rs_selfield-value只能取到一个字段的值。而现在的需求改成可以更改多个字段,那么rs_selfield-value就不够用了。于是在SAP SDN里搜索了一下,发现一篇《Updating the Internal Table -After Edit in ALV using Function Modules》。
这里面有如下一段代码:
DATA: gd_repid LIKE sy-repid,
ref_grid TYPE REF TO cl_gui_alv_grid.
IF ref_grid IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data .
ENDIF.
我尝试了一下,发现调用ref_grid->check_changed_data后,内表就自动更新了,于是不再需要获取rs_selfield-value,直接将内表更新到数据库即可。顺带一提,虽然问题是解决了,但没找到这个方法的文档,所以也不知道有什么副作用。
0条评论 你不来一发么↓