已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ALV讲解一、ALV简介ALVSAP LIST VIEWER是SAP中的一种报表方式,这里姑且称之为ABAP表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式及用户接口。ALV是系统的一种网格的显示方式,这种方式带有汇总排序筛选等功能,ALV格式的数据是以单元格为单位显示,SAP提供了一套ALV的功能模块,可以对输出报表的样式作修饰,提高报表输出的可读性和功能性,对于动态报表程序是一个很有效率的工具。ALV家族包含3中ALV工具:简易的,两层ALV,分等级连续的列表和树形结构的ALV。一般的ALV报表有一个表头,再加上表内容,并附加一些如排序,分类汇总,合计或下载为本地文件等预设功能。ALV用到的函数:REUSE_ALV_GRID_DISPLAY、REUSE_ALV_GRID_DISPLAY_LVC;两个函数都可以将数据用ALV的形式显示出来,只是在一些小的地方有些不同。二、两个function全局变量的定义(1)“用来显示表单数据 FUNCTION REUSE_ALV_GRID_DISPLAY 全局变量如下:DATA: wa_fieldcatTYPE slis_fieldcat_alv, 相当于工作区 i_fieldcat TYPE slis_t_fieldcat_alv, 存放列名的内表 i_layout TYPE slis_layout_alv. 负责整个ALV的全局属性 (2)“用来显示表单数据 FUNCTION REUSE_ALV_GRID_DISPLAY_LVC 全局变量如下:DATA: wa_fieldcat TYPE lvc_s_fcat, 相当于工作区 i_fieldcat TYPE lvc_t_fcat, 存放列名的内表 i_layoutTYPE lvc_s_layo. 负责整个ALV的全局属性三、ALV技术要点简介下面以函数(REUSE_ALV_GRID_DISPLAY_LVC)为例,来介绍ALV的用法。1. 隐藏不必要的标准按钮定义隐藏标准按钮的变量DATA:wa_excludingTYPEslis_extab,it_excluding TYPEslis_t_extab. 设将需要隐藏的标准按钮的“FCODE”添加到内表IT_EXCLUDING中,代码如下:设置要隐藏的按钮的“FCODE” wa_excluding-fcode=&ABC. APPEND wa_excluding TO it_excluding.在显示ALV的函数的输入参数里添加隐藏按钮的属性参数:it_excluding=it_excluding2.在ALV输出屏幕添加自定义按钮i_callback_pf_status_set=F_SET_STATUS当然该子FORM和产生表头的子FORM一样,代码如下:form f_set_status using p_extab type slis_t_extab. set PF-STATUSZ_ALV_STATUS. endform.f_set_status双击其中的“Z_ALV_STATUS”,进入创建工具栏的界面,输入名字后进入最终的界面在界面右侧,点击“应用工具条”后面的展开符号,在“项目”后面的白色方框内输入“自定义按钮”的代码后回车,选择静态文本回车,在“函数文本”后面输入想要显示的按钮的名称,在“图标名称”后面选择相应的图标(可选),回车在这一界面选择一个“快捷键”(必填)后回车,这样一个自定义按钮就做好了,也可以修改,记住刚刚创建的按钮的代码,在下面的捕捉用户的动作的自FORM(F_USER_COMMAND)会根据刚才的代码来进行相应的操作;点开“功能键”后面的展开符号,进入功能键的设置,下图是各个动作对应的代码:没有自定义按钮时候,函数里面的i_callback_pf_status_set=F_SET_STATUS这个参数可以不要,这时会显示ALV标准的按钮,当然这些按钮可以部分隐藏;如何自动带出系统自带的功能键:当我们使用自定义按钮后,ALV自带的标准按钮,就会失效,这时我们需要将一些用户要求我们必须显示的按钮一一地在“应用工具条”后面补上,如下图:其中“分隔符”的插入方法为:在需要插入分隔符的方框内选择菜单“Edit”“Insert”“Separator line”即可插入分隔符.如何删除分隔符:3.对需要链接的列添加“热点”属性 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.这样在显式界面上“起飞城市”所代表的字段“CITYFROM”的下面就会出现一条下划线,同时当鼠标移动到该列时,就会变成“等待”的手势,当用户单击每一条时,就会触动子FORM(F_USER_COMMAND)中的动作,进而引起某些操作。注:此处的USER_COMMAND和双击的事物码相同为“&IC1”;4.双击事件rs_selfield-refresh=X.当用户在显式界面上对数据进行修改时,同时内表中的数据也随之刷新用方法刷新:刷新ALVCALL METHOD gr_alvgrid-refresh_table_display* EXPORTING* IS_STABLE =* I_SOFT_REFRESH = EXCEPTIONS finished = 1 OTHERS = 2 . IF sy-subrc 0. *-异常处理 ENDIF.方法REFRESH_TABLE_DISPLAY的参数说明参数含义IS_STABLE刷新的稳定性,有2个参数,一个是行,一个是列.如果设置了相应的值,那么对应的行,或者列,在刷新的时候,将会保持稳定,就是滚动条保持不动.I_SOFT_REFRESH这个参数只是在异常情况下被使用,如果设置了这个参数,任何创建的合计,任何排序次序,任何为了显示数据而设置的过滤都将保持不变.这个是非常有意义的.例如:当然你没有修改数据内表里的数据而想刷新ALV,仅仅只是改变一下布局和字段目录.5.调用其他事物代码FORMf_call_tranUSINGp_rs_selfieldTYPEslis_selfield. SETPARAMETERID LIB FIELD p_rs_selfield-value. CALLTRANSACTION SE37. ANDSKIPFIRSTSCREEN. ENDFORM.“LIB”是指参数ID,查找方法:用一个事务码进入事务界面,在输入框内按F1,在弹出来的界面中点击,新界面中的就是参数ID;“SE37”是指我们要调用的事务代码,“ANDSKIPFIRSTSCREEN”表示跳过第一屏屏幕;6.打开并选择文件1 现将内表中定义好存放文件路径的字段(这里是FILE_PATH),当用户点击界面上设置好的打开文件图标时,就会触发子FORM(F_USER_COMMAND)里的打开文件的子FORM(F_OPEN_FOLDER);2 子FORM(F_OPEN_FOLDER)的代码如下:MODE: S=保存,O=打开7.关于设置字段和列名的子FORM的参数设置:(1)单列优化宽度 当在子FORM(F_BUILD_LAYOUT)里没有指明全局优化列宽的时候,在需要指定优化的字段的属性里添加下列属性就可以单列优化了,wa_fieldcat-col_opt=X. 自动优化列(2)单列求和或者取消求和wa_fieldcat-do_sum=X.求和wa_fieldcat-no_sum=X.取消求和如果此时在子FORM(F_BUILD_LAYOUT)里添加下列属性,则求和后的行就会在第一行出现:i_layout-totals_bef=X.(3)对其方式wa_fieldcat-just=L.左对齐wa_fieldcat-just=C.居中对齐wa_fieldcat-just=R.右对齐当然,在不指明对其方式的前提下,ABAP的各种数据类型默认的对其方式:其中字符串是默认为左对齐,而货币、数量默认为右对齐;(4)作为图标输出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-scrtext_l=ICON. wa_fieldcat-icon=X.图标 wa_fieldcat-hotspot=X. APPENDwa_fieldcatTOi_fieldcat. CLEAR wa_fieldcat.这样图标就可以在ALV界面中显示了,其中添加“热点”的目的是为了当用户点击该图标的时候,可以触发一系列的操作,如文件的选择等等;注意:图标的名称用事务码“ICON”进入后左边第二列就是图标代码,根据需要进行选择;(5)固定列和关键列两者都可以使具有该属性的列固定不滚动,但是前者不改变该列的颜色,而后者会将该列的颜色弄成一色,不容易确认,代码如下:wa_fieldcat-fix_column=X.固定列wa_fieldcat-key =X.关键列(6)列的字符宽度可以明显地指明该列的输出宽度,属性代码如下:wa_fieldcat-outputlen= 10 . 输出宽度列抬头的工具提示,在列的属性添加下列参数,当用户将鼠标放到列名上时,可以显示“提示”2字,代码如下:wa_fieldcat-tooltip=提示.(7)F1帮助1 在子FORM(F_FIELDS)里列的属性添加“数据元素”这一属性,代码如下:wa_fieldcat-rollname=PS_PSPID.指定数据元素就可以在ALV的显示界面将鼠标放到该字段的位置后按F1会弹出该字段的说明;2 指定数据元素之后,可以不指明字段的描述(如SCRTEXT_L、SCRTEXT_M、SCRTEXT_S),函数会自动将字段的描述显示,但是没有自己指定的灵活,有可能显示的不完全。(8)F4帮助1 在子FORM(F_FIELDS)里列的属性添加下列属性,代码如下:wa_fieldcat-ref_field=PSPID.关联字段wa_fieldcat-ref_table=PROJ. 关联表这样在ALV的显示界面,在该字段处就可以按F4来查看相关的内容了;(9)更改单元格(字体)的前景、背景颜色1 在定义内表的时候定义一个代表单元格颜色的字段,如下:cell_colorTYPEslis_t_specialcol_alv2 在子FORM(F_BUILD_LAYOUT)里,要指明代表单元格颜色的字段的名称,如下:i_layout-ctab_fname=CELL_COLOR.单元格颜色设置3 在子FORM(F_CELL_COLOR)里给代表单元格颜色的字段赋值。 (10)更改行的颜色和列的颜色1 在定义内表的时候定义一个代表行列颜色的字段,如下:line_color(4)TYPEc2 在子FORM(F_BUILD_LAYOUT)里,要指明代表行列颜色的字段的名称,如下:i_layout-info_fname=LINE_COLOR. 行列颜色3 在子FORM(F_LINE_COLOR)里给代表行列颜色的字段赋值,如下:FORMf_line_color.DATA:l_iTYPEi.LOOPATi_tabINTOwa_tab.l_i=sy-tabixMOD2.IFl_i=0.wa_tab-line_color=C311.MODIFYi_tabINDEXwa_tab-numerFROMwa_tabTRANSPORTINGline_color.CLEARwa_tab.ENDIF.ENDLOOP.ENDFORM.f_line_color颜色含义1:海蓝;2:浅清;3:黄色;4:浅蓝;5:青色;6:红色;7:橙色。(1)首位为主颜色;(2)次位为辅助颜色;(3)末位为0时,表示首位数字为表格的底色;末位为1时,则表示以1为底色,首位数字则表为表格字体的颜色;末位为其它颜色时,则表示底色为ALV的默认颜色;其中C200与系统标准ALV底色比较相似;C410与系统标准关键字颜色比较相似。注意: 颜色设置中有优先级顺序,他们是单元格-行-列,若同时使用了上述方法更改了颜色,则列的颜色会被行的颜色覆盖掉,而行的颜色又会背单元格的颜色覆盖掉,最终只会显示出单元格的颜色.(11)排序排序之前,如果同一列有相同的数据,则排好序以后,该列会自动将相同的数据合并为一行显示,不再出现多行重复的情况(但是若该ALV中有字段设置了“可编辑”,合并这一现象会失效),步骤如下: 在显示ALV的子FORM里定义排序用到的变量定义排序变量DATA:wa_sort_lvcTYPElvc_s_sort,it_sort_lvcTYPElvc_t_sort. 设置好需要排序的字段 设置排序参数wa_sort_lvc-spos=1.排序顺序wa_sort_lvc-fieldname=CITYFROM.排序字段wa_sort_lvc-up=X.升序/降序等等APPENDwa_sort_lvcTOit_sort_lvc.CLEARwa_sort_lvc.在显示ALV的函数的输入参数里添加排序的属性it_sort_lvc=it_sort_lvc 8.自定义复选框按钮需要在子FORM(F_FIELDS)里添加下列如下语句: wa_fieldcat-col_pos=v_pos.wa_fieldcat-fieldname=CHECKBOX.wa_fieldcat-scrtext_m=复选框.wa_fieldcat-checkbox=X.wa_fieldcat-edit=X.wa_fieldcat-just=C.wa_fieldcat-fix_column=X.APPENDwa_fieldcatTOi_fieldcat.CLEARwa_fieldcat.该功能必须在在显示ALV的函数的子FORM(F_DISPLAY)里添加“回调”的输入参数,这样当用户点击复选框后才能将改变写回到内表中,代码如下DATA:l_grid_settingsTYPElvc_s_glay.l_grid_settings-edt_cll_cb=X.之后在alv函数的输入参数里面添加这个属性:i_grid_settings=l_grid_settings9.添加页眉页脚定义ALV事件FORMevents_build.CALLFUNCTIONREUSE_ALV_EVENTS_GETEXPORTINGi_list_type=0IMPORTINGet_events=i_events.READTABLEi_eventsWITHKEYname=TOP_OF_PAGEINTOw_events.IFsy-subrc=0.MOVEALV_TOP_OF_PAGETOw_events-form.MODIFYi_eventsFROMw_eventsINDEXsy-tabix.ENDIF.READTABLEi_eventsINTOw_eventsWITHKEYname=USER_COMMAND.IFsy-subrcEQ0.w_events-name=USER_COMMAND.MODIFYi_eventsFROMw_eventsINDEXsy-tabix.ENDIF.READTABLEi_eventsWITHKEYname=END_OF_LIST INTOw_events.IFsy-subrc=0.MOVEALV_END_OF_LISTTOw_events-form.MODIFYi_eventsFROMw_eventsINDEXsy-tabix.ENDIF.ENDFORM.events_build10.ALV显示界面的页眉页脚处添加自定义LOGO要使用图片,显示ALV的函数的输入参数中的HTML表头必须换成一般表头,即:i_callback_html_top_of_page=F_TOP_OF_PAGE1必须换成i_callback_top_of_page=F_TOP_OF_PAGE2如何上传图片:运行tocde:oaerOAER进入参数界面,在“Class name”后面输入“PICTURES”,在“Class Type”后面输入“OT”,在“Object ID”后面输入一个名字,用来标记上传的图片,点击或按F8进入上传图片的主界面。点击下面的“Create”展开“Standard.Doc.Types”双击“屏幕”上传自己的图片,指定好“Description”和“KeyWord”方便以后查找,完成图片的上传,记下“Object ID”,后面的程序中要用到;上传自定义图片后,即可在程序中调用,代码如下:在子FORM(F_TOP_OF_PAGE2)里的代码*&-*&Formf_top_of_page2*&-*ALV表头标题*-*FORMf_top_of_page2.DATA:i_headerTYPEslis_t_listheader,wa_headerTYPEslis_listheader.定义登录用户的描述DATA:l_nameTYPEstring,name_firstLIKEadrp-name_first,name_lastLIKEadrp-name_last.定义登录日期DATA:l_dateTYPEstring.得到登录用户的描述SELECTSINGLEadrpname_firstadrpname_lastINTO(name_first,name_last)FROMadrpINNERJOINusr21ONadrppersnumber=usr21persnumberWHEREusr21bname=sy-uname.IFsy-subrc=0.CONCATENATEname_lastname_firstINTOl_name.ELSE.l_name=sy-uname.ENDIF.CLEARname_first.CLEARname_last.拼接制表日期CONCATENATEsy-datum+0(4).sy-datum+4(2).sy-datum+6(2)INTOl_date.Imagewa_header-typ=H. H=Header S=Selection A=Action字体wa_header-i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年重庆文理学院单招综合素质考试题库附答案
- 2026年秦皇岛职业技术学院单招职业适应性考试题库附答案
- 商业街消费者行为分析与定价策略
- 2026年山东圣翰财贸职业学院单招职业适应性考试必刷测试卷及答案1套
- 建立企业内部审计人才库工作方案
- 2026年新疆天山职业技术大学单招职业倾向性测试必刷测试卷及答案1套
- 2026年重庆文化艺术职业学院单招职业倾向性考试题库附答案
- 2026年哈尔滨职业技术学院单招职业技能测试题库新版
- 2026年温州医科大学仁济学院单招职业适应性测试题库及答案1套
- 2026年陕西能源职业技术学院单招职业技能考试题库新版
- 重性精神病人双向转诊制度、流程
- 经济学专业职业生涯规划
- 18调动知识方法能力-备战2023年高考地理题型能力专题突破(原卷版)
- 家乡宣传介绍河南信阳
- 排水管网地理信息系统数据管理制度
- 《鸡毛信》教学设计
- 2023年西北农林科技大学工程训练中心招聘考试真题
- 研究开发项目计划书模板
- 动物疫病快速报告单
- 燃气经营安全重大隐患判定标准课件
- 高三英语备考经验交流课件
评论
0/150
提交评论