在function方式的ALV中,实现增强功能。
例如,想要在ALV界面通过某个按钮完成ALV数据的下载。这个需求有很多实现的方式,我这里给出一种比较少见的做法。
每一个标准的用'REUSE_ALV_GRID_DISPLAY'实现的ALV,执行后都会跳转到一个标准的屏幕。我们可以去观察这个screen的GUI Status—‘STANDARD_FULLSCREEN’。上面有不少的按钮,每个按钮都有一个功能代码。如‘ &ALL’ ‘&SAL’这种。我的想法是,按这个按钮的时候激发我在程序中代码,实现ALV的user exit。
做法(以下载按钮为例):
Step 1:
DATA: it_event_test TYPE slis_t_event_exit,
it_event_test_wa TYPE slis_event_exit.
it_event_test_wa-ucomm = '%PC '.
it_event_test_wa-before = 'X'.
* it_event_test_wa-after = 'X'.
APPEND it_event_test_wa TO it_event_test.
Step 2:
FORM. mycommand USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
IF r_ucomm = '%PC '.
此处添加增强的代码
ENDIF.
ENDFORM.
Step 3:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
i_grid_title = l_text
i_save = 'A'
is_variant = gs_variant
i_callback_user_command = 'MYCOMMAND'
it_event_exit = it_event_test
TABLES
t_outtab = gt_data[].