ABAP 双击ALV某个字段弹出详细数据

如下图双击数量字段弹出对应的序列号list:

序列号清单.png

首先声明弹出框的相关变量及弹出框的关闭事件的处理类:

DATA: gcl_grid TYPE REF TO cl_gui_alv_grid, 
      gcl_box  TYPE REF TO cl_gui_dialogbox_container. 
CLASS lcl_event DEFINITION.
 PUBLIC SECTION.
   METHODS handle_close
     FOR EVENT close OF cl_gui_dialogbox_container
     IMPORTING sender.
ENDCLASS.

CLASS lcl_event IMPLEMENTATION.
 METHOD handle_close.
   CALL METHOD sender->set_visible
     EXPORTING
       visible = space.
 ENDMETHOD.
ENDCLASS.

DATA: gt_event  TYPE REF TO lcl_event.

其次,源ALV添加热点事件并实现热点事件处理方法:

CLASS lcl_event_receiver IMPLEMENTATION.
  METHOD handle_hotspot_click.
    READ TABLE gt_alv INTO DATA(ls_alv) INDEX e_row_id.
    CLEAR gt_serid.
    gt_serid = CORRESPONDING #( ls_alv-serid ).
    LOOP AT gt_serid INTO DATA(ls_serid).
      ls_serid-serid = |{ ls_serid-serid ALPHA = OUT }|.
      MODIFY gt_serid FROM ls_serid.
    ENDLOOP.
    CLEAR ls_alv.
*    cl_demo_output=>display_data( value = gt_serid ) ."name = '序列号'
    PERFORM frm_show_serid TABLES gt_serid.
  ENDMETHOD.
ENDCLASS.

当单击数量字段时触发上面的热点事件处理方法:

FORM frm_show_serid TABLES lt_serid TYPE zttewm_serid_list.

  IF gcl_grid IS INITIAL.

    DATA:lw_layout   TYPE lvc_s_layo.
    CLEAR:lw_layout.
    lw_layout-cwidth_opt    = 'X'. "优化列宽
    lw_layout-zebra         = 'X'.
    CREATE OBJECT gt_event.

    CREATE OBJECT gcl_box
      EXPORTING
        top      = 80
        left     = 300
        lifetime = cntl_lifetime_dynpro
        caption  = 'Detailed'
        width    = 400
        height   = 200.
    CREATE OBJECT gcl_grid
      EXPORTING
        i_parent = gcl_box.
    SET HANDLER gt_event->handle_close FOR gcl_box.

    CALL METHOD gcl_grid->set_table_for_first_display
      EXPORTING
        is_layout        = lw_layout
        i_structure_name = 'ZSEWM_SERID_LIST'
      CHANGING
        it_outtab        = lt_serid[].

    CALL METHOD cl_gui_control=>set_focus
      EXPORTING
        control = gcl_grid.
  ELSE.
    CALL METHOD gcl_box->set_visible
      EXPORTING
        visible = 'X'.
    CALL METHOD gcl_grid->refresh_table_display.
  ENDIF.
ENDFORM.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容