ABAP OOALV选中行

OOALV中的选中行数据获取
本文介绍了如何在ABAP编程中使用OOALV对象从gr_alv_grid获取已选中的行信息,通过调用`get_selected_rows`方法并处理lt_row数据结构。

OOALV 中获取选择行信息

    DATA : lt_row   TYPE  lvc_t_roid.
    CALL METHOD gr_alv_grid->get_selected_rows(
      IMPORTING
        et_row_no = lt_row ).

        LOOP AT lt_row INTO DATA(ls_row).
          MOVE-CORRESPONDING gt_out[ ls_row-row_id ]  TO ls_out.
          APPEND ls_out TO lt_out.
        ENDLOOP.
  
### 如何在ABAP中实现ALV中行功能 为了实现在ABAP中的ALV表格内中特定的功能,通常会采用如下方式: #### 使用SALV框架处理选择事件 当使用SALV(Simple ALV)显示列表时,可以通过定义`ON_DOUBLE_CLICK`或类似的交互事件来捕获用户的点击为。对于希望仅捕捉单击中某一的情况,则需关注于设置合适的参数以及编写相应的逻辑。 ```abap DATA: lo_salv TYPE REF TO cl_salv_table. CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = lo_salv TABLES t_table = it_data. lo_salv->get_event( )->set_handler( me, 'ON_USER_COMMAND' ). METHOD on_user_command. DATA: lv_row_no TYPE i, ls_entry TYPE lvc_s_layclm. * 获取当前中的号 CALL FUNCTION 'LVC_GET_ENTRIES' EXPORTING row = sy-index " 当前编号 CHANGING entries = lt_selected_rows. " 存储被中的的信息 ENDMETHOD. ``` 上述代码片段展示了如何利用SALV对象模型创建一个简单的ALV网格视图,并注册了一个自定义的方法用于监听用户命令事件[^1]。 #### 处理传统ALV的选择操作 如果是在较为传统的场景下工作,比如调用了`REUSE_ALV_GRID_DISPLAY`函数模块展示数据,则可能需要依赖其他机制来跟踪哪几项已被勾或是处于激活状态。此时往往涉及到对内部表的操作,例如通过字段控制字典属性指定哪些列允许作为复框呈现给最终使用者查看;另外还需要注意调整程序流程以便能够响应这些变化。 ```abap FIELD-SYMBOLS: <fs_fcat> LIKE LINE OF gt_fieldcatalog. SELECT-OPTIONS s_matnr FOR mara-matnr OBLIGATORY. PERFORM build_field_catalog USING gt_fieldcatalog. LOOP AT gt_fieldcatalog INTO wa_fieldcatalog WHERE fieldname EQ 'MATNR'. CLEAR wa_fieldcatalog-checkbox. ASSIGN COMPONENT 'CHECKBOX' OF STRUCTURE wa_fieldcatalog TO <fs_fcat>. IF sy-subrc = 0. <fs_fcat> = abap_true. ENDIF. MODIFY gt_fieldcatalog FROM wa_fieldcatalog INDEX sy-tabix. CLEAR wa_fieldcatalog. ENDLOOP. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = g_repid is_layout = gs_layout it_fieldcat = gt_fieldcatalog[] TABLES t_outtab = gt_materials EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ``` 此部分代码说明了怎样向标准的ALV控件添加额外项——即让某些特定列支持多模式下的复标记[^2]。 #### 结合实际业务需求定制化开发 考虑到具体应用场景的不同,在设计阶段就应该充分考虑后续可能会遇到的各种情况。例如,在涉及复杂查询条件或者动态更新界面内容的情况下,应当提前规划好接口的设计思路和技术路线。特别是针对那些频繁发生增删改查动作的对象而言,更应该注重用户体验方面的优化措施,像即时反馈提示信息、简化输入过程等都是值得深入探讨的话题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值