[ ABAP技术 ] - 使用CL_SALV_TABLE实现ALV报表(Traffic Light / ALV Functions / Set Column)
2018-01-28 17:38
671 查看
本文简介了SAP标准ALV报表的实现类 CL_SALV_TABLE 的主要用法。控制ALV的显示时,主要通过以下对于几个属性类的设置实现:
通过本篇博客,将会了解到以下知识点:
- 使用exception column生成traffic light
- 使用icon生成traffic light
- 修正traffic light的描述
- 自动最优列宽
- 设置ALV standard function
场景一:使用sap icon生成traffic light列,并显示结果。
程序运行结果如下:
场景二:使用ALV的exception列来显示traffic light,激活ALV最优列宽,激活ALV报表的标准功能。
程序运行结果如下:
Tips:
1)若使用DDIC的structure定义ALV的显示结果,则不需要在程序中为column指定描述,ALV的列名会使用对应字段data element中定义的short、medium和long的名称;
2)Exception列的描述也会变为data element的描述;
3)SAP提供了很多ALV的示例程序在package SLIS 中,在实际项目实施过程中,如遇到陌生的功能点,可参考示例程序。
通过本篇博客,将会了解到以下知识点:
- 使用exception column生成traffic light
- 使用icon生成traffic light
- 修正traffic light的描述
- 自动最优列宽
- 设置ALV standard function
场景一:使用sap icon生成traffic light列,并显示结果。
REPORT ztest_alv_01. TYPES: BEGIN OF ty_alv, lights(4) TYPE c, text(20) TYPE c, END OF ty_alv. DATA: gt_result TYPE TABLE OF ty_alv, go_alv TYPE REF TO cl_salv_table, gr_columns TYPE REF TO cl_salv_columns_table, gr_column TYPE REF TO cl_salv_column_table. TYPE-POOLS : icon. START-OF-SELECTION. * initial result table gt_result = VALUE #( ( lights = icon_red_light text = 'RED SIGNAL' ) ( lights = icon_yellow_light text = 'YELLOW SIGNAL' ) ( lights = icon_green_light text = 'GREEN SIGNAL' ) ). * get alv instance CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = go_alv CHANGING t_table = gt_result. * column description gr_columns = go_alv->get_columns( ). TRY. gr_column ?= gr_columns->get_column( 'LIGHTS' ). gr_column->set_short_text( 'Status' ). gr_column->set_medium_text( 'Status Mdm' ). gr_column->set_long_text( 'Status Long' ). gr_column ?= gr_columns->get_column( 'TEXT' ). gr_column->set_short_text( 'Text' ). gr_column->set_medium_text( 'Text Mdm' ). gr_column->set_long_text( 'Text Long' ). CATCH cx_salv_not_found. ENDTRY. * alv display CALL METHOD go_alv->display.
程序运行结果如下:
场景二:使用ALV的exception列来显示traffic light,激活ALV最优列宽,激活ALV报表的标准功能。
REPORT ztest_alv_01. TYPES: BEGIN OF ty_alv_result, lights(1) TYPE c, text(20) TYPE c, END OF ty_alv_result. DATA: gt_result TYPE TABLE OF ty_alv_result, go_alv TYPE REF TO cl_salv_table, gr_functions TYPE REF TO cl_salv_functions_list, gr_columns TYPE REF TO cl_salv_columns_table, gr_column TYPE REF TO cl_salv_column_table. START-OF-SELECTION. * initial result table gt_result = VALUE #( ( lights = '1' text = 'RED SIGNAL' ) ( lights = '2' text = 'YELLOW SIGNAL' ) ( lights = '3' text = 'GREEN SIGNAL' ) ). * get alv instance CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = go_alv CHANGING t_table = gt_result. * set exception column gr_columns = go_alv->get_columns( ). gr_columns->set_exception_column( value = 'LIGHTS' ). * optimize columns gr_columns->set_optimize( abap_true ). * column description * gr_columns->get( ). // get all column list * gr_columns->get_column () // get single column TRY. gr_column ?= gr_columns->get_column( 'LIGHTS' ). gr_column->set_short_text( 'Status' ). gr_column->set_medium_text( 'Status Mdm' ). gr_column->set_long_text( 'Status Long' ). gr_column ?= gr_columns->get_column( 'TEXT' ). gr_column->set_short_text( 'Text' ). gr_column->set_medium_text( 'Text Mdm' ). gr_column->set_long_text( 'Text Long' ). CATCH cx_salv_not_found. ENDTRY. * open alv std functions gr_functions = go_alv->get_functions( ). gr_functions->set_all( abap_true ). * alv display CALL METHOD go_alv->display.
程序运行结果如下:
Tips:
1)若使用DDIC的structure定义ALV的显示结果,则不需要在程序中为column指定描述,ALV的列名会使用对应字段data element中定义的short、medium和long的名称;
2)Exception列的描述也会变为data element的描述;
3)SAP提供了很多ALV的示例程序在package SLIS 中,在实际项目实施过程中,如遇到陌生的功能点,可参考示例程序。
相关文章推荐
- ABAP--如何使用CL_SALV_TABLE 的代码样例(2004以后版本)
- ABAP--如何使用CL_SALV_TABLE 的代码样例(2004以后版本)
- ABAP--如何使用CL_SALV_TABLE 的代码样例(2004以后版本)
- ABAP--如何使用CL_SALV_TABLE 的代码样例(2004以后版本)
- ABAP--如何使用CL_SALV_TABLE 的代码样例(2004以后版本)
- 运用类CL_SALV_TABLE实现alv
- ABAP--如何使用CL_SALV_TABLE 的代码样例(2004以后版本)
- ABAP--如何使用CL_SALV_TABLE 的代码样例(2004以后版本)
- ALV demo:cl_salv_table(Ap…
- abap报表中(ALV或者普通屏幕的定制控制中)如何让列可以使用求和按钮
- ALV demo:cl_salv_table&nbs…
- ALV demo:cl_salv_table&nbs…
- 使用NPOI 技术 的SetColumnWidth 精确控制列宽不能成功的解决办法(C#)
- ALV demo:cl_salv_table&nbs…
- jface databinding:使用CheckboxTableViewer实现表中(Set)对象与CheckTable中选中条目数据绑定
- ALV demo:cl_salv_table&nbsp…
- ALV demo:cl_salv_table
- [翻译] Scott Mitchell 的ASP.NET 2.0数据操作教程之十:使用 GridView 和DetailView实现的主/从报表
- 使用DirectX实现视频播放_技术
- 使用Visual FoxPro 8.0的成员类和Excel实现自定义报表输出