如下圖雙擊數(shù)量字段彈出對應(yīng)的序列號list:
序列號清單.png
首先聲明彈出框的相關(guān)變量及彈出框的關(guān)閉事件的處理類:
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添加熱點事件并實現(xiàn)熱點事件處理方法:
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.
當(dāng)單擊數(shù)量字段時觸發(fā)上面的熱點事件處理方法:
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'. "優(yōu)化列寬
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.