1、 保存布局,对于自己满意的布局,可以通过点击它来将布局保存起来。2表单标题区这个区域主要是用来显示一些抬头信息(总揽信息),类似于WORD中的页眉。我们在使用的时候根据需要来进行相关填写。3表单显示区 这个区域主要是用来显示我们通过代码筛选出来的数据,相关的操作在下面的程序编写部分详细介绍。三、程序的编写1在我们写ALV程序的时候,有一个类型组是肯定要用到的: TYPE-POOLS:SLIS。 在这个类型组中有很多ALV的自定义数据类型以及结构化数据类型(通过TYPE来定义的),我们在写ALV表单的时候需要调用的。我们常用的几个有(蓝色部分):I对一个最简单的ALV表单(无标题区和页脚区),我
2、们只需要定义下面几个data: i_fieldcat_alv type slis_t_fieldcat_alv with header line, i_layout type slis_layout_alv, alv的格式 i_fieldcat type slis_fieldcat_alv,w_repid like sy-repid. 它对应的start-of-selection中定义子函数如下: start-of-selection. perform getdata. “从数据库中取数据到相应内表中 perform layout_build. “用于定义ALV表单的相关格式、属性 perfo
3、rm fields. “用来定义表单中的各个列的相关信息,比如列名等 perform display_data. “用来显示ALV表单子函数定义如下: form layout_build. i_layout-zebra = X. i_layout-detail_popup = . “是否弹出详细信息窗口 w_repid = sy-repid. “程序为当前程序 i_layout-f2code = &ETA.“设置触发弹出详细信息窗口的功能码,这里是双击i_layout-no_vline = .“这个用来设置列间隔线 i_layout-colwidth_optimize = . “优化列宽选项是
4、否设置 i_layout-detail_initial_lines = i_layout-detail_titlebar = 详细内容. “设置弹出窗口的标题栏endform. form fields. refresh i_fieldcat_alv. pos = 1. clear i_fieldcat. i_fieldcat-col_pos = pos. “第几列 i_fieldcat-fieldname = NUM i_fieldcat-seltext_l = 序号. “列名 append i_fieldcat to i_fieldcat_alv. pos = pos + 1. i_fiel
5、dcat-col_pos = pos.AUFNR生产订单 clear i_fieldcat. Endform. form display_data. call function REUSE_ALV_GRID_DISPLAY exporting i_callback_program = w_repid “当前程序 i_save = is_layout = i_layout “子函数layout_build填充的格式定义 it_fieldcat = i_fieldcat_alv “子函数fields填充的各列 tables t_outtab = head1. “假设数据都在head1内表中II对一
6、个稍微复杂一点的ALV表单(有标题区和页脚区),我们需要定义下面几个 i_fieldcat_alv type slis_t_fieldcat_alv,“用来存储我们将要在表单显示区域显示出来的表单的列名,每个列名对应的字段名以及列表头其他相关属性信息的数据类型 i_fieldcat type slis_fieldcat_alv, i_layout type slis_layout_alv. “ALV的格式 i_events type slis_t_event, i_event_exit type slis_t_event_exit, i_list_comments type slis_t_li
7、stheader, “用来填充表单标题区域的数据类型 i_excluding type slis_t_extab. w_variant like disvariant, 显示变式结构 wx_variant like disvariant, w_variant_save(1) type c, w_exit(1) type c, w_user_specific(1) type c, w_callback_ucomm type slis_formname, 字符型 w_print type slis_print_alv, 类型组 w_layout type slis_layout_alv, w_ht
8、ml_top_of_page type slis_formname, w_fieldcat_alv like line of i_fieldcat_alv, w_excluding like line of i_excluding, w_events like line of i_events, w_event_exit like line of i_event_exit, w_list_comments like line of i_list_comments.*=*initialization. perform init_variant. “这个子函数很重要,没有它会出错*-*它对应的st
9、art-of-selection中定义子函数如下:start-of-selection. perform getdata. “从数据库中取数据到相应内表中 perform event_build. perform fields. “用来定义表单中的各个列的相关信息,比如列名等 perform display_data. “用来显示ALV表单(这里只定义前面文档没有提到的子函数,其他同名的请参考前面)form init_variant. clear: w_variant. w_repid = sy-repid. “当前程序 w_variant-report = w_repid. w_varian
10、t-username = sy-uname. w_variant_save = A. All typesform event_build. call function REUSE_ALV_EVENTS_GET exporting i_list_type = 0 importing et_events = i_events. read table i_events with key name = slis_ev_top_of_page into w_events. if sy-subrc = 0. move ALV_TOP_OF_PAGE to w_events-form. “将标题区数据赋值给
11、W_EVENTS modify i_events from w_events index sy-tabix. endif. with key name = slis_ev_end_of_listALV_END_OF_LIST to w_events-form.“将页尾数据赋值给W_EVENTS with key name = slis_ev_end_of_pageALV_END_OF_PAGE to w_events-form. “将页脚区数据赋值给W_EVENTSform event_build子函数中黑体字部分对应的几个子函数,我们需要定义如下:form alv_top_of_page.
12、i_list_comments. w_list_comments-typ = HH=Header, S=Selection, A=Action供选择 w_list_comments-key = w_list_comments-info = XX汽车有限公司变速箱废品率报表 append w_list_comments to i_list_comments.S H = Header, S = Selection, A = Action concatenate 库位: werks-low into werks_t. w_list_comments-info = werks_t.REUSE_ALV_
13、COMMENTARY_WRITE i_logo = ENJOYSAP_LOGO it_list_commentary = i_list_comments.form alv_end_of_list.H = Header, S = Selection, A = Action页脚显示 it_list_commentary = i_list_comments i_end_of_list_grid = form alv_end_of_page. 它的定义类似上面两个子函数的内容,这里不再赘述form display_data.* i_background_id = SIWB_WALLPAPER i_ba
14、ckground_id = i_callback_program = w_repid i_callback_html_top_of_page = w_html_top_of_page* i_structure_name = TRDIR i_default = is_variant = w_variant is_layout = w_layout* i_callback_user_command = w_callback_ucomm it_fieldcat = i_fieldcat_alv it_events = i_events it_event_exit = i_event_exit it_
15、excluding = i_excluding is_print = w_print* i_screen_start_column = 1* i_screen_start_line = 1* i_screen_end_column = 70* i_screen_end_line = 30 tables t_outtab = head1.2写一个ALV程序的基本流程(主要包括ALV相关的那部分,后面会附上一个ALV源程序的代码): 第一步:定义将要用到的表,即TALBES定义部分,然后定义TYPE-POOLS: SLIS. 第二步:定义“1”中提到的这些数据类型或者内表的实体对象 第三步:定义一
16、些需要用到的变量 第四步: 定义自己的选择屏幕 第五步: 定义INITIALIZATION部分,在这个部分往往要指定w_repid的值, w_repid = sy-repid。 第六步: start-of-selection部分用一个子函数完成对ALV表单标题区域的赋值(i_list_comments)。用一个子函数完成自己所需要数据的抓取用一个子函数完成要显示列表的列名行(第一行)的相关赋值(i_fieldcat_alv)以及设置用一个子函数完成输出格式的设置(i_layout),比如双击一条记录是否弹出对话框啊?是用哪个功能键触发等等用一个子函数FORM DISPLAY_DATA来显示上面
17、我们已经分别封装好的数据,需要调用两个常用的FUNCTION MODULE: FUNCTION “用来显示表单数据 “用来显示表单标题附件: 示例程序源代码(注:下面这个程序调用的ALV功能应该讲是比较完全的了,大家可以通过上面的学习之后,再看这个程序,应该会有所收获)*-* Program: ZZ_ALV_REPORT_STUB* Author : Clayton Mergen* Date :* Purpose: Report using ALV function* Notes:* 1) Logos & wallpapers can be found in table BDS_CONN05*
18、 with class = PICTURES* 2) Transaction OAER can be used to create PICTURES.* Run transaction OAER with class name = PICTURES, Class type = OT,* and Object key with whatever name you want to create. In the* next screen, right clicking on screen and import* Revisions* Name :* Comments:report zflex004
19、no standard page heading line-size 200 line-count 65 message-id zz.*-* Tablestables: ekpo, mara, trdir.* Global Typestype-pools: slis.* Global Internal Tables i_list_comments type slis_t_listheader,* Display data begin of i_data occurs 0, matnr like mara-matnr, mtart like mara-mtart, end of i_data.* Global Variables w_repid like sy-repid, abap程序,当前主程序
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1