在OOALV中可以把某一个单元格设置成button的样式,通单击实现一些功能效果
CLASS : CL_GUI_ALV_GRID
ENVENT <BUTTON_CLICK >
一、首先在内表中添加一个char4 类型的字段(chk),用于button输出
DATA:BEGIN OF GT_RECRUIT OCCURS 0 ,
CHK TYPE CHAR4 ,
CELLBTN TYPE LVC_T_STYL,
END OF GT_RECRUIT.
二、把该字段设置成为button样式
FORM SETEDIT_CELL .
DATA LS_CELL TYPE LVC_S_STYL .
LS_CELL-MAXLEN = 10 .
LS_CELL-FIELDNAME = 'CHK'.
LS_CELL-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_BUTTON.
INSERT LS_CELL INTO TABLE GT_CELL .
ENDFORM.
三、循环内表给 CELLBTN 赋值,同时可为按钮赋值
LOOP AT GT_RECRUIT.
GT_RECRUIT-CNO = GS_COMPANY-CNO .
IF GT_RECRUIT-FACE EQ GC_X.
GT_RECRUIT-CHK = '已邀请'.
ELSE.
GT_RECRUIT-CHK = '邀请面试'.
ENDIF.
GT_RECRUIT-CELLBTN[] = GT_CELL[] .
MODIFY GT_RECRUIT.
ENDLOOP.
四、在layout中赋值 GS_LAYOUT-STYLEFNAME = 'CELLBTN'.
五、具体功能实现
CLASS LCL_COMPT DEFINITION.
PUBLIC SECTION.
METHODS: HANDLE_BUTTON_CLICK FOR EVENT BUTTON_CLICK
OF CL_GUI_ALV_GRID
IMPORTING ES_COL_ID
ES_ROW_NO.
ENDCLASS.
CLASS LCL_COMPT IMPLEMENTATION.
*BUTTON_CLICK.
METHOD HANDLE_BUTTON_CLICK.
PERFORM FM_BUTTON_CLICK USING ES_COL_ID
ES_ROW_NO.
ENDMETHOD.
ENDCLASS.
FORM FM_BUTTON_CLICK USING PS_COL_ID TYPE LVC_S_COL
PS_ROW_NO TYPE LVC_S_ROID.
*返回行号
READ TABLE GT_RECRUIT INDEX PS_ROW_NO-ROW_ID.
ENDFORM.