1.效果
- 点击按钮执行对应操作
2.实现
- 代码
CLASS lcl_salv_model DEFINITION INHERITING FROM cl_salv_model. PUBLIC SECTION. DATA: o_control TYPE REF TO cl_salv_controller_model, o_adapter TYPE REF TO cl_salv_adapter. METHODS: save_model IMPORTING io_model TYPE REF TO cl_salv_model. METHODS: save_controller. METHODS: save_adapter. PRIVATE SECTION. DATA: lo_model TYPE REF TO cl_salv_model. ENDCLASS. CLASS lcl_report DEFINITION. PUBLIC SECTION. TYPES: BEGIN OF ty_sflight, carrid TYPE sflight-carrid, connid TYPE sflight-connid, fldate TYPE sflight-fldate, price TYPE sflight-price, currency TYPE sflight-currency, t_color TYPE lvc_t_scol, END OF ty_sflight. TYPES: ty_t_sflight TYPE TABLE OF ty_sflight WITH DEFAULT KEY. DATA: lt_sflight TYPE TABLE OF ty_sflight. DATA: o_salv TYPE REF TO cl_salv_table. DATA: o_salv_model TYPE REF TO lcl_salv_model. METHODS: get_data. "定义获取数据方法 METHODS: salv_output. "定义SALV输出方法 PRIVATE SECTION. METHODS: set_pf_status "定义设置SALV状态栏的方法 CHANGING co_alv TYPE REF TO cl_salv_table. METHODS: set_layout "定义设置SALV layout的方法 CHANGING co_alv TYPE REF TO cl_salv_table. METHODS: set_top_of_page "定义设置SALV 页头文本的方法 CHANGING co_alv TYPE REF TO cl_salv_table. METHODS: set_end_of_page "定义设置SALV 页尾文本的方法 CHANGING co_alv TYPE REF TO cl_salv_table. METHODS: set_display_setting "定义设置SALV GUI抬头文本的方法 CHANGING co_alv TYPE REF TO cl_salv_table. METHODS: set_columns "定义设置SALV 表列属性的方法 CHANGING co_alv TYPE REF TO cl_salv_table. METHODS: set_hotspot "定义设置SALV Hotspot的方法 CHANGING co_alv TYPE REF TO cl_salv_table. METHODS: on_link_click "定义设置SALV link单击事件的方法 FOR EVENT link_click OF cl_salv_events_table IMPORTING row column. METHODS: set_colors "定义设置SALV 颜色属性的方法 CHANGING co_alv TYPE REF TO cl_salv_table ct_sflight TYPE ty_t_sflight. METHODS: on_user_command "定义设置SALV User_command属性的方法 FOR EVENT added_function OF cl_salv_events_table IMPORTING e_salv_function. ENDCLASS. CLASS lcl_salv_model IMPLEMENTATION. METHOD save_model. lo_model = io_model. ENDMETHOD. METHOD save_controller. o_control = lo_model->r_controller. "?= 类对象中的casting ENDMETHOD. METHOD save_adapter. o_adapter ?= lo_model->r_controller->r_adapter. ENDMETHOD. ENDCLASS. CLASS lcl_report IMPLEMENTATION. METHOD get_data. SELECT carrid connid fldate price currency FROM sflight INTO CORRESPONDING FIELDS OF TABLE lt_sflight UP TO 50 ROWS. ENDMETHOD. METHOD salv_output. DATA: lx_msg TYPE REF TO cx_salv_msg. DATA: lo_alv_model TYPE REF TO cl_salv_model. TRY. cl_salv_table=>factory( IMPORTING r_salv_table = o_salv CHANGING t_table = lt_sflight ). CATCH cx_salv_msg INTO lx_msg. ENDTRY. "call method set PF-Status CALL METHOD set_pf_status CHANGING co_alv = o_salv. "call method set Layout CALL METHOD set_layout CHANGING co_alv = o_salv. "call method set top-of-page CALL METHOD me->set_top_of_page CHANGING co_alv = o_salv. "call method set end-of-page CALL METHOD me->set_end_of_page CHANGING co_alv = o_salv. "call method set Disply_setting CALL METHOD set_display_setting CHANGING co_alv = o_salv. "call method set Columns CALL METHOD me->set_columns CHANGING co_alv = o_salv. "call method Set Hotspot CALL METHOD set_hotspot CHANGING co_alv = o_salv. "call method Set color CALL METHOD set_colors