像下图这样,用户查询ALV数据时根据需要选取符合自己的布局方式(由用户自己设定)
![](https://img.haomeiwen.com/i2856867/9667fcb736855def.png)
选择界面放置Layout选取框:
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-t01.
PARAMETER p_vari LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK bk1.
相关变量定义:
DATA: variante LIKE disvariant,
def_variante LIKE disvariant,
def_variante_f4 LIKE disvariant,
gv_vari LIKE disvariant-variant,
gv_repid LIKE sy-repid VALUE sy-repid,
variant_exit(1) TYPE c.
在初始化事件中获取默认Layout:
INITIALIZATION.
PERFORM get_variant.
FORM get_variant .
variante-report = gv_repid.
def_variante = variante.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = def_variante
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
gv_vari = def_variante-variant.
ENDIF.
p_vari = gv_vari.
ENDFORM. " GET_VARIANT
然后设置F4事件:
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
FORM f4_for_variant .
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = variante
i_save = 'A'
IMPORTING
e_exit = variant_exit
es_variant = def_variante_f4
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 0.
IF variant_exit = space.
p_vari = def_variante_f4-variant.
gv_vari = p_vari.
ENDIF.
ENDIF.
ENDFORM. " F4_FOR_VARIANT
最后调用函数显示ALV时,加上参数:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gv_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout = ls_layout
it_fieldcat = gt_fieldcat
i_save = 'A'
is_variant = def_variante_f4
TABLES
t_outtab = gt_out
EXCEPTIONS
program_error = 1
OTHERS = 2.
网友评论