ImageVerifierCode 换一换
格式:DOC , 页数:37 ,大小:390KB ,
资源ID:3614038      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3614038.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ABAP-ALV-知识整理文档格式.doc)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

ABAP-ALV-知识整理文档格式.doc

1、1、简介ALVSAP LIST VIEWER是SAP中的一种报表方式,这里姑且称之为ABAP表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式及用户接口。ALV是系统的一种网格的显示方式,这种方式带有汇总排序筛选等功能,ALV格式的数据是以单元格为单位显示,SAP提供了一套ALV的功能模块,可以对输出报表的样式作修饰,提高报表输出的可读性和功能性,对于动态报表程序是一个很有效率的工具。ALV家族包含3中ALV工具:简易的,两层ALV,分等级连续的列表和树形结构的ALV。一般的ALV报表有一个表头,再加上表内容,并附加一些如排序,分类汇总,合计或下载为本地文

2、件等预设功能。ALV报表显示方式基本上有2种,一种是Grid方式,一种是List方式,是分别调用不同的Function来实现。1)当调用“REUSE_ALV_GRID_DISPLAY”函数时,ALV的显示样式如下:2)当调用“REUSE_ALV_LIST_DISPLAY”函数时,ALV的显示样式如下:2、ALV_GRID介绍The ALV Grid Control (ALV = SAP List Viewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用。在SAP的开发项目中,ALV GRID也可以作为修改和创建数

3、据的一种工具。它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏。3、其它描述 报表的自主开发设计主要逻辑都是依托于选择屏幕上字段,也就是提供给用户让他们得到自己想要结果的选择条件途径。其中最重要的就是必选字段,因为必选字段是取数逻辑的精华所在,他可以很巧妙的限制很多非必要的情况出现,减少开发人员的开发量,还能让用户最直接最快捷的得到与实际业务相关的展现结果。对于一个报表程序的开发流程,一般都会有几个INCLUDE.(X代表任意自定义字母) REPORT ZXXXXXX. INCLUDE ZXXXX_INIT. ZXXXX_F01.INCLUDE ZX

4、XXX_block.很多都是个人习惯吧,但是有一些习惯,能够让其他人在读程序或者修改程序的时候,很快捷,有规律可循。INCLUDE ZXXXXX_BlOCK。里面无非就是以下几个部分INITIALIZATION.(初始化。在所有以下事件块运行之前运行的,只运行一次的事件块)AT SELECTTION-SCREEN OUTPUT.(PBO事件块,即屏幕输出前事件块)ATSELECTION-SCREENONVALUE-REQUESTFOR 选择屏幕字段名称。(自定义搜索帮助事件块)AT SELECTION-SCREEN.(PAI事件块,即屏幕操作后事件块)START-OF-SELECTION.(程

5、序运行事件块)其它见解:SAP中的程序还是有很多类型的.尤其是类报表程序,有可执行程序(REPORT 开头)还有MODULE POOL(PROGARM 开头)2种形式.ABAP开发属于事件驱动开发,这句话也清晰的解释了SAP程序的必然结构。对于事件驱动,SAP程序就需要是由一个个事件去触发才能够执行的程序,当我们使用SE38去创建1类型的可执行性程序(REPORT 开头)这样的程序,我们可以直接调试,我们会发现,这个程序是按照上面所写的事件块的顺序去依次执行的。它的事件块的顺序是指定好的。所以我们能够按F8,去运行。我们所创建的MODULE POOL就不能去执行,因为它需要用TCODE的去指定

6、运行入口,一般都会在MODULE POOL 里面创建 SCREEN . 在一个SCREEN里就会有两个事件块,分别是PBO 和PAI。我们使用多个屏幕,或者使用TABLECONTROL控件,再或是使用子屏幕范围控件嵌套各种SUBSCREEN(子屏幕),其中都是需要PAI 和 PBO 相互联系的,一个屏幕的PAI中,必然后会有一个CALL SCREEN 或者CALL SUBSCREEN . INCLUDIG.命令去调用另一个屏幕或者子屏幕,然后另一个屏幕先运行PBO,有屏幕上的操作,就执行被操作屏幕的PAI。个人感觉正式这种灵活的编写方式,导致了这种类型(MODULE POOL)的程序不能直接F

7、8,编译器无法获取程序从哪里开始,而TCODE就会指定从哪个屏幕开始。 ZXXXX_INIT(ZXXXX_TOP):进入程序的第一个INCLUDE。INCLUDE 是什么?(CR:就是产生的请求号,也可以理解为一个程序的代码版本,所有的SAP程序都是在D系统(DEVELOPMENT SYSTEM)然后传到Q(测试)系统由顾问进行测试,又不干扰生产系统的程序运行,最后再传到P(生产)系统,覆盖原来的代码,变成修改后代码逻辑)恩,我感觉它是一种封装起来的思想。我研究一下,它单独产生CR,而和它的主程序没有任何关联。这也是必然的,因为INCLUDE是一个全局全系统的声明,一旦你取了一个名字,那么其他

8、人也能够引用使用,这就导致它的修改CR是单独产生的。这里也可以定义程序所需的数据类型和数据对象。 INCLUDE ZXXXX_F01:习惯使用PERFROM来封装代码,取有意义的名字,然后把所有的FORM都放在这边。在START-OF-SELECTION中,我们一般都会写以下几个PERFORM,PREFORM frm_get_data. (取数逻辑)PERFORM frm_alv_layout_build. (创建ALV显示格式)PERFORM frm_alv_set_columns.(调用ALV函数)二、开发ALV的基本流程 第一步:定义ALV所要用到的类型池:TYPE-POOLS: SLI

9、S ; 第二步:定义ALV所要显示的数据对应的内表数据类型及内表数据对象 ; 第三步:定义一些显示ALV时所要使用到的变量,例如: Data: w_repid like sy-repid, “ABAP程序,我们一般取当前程序 w_callback_ucomm type slis_formname, 字符型,功能 w_print type slis_print_alv, 类型组 w_layout type slis_layout_alv, w_html_top_of_page type slis_formname, 字符型 w_fieldcat_alv like line of i_fieldc

10、at_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部分,在这个部分往往要指定w_repid的值,w_repid = sy-repid。 定义start-of-s

11、election部分,在这通常会调用各种子程序,以下以标准ALV显示为例: 1)调用一个子程序(通常命名为frm_get_dataXXX(X代表任意自定义字母),用于获取ALV所要显示的数据 ;例如: FORMfrm_get_data. “其它处理逻辑 SELECTlifnr供应商账号ktokk账号组name1名称1name2名称2INTOCORRESPONDINGFIELDSOFTABLEit_main FROMzmmjyht003 WHERE(l_where) . “其它处理逻辑 ENDFORM. 2)调用一个子程序(通常命名为frm_alv_layout_build),用于设置ALV所要

12、显示的样式 ; 例如:frm_alv_layout_build. g_layout-zebra=X. g_layout-colwidth_optimize.列数据最优化显示 g_layout-box_fieldnameSELFLAG表示ALV行项目选中的字段 ENDFORM. 3)调用一个子程序(通常命名为frm_alv_set_columns),用于完成ALV所要显示的列的相关设置 ;frm_alv_set_columns. REFRESHg_fieldcat_alv.PERFORMfrm_set_l_fieldcatUSING1LIFNR供应商账号p_posp_namep_text. DA

13、TA:l_fieldcatTYPEslis_fieldcat_alv.l_fieldcat-col_posp_pos.l_fieldcat-fieldnamep_name.l_fieldcat-seltext_lp_text.APPENDTO ENDFORM. 4)调用显示ALV的函数,例如:REUSE_ALV_GRID_DISPLAY ;frm_alv_display_data. CALLFUNCTION EXPORTING i_callback_programg_repid i_callback_pf_status_setFRM_STATUS_ALV i_callback_user_com

14、mandFRM_USER_COMMAND_ALV is_layoutg_layout it_fieldcatg_fieldcat_alv TABLES t_outtab EXCEPTIONS program_error1 OTHERS2 ENDFORM. 如果ALV所要展示的列过多时,建议先在数据字典系统中创建相应的结构,这样可免去对输出列表头信息的繁琐编辑处理,代码行也会缩短。只要将上面函数中的it_fieldcat参数替换成i_structure_name,如:I_STRUCTURE_NAME = TY_OUT_FILE,注意:此处的TY_OUT_FILE结构必须是数据字典中已经存在的对象

15、 以上步骤,详见“示例程序”部分:示例一(标准ALV)。三、ALV相关开发细节 1、标准ALV与对象ALV的共同开发细节2、标准ALV开发相关细节 2.1、ALV中的各种结构类型注解:1)TYPE-POOLS:slis:用于指定ALV类型组;2)slis_listheader:用于定义top of page的抬头结构;3)slis_t_listheader:用于定义top of page的抬头表4)slis_t_sortinfo_alv:用于指定ALV排序分类合计等信息的数据对象; 3)slis_layout_alv :用于定义布局类型数据对象;4)slis_t_fieldcat_alvWIT

16、HHEADERLINE :用于定义ALV列字段相关类型数据 对象;(slis_t_fieldcat_alv是表字段的整体,slis_fieldcat_alv是某一个字段的内容,将该字段的内容写到 slis_fieldcat_alv后,通过append添加到slis_t_fieldcat_alv中,后者是整个列表的标题,在显示的时候用到。)5)slis_t_event :是event的整体可看作event的集合,感觉可以用来写表头。 slis_alv_event是某个event, 需要将slis_alv_event append到slis_t_event.它可以包含图片和listheader等,

17、也就是说listheader等是靠event来显示的。6)slis_t_listheader :是listheader的集合,slis_listheader是某个listheader。将slis_listheader赋值后append到slis_t_listheader中。它是内表的表头。 7)slis_listheader : 包含:typ :H = header,S = Selection,A = action. key : 是和s对应的,是那个的标题吧. info:可以是变量和赋值的。跟在key的标题后面, 是个表达值。 2.2、ALV中所用到的函数:1)显示ALV函数:EXPORTIN

18、Gi_callback_programg_repid i_callback_pf_status_seti_callback_user_commandis_layoutit_fieldcatTABLESt_outtab 上面“REUSE_ALV_GRID_DISPLAY “函数的参数说明: 1 g_repid:用于保存当前程序名,例如: g_repidsy-repidVALUE保存当前程序名 2 FRM_STATUS_ALV:该子程序用于指定程序状态,例如: FORMfrm_status_alvp_extabslis_t_extab.SETPF-STATUSSTANDARDENDFORM. 3

19、FRM_USER_COMMAND_ALV:该子程序指定相关函数功能码的响应逻辑,例如:frm_user_command_alvp_ucommsy-ucommp_selfieldslis_selfield.ok_codep_ucomm.CASEok_code.WHENCREATE DELETE ENDCASE. p_selfield-refreshALV被修改时会自动刷新,没有修改不进行刷新4 g_layout:用于设置ALV布局样式,例如: FORM g_layout-zebra g_layout-colwidth_optimize g_layout-box_fieldname ENDFORM

20、.5 g_fieldcat_alv:用于指定ALV字段相关属性信息,例如: REFRESH PERFORM FORM l_fieldcat-col_pos l_fieldcat-fieldname l_fieldcat-seltext_l *l_fieldcat-no_zero APPEND ENDFORM.6 it_main:此内表中保存的是ALV所要展示的数据,例如: it_maintyp_itemLINE,ALV对应的内表 SELECT 此函数的其它参数信息,详见附属信息中的 函数常用参数 2) reuse_alv_events_get : 将各个事件的名字写到slis_t_event的

21、name中。这样,可以在后面,根据名字的不同,对不同的event付不同的form,来实现不同功能。2.3、ALV其它相关信息:1)ABAP alv中对数字字段进行去掉小数点后面的零的操作如下: 在slis_t_fieldcat_alv结构中,给demcimals_out字段设为零即可,代码如下: IFP_FIELDLINE_SUM LS_FIELDCAT-DECIMALS_OUT0 ENDIF. 2)通过HTML格式来显示表头,示例代码如下: *-ALVCommitSettingofALV_top_of_page-FORMalv_top_of_pagecl_ddREFcl_dd_document. DATA:m_pi. DATA:m_buffstring.*表头其实完全可以是一个html文件,自己使用html语言进行格式控制METHODcl_dd-html_insertcontentsm_buffCHANGINGpositionm_p.centerH2配件报废品种汇总表/Cent

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2