alv细节

来源:互联网 发布:阿里云服务器ecs 美国 编辑:程序博客网 时间:2024/04/30 15:23

如有转载请注明出处:http://blog.csdn.net/donkey2004112103/archive/2009/05/10/4165851.aspx

1.alv中显示红绿灯

alv中显示红绿灯,可以非常直观的告诉客户那些项目时有问题的,哪些没有问题。图如下:

image

灯共有三种状态,红灯,黄灯,绿灯,此示例程序在sap中有标准程序示例bcalv_grid_04,在package:slis中都是alv程序例子。关于它的实现非常容易,我使用的是ALV OO的方法去做的,调用function module的没有测试。实现步骤如下:

1.1定义变量

在要输出的内表中要添加一个字段,类型为c。如下:

DATA:    light type c.

1.2定义lvc_cifnm变量

接着要定义一个lvc_cifnm类型的变量,如下:

data: g_lights_name type lvc_cifnm value 'LIGHT'.

注意这里的value一定要大写,而且一定要和内部中定义的字段名称一样!否则不会显示。

1.3给字段赋值

就是给light变量赋值,1代表红灯,2代表黄灯,3代表绿灯。

1.4设置布局

设置布局要设置一个lvc_s_layo一个字段,如下:

ps_layout-excp_fname = g_lights_name. "异常

g_lights_name就是刚才我们定义的变量。这样就可以显示异常的红绿灯,有两种模式,除了刚才见到的,还有一种image ,这里的设置是通过ps_layout-excp_led = 'X'.字段设置。

2.alv去掉不需要的按钮

alv如果用面向对象方法显示会有很多不需要的按钮出现,如添加删除等影响结果的按钮。消除这些按钮也很容易。步骤如下:

2.1收集不需要的按钮

通常ALV事件定义在PBO事件中,我们要先定义一个变量,如下:

data: lt_exclude type ui_functions.     "alv不需要的图标按钮

然后可以定义一个函数把不需要的全部按钮添加到内表中。如下:

form EXCLUDE_TB_FUNCTIONS  changing pt_exclude type ui_functions.
data ls_exclude type ui_func.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>MC_FC_CHECK.
append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>MC_FC_REFRESH.
append ls_exclude to pt_exclude.
endform.                    " EXCLUDE_TB_FUNCTIONS

cl_gui_alv_grid是一个全局的类,把它的属性一一取出添加到内表中即可。

2.2调用显示ALV的时候添加参数

调用alv的时候只要加上一个参数如下:

CALL METHOD obj_wcl_alv->set_table_for_first_display
EXPORTING
        is_variant                    = gs_variant
        is_layout                     = g_str_layout
        i_save                        = 'A'
        it_toolbar_excluding  = lt_exclude
CHANGING
        it_outtab                     = itb_record_list[]
        it_fieldcatalog               = g_itb_fieldcat
EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
OTHERS                        = 4.

把刚才收集到的按钮内表传进参数it_toolbar_excluding中,这样显示的时候就不会有多余的图标出现。

原创粉丝点击