1.效果:
2.代码:
- SE24->cl_salv_display_settings
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, END OF ty_sflight. DATA: lt_sflight TYPE TABLE OF ty_sflight. DATA: o_salv TYPE REF TO cl_salv_table. 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. ENDCLASS. CLASS lcl_report IMPLEMENTATION. METHOD get_data. SELECT carrid connid fldate price currency FROM sflight INTO TABLE lt_sflight UP TO 50 ROWS. ENDMETHOD. METHOD salv_output. DATA: lx_msg TYPE REF TO cx_salv_msg. 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. o_salv->display( ). ENDMETHOD. METHOD set_pf_status. DATA: lo_functions TYPE REF TO cl_salv_functions_list. * "设置默认状态栏 * lo_functions = co_alv->get_functions( ). "获取状态栏对象 * lo_functions->set_default( abap_true ). "设置默认的状态栏 * lo_functions->set_detail( abap_true ). "激活查看细节按钮 * lo_functions->set_print( abap_true ). "激活打印按钮 * "激活其他功能键请查看 SE24->CL_SALV_FUNCTIONS_LIST "设置自定义状态栏 co_alv->set_screen_status( pfstatus = 'STANDARD_FULLSCREEN' report = sy-repid set_functions = co_alv->c_functions_all ). ENDMETHOD. METHOD set_layout. DATA: lo_layout TYPE REF TO cl_salv_layout, l_vari TYPE slis_vari, ls_key TYPE salv_s_layout_key. lo_layout = co_alv->get_layout( ). "获取layout对象 ls_key-report = sy-repid. "设置布局全局Key lo_layout->set_key( ls_key ). lo_layout->set_save_restriction( 3 ). "删除保存布局的限制 Value 3 = IF_SALV_C_LAYOUT=>RESTRICT_NONE l_vari = '/Z001'. "默认使用布局:Z001 SAP默认:L_VARI = 'DEFAULT'. lo_layout->set_initial_layout( l_vari ). "设置使用默认布局 ENDMETHOD. METHOD set_top_of_page. DATA: lo_header TYPE REF TO cl_salv_form_layout_grid, lo_label TYPE REF TO cl_salv_form_label, lo_flow TYPE REF TO cl_salv_form_layout_flow. CREATE OBJECT lo_header. lo_label = lo_header->create_label( row = 1 column = 1 ). "创建一个样式 lo_label->set_text( '页头标题加粗文本:' ). lo_flow = lo_header->create_flow( row = 2 column = 1 ). lo_flow->create_text( text = '第一行文本:' tooltip = '提示文本' ). lo_flow = lo_header->create_flow( row = 3 column = 1 ). lo_flow->create_text( text = '文本' tooltip = '文本' ). co_alv->set_top_of_list( lo_header ). "输出自定义页头到对象 co_alv->set_top_of_list_print( lo_header ). "打印页头 ENDMETHOD. METHOD set_end_of_page. DATA: lo_footer TYPE REF TO cl_salv_form_layout_grid, lo_label TYPE REF TO cl_salv_form_label, lo_flow TYPE REF TO cl_salv_form_layout_flow. CREATE OBJECT lo_footer. lo_label = lo_footer->create_label( row = 1 column = 1 ). "创建一个样式 lo_label->set_text( '页尾标题加粗文本:' ). lo_flow = lo_footer->create_flow( row = 2 column = 1 ). lo_flow->create_text( text = '第一行文本:' tooltip = '提示文本' ). lo_flow = lo_footer->create_flow( row = 3 column = 1 ). lo_flow->create_text( text = 'DATE:' tooltip = 'DATE:' ). lo_flow = lo_footer->create_flow( row = 3 column = 2 ). lo_flow->create_text( text = sy-datum tooltip = sy-datum ). co_alv->set_end_of_list( lo_footer ). "输出自定义页尾到对象 co_alv->set_end_of_list_print( lo_footer ). "打印页尾 ENDMETHOD. METHOD set_display_setting. DATA: lo_display TYPE REF TO cl_salv_display_settings. lo_display = co_alv->get_display_settings( ). "获取对象 " lo_display->set_list_header( 'SALV Demo 005' ). "设置GUI抬头文本 ENDMETHOD. ENDCLASS. START-OF-SELECTION. DATA: lo_report TYPE REF TO lcl_report. CREATE OBJECT lo_report. "实例化SALV对象 lo_report->get_data( ). "获取数据 lo_report->salv_output( ). "输出