声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4291387.html
OOset_all( abap_true)设置的按钮要少很多
gr_table->display( ).
FORM inital .
gt_data-key1 = ‘a’.
gt_data-key2 = ‘aa’.
APPEND gt_data.
ENDFORM.
可控模式
先绘制屏幕 100,然后在其上面放上用户自定义控件区域(Custom Control),并命名为CONTAINER_1:
可控模式(利用控制器的模式)的SALV是不能以弹出框来显示的
end_column
start_line
end_line = 5 ).
gr_table->display( ).
FORM inital .
gt_data-key1 = ‘a’.
gt_data-key2 = ‘aa’.
APPEND gt_data.
gt_data-key1 = ‘b’.
gt_data-key2 = ‘bbbbbbbb’.
APPEND gt_data.
ENDFORM.
排序、分类汇总
sequence .
APPEND gt_data.
ENDFORM.
设置数据过滤条件
ALV 的标准按钮中已经有过滤的功能,我们也可以在初始显示的时候就设置过滤条件
.
APPEND gt_data.
ENDFORM.
GUI Status
使用全屏模式与全屏幕经典列表模式的SALV
全屏模式与全屏幕经典列表模式的SALV
gr_table->set_screen_status(
pfstatus = ‘T002′”系统提示的标准Status为可控制模式(即用户对话屏幕)的SALV
FORM inital .
gt_data-key1 = ‘a’.
gt_data-key2 = ‘aa’.
APPEND gt_data.
ENDFORM.
MODULE 100_pbo OUTPUT.
PERFORM inital.
“判断是否已分配了一个有效引用
IF gr_container IS NOT BOUND.
“创建容器
CREATE OBJECT gr_container
EXPORTING
container_name = ‘CONTAINER_1’.”屏幕上用户自定义控件名
“创建ALV
cl_salv_table=>factory(
EXPORTING
r_container = gr_container
container_name = ‘CONTAINER_1’
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = gt_data[] ).
“附加刷新按钮
DATA: lr_functions TYPE REF TO cl_salv_functions_list.
lr_functions = gr_table->get_functions( ).
lr_functions->在预设置工具栏上附加按钮”示例的基础上,增加按钮事件
.
FORM inital .
gt_data-key1 = ‘a’.
gt_data-key2 = ‘aa’.
APPEND gt_data.
ENDFORM.
MODULE 100_pbo OUTPUT.
PERFORM inital.
“判断是否已分配了一个有效引用
IF gr_container IS NOT BOUND.
“创建容器
CREATE OBJECT gr_container
EXPORTING
container_name = ‘CONTAINER_1’.”屏幕上用户自定义控件名
“创建ALV
cl_salv_table=>factory(
EXPORTING
r_container = gr_container
container_name = ‘CONTAINER_1’
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = gt_data[] ).
“附加刷新按钮
DATA: lr_functions TYPE REF TO cl_salv_functions_list.
lr_functions = gr_table->get_functions( ).
lr_functions->set_all( abap_true ).
INCLUDE <icon>.
DATA: l_icon TYPE string.
l_icon = icon_refresh.
“附加按钮,只适用于 可控模式 下的SALV
lr_functions->add_function(
name = ‘REFRESH’
icon = l_icon
text = ‘刷新按钮’
tooltip = ‘刷新数据’
“按钮存放的位置:这里在右边附加。该参数的其他取值可以查看该方法源码,可以
“找到该参数其他取值的蛛丝马迹
position = if_salv_c_function_position=>right_of_salv_functions ).
“=====获取事件对象
DATA: lr_event TYPE REF TO cl_salv_events_table.
lr_event = gr_table->get_event( ).
“=====事件注册
DATA: lr_handle_event TYPE REF TO l_cl_handle_events.
CREATE OBJECT lr_handle_event.
SET HANDLER lr_handle_event->on_user_command FOR lr_event.
“显示
gr_table->display( ).
ENDIF.
ENDMODULE.
FORM handle_user_command USING p_function TYPE salv_de_function.
CASE p_function.
WHEN ‘REFRESH’.
PERFORM inital.
gr_table->refresh( ).
ENDCASE.
ENDFORM.
红绿灯、灯提示信息
),
END OF gt_data.
START-OF-SELECTION.
PERFORM inital.
cl_salv_table=>factory(
IMPORTING r_salv_table = gr_table
CHANGING t_table = gt_data[] ).
gr_columns = gr_table->get_columns( ).
gr_columns->set_exception_column( ‘LIGHT’ ).
gr_column ?= gr_columns->get_column( ‘LIGHT’ ).
“如果不通过下面set_ddic_reference方法来设置参
“照某词典类型,则异常列标题固定显示为 Exception
gr_column->set_long_text( ‘异常灯’ ).
DATA: s_ddic TYPE salv_s_ddic_reference.
s_ddic-field = ‘FIELD’.
s_ddic-table = ‘SALV_S_DDIC_REFERENCE’.
gr_column->set_ddic_reference( s_ddic ).
gr_column ?= gr_columns->get_column( ‘VAL’ ).
gr_column->set_long_text( ‘异常值’ ).
“==========为异常列单无格不同的值添加不同的冒泡提示
DATA:lr_functional_settings TYPE REF TO cl_salv_functional_settings.
lr_functional_settings = gr_table->get_functional_settings( ).
DATA: lr_tooltips TYPE REF TO cl_salv_tooltips.
lr_tooltips = lr_functional_settings->get_tooltips( ).
lr_tooltips->add_tooltip(
“单元格显示类型:异常灯、图标、符号。即这里针对的是类型为 异常列 所有的单元格
type = cl_salv_tooltip=>c_type_exception
value = space”不同的图形不同的冒泡提示
tooltip = ‘Undefined’).
lr_tooltips->add_tooltip(
type = cl_salv_tooltip=>c_type_exception
value = ‘1’
tooltip = ‘红灯’).
lr_tooltips->add_tooltip(
type = cl_salv_tooltip=>c_type_exception
value = ‘2’
tooltip = ‘黄灯’).
lr_tooltips->add_tooltip(
type = cl_salv_tooltip=>c_type_exception
value = ‘3’
tooltip = ‘绿灯’).
gr_table->display( ). “调用实例方法显示表报
FORM inital .
gt_data-light = ‘ ‘. “取值范围为:空、1~3
gt_data-val = ‘空’.
APPEND gt_data .
gt_data-light = ‘1’.
gt_data-val = ‘1’.
APPEND gt_data .
gt_data-light = ‘2’.
gt_data-val = ‘2’.
APPEND gt_data .
gt_data-light = ‘3’.
gt_data-val = ‘3’.
APPEND gt_data .
ENDFORM.
图标显示、图标提示信息
,
icon TYPE icon_d, “图标
val TYPE string,
END OF gt_data.
START-OF-SELECTION.
PERFORM inital.
cl_salv_table=>factory(
IMPORTING r_salv_table = gr_table
CHANGING t_table = gt_data[] ).
gr_columns= gr_table->get_columns( ).
gr_column ?= gr_columns->get_column( ‘ICON’ ).
gr_column->set_icon( if_salv_c_bool_sap=>true ).
gr_column->set_long_text( ‘图标’ ).
gr_column ?= gr_columns->get_column( ‘VAL’ ).
gr_column->set_long_text( ‘图标值’ ).
“==========为图标列单无格不同的值添加不同的冒泡提示
DATA:lr_functional_settings TYPE REF TO cl_salv_functional_settings.
lr_functional_settings = gr_table->get_functional_settings( ).
DATA: lr_tooltips TYPE REF TO cl_salv_tooltips.
lr_tooltips = lr_functional_settings->get_tooltips( ).
DATA: lvc_value TYPE lvc_value.
lvc_value = icon_locked.
lr_tooltips->add_tooltip(
“单元格显示类型:异常灯、图标、符号。即这里针对的是类型为 图标列 所有的单元格
type = cl_salv_tooltip=>c_type_icon
value = lvc_value”不同的图形不同的冒泡提示
tooltip = ‘锁定’).
lvc_value = icon_message_warning.
lr_tooltips->add_tooltip(
type = cl_salv_tooltip=>c_type_icon
value = lvc_value
tooltip = ‘警告’).
lvc_value = icon_unlocked.
lr_tooltips->add_tooltip(
type = cl_salv_tooltip=>c_type_icon
value = lvc_value
tooltip = ‘解锁’).
gr_table->display( ). “调用实例方法显示表报
FORM inital .
gt_data-icon = icon_locked.
“在前面加了等号,如果不加,也会直接输出图标,而不是文字
gt_data-val = `=@06@`.
APPEND gt_data .
gt_data-icon = icon_message_warning.
gt_data-val = `=@1A@`.
APPEND gt_data .
gt_data-icon = icon_unlocked.
gt_data-val = `=@07@`.
APPEND gt_data .
ENDFORM.
设置单元格颜色
),
color TYPE lvc_t_scol,
END OF gt_data.
START-OF-SELECTION.
PERFORM inital.
cl_salv_table=>factory(
IMPORTING r_salv_table = gr_table”用来接收工厂产生的实例
CHANGING t_table = gt_data[] ).
FIELD-SYMBOLS: <ls_outtab> LIKE gt_data.
DATA: lt_color TYPE lvc_t_scol,
ls_color TYPE lvc_s_scol.
LOOP AT gt_data ASSIGNING <ls_outtab>.
CLEAR: ls_color,lt_color.
IF <ls_outtab>-key1 = ‘a’.
ls_color-fname = ‘KEY1’.”为哪列设置颜色
ls_color-color-col = ‘6’.”颜色值
ls_color-color-int = ‘0’.”加深
ls_color-color-inv = ‘0’.”前景背景颜色反转
APPEND ls_color TO lt_color.
ENDIF.
IF <ls_outtab>-key2 = ‘bb’.
ls_color-fname = ‘KEY2’.
ls_color-color-col = ‘5’.
ls_color-color-int = ‘0’.
ls_color-color-inv = ‘0’.
APPEND ls_color TO lt_color.
ENDIF.
<ls_outtab>-color = lt_color.
ENDLOOP.
gr_columns = gr_table->get_columns( ).
gr_columns->set_color_column( ‘COLOR’ ).
gr_table->display( ).
FORM inital .
gt_data-key1 = ‘a’.
gt_data-key2 = ‘aa’.
APPEND gt_data.
gt_data-key1 = ‘b’.
gt_data-key2 = ‘bb’.
APPEND gt_data.
ENDFORM.