ALV对选中的数据进行处理

ALV对选中的数据进行处理

FORM frm_user_command USING r_ucomm LIKE sy-ucomm
      rs_selfield TYPE slis_selfield.

*&---刷新屏幕数据到内表
  DATA: lr_grid1  TYPE REF TO cl_gui_alv_grid,
        ls_stable TYPE lvc_s_stbl,
        lt_rows   TYPE lvc_t_row,
        ls_rows   LIKE LINE OF lt_rows.

  CLEAR:lv_msg,lv_answer.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = lr_grid1.
  CALL METHOD lr_grid1->check_changed_data.

*&---按钮功能实现
  CASE r_ucomm.
  
    WHEN '&DELETE'.
      CLEAR:lt_rows.
      CALL METHOD lr_grid1->get_selected_rows
        IMPORTING
          et_index_rows = lt_rows. "选择的行
      IF lt_rows IS INITIAL.
        lv_msg = '请至少选择一条数据'.
        MESSAGE s014(zmdg002) WITH lv_msg DISPLAY LIKE 'E'.
        RETURN.
      ENDIF.

      LOOP AT lt_rows INTO ls_rows.
        READ TABLE gt_alv INTO gs_alv INDEX ls_rows-index.
        CLEAR:ls_rows,gs_alv.
      ENDLOOP.
      
    WHEN OTHERS.

  ENDCASE.

****************************** 按钮事件结束 ****************************
  CALL METHOD lr_grid1->get_frontend_layout
    IMPORTING
      es_layout = gs_layout.
*&---调用后数据保存处理
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = lr_grid1.
  CALL METHOD lr_grid1->refresh_table_display
    EXPORTING
      is_stable = ls_stable.

ENDFORM. "frm_user_command
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Alv报表中,要标记已选中数据并获取被选中,可以按照以下步骤进行操作: 1. 首先,需要在Alv报表的代码中定义一个内部表来保存被选中数据,可以命名为"lt_selected_rows"。 2. 监听用户的选择事件,可以通过ALV的事件"USER_COMMAND"来实现。这个事件会在报表发生用户操作时触发。 3. 在事件代码中,判断用户操作的类型,如果是选择操作(例如按下Enter键或点击选中某一),则获取当前选中号。 4. 通过号获取被选中数据,并将其添加到定义的内部表"lt_selected_rows"中。 5. 标记已选中,可以设置一个标记字段,在示例中命名为"isChecked"。将被选中的该字段设置为'X',以便在界面上显示不同的标记效果。 6. 最后,可以在需要的地方使用该内部表"lt_selected_rows"来获取被选中数据,以便进行后续处理。 示例代码如下: DATA: lt_selected_rows TYPE TABLE OF t_data, "定义内部表保存选中数据 ls_selected_row TYPE t_data, "定义单条选中数据结构体 lv_selected_rownum TYPE sy-tabix. "定义选中号 "在用户命令事件 USER_COMMAND 中执以下代码 CASE sy-ucomm. WHEN 'ENTER' OR 'FLIPDELETE'. "获取当前选中号 CALL METHOD r_alv->get_selected_rows IMPORTING et_row_no = lt_selected_rowno. LOOP AT lt_selected_rowno INTO lv_selected_rownum. "通过号获取选中数据 READ TABLE gt_data INTO ls_selected_row INDEX lv_selected_rownum. IF sy-subrc = 0. "标记已选中 ls_selected_row-isChecked = 'X'. "将选中数据添加到内部表 APPEND ls_selected_row TO lt_selected_rows. ENDIF. ENDLOOP. ENDCASE. 这样,通过以上步骤,我们就可以在Alv报表中标记已选中并将选中数据保存到内部表中,以便进行后续的处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值