日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OO实现ALV TABLE 九:ALV的事件

發(fā)布時間:2025/3/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OO实现ALV TABLE 九:ALV的事件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

SAP的一個類cl_salv_events_table提供了幾個常用的事件,包括鏈接點擊,雙擊,功能觸發(fā)之前和觸發(fā)之后,頁眉頁腳(其中頁眉頁腳暫時測試不成功,以后再試)。跟其他事件相比,類CL_SALV_EVENTS_TABLE提供了這幾個常用的事件已經(jīng)和ALV結合在一起,所以我們只要實現(xiàn)這幾個事件的處理方法就可以了。

?

1.?????? 首先我們要定義好事件的處理方法。

CLASS-METHODS: on_user_commandFOR EVENT added_function OF cl_salv_events_table

?????????????????? ???IMPORTING e_salv_function,

?????????????????? on_double_click FOR EVENTdouble_click OF cl_salv_events_table

??????????????????? ???IMPORTING row column,

?????????????????? on_link_click?? FOR EVENT link_click OF cl_salv_events_table

??????????????????? ???IMPORTING row column,

?????????????????? on_before_salv_function FOREVENT before_salv_function OF cl_salv_events_table

??????????????????? ???IMPORTING e_salv_function,

?????????????????? on_after_salv_function FOREVENT after_salv_function OF cl_salv_events_table

?????????????????? ????IMPORTING e_salv_function.

2.??????實現(xiàn)事件的處理方法。

*單擊新增功能按鈕事件處理方法

? METHODon_user_command.

??? CONCATENATE 'Function Code is '

??????????????? e_salv_function

?????????? INTO g_string SEPARATED BY space.

??? MESSAGE i000(0k) WITH g_string.

?ENDMETHOD.???????????????????"on_user_command

?

*雙擊事件處理方法

?METHOD on_double_click.

??? g_string = row.

??? CONCATENATE 'DOUBLE CLICK'

??????????????? 'ROW'

??????????????? g_string

??????????????? 'COLUMN'

??????????????? column

?????????? INTO g_string SEPARATED BY space.

??? MESSAGE i000(0k) WITH g_string.

?ENDMETHOD.??????????????????? "on_double_click

?

*單擊事件處理方法

? METHOD on_link_click.

??? g_string = row.

??? CONCATENATE 'LICK CLICK'

????????? ??????'ROW'

??????????????? g_string

??????????????? 'COLUMN'

??????????????? column

?????????? INTO g_string SEPARATED BY space.

??? MESSAGE i000(0k) WITH g_string.

?ENDMETHOD.???????????????????"on_link_click

?

*觸發(fā)事件之前

?METHOD on_before_salv_function.

??? CONCATENATE 'Before Function '

??????????????? e_salv_function

?????????? INTO g_string SEPARATED BY space.

??? MESSAGE i000(0k) WITH g_string.

?ENDMETHOD.???????????????????"on_before_salv_function

?

*觸發(fā)事件之后

?METHOD on_after_salv_function.

??? CONCATENATE 'After Function '

??????????????? e_salv_function

?????????? INTO g_string SEPARATED BY space.

??? MESSAGE i000(0k) WITH g_string.

?ENDMETHOD.???????????????????"on_after_salv_function

3.?????? 取得ALV事件的實例

lr_events = gr_table->get_event( ).

4.?????? 注冊事件的處理方法

SET HANDLER lcl_handle_events=>on_user_command FORlr_events.

??? SET HANDLERlcl_handle_events=>on_double_click FOR lr_events.

??? SET HANDLERlcl_handle_events=>on_link_click FOR lr_events.

??? SET HANDLERlcl_handle_events=>on_before_salv_function FOR lr_events.

??? SET HANDLERlcl_handle_events=>on_after_salv_function FOR lr_events.

?

?

?

下面是效果圖


?

下面是程序的所有代碼:

REPORT? y_xin_002.

?

INCLUDE <icon>.

?

*變量定義

TYPES: BEGIN OF gs_spfli,

??????? mandt?????? TYPE spfli-mandt,

??????? carrid????? TYPE spfli-carrid,

??????? connid????? TYPE spfli-connid,

??????? countryfr?? TYPE spfli-countryfr,

?????? ?cityfrom???TYPE spfli-cityfrom,

??????? airpfrom??? TYPE spfli-airpfrom,

??????? countryto?? TYPE spfli-countryto,

??????? cityto????? TYPE spfli-cityto,

??????? airpto????? TYPE spfli-airpto,

??????? fltime????? TYPE spfli-fltime,

??????? deptime???? TYPE spfli-deptime,

??????? arrtime???? TYPE spfli-arrtime,

??????? distance??? TYPE spfli-distance,

??????? distid????? TYPE spfli-distid,

??????? fltype????? TYPE spfli-fltype,

??????? period????? TYPE spfli-period,

??????? hotspot???? TYPE icon_d,

END OF gs_spfli.

TYPES? ty_spfli TYPE gs_spfli OCCURS 0.

?

*----------------------------------------------------------------------*

*?????? CLASS lcl_handle_events DEFINITION

*----------------------------------------------------------------------*

*?????? 事件操作類定義

*----------------------------------------------------------------------*

CLASS lcl_handle_eventsDEFINITION.

? PUBLIC SECTION.

??? CLASS-METHODS: on_user_command FOR EVENTadded_function OF cl_salv_events_table

??????????????????? IMPORTING e_salv_function,

?????????????????? on_double_click FOR EVENTdouble_click OF cl_salv_events_table

??????????????????? IMPORTING row column,

?????????????????? on_link_click?? FOR EVENT link_click OF cl_salv_events_table

??????????????????? IMPORTING row column,

????? ?????????????on_before_salv_function FOR EVENTbefore_salv_function OF cl_salv_events_table

??????????????????? IMPORTING e_salv_function,

?????????????????? on_after_salv_function FOREVENT after_salv_function OF cl_salv_events_table

??????????????????? IMPORTING e_salv_function.

? PRIVATE SECTION.

??? CLASS-DATA: g_string TYPE string.

ENDCLASS.??????????????????? "lcl_handle_eventsDEFINITION

?

*----------------------------------------------------------------------*

*?????? CLASS lcl_handle_events IMPLEMENTATION

*----------------------------------------------------------------------*

*?????? 事件操作類實現(xiàn)

*----------------------------------------------------------------------*

CLASS lcl_handle_eventsIMPLEMENTATION.

?

*單擊新增功能按鈕事件處理方法

? METHOD on_user_command.

??? CONCATENATE 'Function Code is '

??????????????? e_salv_function

?????????? INTO g_string SEPARATED BY space.

??? MESSAGE i000(0k) WITH g_string.

? ENDMETHOD.??????????????????? "on_user_command

?

*雙擊事件處理方法

? METHOD on_double_click.

??? g_string = row.

??? CONCATENATE 'DOUBLE CLICK'

??????????????? 'ROW'

??????????????? g_string

???????????? ???'COLUMN'

??????????????? column

?????????? INTO g_string SEPARATED BY space.

??? MESSAGE i000(0k) WITH g_string.

? ENDMETHOD.??????????????????? "on_double_click

?

*單擊事件處理方法

? METHOD on_link_click.

??? g_string = row.

??? CONCATENATE 'LICK CLICK'

?????? ?????????'ROW'

??????????????? g_string

??????????????? 'COLUMN'

??????????????? column

?????????? INTO g_string SEPARATED BY space.

??? MESSAGE i000(0k) WITH g_string.

? ENDMETHOD.??????????????????? "on_link_click

?

*觸發(fā)事件之前

? METHOD on_before_salv_function.

??? CONCATENATE 'Before Function '

??????????????? e_salv_function

?????????? INTO g_string SEPARATED BY space.

??? MESSAGE i000(0k) WITH g_string.

? ENDMETHOD.???????????????????"on_before_salv_function

?

*觸發(fā)事件之后

? METHOD on_after_salv_function.

??? CONCATENATE 'After Function '

??????????????? e_salv_function

?????????? INTO g_string SEPARATED BY space.

??? MESSAGE i000(0k) WITH g_string.

? ENDMETHOD.???????????????????"on_after_salv_function

ENDCLASS.??????????????????? "lcl_handle_eventsIMPLEMENTATION

?

*----------------------------------------------------------------------*

*?????? CLASS lcl_alv DEFINITION

*----------------------------------------------------------------------*

*?????? ALV操作類(定義)

*----------------------------------------------------------------------*

CLASS lcl_alv DEFINITION.

? PUBLIC SECTION.

??? METHODS: getdata?????????????? "取得要顯示的數(shù)據(jù)

?????????????? RETURNING value(lt_tab) TYPEty_spfli,

???????????? alv_full????????????? "全屏Grid列表處理方法

?????????????? IMPORTING value(lt_tab) TYPE ty_spfli.

? PRIVATE SECTION.

??? DATA: gr_table TYPE REF TO cl_salv_table.

ENDCLASS.??????????????????? "lcl_alv DEFINITION

?

*----------------------------------------------------------------------*

*?????? CLASS lcl_alv IMPLEMENTATION

*----------------------------------------------------------------------*

*?????? ALV操作類(實現(xiàn))

*----------------------------------------------------------------------*

CLASS lcl_alvIMPLEMENTATION.

*取得要顯示的數(shù)據(jù)

? METHOD getdata.

??? SELECT * INTO CORRESPONDING FIELDS OF TABLElt_tab FROM spfli.

?

??? FIELD-SYMBOLS<fs_spfli> TYPE gs_spfli.

??? LOOP AT lt_tab ASSIGNING <fs_spfli>.

????? <fs_spfli>-hotspot = icon_overview.

??? ENDLOOP.

? ENDMETHOD.??????????????????? "getdata

?

*輸出全屏網(wǎng)格列表的方法

? METHOD alv_full.

??? DATA: lr_functions? TYPE REF TO cl_salv_functions_list,

????????? lr_events???? TYPE REF TO cl_salv_events_table,

????????? lr_columns??? TYPE REF TO cl_salv_columns_table,

????????? lr_column???? TYPE REF TO cl_salv_column_table,

????????? lr_content??? TYPE REF TO cl_salv_form_element.

?

??? "創(chuàng)建實例

??? TRY.

??????? cl_salv_table=>factory(

????????? IMPORTING

??????????? r_salv_table = gr_table

????????? CHANGING

??????????? t_table????? = lt_tab

??????? ).

????? CATCH cx_salv_msg.

??? ENDTRY.

??? "設置GUI Status

??? gr_table->set_screen_status(

????? report = sy-repid

????? pfstatus = 'SALV_STANDARD'

????? set_functions =gr_table->c_functions_all

??? ).

??? "設置熱點

??? lr_columns = gr_table->get_columns( ).

??? TRY.

??????? lr_column ?= lr_columns->get_column('HOTSPOT' ).

??????? lr_column->set_cell_type(if_salv_c_cell_type=>hotspot ).

??????? lr_column->set_long_text( 'HOTSPOT').

????? CATCH cx_salv_not_found.

??? ENDTRY.

??? "注冊事件

??? lr_events = gr_table->get_event( ).

??? SET HANDLERlcl_handle_events=>on_user_command FOR lr_events.

??? SET HANDLERlcl_handle_events=>on_double_click FOR lr_events.

??? SET HANDLERlcl_handle_events=>on_link_click FOR lr_events.

??? SET HANDLERlcl_handle_events=>on_before_salv_function FOR lr_events.

??? SET HANDLERlcl_handle_events=>on_after_salv_function FOR lr_events.

??? "顯示列表

??? gr_table->display( ).

? ENDMETHOD.??????????????????? "alv_full

ENDCLASS.??????????????????? "lcl_alvIMPLEMENTATION

?

*&---------------------------------------------------------------------*

*&????? Form?f_main

*&---------------------------------------------------------------------*

*?????? 整合數(shù)據(jù),執(zhí)行

*----------------------------------------------------------------------*

FORM f_main.

? DATA: lt_tab TYPE ty_spfli,

??????? lr_alv TYPE REF TO lcl_alv.

?

? CREATE OBJECT lr_alv.

?

? "取得要顯示的數(shù)據(jù)

? lt_tab = lr_alv->getdata( ).

?

? lr_alv->alv_full( lt_tab ).

ENDFORM.??????????????????? "f_main

?

*執(zhí)行動作

START-OF-SELECTION.

? PERFORM f_main.

總結

以上是生活随笔為你收集整理的OO实现ALV TABLE 九:ALV的事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。