REUSEALVGRIDDISPLAYLVC超详细讲解5304.pdf
《REUSEALVGRIDDISPLAYLVC超详细讲解5304.pdf》由会员分享,可在线阅读,更多相关《REUSEALVGRIDDISPLAYLVC超详细讲解5304.pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ALV 开发流程:1.将得到并整理好的数据以 ALV 的形式显示出来.4 1.1.在子 FORM(这里如:F_FIELDS)指定需要显示的字段.4 1.2.在子 FORM(这里如:F_BUILD_LAYOUT)里设置 ALV 的全局属性.5 1.3.在子 FORM(这里如:F_DISPLAY)里将内表中的数据进行显示.51.4.为 ALV 程序添加表头标题(这里以添加 HTML 表头标题为主).6 1.4.1.在显示 ALV 的函数(REUSE_ALV_GRID_DISPLAY_LVC)里添加一个参数.6 1.4.2.在子 FORM(F_TOP_OF_PAGE)里定义好需要的变量.6 1.4.
2、3.准备好所需数据,如登录用户的描述、制表日期等.6 1.4.4.将表头数据输出.7 2.函数“REUSE_ALV_GRID_DISPLAY_LVC”中输入参数的应用.7 2.1.排序.7 2.1.1.在显示 ALV 的子 FORM 里定义排序用到的变量.8 2.1.2.设置好需要排序的字段.8 2.1.3.在显示 ALV 的函数的输入参数里添加排序的属性.8 2.2.隐藏不必要的标准按钮.8 2.2.1.先在显示 ALV 的子 FORM 里定义隐藏按钮用到的变量.8 2.2.2.得到需要隐藏的标准按钮的“FCODE”.9 2.3.自定义“工具栏”.9 2.3.1.在显示 ALV 的函数的输入
3、参数里指定自定义按钮的子 FORM.9 3.热点链接、用户动作的捕捉、调用其他程序或标准事务程序.11 3.1 在显示 ALV 的函数的输入参数里指定捕捉用户动作的子 FORM.11 3.2 在“字段和列名”的子 FORM(F_FIELDS)里,对需要链接的列添加“热点”属性.11 3.3.操作代码.11 3.4.显示具体细节.12 3.5.调用其他事务.14 3.6.打开并选择文件:.15 4.关于设置字段和列名的子 FORM(F_FIELDS)的参数设置:.15 4.1.单列优化宽度.15 4.2.单列求和或者取消求和,添加属性.16 4.3.对其方式.16 4.4.作为图标输出.16 4
4、.5.固定列和关键列.17 4.6.列的字符宽度.17 5.单元格的 F1、F4 帮助:.17 5.1.F1 帮助:.17 5.2.F4 帮助:.17 6.输入并保存、回调修改内表(输入时的小数位错位的问题、指定数据类型、小说位数).18 7.界面颜色的更改.19 7.1.更改单元格(字体)的前景、背景颜色.19 7.2.更改行的颜色和列的颜色:.20 7.3.利用设置字段和列名子的 FORM(F_FIELDS)里来设置列的颜色.20 8.ALV 自带的最左端复选框按钮和自定义复选框按钮.21 8.1.ALV 自带的复选框按钮:.21 8.2.自定义复选框按钮.21 9.按照上传的模板格式导出
5、为本地文件.22 9.1.定义导出为 EXCEL 用到的数据变量.22 9.2.上传模板.22 9.3 代码.23 10.为 ALV 标题添加图片.27 10.1.上传图片.27 10.2.在子 FORM(F_TOP_OF_PAGE2)里的代码.28 ALV:ABAP LIST VIEW,一种比较美观的报表显示工具 REUSE_ALV_LIST_DISPLAY Grid 的是 Excel 单元格的格式,而 list 不是 REUSE_ALV_GRID_DISPLAY 可以控制某一行 某一列,甚至某一格(CELL)的读写 ALV 用到的函数,目前我们有 2 个:REUSE_ALV_GRID_DI
6、SPLAY、REUSE_ALV_GRID_DISPLAY_LVC;两个函数都可以将数据用 ALV 的形式显示出来,只是在一些小的地方有些不同。其中这两个函数都用到的全局变量为:1 个类型池 SLIS 和一个指定列数的变量 DATA:v_pos TYPE i.指定第几列 pos 表示列 第 1 个函数用到的全局变量如下:都是 slis 类型池中的类型,结尾都是 alv(表示他们用于 alv)DATA:wa_fieldcat TYPE slis_fieldcat_alv,相当于工作区 i_fieldcat TYPE slis_t_fieldcat_alv,存放列名的内表 i_layout TYPE
7、 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_GRID_DISPLAY_LVC)来介绍 ALV 的用法;1.将得到并整理好的数据以ALV的形式显示出来 1.1.在子 FORM(这里如:F_FIELDS)指定需要显示的字段 wa_fieldcat 工作区,可以赋值 v
8、_pos=v_pos+1.初始值是零 wa_fieldcat-col_pos =v_pos.指定列数 wa_fieldcat-fieldname =PSPID.需要输出的内表的字段名 wa_fieldcat-scrtext_l =项目定义.字段的描述-长字段标签 screen text long wa_fieldcat-scrtext_m =项目定义.字段描述-中字段标签 wa_fieldcat-scrtext_s =项目定义.字段描述-短字段标签 wa_fieldcat-fix_column =X.是否是固定列 column klm列 APPEND wa_fieldcat TO i_fiel
9、dcat_lvc.CLEAR wa_fieldcat.这样逐步的将需要显示的字段都添加到内表 i_fieldcat 中;1.2.在子 FORM(这里如:F_BUILD_LAYOUT)里设置ALV 的全局属性 i_layout_lvc-zebra =X.使 ALV 界面呈现颜色交替 i_layout_lvc-sel_mode =A.选 择 模 式,“A”在最左端有选择按钮 i_layout_lvc-cwidth_opt =X.自动优化列宽 i_layout_lvc-detailinit =X.是否出现细节屏幕 i_layout_lvc-detailtitl =详细内容.细节屏幕标题 1.3.在子
10、 FORM(这里如:F_DISPLAY)里将内表中的数据进行显示 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 程序就完成了;下面是对
11、ALV 程序的优化和扩展。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.1.4.2.在子 FORM(F_TOP_OF_PAGE)里定义
12、好需要的变量 定义登录用户的描述 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 SINGLE adrpname_first adrpname_last INTO(name_first,name_last)FROM adrp INN
13、ER 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.拼接制表日期 CONCATENATE sy-datum+0(4).sy-datum+4(2).sy-datum+6(2).INTO l_date.1.4.4.将表头数据输出 开始输出表头标题 m_buffer=AL
14、V 测试.CALL METHOD p_cl_dd-html_insert EXPORTING contents=m_buffer CHANGING position=m_p.输出制表人和制表日期 CONCATENATE 出 表 人:l_name 出 表 日 期:l_date INTO m_buffer.CALL METHOD p_cl_dd-html_insert EXPORTING contents=m_buffer CHANGING position=m_p.现将需要显示的表头数据放到变量“M_BUFFER”中,然后调用方法“P_CL_DD-HEML_INSERT”将数据插入到 HTML
15、页面中显示,至此显示表头数据完成;2.函数“REUSE_ALV_GRID_DISPLAY_LVC”中输入参数的应用 2.1.排序 排序之前,如果同一列有相同的数据,则排好序以后,在该列会自动将相同的数据合并为一行显示,不再出现多行重复的情况(但是若该 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.设置好需要排序的字段 设置排序参数 w
16、a_sort_lvc-spos =1.排序顺序 wa_sort_lvc-fieldname =CITYFROM.排序字段 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
17、_sort_lvc =it_sort_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”进入显示界面,点击“Attributes”选项卡,找到自己需要的“属性”和“初始值”
18、,这个初始值就是我们要找的标准按钮的“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 标题,定义标题变量并赋值,然后在显示 ALV 的函数的输入参数里添加“小标题”的参数,代码如下:小标题 DA
19、TA: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 和产生表头的子 FORM 一样,也不显式的调用,代码如下:FORM f_set_status USING p_extab TYPE slis_t_extab.SET PF-STATUS Z_ALV_STATUS.ENDFORM.f_set_status
20、 双击其中的“Z_ALV_STATUS”,进入创建工具栏的界面,输入名字后进入最终的界面在界面右侧,点击“应用工具条”后面的展开符号,在“项目”后面的白色方框内输入“自定义按钮”的代码后回车,选择静态文本回车,在“函数文本”后面输入想要显示的按钮的名称,在“图标名称”后面选择相应的图标(可选),回车在这一界面选择一个“快捷键”(必填)后回车,这样一个自定义按钮就做好了,也可以修改,记住刚刚创建的按钮的代码,在下面的捕捉用户的动作的自FORM(F_USER_COMMAND)会根据刚才的代码来进行相应的操作;1、点开“功能键”后面的展开符号,进入功能键的设置,下图是各个动作对应的代码:2、没有自定
21、义按钮时候,函数里的“i_callback_pf_status_set =F_SET_STATUS”这个参数可以不要,这时会显示 ALV 标准的按钮,当然这些按钮可以部分隐藏(见三、2);3、当我们使用自定义按钮后,ALV 自带的标准按钮,就会失效,这时我们需要将一些用户要求我们必须显示的按钮一一地在“应用工具条”后面补上,如下图:其中“分隔符”的插入方法为:在需要插入分隔符的方框内选择菜单“Edit”“Insert”“Separator line”即可插入分隔符;下面是上图中的标准工具的名称、代码、图标名称、快捷键 名称 代码 图标名称 快捷键 刷新 REFRESH ICON_REFRESH
22、 F8(可随便更改)导出为 EXCEL 表格 EXCEL 无 Shift-F8(可随便更改)ABC 分析&ABC ICON_ABC Ctrl-F1 按升序排列&OUP ICON_SORT_UP Ctrl-F4 设置过滤器&ILT ICON_FILTER Ctrl-F5 总计&UMC ICON_SUM Ctrl-F6 邮件查收件%SL ICON_MAIL Ctrl-F7 更改布局&OL0 ICON_ALV_VARIANTS Ctrl-F8 选择布局&OAD ICON_ALV_VARIANT_CHOOSE Ctrl-F9 保存布局&AVE ICON_ALV_VARIANT_SAVE Ctrl-F1
23、0 信息&INFO ICON_INFORMATION Ctrl-F12 明细&ETA ICON_SELECT_DETAIL Ctrl-Shift-F3 按降序排列&ODN ICON_SORT_DOWN Ctrl-Shift-F4 删除过滤器&ILD ICON_FILTER_UNDO Ctrl-Shift-F5 小计&SUM ICON_INTERMEDIATE_SUM Ctrl-Shift-F6 Microsof&VEXCEL ICON_XLS Ctrl-Shift-F7 字处理&AQW ICON_WORD_PROCESSING Ctrl-Shift-F8 本地文件%PC ICON_EXPORT
24、 Ctrl-Shift-F9 打印预览&RNT_PREV ICON_LAYOUT_CONTROL Ctrl-Shift-F10 图形&GRAPH ICON_GRAPHICS Ctrl-Shift-F11 上表中红色的属于自定义按钮,自定义按钮可以使用标准的图标名称,也可以不适用图标;3.热点链接、用户动作的捕捉、调用其他程序或标准事务程序 3.1 在显示 ALV 的函数的输入参数里指定捕捉用户动作的子 FORM FORM f_user_command USING p_ucomm TYPE sy-ucomm p_rs_selfield TYPE slis_selfield.当然该子 FORM 和
25、产生表头的子 FORM 一样,也不显式的调用;3.2 在“字段和列名”的子 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.这样在显式界面上“起飞城市”所代表的字段“C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- REUSEALVGRIDDISPLAYLVC 详细 讲解 5304
限制150内