【ABAP】ALV可编辑数据更新

本文解决了一个ABAP ALV网格编辑时出现的数据无法正确删除的问题。当用户通过界面操作删除记录后,数据会在保存时重新出现。通过调用check_changed_data方法检查并同步界面更改到后台数据,有效解决了此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天收到用户的一个关于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

 开发实用小技巧,旨在帮助有需要的朋友,有好的方法可以留言,有疑问也可以告诉我,我们一起学习,祝每天都有收获。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值