本文共 1834 字,大约阅读时间需要 6 分钟。
这两天收到用户的一个关于ALV Report的问题反馈,具体是这样的,该ALV是可编辑的,可进行增加、删除、复制及编辑功能,用户删除了几行数据之后直接点击保存按钮,保存完成之后,被删除的几行又还原出来了。
奇怪的是通过选中行项目,点击“删除行”按钮可正常删除,可选中之后直接按下“Del”键删除后保存完成了又显示回来了。
其实这里只需要用到下面的这个方法就可以很好的解决上面的问题:
call method po_grid->check_changed_data importing e_valid = l_valid.
获取画面数据改变的事件,并把相应的数据修改到内表。
具体代码如下:
types: begin of y_stat, type type bapi_mtype, text type bapi_msg, end of y_stat.data: gs_stat type y_stat."定义略
*&---------------------------------------------------------------------**& Module USER_COMMAND_0200 INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*module user_command_0200 input. save_ok = ok_code. clear ok_code. clear: gs_stat. perform check_changed_data using go_grid changing gs_stat-type. if gs_stat-type = gc_e. exit. endif. case save_ok. when 'BACK'. leave to screen 0. when 'SAVE'. perform check_data. perform save_data. endcase.endmodule. " USER_COMMAND_0200 INPUT*&---------------------------------------------------------------------**& Form CHECK_CHANGED_DATA*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->P_GO_GRID text* <--P_GS_STAT text*----------------------------------------------------------------------*form check_changed_data using po_grid type ref to cl_gui_alv_grid changing p_type. data: l_valid type c. clear: l_valid. call method po_grid->check_changed_data importing e_valid = l_valid. if l_valid is initial. p_type = gc_e. endif.endform. " CHECK_CHANGED_DATA
开发实用小技巧,旨在帮助有需要的朋友,有好的方法可以留言,有疑问也可以告诉我,我们一起学习,祝每天都有收获。
转载地址:http://rzaaf.baihongyu.com/