DATA: gr_alv_grid TYPE REF TO cl_gui_alv_grid,
gr_f4_handler TYPE REF TO lcl_f4_handler.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = gr_alv_grid.
IF gr_alv_grid IS BOUND.
gr_alv_grid->register_f4_for_field(
EXPORTING
i_fieldname = 'MATNR'
i_register = abap_true ).
CREATE OBJECT gr_f4_handler.
SET HANDLER gr_f4_handler->on_f4 FOR gr_alv_grid.
ENDIF.
DATA: gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat,
gt_data TYPE STANDARD TABLE OF your_structure,
gs_layout TYPE lvc_s_layo.
* 示例:设置字段 F4 可用
gs_fieldcat-fieldname = 'MATNR'.
gs_fieldcat-ref_field = 'MATNR'.
gs_fieldcat-ref_table = 'MARA'.
gs_fieldcat-f4availabl = 'X'.
APPEND gs_fieldcat TO gt_fieldcat.
gs_layout-cwidth_opt = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fieldcat
i_structure_name = 'YOUR_STRUCTURE'
TABLES
t_outtab = gt_data
EXCEPTIONS
program_error = 1
OTHERS = 2.
CLASS lcl_f4_handler DEFINITION.
PUBLIC SECTION.
INTERFACES: if_alv_event_f4.
ENDCLASS.
CLASS lcl_f4_handler IMPLEMENTATION.
METHOD if_alv_event_f4~on_f4.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval,
ls_return TYPE ddshretval,
lt_values TYPE TABLE OF ty_value,
lv_value TYPE string.
SELECT matnr maktx INTO TABLE lt_values FROM mara INNER JOIN makt ON mara~matnr = makt~matnr UP TO 100 ROWS.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR'
value_org = 'S'
TABLES
value_tab = lt_values
return_tab = lt_return.
READ TABLE lt_return INTO ls_return INDEX 1.
IF sy-subrc = 0.
e_fieldvalue = ls_return-fieldval.
e_display = abap_true.
ENDIF.
e_exit = abap_true.
ENDMETHOD.
ENDCLASS.