在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.