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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OO实现ALV TABLE 三:ALV的功能设计

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OO实现ALV TABLE 三:ALV的功能设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

細心的讀者肯定已經注意前面的兩個例子少了點什么,少了ALV提供的標準功能,比如排序,過濾,匯總,等,以及用戶可以在ALV的功能欄上加上自己自定義的功能按鈕。

?

ALV的標準功能可以通過類CL_SALV_FUNCTIONSCL_SALV_FUNCTION來設計,通過這兩個類你可以對ALV提供的標準功能可見或不可見。也可以自己創建GUI STATUS設置自己的ALV功能,通過GUI STATUS來設置ALV的功能是通過類CL_SALV_TABLE的方法SET_SCREEN_STATUS來實現的。

?

1.首先我們要取得類CL_SALV_FUNCTIONS的實例,根據類CL_SALV_TABLE的方法get_functions可以取得功能實例。

lr_functions = gr_table->get_functions( ).

??? lr_functions->set_all( 'X' ).

2根據類CL_SALV_TABLE的方法設置功能欄。

gr_table->set_screen_status(

??? pfstatus????? =? 'SALV_STANDARD'

??? report???????=? sy-repid

??? set_functions = gr_table->c_functions_all ).

?

3.自定義功能的實現。ALV的自定義功能的實現動作要通過類的事件來處理。

???????? 首先定義事件的操作類

??? CLASS lcl_handle_events DEFINITION.

? PUBLIC SECTION.

??? CLASS-METHODS: on_user_command FOR EVENT added_function OF cl_salv_events

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

ENDCLASS.??????????????????? "lcl_handle_events DEFINITION

???????? 實現事件的操作類

CLASS lcl_handle_events IMPLEMENTATION.

? METHOD on_user_command.

??? DATA l_string TYPE string.

??? CONCATENATE 'Function is ' e_salv_function

?????????? INTO l_string

?????????? SEPARATED BY space.

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

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

ENDCLASS.??????????????????? "lcl_handle_events IMPLEMENTATION

????????? 注冊事件

SET HANDLER lcl_handle_events=>on_user_command FOR lr_events.

?

?

下面是效果圖

?

?

下面是程序的所有代碼:

REPORT? y_xin_002.

?

*變量定義

TYPES ty_spfli TYPE spfli OCCURS 0.

DATA: gr_table???? TYPE REF TO cl_salv_table.

?

?

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

*?????? CLASS lcl_handle_events DEFINITION

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

*?????? 事件處理類定義

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

CLASS lcl_handle_events DEFINITION.

? PUBLIC SECTION.

??? CLASS-METHODS: on_user_command FOR EVENT added_function OF cl_salv_events

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

ENDCLASS.??????????????????? "lcl_handle_events DEFINITION

?

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

*? ?????CLASS lcl_handle_events IMPLEMENTATION

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

*?????? 事件處理類實現

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

CLASS lcl_handle_events IMPLEMENTATION.

? METHOD on_user_command.

??? DATA l_string TYPE string.

??? CONCATENATE 'Function is ' e_salv_function

?????????? INTO l_string

??? ???????SEPARATED BY space.

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

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

ENDCLASS.??????????????????? "lcl_handle_events IMPLEMENTATION

?

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

*????? ?CLASS lcl_alv DEFINITION

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

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

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

CLASS lcl_alv DEFINITION.

? PUBLIC SECTION.

??? METHODS: getdata???????? "取得要顯示的數據

?????????????? RETURNING value(lt_tab) TYPE ty_spfli,

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

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

???????????? main.?????????? "主方法

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

?

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

*?????? CLASS lcl_alv IMPLEMENTATION

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

*?????? ALV操作類實現

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

CLASS lcl_alv IMPLEMENTATION.

*取得要顯示的數據

? METHOD getdata.

??? SELECT * INTO TABLE lt_tab FROM spfli.

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

?

*輸出全屏網格列表的方法

? METHOD alv_full.

??? DATA: lr_functions TYPE REF TO cl_salv_functions,

????????? lr_events??? TYPE REF TO cl_salv_events.

?

??? "創建實例

??? TRY.

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

????????? IMPORTING

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

????????? CHANGING

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

??????? ).

????? CATCH cx_salv_msg.

??? ENDTRY.

?

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

?

??? "設置ALV功能

??? gr_table->set_screen_status(

??? pfstatus????? =? 'SALV_STANDARD'

??? report??????? =? sy-repid

??? set_functions = gr_table->c_functions_all ).

?

??? "注冊事件

??? SET HANDLER lcl_handle_events=>on_user_command FOR lr_events.

?

??? "顯示列表

??? gr_table->display( ).

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

?

*主方法,整合數據

? METHOD main.

??? DATA: lt_tab TYPE TABLE OF spfli.

?

??? "取得要顯示的數據

??? lt_tab = me->getdata( ).

?

??? me->alv_full( lt_tab ).

? ENDMETHOD.??????????????????? "main

ENDCLASS.??????????????????? "lcl_alv IMPLEMENTATION

?

*報表執行

START-OF-SELECTION.

? DATA? lr_alv?? TYPE REF TO lcl_alv.

? CREATE OBJECT lr_alv.

? lr_alv->main( ).

總結

以上是生活随笔為你收集整理的OO实现ALV TABLE 三:ALV的功能设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。