ABAP的两种OOALV实现方法
先创建一个屏幕0100
接着创建GUI
注意最后复制代码进去注意的是这边复制进去那个双引号有问题,要手工改一下这种方法的话不用画那个定制控制
DATA: gcl_docking_container TYPE REF TO cl_gui_docking_container,
gcl_alv_grid TYPE REF TO cl_gui_alv_grid.
DATA:gt_fcat_100 TYPE lvc_t_fcat, "
gs_fcat TYPE lvc_s_fcat.
FIELD-SYMBOLS: <gfs_fcat> TYPE lvc_s_fcat.
DATA:gs_layout_100 TYPE lvc_s_layo.
DATA:gt_exclude_100 TYPE ui_functions, "
gs_exclude TYPE ui_func.
DATA:gs_variant_100 TYPE disvariant. "
DATA:gs_stable TYPE lvc_s_stbl.
FIELD-SYMBOLS: <fs_t001> TYPE ANY TABLE.
CLASS lcl_event_receiver DEFINITION ."FINAL
PUBLIC SECTION.
CLASS-METHODS:
double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column es_row_no.
PRIVATE SECTION.
ENDCLASS. "lcl_event_receiver DEFINITION
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD double_click.
LOOP AT <fs_t001> ASSIGNING FIELD-SYMBOL(<fs_001>).
IF sy-tabix = 1.
ASSIGN COMPONENT ‘BUKRS’ OF STRUCTURE <fs_001> TO FIELD-SYMBOL(<fs_value>).
IF sy-subrc = 0.
<fs_value> = ‘0000’.
ENDIF.
ENDIF.
ENDLOOP.
gcl_alv_grid->refresh_table_display( ).
ENDMETHOD. "double_click
ENDCLASS. "DATA_CHANGED
START-OF-SELECTION.
PERFORM frm_load_data_100.
CALL SCREEN ‘0100’.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘0100’.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN ‘&F03’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
MODULE mod_load_data_100 OUTPUT.
ENDMODULE.
FORM frm_load_data_100 .
DATA: lt_001 TYPE STANDARD TABLE OF t001.
DATA: lt_t001 TYPE REF TO data.
gs_variant_100-report = sy-repid.
gs_variant_100-handle = ‘100’.
CREATE DATA lt_t001 TYPE STANDARD TABLE OF t001.
ASSIGN lt_t001->* TO <fs_t001>.
SELECT * FROM t001 INTO TABLE lt_001 UP TO 5 ROWS.
<fs_t001> = lt_001.
IF gcl_docking_container IS INITIAL.
CREATE OBJECT gcl_docking_container
EXPORTING
repid = sy-repid
dynnr = ‘0100’
extension = ‘2000’.
CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name = ‘T001’
CHANGING
ct_fieldcat = gt_fcat_100.
ENDIF.
IF gcl_alv_grid IS INITIAL.
CREATE OBJECT gcl_alv_grid
EXPORTING
i_parent = gcl_docking_container.
CALL METHOD gcl_alv_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout_100
is_variant = gs_variant_100
i_save = ‘a’
i_default = abap_true
CHANGING
it_fieldcatalog = gt_fcat_100
it_outtab = <fs_t001>.
SET HANDLER lcl_event_receiver=>double_click FOR gcl_alv_grid.
ELSE.
gcl_alv_grid->refresh_table_display( EXPORTING is_stable = gs_stable ).
ENDIF.
ENDFORM.