您的位置:首页 > 其它

Function实现ALV Table五:布局功能

2008-09-23 10:24 323 查看
ALV提供了强大的标准功能,通过这些标准的功能我们可以对ALV列表进行设置它的显示布局和显示内容,如果我们下次还想用选择的方式显示这次设置的布局的话,那就要用到ALV的布局(Layout)功能了。通过布局功能,我们只需设置一次,以后都可以通过选择布局来显示之前所设置的布局。

1. 选择屏幕选择之前设置好的布局





2. 显示ALV列表




3. 我们还可以设置多个布局(Layout)





下面是源代码

PARAMETERS p_layout LIKE
disvariant-variant.

TYPES ty_tab_spfli TYPE spfli
OCCURS 0.

AT SELECTION-SCREEN ON
VALUE-REQUEST FOR p_layout.

PERFORM f_f4_layout CHANGING p_layout.

START-OF-SELECTION.

PERFORM f_display.

*&---------------------------------------------------------------------*

*& Form
f_getdata

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->PT_SPFLI text

*----------------------------------------------------------------------*

FORM f_getdata TABLES pt_spfli
TYPE ty_tab_spfli.

SELECT * FROM spfli INTO TABLE pt_spfli.

ENDFORM. "f_getdata

*&---------------------------------------------------------------------*

*& Form
f_display

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM f_display.

DATA: lt_spfli TYPE ty_tab_spfli,

ls_variant TYPE disvariant.

PERFORM f_getdata TABLES lt_spfli.

PERFORM f_variant_build CHANGING ls_variant.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_structure_name = 'SPFLI'

i_save = 'U'

is_variant = ls_variant

TABLES

t_outtab = lt_spfli.

ENDFORM. "f_display

*&---------------------------------------------------------------------*

*& Form
f_variant_build

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->P_VARIANT text

*----------------------------------------------------------------------*

FORM f_variant_build CHANGING
p_variant TYPE disvariant.

p_variant-report = sy-repid.

p_variant-variant = p_layout.

ENDFORM. "f_variant_build

*&---------------------------------------------------------------------*

*& Form
f_f4_layout

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->P_VARIANT text

*----------------------------------------------------------------------*

FORM f_f4_layout CHANGING
p_variant TYPE disvariant-variant.

DATA: ls_variant TYPE disvariant,

l_exit TYPE char1.

ls_variant-report = sy-repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = ls_variant

i_save
= 'A'

IMPORTING

e_exit
= l_exit

es_variant = ls_variant

EXCEPTIONS

not_found
= 1.

IF sy-subrc = 1.

MESSAGE ID sy-msgid TYPE 'S' NUMBER
sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

IF l_exit IS INITIAL.

p_variant = ls_variant-variant.

ENDIF.

ENDIF.

ENDFORM. "f_f4_layout
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: