ABAP ALV某一单元格被修改后,相同订单号的其他行的相同单元格也要自动更新为修改值

某一单元格被修改后,相同订单号的其他行的相同单元格也要自动更新为修改值

利用data_changed 事件

        首先定义回车事件

DATA :lt_events TYPE slis_t_event,
        ls_events TYPE slis_alv_event.

CLASS: lcl_event_handler DEFINITION DEFERRED.
DATA : gr_event_receiver TYPE REF TO lcl_event_handler.

CLASS lcl_event_handler DEFINITION.  "类定义
  PUBLIC SECTION.
    METHODS:
      handle_data_changed   "新订单数量更改事件
        FOR EVENT data_changed OF cl_gui_alv_grid
        IMPORTING er_data_changed.
ENDCLASS.

        接着类的实现

CLASS lcl_event_handler IMPLEMENTATION.  "类实现

METHOD handle_data_changed.
 PERFORM data_changed USING er_data_changed.
  ENDMETHOD.

ENDCLASS.

          编写data_changed 内容

FORM data_changed USING p_er_data_changed
      TYPE REF TO cl_alv_changed_data_protocol.
 

  DATA: ls_stbl TYPE lvc_s_stbl.
  DATA : l_tabix TYPE sy-tabix .
  FIELD-SYMBOLS: <f_value> TYPE lvc_s_modi-value .
  FIELD-SYMBOLS: <f_field> TYPE any .
  DATA : ls_modi TYPE lvc_s_modi .
* 这里将无法捕捉到的变更的数据,更新至内表
  LOOP AT p_er_data_changed->mt_good_cells INTO ls_modi .
    READ TABLE gt_alv ASSIGNING FIELD-SYMBOL(<f_data>) INDEX ls_modi-row_id .
    ASSIGN ls_modi-value TO <f_value> .
    ASSIGN COMPONENT ls_modi-fieldname OF STRUCTURE <f_data> TO <f_field> .
    IF sy-subrc EQ 0 .
      <f_field> = <f_value> .
    ENDIF.
    LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_change>) WHERE aufnr = <f_data>-aufnr .
      <fs_change>-checkbox = <f_data>-checkbox .
      <fs_change>-xwemng   = <f_data>-xwemng .
      <fs_change>-tldatum  = <f_data>-tldatum .
      <fs_change>-fldatum  = <f_data>-fldatum .
    ENDLOOP .
 
    ls_stbl = 'XX'.
    CALL METHOD grid->refresh_table_display
      EXPORTING
        is_stable = ls_stbl.
  ENDLOOP.
ENDFORM.

       

不能忘的一步,把该事件放入 FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

DEFINE中添加

            ls_events-name = ls_events-form = 'DATA_CHANGED'. 

              APPEND ls_events TO lt_events.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ALV单元格动态可编辑是ABAP技术在ALV报表上的一个重要扩展。ALVABAP List Viewer)是SAP系统中常用的报表显示工具,可以方便地展示和处理大量的数据。但是在默认情况下,ALV报表的单元格是不可编辑的,用户只能查看报表数据而无法进修改。 为了满足用户对报表数据进动态修改的需求,开发人员通过对ALV控件进扩展,使其支持单元格的动态可编辑功能。这样用户可以直接在报表上进数据编辑,无需打开数据源进修改。 实现ALV单元格动态可编辑的扩展需要进如下步骤: 1. 定义ALV报表的显示结构。 首先,需要定义ALV报表的显示结构,包括字段名、字段类型、长度等信息。 2. 扩展ALV函数模块。 在ALV函数模块中,需要添加相应的功能模块来支持单元格的动态可编辑。通过修改ALV函数模块的代码,实现对报表数据的修改和保存。 3. 增加用户交互接口。 为了方便用户进数据修改,可以在报表上添加一些用户交互接口,比如勾选框、输入框等。用户可以通过这些接口直接修改报表数据,并进保存操作。 4. 编写逻辑处理程序。 最后,需要编写逻辑处理程序,处理用户的修改操作。这个程序会根据用户输入的数据,更新相应的报表数据,并将修改后的数据保存回数据库中。 通过以上步骤的扩展,用户可以实现在ALV报表中直接进数据编辑的功能。这样,用户可以更加方便地进数据修改和保存,提高工作效率。同时,ALV单元格动态可编辑的扩展也为定制化的报表需求提供了更多的灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

iiiLiang

谢谢捧场!互相学习!

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

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

打赏作者

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

抵扣说明:

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

余额充值