显示ALV的三种方法

  • 格式:doc
  • 大小:66.00 KB
  • 文档页数:5

使用前提:存在数据库表ZZP_PEOPLE2,如图,有以下数据

第一种,最古老的方法,用CL_SALV_TABLE

REPORT ZALV_ZZP_1.

INCLUDE .

DATA : BEGIN OF ZZP.

INCLUDE TYPE ZZP_PEOPLE2. "ZZP_PEOPLE2自定义数据库表,结构:ZID,ZNAME,ZPASSWORD

DATA

: BUTTON TYPE ICON_D.

DATA : END OF ZZP.

DATA

: IT_ZZP LIKE TABLE OF ZZP.

DATA

: O_TABLE TYPE REF TO CL_SALV_TABLE,

O_COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE,

O_COLUMN TYPE REF TO CL_SALV_COLUMN_TABLE.

SELECT * FROM ZZP_PEOPLE2

INTO CORRESPONDING FIELDS OF TABLE IT_ZZP.

LOOP AT IT_ZZP INTO ZZP.

MOVE ICON_OKAY

TO ZZP-BUTTON.

MODIFY IT_ZZP FROM ZZP

INDEX SY-TABIX.

ENDLOOP.

TRY .

CL_SALV_TABLE=>FACTORY(

IMPORTING

R_SALV_TABLE

= O_TABLE

CHANGING

T_TABLE = IT_ZZP ).

CATCH CX_SALV_MSG.

ENDTRY.

O_COLUMNS

= O_TABLE->GET_COLUMNS( ).

O_COLUMNS->SET_OPTIMIZE( ABAP_TRUE ).

O_COLUMN ?= O_COLUMNS->GET_COLUMN( 'ZID' ).

O_COLUMN->SET_ICON( IF_SALV_C_BOOL_SAP=>TRUE ). "居中

O_COLUMN->SET_CELL_TYPE( IF_SALV_C_CELL_TYPE=>HOTSPOT ). "下划线

O_COLUMN->SET_LONG_TEXT(

'MY_BUTTON' ).

O_TABLE->DISPLAY( ).

效果:

注意,这里默认的status是空

第二种,比较普遍的用法:REUSE_ALV_GRID_DISPLAY

REPORT ZALV_ZZP_2.

TYPE-POOLS: SLIS.

INCLUDE .

DATA : BEGIN OF ZZP.

INCLUDE TYPE ZZP_PEOPLE2.

DATA : BUTTON TYPE ICON_D.

DATA : END OF ZZP.

DATA : IT_ZZP LIKE TABLE OF ZZP.

DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DEFINE MAN.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = &1.

WA_FIELDCAT-FIELDNAME = &2.

WA_FIELDCAT-SELTEXT_L = &3.

WA_FIELDCAT-JUST = 'C'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

END-OF-DEFINITION.

MAN:

'1' 'ZID' 'ID号',

'2' 'ZNAME' '名字',

'3' 'ZPASSWORD' '密码',

'4' 'BUTTON' '图标'.

SELECT * FROM ZZP_PEOPLE2 INTO CORRESPONDING FIELDS OF TABLE IT_ZZP.

LOOP AT IT_ZZP INTO ZZP.

MOVE ICON_OKAY TO

ZZP-BUTTON.

MODIFY

IT_ZZP FROM ZZP.

ENDLOOP.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

IT_FIELDCAT = IT_FIELDCAT

TABLES

T_OUTTAB = IT_ZZP.

效果:

第三种,用SCREEN显示的方法

REPORT ZALV_ZZP_3.

DATA : BEGIN OF ZZP.

INCLUDE TYPE ZZP_PEOPLE2.

DATA : BUTTON TYPE ICON_D.

DATA : END OF ZZP.

DATA : IT_ZZP LIKE TABLE OF ZZP WITH HEADER LINE.

DATA :

GRID TYPE REF TO CL_GUI_ALV_GRID,

G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

DATA GT_FIELDCAT TYPE LVC_T_FCAT .

DATA LS_FCAT TYPE LVC_S_FCAT .

DEFINE MAN.

CLEAR LS_FCAT.

LS_FCAT-FIELDNAME = &1.

LS_FCAT-OUTPUTLEN = &2.

LS_FCAT-COLTEXT = &3.

APPEND LS_FCAT TO GT_FIELDCAT .

END-OF-DEFINITION.

DATA BEGIN OF GT_LIST OCCURS 0 .

INCLUDE STRUCTURE IT_ZZP .

DATA END OF GT_LIST .

call SCREEN 100.

MODULE status_0100 OUTPUT.

CLEAR GT_FIELDCAT[].

SET PF-STATUS 'STA1'.

IF G_CUSTOM_CONTAINER IS INITIAL.

CREATE

OBJECT G_CUSTOM_CONTAINER

EXPORTING

CONTAINER_NAME = 'ALVDATA'.

CREATE

OBJECT GRID

EXPORTING

I_PARENT = G_CUSTOM_CONTAINER.

ENDIF.

SELECT * FROM ZZP_PEOPLE2 INTO CORRESPONDING FIELDS OF TABLE GT_LIST.

LOOP AT GT_LIST INTO ZZP.

MOVE ICON_OKAY TO ZZP-BUTTON.

MODIFY GT_LIST FROM ZZP.

ENDLOOP.

MAN:

'ZID' '13' 'ID号码',

'ZNAME' '10' '名字',

'ZPASSWORD' '10' '密码',

'BUTTON' '3' '图标'.

CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY

CHANGING

IT_OUTTAB =

GT_LIST[]

IT_FIELDCATALOG =

GT_FIELDCAT

EXCEPTIONS

INVALID_PARAMETER_COMBINATION = 1

PROGRAM_ERROR = 2

TOO_MANY_LINES = 3

OTHERS = 4 .

ENDMODULE.

效果: