版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、alv 总结 作者:张志昂2008.07.08 1 / 29 alvalv 开发流程:开发流程: 1. 将得到并整理好的数据以将得到并整理好的数据以 alv 的形式显示出来的形式显示出来.4 1.1. 在子在子 form(这里如:(这里如:f_fields)指定需要显示的字段)指定需要显示的字段.4 1.2. 在子在子 form(这里如:(这里如:f_build_layout)里设置)里设置 alv 的全局属性的全局属性 .4 1.3. 在子在子 form(这里如:(这里如:f_display)里将内表中的数据进行显示)里将内表中的数据进行显示 .51.4. 为为 alv 程序添加表头标题(这
2、里以添加程序添加表头标题(这里以添加 html 表头标题为主)表头标题为主).5 1.4.1. 在显示 alv 的函数(reuse_alv_grid_display_lvc)里添加一个参数.5 1.4.2. 在子 form(f_top_of_page)里定义好需要的变量.5 1.4.3. 准备好所需数据,如登录用户的描述、制表日期等.6 1.4.4. 将表头数据输出 .6 2. 函数函数“reuse_alv_grid_display_lvc”中输入参数的应用中输入参数的应用 .7 2.1. 排序排序.7 2.1.1. 在显示 alv 的子 form 里定义排序用到的变量 .7 2.1.2. 设
3、置好需要排序的字段 .8 2.1.3. 在显示 alv 的函数的输入参数里添加排序的属性.8 2.2. 隐藏不必要的标准按钮隐藏不必要的标准按钮.8 2.2.1. 先在显示 alv 的子 form 里定义隐藏按钮用到的变量.8 2.2.2. 得到需要隐藏的标准按钮的“fcode”.8 2.3. 自定义自定义“工具栏工具栏” .9 2.3.1. 在显示 alv 的函数的输入参数里指定自定义按钮的子 form.9 3. 热点链接、用户动作的捕捉、调用其他程序或标准事务程序热点链接、用户动作的捕捉、调用其他程序或标准事务程序.11 3.1在显示在显示 alv 的函数的输入参数里指定捕捉用户动作的子的
4、函数的输入参数里指定捕捉用户动作的子 form .11 3.2在在“字段和列名字段和列名”的子的子 form(f_fields)里,对需要链接的列添加)里,对需要链接的列添加“热点热点”属性属性.11 3.3. 操作代码操作代码 .11 3.4. 显示具体细节显示具体细节.12 3.5. 调用其他事务调用其他事务.14 3.6. 打开并选择文件:打开并选择文件: .14 4. 关于设置字段和列名的子关于设置字段和列名的子 form(f_fields)的参数设置:)的参数设置:.15 4.1. 单列优化宽度单列优化宽度.15 alv 总结 作者:张志昂2008.07.08 2 / 29 4.2.
5、 单列求和或者取消求和,添加属性单列求和或者取消求和,添加属性.15 4.3. 对其方式对其方式 .15 4.4. 作为图标输出作为图标输出.16 4.5. 固定列和关键列固定列和关键列.16 4.6. 列的字符宽度列的字符宽度.16 5. 单元格的单元格的 f1、f4 帮助:帮助:.17 5.1. f1 帮助:帮助:.17 5.2. f4 帮助:帮助:.17 6. 输入并保存、回调修改内表(输入时的小数位错位的问题、指定数据类型、输入并保存、回调修改内表(输入时的小数位错位的问题、指定数据类型、 小说位数)小说位数).17 7. 界面颜色的更改界面颜色的更改 .18 7.1. 更改单元格(字
6、体)的前景、背景颜色更改单元格(字体)的前景、背景颜色.19 7.2. 更改行的颜色和列的颜色更改行的颜色和列的颜色: .19 7.3. 利用设置字段和列名子的利用设置字段和列名子的 form(f_fields)里来设置列的颜色)里来设置列的颜色 .20 8. alv 自带的最左端复选框按钮和自定义复选框按钮自带的最左端复选框按钮和自定义复选框按钮.20 8.1. alv 自带的复选框按钮:自带的复选框按钮:.20 8.2. 自定义复选框按钮自定义复选框按钮 .20 9. 按照上传的模板格式导出为本地文件按照上传的模板格式导出为本地文件.21 9.1. 定义导出为定义导出为 excel 用到的
7、数据变量用到的数据变量 .21 9.2. 上传模板上传模板 .21 9.3 代码代码.22 10. 为为 alv 标题添加图片标题添加图片.26 10.1. 上传图片上传图片 .26 10.2. 在子在子 form(f_top_of_page2)里的代码)里的代码.27 alv 总结 作者:张志昂2008.07.08 3 / 29 alv:abap list view,一种比较美观的报表显示工具 reuse_alv_list_display grid 的是 excel 单元格的格式,而 list 不是 alv 总结 作者:张志昂2008.07.08 4 / 29 reuse_alv_grid_
8、display 可以控制某一行 某一列,甚至某一格(cell)的读写 alv 用到的函数,目前我们有 2 个:reuse_alv_grid_display、reuse_alv_grid_display_lvc;两个 函数都可以将数据用 alv 的形式显示出来,只是在一些小的地方有些不同。只是在一些小的地方有些不同。 其中这两个函数都用到的全局变量为:1 个类型池 slis 和一个指定列数的变量 data: v_pos type i. 指定第几列 pos 表示列 第 1 个函数用到的全局变量如下:都是 slis 类型池中的类型,结尾都是 alv(表示他们用于 alv) data: wa_fiel
9、dcat type slis_fieldcat_alv , 相当于工作区 i_fieldcat type slis_t_fieldcat_alv , 存放列名的内表 i_layout type slis_layout_alv . 负责整个 alv 的全局属性 第 2 个函数用到的全局变量: data: wa_fieldcat type lvc_s_fcat , 相当于工作区 i_fieldcat_lvc type lvc_t_fcat , 存放列名的内表 i_layout_lvc type lvc_s_layo . 负责整个 alv 的全局属性 下面以第 2 个函数(reuse_alv_gri
10、d_display_lvc)来介绍 alv 的用法; 1.将得到并整理好的数据以将得到并整理好的数据以 alv 的形式的形式 显示出来显示出来 1.1.在子在子 form(这里如:(这里如:f_fields)指定需要显示)指定需要显示 的字段的字段 wa_fieldcat 工作区,可以赋值工作区,可以赋值 v_pos = v_pos + 1 . 初始值是零 wa_fieldcat-col_pos = v_pos . 指定列数 wa_fieldcat-fieldname = pspid . 需要输出的内表的字段名 wa_fieldcat-scrtext_l = 项目定义 . 字段的描述-长字段标
11、签 screen text long wa_fieldcat-scrtext_m = 项目定义 . 字段描述-中字段标签 wa_fieldcat-scrtext_s = 项目定义 . 字段描述-短字段标签 wa_fieldcat-fix_column = x . 是否是固定列 column klm列 append wa_fieldcat to i_fieldcat_lvc. clear wa_fieldcat. 这样逐步的将需要显示的字段都添加到内表 i_fieldcat 中; alv 总结 作者:张志昂2008.07.08 5 / 29 1.2.在子在子 form(这里如:(这里如:f_bu
12、ild_layout)里设)里设 置置 alv 的全局属性的全局属性 i_layout_lvc-zebra = x . 使 alv 界面呈现颜色交替 i_layout_lvc-sel_mode = a . 选择模式,选择模式, “a”“a”在最左端有选择按在最左端有选择按 钮钮 i_layout_lvc-cwidth_opt = x . 自动优化列宽 i_layout_lvc-detailinit = x . 是否出现细节屏幕 i_layout_lvc-detailtitl = 详细内容 . 细节屏幕标题 1.3.在子在子 form(这里如:(这里如:f_display)里将内表中的)里将内表
13、中的 数据进行显示数据进行显示 call function reuse_alv_grid_display_lvc exporting i_callback_program = sy-repid 当前程序 is_layout_lvc = i_layout_lvc 属性内表 it_fieldcat_lvc = i_fieldcat_lvc 列明内表 i_save = x 是否保存布局 tables t_outtab = i_tab 数据内表 exceptions program_error = 1 others = 2. 通过这一步后,一个基本的 alv 程序就完成了;下面是对 alv 程序的优化
14、和扩展。 1.4.为 alv 程序添加表头标题(这里以添加 html 表 头标题为主) 1.4.1.在显示在显示 alv 的函数的函数 (reuse_alv_grid_display_lvc)里添加一个参数)里添加一个参数 i_callback_html_top_of_page = f_top_of_page 其中“f_top_of_page”是书写 alv 表头标题的子 form,只是在这里使用,没有明显的 “perform”调用,如下: form f_top_of_page using p_cl_dd type ref to cl_dd_document. alv 总结 作者:张志昂200
15、8.07.08 6 / 29 1.4.2.在子在子 form(f_top_of_page)里定义好需要的变)里定义好需要的变 量量 定义登录用户的描述 data: l_name type string , name_first like adrp-name_first , name_last like adrp-name_last . 定义登录日期 data: l_date type string . 定义缓冲区变量 data: m_p type i , m_buffer type string . 1.4.3.准备好所需数据,如登录用户的描述、制表日期等 得到登录用户的描述 select s
16、ingle adrpname_first adrpname_last into (name_first,name_last) from adrp inner join usr21 on adrppersnumber = usr21persnumber where usr21bname = sy-uname . if sy-subrc = 0 . concatenate name_last name_first into l_name . else . l_name = sy-uname . endif. clear name_first . clear name_last . 拼接制表日期 c
17、oncatenate sy-datum+0(4) . sy-datum+4(2) . sy-datum+6(2) . into l_date . 1.4.4.将表头数据输出将表头数据输出 开始输出表头标题 m_buffer = alv 测试 . alv 总结 作者:张志昂2008.07.08 7 / 29 call method p_cl_dd-html_insert exporting contents = m_buffer changing position = m_p. 输出制表人和制表日期 concatenate 出表人: l_name出表日期: l_date into m_buffe
18、r . call method p_cl_dd-html_insert exporting contents = m_buffer changing position = m_p. 现将需要显示的表头数据放到变量“m_buffer”中,然后调用方法“p_cl_dd-heml_insert”将 数据插入到 html 页面中显示,至此显示表头数据完成; 2.函数函数 “reuse_alv_grid_display_lvc”中输入中输入 参数的应用参数的应用 2.1.排序排序 排序之前,如果同一列有相同的数据,则排好序以后,在该列会自动将相同的数据合并为一行显 示,不再出现多行重复的情况(但是若该
19、alv 中有字段设置了“可编辑” ,合并这一现象会失效) , 步骤如下: 2.1.1.在显示在显示 alv 的子的子 form 里定义排序用到的变量里定义排序用到的变量 定义排序变量 data: wa_sort_lvc type lvc_s_sort , struture it_sort_lvc type lvc_t_sort . table 2.1.2.设置好需要排序的字段设置好需要排序的字段 设置排序参数 alv 总结 作者:张志昂2008.07.08 8 / 29 wa_sort_lvc-spos = 1 . 排序顺序 wa_sort_lvc-fieldname = cityfrom .
20、 排序字段 wa_sort_lvc-up = x . 升序 append wa_sort_lvc to it_sort_lvc . clear wa_sort_lvc . wa_sort_lvc-spos = 2 . 排序顺序 wa_sort_lvc-fieldname = cityto . 排序字段 wa_sort_lvc-up = x . 升序 append wa_sort_lvc to it_sort_lvc . clear wa_sort_lvc . 2.1.3.在显示在显示 alv 的函数的输入参数里添加排序的属性的函数的输入参数里添加排序的属性 it_sort_lvc = it_s
21、ort_lvc 2.2.隐藏不必要的标准按钮隐藏不必要的标准按钮 2.2.1.先在显示先在显示 alv 的子的子 form 里定义隐藏按钮用到的里定义隐藏按钮用到的 变量变量 定义隐藏标准按钮的变量 data: wa_excluding type slis_t_extab , it_excluding type slis_extab . 2.2.2.得到需要隐藏的标准按钮的得到需要隐藏的标准按钮的“fcode” 首先用事务码“se24”进入 sap 的“类别制作器” ,在“object type”后面输入 alv 的类 “cl_gui_alv_grid” ,点击“display”进入显示界面,
22、点击“attributes”选项卡,找到自己需要的 “属性”和“初始值” ,这个初始值就是我们要找的标准按钮的“fcode” (注意:每一个标准按钮代表的 fcode 是靠经验积累而 掌握的) ; 1、设将需要隐藏的标准按钮的“fcode”添加到内表 it_excluding 中,代码如下: 设置要隐藏的按钮的“fcode” wa_excluding-fcode = &abc . append wa_excluding to it_excluding . 2、在显示 alv 的函数的输入参数里添加隐藏按钮的属性参数: it_excluding = it_excluding 1、 alv 标题,
23、定义标题变量并赋值,然后在显示 alv 的函数的输入参数里添加“小标题”的参数, 代码如下: alv 总结 作者:张志昂2008.07.08 9 / 29 小标题 data: i_grid_title type lvc_title . i_grid_title = 小标题 . * i_grid_title = i_grid_title 2.3.自定义自定义“工具栏工具栏” 2.3.1.在显示在显示 alv 的函数的输入参数里指定自定义按钮的函数的输入参数里指定自定义按钮 的子的子 form i_callback_pf_status_set = f_set_status 当然该子 form 和产
24、生表头的子 form 一样,也不显式的调用,代码如下: form f_set_status using p_extab type slis_t_extab . set pf-status z_alv_status . endform. f_set_status 双击其中的“z_alv_status” ,进入创建工具栏的界面,输入名字后进入最终的界面在界面右侧, 点击“应用工具条”后面的展开符号,在“项目”后面的白色方框内输入“自定义按钮”的代码 后回车,选择静态文本回车,在“函数文本”后面输入想要显示的按钮的名称,在“图标名称” 后面选择相应的图标(可选) ,回车在这一界面选择一个“快捷键”
25、(必填)后回车,这样一个自 定义按钮就做好了,也可以修改,记住刚刚创建的按钮的代码,在下面的捕捉用户的动作的自 form(f_user_command)会根据刚才的代码来进行相应的操作; 1、 点开“功能键”后面的展开符号,进入功能键的设置,下图是各个动作对应的代码: 2、 没有自定义按钮时候,函数里的“i_callback_pf_status_set = f_set_status”这个 参数可以不要,这时会显示 alv 标准的按钮,当然这些按钮可以部分隐藏(见三、2) ; 3、 当我们使用自定义按钮后,alv 自带的标准按钮,就会失效,这时我们需要将一些用户要求我们 必须显示的按钮一一地在“
26、应用工具条”后面补上,如下图: 其中“分隔符”的插入方法为:在需要插入分隔符的方框内选择菜单“edit”“insert” alv 总结 作者:张志昂2008.07.08 10 / 29 “separator line”即可插入分隔符; 下面是上图中的标准工具的名称、代码、图标名称、快捷键 名称名称代码代码图标名称图标名称快捷键快捷键 刷新 refreshicon_refresh f8(可随便更改) 导出为 excel 表格 excel 无shift-f8(可随便更改) abc 分析 &abcicon_abcctrl-f1 按升序排列 &oupicon_sort_upctrl-f4 设置过滤器
27、&ilticon_filterctrl-f5 总计 &umcicon_sumctrl-f6 邮件查收件 %slicon_mailctrl-f7 更改布局 &ol0icon_alv_variantsctrl-f8 选择布局 &oadicon_alv_variant_choosectrl-f9 保存布局 &aveicon_alv_variant_savectrl-f10 信息 &infoicon_informationctrl-f12 明细 &etaicon_select_detailctrl-shift-f3 按降序排列 &odnicon_sort_downctrl-shift-f4 删除过滤器
28、 &ildicon_filter_undoctrl-shift-f5 小计 &sumicon_intermediate_sumctrl-shift-f6 microsof&vexcelicon_xlsctrl-shift-f7 字处理 &aqwicon_word_processingctrl-shift-f8 本地文件 %pcicon_exportctrl-shift-f9 打印预览 &rnt_previcon_layout_controlctrl-shift-f10 图形 &graphicon_graphicsctrl-shift-f11 上表中红色的属于自定义按钮,自定义按钮可以使用标准的
29、图标名称,也可以不适用图标; 3.热点链接、用户动作的捕捉、调用其热点链接、用户动作的捕捉、调用其 他程序或标准事务程序他程序或标准事务程序 3.1 在显示在显示 alv 的函数的输入参数里指定捕捉用户动作的函数的输入参数里指定捕捉用户动作 的子的子 form form f_user_command using p_ucomm type sy-ucomm p_rs_selfield type slis_selfield . 当然该子 form 和产生表头的子 form 一样,也不显式的调用; alv 总结 作者:张志昂2008.07.08 11 / 29 3.2 在在“字段和列名字段和列名”的
30、子的子 form(f_fields)里,对需)里,对需 要链接的列添加要链接的列添加“热点热点”属性属性 v_pos = v_pos + 1 . wa_fieldcat-col_pos = v_pos . wa_fieldcat-fieldname = cityfrom . wa_fieldcat-scrtext_l = 起飞城市 . wa_fieldcat-fix_column = x . wa_fieldcat-hotspot = x . 热点,链接用 append wa_fieldcat to i_fieldcat . clear wa_fieldcat . 这样在显式界面上“起飞城市”
31、所代表的字段“cityfrom”的下面就会出现一条下划线,同时 当鼠标移动到该列时,就会变成“等待”的手势,当用户单击每一条时,就会触动子 form(f_user_command)中的动作,进而引起某些操作; 3.3.操作代码操作代码 对于热点链接,所对应的动作码为“&ic1” ,在子 form(f_user_command)中捕捉用户的动作,并进行相 应的操作,代码如下: form f_user_command using p_ucomm type sy-ucomm p_rs_selfield type slis_selfield . case p_ucomm. when &ic1 . 判断
32、用户的动作 读取用户点击的当前行的一行内容 read table i_tab into wa_tab index p_rs_selfield-tabindex . if p_rs_selfield-fieldname eq cityfrom. 判断用户点击的是哪一列 if not wa_tab-cityfrom is initial . perform f_show_detail using p_rs_selfield . 显示具体细节 endif. elseif p_rs_selfield-fieldname eq tcode . if not wa_tab-tcode is initial
33、 . perform f_call_tran using p_rs_selfield . 调用其他事务 endif . elseif p_rs_selfield-fieldname eq icon_folder . perform f_open_folder using p_rs_selfield . 打开文件 endif. clear wa_tab . when &save_data . perform f_save_data . 保存数据 when print . perform f_print_data. 打印数据 alv 总结 作者:张志昂2008.07.08 12 / 29 when
34、 excel . perform f_export . 导出数据 endcase. p_rs_selfield-refresh = x . 当用户在显式界面上对数据进行修改时,同 时内表中的数据也随之刷新 endform. f_user_command 3.4.显示具体细节显示具体细节 1、先定义一个存放具体内容的内表并整理好相关数据; 2、调用 一个指定大小的屏幕来显示具体的内容,代码如下: call screen 0100 starting at 12 12 ending at 137 24 . 3、双击该屏幕号码“0100”创建该屏幕,在“属性”卡输入该屏幕的描述,在“逻辑 流”卡里将系
35、统默认注释掉的 pbo、pai 事件的模块取消注释并产生这两个模块(双击并 确定) ; 4、在“屏幕制作器”界面点击进入“屏幕制作器”的图形界面,开始绘制 我们需要的屏幕元素,这里我们需要一个“表控制” (最左边从下数第四个元素) ,该表格 的属性设置为: 名称: 起始行列和高宽 上图表示“列标题”为“具体内容” ,可以水平或垂直的调节大小,有水平和垂直的分隔 符,只能同时选中一行一列,带选择列(de_box) ,最左端两列固定不滚动; 5、接下来给单元格和列标题名称并给单元格指定内表的字段, 6、屏幕的 pbo、pai 事件的代码如下: process before output. alv
36、总结 作者:张志昂2008.07.08 13 / 29 module status_0100. loop at i_detail into wa_detail with control vs_detail cursor i_detail-current_line . endloop. * process after input. loop at i_detail . endloop. module user_command_0100. 7、需要在定义变量的时候声明一下表控制和动作的接受者(ok_code)如下: * 表控制 is_matnr controls vs_detail type ta
37、bleview using screen 0100 . 利用同名传递原理,来接受细节屏幕上的元素“ok_code”的值 data: ok_code type sy-ucomm . 8“module status_0100.”的代码如下: module status_0100 output. set pf-status 0100 . describe table i_detail lines vs_detail-current_line . endmodule. status_0100 output 在“0100”的工具栏里,只设置即可满足需求; “module user_command_010
38、0.”的代码如下: module user_command_0100 input. case ok_code. when back . set screen 0 . 返回主屏幕 endcase. endmodule. user_command_0100 input 完成调用细节屏幕; 注意:在显示细节屏幕的字段的类型上,当内表中有数据为货币类型的时候,要在“格式”里指明该字段 是货币类型的数据,如下图: alv 总结 作者:张志昂2008.07.08 14 / 29 3.5.调用其他事务调用其他事务 form f_call_tran using p_rs_selfield type slis_
39、selfield . set parameter id lib field p_rs_selfield-value . call transaction se37 .and skip first screen . endform. f_call_tran “lib”是指参数 id,查找方法:用一个事务码进入事务界面,在输入框内按 f1,在弹出来的 界面中点击,新界面中的就是参数 id; “se37”是指我们要调用的事务代码, “and skip first screen”表示跳过第一屏屏幕; 3.6.打开并选择文件:打开并选择文件: 1、现则内表中定义好存放文件路径的字段(这里是 file_p
40、ath) ,当用户点击界面上设置好 的打开文件图标时,就会触发子 form(f_user_command)里的打开文件的子 form(f_open_folder) ; 2子 form(f_open_folder)的代码如下: form f_open_folder using p_rs_selfield type slis_selfield . data: l_file_path like rlgrap-filename . call function ws_filename_get exporting mode = o alv 总结 作者:张志昂2008.07.08 15 / 29 title
41、 = 选择文件 importing filename = l_file_path exceptions inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 others = 5. if sy-subrc = 0. wa_tab-file_path = l_file_path . 将得到的文件的路径赋给当前行的路 径 modify i_tab index wa_tab- numer from wa_tab transporting file_path . clear l_file_path . else . m
42、essage s000 with 没有选择文件 . endif. endform. f_open_folder 4.关于设置字段和列名的子关于设置字段和列名的子 form(f_fields)的参数设置:)的参数设置: 4.1.单列优化宽度单列优化宽度 当在子 form(f_build_layout)里没有指明全局优化列宽的时候,在需要指定优化的字段的属性里指定 下列属性就可以单列优化了, wa_fieldcat-col_opt = x . 4.2.单列求和或者取消求和,添加属性单列求和或者取消求和,添加属性 wa_fieldcat-do_sum = x . 求和 wa_fieldcat-no_
43、sum = x . 取消求和 如果此时在子 form(f_build_layout)里添加下列属性,则求和后的行就会在第一行出现: i_layout-totals_bef = x . alv 总结 作者:张志昂2008.07.08 16 / 29 4.3.对其方式对其方式 wa_fieldcat-just = l . 左对齐 wa_fieldcat-just = c . 居中对齐 wa_fieldcat-just = r . 右对齐 当然,在不指明对其方式的前提下,abap 的各种数据类型优默认的对其方式,其中字符串是默 认为左对齐,而货币、数量默认为右对齐; 4.4.作为图标输出作为图标输出
44、 1、首先在开始包含进一个包括,如下: 包含图标等在内的一些信息 include . 2、然后在内表中定义一个代表图标的字段(这里如 icon_folder) ,在整理数据的时候,需 要将代表图标的代码赋给给字段,如下 图标 wa_banfn-icon_folder = icon_object_folder . 3、接着在子 form(f_fields)里给需要图标显示的列添加下列属性: v_pos = v_pos + 1 . wa_fieldcat-col_pos = v_pos . wa_fieldcat-fieldname = icon_folder . wa_fieldcat-scrt
45、ext_l = icon . wa_fieldcat-icon = x . 图标 wa_fieldcat-hotspot = x . append wa_fieldcat to i_fieldcat . clear wa_fieldcat . 这样图标就可以在 alv 界面中显示了,其中添加“热点”的目的是为了当用户点击该图标的 时候,可以触发一系列的操作,如文件的选择等等; 注意:图标的名称用事务码“icon”进入后左边第二列就是图标代码,根据需要进行选择; 4.5.固定列和关键列固定列和关键列 两者都可以使具有该属性的列固定不滚动,但是前者不改变该列的颜色,而后者会将该列的颜色 弄成一色,
46、不容易确认,但它具有其他的功能,代码如下: wa_fieldcat-fix_column = x . 固定列 wa_fieldcat-key = x . 关键列 4.6.列的字符宽度列的字符宽度 可以明显地指明该列的输出宽度,属性代码如下: alv 总结 作者:张志昂2008.07.08 17 / 29 wa_fieldcat-outputlen= 10 . 输出宽度 列抬头的工具提示,在列的属性添加下列参数,当用户将鼠标放到列名上时,可以显示“提示”2 字, 代码如下: wa_fieldcat-tooltip = 提示 . 5.单元格的单元格的 f1、f4 帮助:帮助: 5.1.f1 帮助:
47、帮助: 1、在子 form(f_fields)里列的属性添加“数据元素”这一属性,代码如下: wa_fieldcat-rollname = ps_pspid . 指定数据元素 就可以在 alv 的显示界面将鼠标放到该字段的位置后按 f1 会弹出该字段的说明; 2、指定数据元素之后,可以不指明字段的描述(如 scrtext_l、scrtext_m、scrtext_s) , 函数会自动将字段的描述显示,但是没有自己指定的灵活 5.2.f4 帮助:帮助: 1、在子 form(f_fields)里列的属性添加下列属性,代码如下: wa_fieldcat-ref_field = pspid . wa_f
48、ieldcat-ref_table = proj . 这样在 alv 的显示界面,在该字段处就可以按 f4 来查看相关的内容了; 6.输入并保存、回调修改内表(输入时输入并保存、回调修改内表(输入时 的小数位错位的问题、指定数据类型、小的小数位错位的问题、指定数据类型、小 说位数)说位数) 1、首先在显示 alv 的子 form(f_display)里定义“回调”的变量,如下: 回调变量 data: i_grid_settings type lvc_s_glay . i_grid_settings-edt_cll_cb = x . 2、在显示 alv 的函数(reuse_alv_grid_di
49、splay_lvc)里添加输入参数如,下: i_grid_settings = i_grid_settings 这时只要在显示界面可编辑字段上修改了数据,回车后就会立即将内表的数据也修改了; 3、对于货币字段,要在其设置字段和列名的属性中再添加一个“指定数据类型”的属性,如下: wa_fieldcat-datatype = curr . 指定数据类型 这样在修改数据并保存时,才能将数据保持原样,否则输入的数据会自动将小数点提前 2 位; alv 总结 作者:张志昂2008.07.08 18 / 29 4、对于数量字段,也要添加一个“指定数据类型”的属性,才能保持数据的正确性,如下: wa_fi
50、eldcat-datatype = quan . 指定数据类型 wa_fieldcat-inttype = c . 5、将界面数据保存到数据库表中,触发事件见子 form 中的 f_save_data,代码如下: form f_save_date . data: i_spfli like table of spfli with header line . data: l_error type ref to cx_sy_open_sql_db , l_error2 type ref to cx_sy_arithmetic_overflow , l_error_text type string .
51、 将界面上的数据转接到和被修改的数据库表的结构一样的内表中 loop at i_tab into wa_tab . i_spfli-carrid = zz . i_spfli-connid = sy-tabix . i_spfli-cityfrom = wa_tab-cityfrom . i_spfli-airpfrom = wa_tab-airpfrom . i_spfli-cityto = wa_tab-cityto . i_spfli-airpto = wa_tab-airpto . i_spfli-distance = wa_tab-distance . append i_spfli
52、. clear i_spfli . endloop. 保存到数据库 try . delete spfli from table i_spfli . insert spfli from table i_spfli . catch cx_sy_open_sql_db into l_error . l_error_text = l_error-get_text( ) . sy-subrc = 1 . endtry . if sy-subrc ne 0 . rollback work . message e000 with l_error_text . clear l_error_text . els
53、e . message s000 with 数据保存成功! . endif. clear i_spfli . refresh i_spfli . endform. f_save_date alv 总结 作者:张志昂2008.07.08 19 / 29 7.界面颜色的更改界面颜色的更改 alv 中的颜色代码共有 4 位,其中 c 是固定的第一位(代表 color),第二位代表是颜色编码(1 到 7),第三位是加强颜色的设置(1 表示打开,0 表示关闭),第四位是减弱颜色(1 表示打开,0 表示关闭),个人理解,在强化关闭的情况下,相反的作用是背景和字体的变化: 7.1.更改单元格(字体)的前景、
54、背景颜色更改单元格(字体)的前景、背景颜色 1、在定义内表的时候定义一个代表单元格颜色的字段,如下: cell_color type slis_t_specialcol_alv 2、在子 form(f_build_layout)里,要指明代表单元格颜色的字段的名称,如下: i_layout-ctab_fname = cell_color. 单元格颜色设置 3、在子 form(f_cell_color)里给代表单元格颜色的字段赋值,如下: form f_cell_color . 单元格颜色 data: l_cellcolor type slis_specialcol_alv . loop at
55、i_tab into wa_tab . if wa_tab-price 500 . l_cellcolor-fieldname = price . 要修改颜色的字段名 l_cellcolor-color-col = 6 . 颜色(1- 7) l_cellcolor-color-inv = 1 . 前景字体(int 代表背景颜色) append l_cellcolor to wa_tab-cell_color . clear l_cellcolor . endif. modify i_tab index wa_tab-numer from wa_tab transporting cell_col
56、or . clear wa_tab . endloop. endform. f_cell_color 7.2.更改行的颜色和列的颜色更改行的颜色和列的颜色: 1、在定义内表的时候定义一个代表行列颜色的字段,如下: line_color(4) type c 2、在子 form(f_build_layout)里,要指明代表行列颜色的字段的名称,如下: i_layout-info_fname = line_color . 行列颜色 3、在子 form(f_line_color)里给代表行列颜色的字段赋值,如下: alv 总结 作者:张志昂2008.07.08 20 / 29 form f_line_
57、color . data: l_i type i . loop at i_tab into wa_tab . l_i = sy-tabix mod 2 . if l_i = 0 . wa_tab-line_color = c311 . modify i_tab index wa_tab-numer from wa_tab transporting line_color . clear wa_tab . endif. endloop. endform. f_line_color 7.3.利用设置字段和列名子的利用设置字段和列名子的 form(f_fields)里)里 来设置列的颜色来设置列的颜色
58、 wa_fieldcat-emphasize = c711 . 注意: 颜色设置中有优先级顺序,他们是单元格-行-列,即若同时使用了上述 3 中 更改颜色的方法,则列的颜色会被行的颜色覆盖掉,而行的颜色又会背单元格的颜色覆盖 掉,最终只会显示出单元格的颜色. . 8.alv 自带的最左端复选框按钮和自定义自带的最左端复选框按钮和自定义 复选框按钮复选框按钮 8.1.alv 自带的复选框按钮:自带的复选框按钮: 在定义内表时,需要指明代表复选框的字段,这里如:box_name,然后在定义 alv 全局属性的 子 form(f_build_layout)里指明代表复选框的字段,如下: i_layo
59、ut-box_fname= box_fname . 8.2.自定义复选框按钮自定义复选框按钮 需要在子 form(f_fields)里添加下列如下语句: wa_fieldcat-col_pos = v_pos . alv 总结 作者:张志昂2008.07.08 21 / 29 wa_fieldcat-fieldname = checkbox . wa_fieldcat-scrtext_m = 复选框 . wa_fieldcat-checkbox = x . wa_fieldcat-edit = x . wa_fieldcat-just = c . wa_fieldcat-fix_column
60、= x . append wa_fieldcat to i_fieldcat . clear wa_fieldcat . 该功能必须在在显示 alv 的函数的子 form(f_display)里添加“回调”的输入参数,这样当 用 户点击复选框后才能将改变写回到内表中,代码如下 data: l_grid_settings type lvc_s_glay . l_grid_settings-edt_cll_cb = x . i_grid_settings = l_grid_settings 9.按照上传的模板格式导出为本地文件按照上传的模板格式导出为本地文件 9.1.定义导出为定义导出为 exce
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 住宅小区外墙改造协议
- 矿泉水厂保温系统安装协议
- 网络短视频副导演招聘协议
- 装饰装修劳务协议
- 市场调研门头租赁合同
- 污水处理工程劳务合同模板
- 创业学校租赁合同
- 花艺作品销售顾问聘用协议
- 建筑工程施工合同:生态保护工程
- 花园租赁协议模板
- 2022年秋新教材高中英语Unit2SuccessTheImportanceofFailure教案北师大版选择性必修第一册
- 初三九年级青骄第二课堂期末考试题及参考答案
- 职业生涯人物访谈报告(采访教师)
- 脑卒中康复治疗流程
- 四年级上册美术课件-第6课 眼镜的设计丨浙美版 (共10张PPT)
- 蚊类防制技术规范(2020年版)
- 一元一次不等式组-含参问题课件
- 工程竣工预验收质量问题整改通知单
- pcs-9882ad说明书-国内中文版
- QGDW-11513.1-2022-变电站智能机器人巡检系统技术规范第1部分
- 幼儿园绘本故事:《袁隆平》 课件
评论
0/150
提交评论