显示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.
效果: