技术开发 频道

ALV中单元格按钮的使用

【IT168 技术文章】

    一、单元格定义为按钮:

    1、ALV内表中首先在显示数据内表中插入类型为LVC_T_STYL的内表。

    即增加一个字段CELLSTYLESTYPELVC_T_STYL。

    2、将单元格设置为按钮:(eg:字段ZDISPLAY设置为按钮)

    DATA:LV_STYLEROWTYPELVC_S_STYL.

    LOOPATITAB_ALVDATAINTOWA_ALVDATA.

    “ITAB_ALVDATA为ALV内表

    LV_STYLEROW-FIELDNAME='ZDISPLAY'.

    LV_STYLEROW-STYLE.=CL_GUI_ALV_GRID=>MC_STYLE_BUTTON.

    APPENDLV_STYLEROWTOWA_ALVDATA-CELLSTYLES.

    ENDLOOP.

    3、在layoutstructure中指明显示数据内表中表示样式的字段。

    GV_LAYOUT-STYLEFNAME='CELLSTYLES'.

    二、按钮事件的触发调用

    如果是用OO方式调用的ALV,那么很简单,只需要对对象注册事件即可,这类的资料也很多,但是对于CALLFUNCTION方式调用的ALV来说,我们可以用下列方法来处理。

    1、建事件CLASS

    添加BUTTON_CLICK事件

    CLASSLCL_EVENT_RECEIVERDEFINITION.

    PUBLICSECTION.

    METHODS:

    HANDLE_BUTTON_CLICK

    FOREVENTBUTTON_CLICKOFCL_GUI_ALV_GRID

    IMPORTINGES_COL_IDES_ROW_NO,

    ENDCLASS.

    CLASSLCL_EVENT_RECEIVERIMPLEMENTATION.

    METHODHANDLE_BUTTON_CLICK.

    PERFORMBUTTON_CLICKUSINGES_COL_IDES_ROW_NO.

    ENDMETHOD.

    ENDCLASS.

    DATAGV_EVENT_RECEIVERTYPEREFTOLCL_EVENT_RECEIVER.

    2、设置ALV的EVENT事件(caller_exit)

    FORMFM_EVENT_BUILD.

    DATALV_EVENTLIKELINEOFGV_EVENTS.

    CALLFUNCTION'REUSE_ALV_EVENTS_GET'

    EXPORTING

    I_LIST_TYPE=0

    IMPORTING

    ET_EVENTS=GV_EVENTS

    EXCEPTIONS

    LIST_TYPE_WRONG=1

    OTHERS=2

    .

    IFSY-SUBRC<>0.

    *MESSAGEIDSY-MSGIDTYPESY-MSGTYNUMBERSY-MSGNO

    *WITHSY-MSGV1SY-MSGV2SY-MSGV3SY-MSGV4.

    ENDIF.

    LV_EVENT-NAME='CALLER_EXIT'.

    LV_EVENT-FORM='FM_BUTTON'.

    APPENDLV_EVENTTOGV_EVENTS.

    ENDFORM.

0
相关文章