ALV输出应用
1.ALV简介
ALV全称 SAP List View。
ALV是一个屏幕控件对象,通过传递数据内表方式显示数据;
ALV显示格式分为Grid 和 List两种模式:
Grid模式有栏位选择按钮功能,允许用户直接输出格式,操作更为灵活;
List 模式则固定格式,应用于较严格的标准报表。
2.ALV报表开发的相关参数及属性
2.1 Layout和Fieldcat的定义
Layout主要用于设定ALV的输出格式,为ALV输出的可选项;
Fieldcat 主要用于ALV的结构定义,包括具体的栏位及名称、类型、格式等属性,为ALV输出的必选项。
在调用ALV之前,需要先定义Layout 和Fieldcat,他们同属于类型池SLIS:
1 TYPE-POOLS: slis. 2 *alv相关定义 3 DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE, 4 gt_layout TYPE slis_layout_alv.
2.2Layout为一Structure,其主要栏位定义及属性:
Edit:设置ALV是否为可编程模式
Colwidth_optimize:将ALV栏位宽度设置为最优化,按实际输出内容宽度自动匹配
No_vline:输出ALV表格不显示垂直格式
No_Uline_Hs:输出ALV表不显示水平格线
Info_filedname:设置颜色属性
Key_Hotspot:设置关键栏位热点
No_colname:是否显示字段名
Zebra:使ALV表格按斑马线间隔条码方式显示,以增强显示美观
Box_Fieldname:设置ALV表格是否显示选择按钮栏位
Info_FieldName:用于设置ALV输出报表每一行的颜色,其参数为输出内表的栏位名称
要注意的是:使用该属性需要同事在内表中定义一个与该参数所定义字段名相同的栏位,例如:
layout-info_fieldname = ‘COLOR’.
倘若其数据输出内表名为LT_OUT,则需要在改内表增加一个栏位“COLOR”,并为内表每行赋值,颜色参数范围:C000~C999,例如:LT_OUT-COLOR = ‘C500’.
2.3Fieldcat的相关属性:
Key:将栏位设置为Key值
Icon:将定义栏位以ICON的形式显示
CheckBox:将定义栏位以CheckBox的形式显示
Just:定义栏位对齐方式:(R)Right (L)Left (C)Center
Izero:将定义栏位以前置0的形式显示
No_Sign:将定义栏位的符号设置为不显示
No_Zero:定义栏位是否显示
Emphasize:设置栏位的颜色
Do_sum:对栏位进行加总
Seltext_L/M/S:设置栏位名称为描述 长/中/短
Ddictxt:设置栏位显示字符串
Hotspot:设置栏位是否有热点(热点栏位显示有下划线)
2.2 调用ALV输出的时的函数
①REUSE_ALV_GRID_DISPLAY
②REUSE_ALV_LIST_DISPLAY
③REUSE_ALV_FIELDCATALOG_MERGE
参考程序中所定义的内表或者系统数据字典中的表或视图,获取相关的结构信息,并将该信息赋值给Field对象,作为输出字段选择的条件。
需要注意的是:使用该函数获取程序内的表或结构时,必须保证该结构或内表中的每个字段都参考数据字典中的Data Element,否则无法获取字段的相关信息。当然也可以自定义fieldcat的内容。
1 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 2 EXPORTING 3 I_INTERFACE_CHECK = ' ' 4 I_BYPASSING_BUFFER = ' ' 5 I_BUFFER_ACTIVE = ' ' 6 i_callback_program = gv_repid 7 i_callback_pf_status_set = 'FRM_SET_GUI' 8 i_callback_user_command = 'FRM_USER_COMMAND' 9 I_CALLBACK_TOP_OF_PAGE = ' ' "以上兩個PERFORM主要是為了 10 I_CALLBACK_HTML_TOP_OF_PAGE = ' ' "為ALV寫一個工具欄 11 I_CALLBACK_HTML_END_OF_LIST = ' ' 12 I_STRUCTURE_NAME = 13 I_BACKGROUND_ID = ' ' 14 i_grid_title = 'ALV输出' "為ALV顯示一個名稱 15 I_GRID_SETTINGS = 16 is_layout = gt_layout 17 it_fieldcat = gt_fieldcat[] 18 IT_EXCLUDING = 19 IT_SPECIAL_GROUPS = 20 IT_SORT = GT_SORT[] 21 IT_FILTER = 22 IS_SEL_HIDE = 23 I_DEFAULT = 'X' 24 i_save = 'X' 25 IS_VARIANT = 26 IT_EVENTS = GT_EVENT[] 27 IT_EVENT_EXIT = 28 IS_PRINT = 29 IS_REPREP_ID = 30 I_SCREEN_START_COLUMN = '0' 31 I_SCREEN_START_LINE = '0' 32 I_SCREEN_END_COLUMN = '0' 33 I_SCREEN_END_LINE = '0' 34 I_HTML_HEIGHT_TOP = '0' 35 I_HTML_HEIGHT_END = '0' 36 IT_ALV_GRAPHICS = 37 IT_HYPERLINK = 38 IT_ADD_FIELDCAT = 39 IT_EXCEPT_QINFO = 40 IR_SALV_FULLSCREEN_ADAPTER = 41 IMPORTING 42 E_EXIT_CAUSED_BY_CALLER = 43 ES_EXIT_CAUSED_BY_USER = 44 TABLES 45 t_outtab = gt_print 46 EXCEPTIONS 47 program_error = 1 48 OTHERS = 2.
i_callback_program:程序名称
is_layout:程序所定义的layout名称
i_grid_title:定义ALV的标题名
it_fieldcat:定义Fieldcat数据
t_outtab: 传入所需显示的内表数据
i_callback_pf_status_set:定义触发工具栏定义的子程序
i_callback_user_command:其对应值一般为子程序名,在单击ALV工具栏按钮或双击工具栏行项目时触发所定义的子程序