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

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/5699282.html】到电脑端继续下载(重复下载【60天内】不扣币)。

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(如何提高ABAP程序运行效率.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

如何提高ABAP程序运行效率.doc

1、如何提高ABAP程序运行效率 如何提高ABAP程序运行效率 中国石油测井有限公司 钮 顺 摘要:ABAP的程序会需要花费大量的时间执行, 而且会使其它进程被迫暂停以等待当前程序运行结束。本文通过对ABAP程序编写部分技巧的介绍,以及I/O操作,内存占用,CPU负载等方面介绍提高程序的运行效率。 关键词:ABAP,I/O操作,内存占用,CPU负载 前言 信息化建设对公司实现率先建成一流的社会主义现代化企业和具有国际竞争力的跨国公司的奋斗目标,具有十分重要的意义,当然企业资源的管理和合理的应用尤为重要,这样ERP系统集信息技术与先进的管理思想于一身,成为现代企业的运行模式,反映时

2、代对企业合理调配资源,最大化地创造社会财富的要求,成为企业在信息时代生存、发展的基石。一个系统的成功应用主要在于它是否适合应用的环境,这样就取决于系统的开发工作,而高效完善的程序是系统的基础。 1 概念 1.1 ABAP 高级业务应用编程(Advanced Business Application Programming)。它是SAP开发设计的用于对SAP系统进行应用分析、二次开发的主要工具,是所有SAP应用的基础。ABAP是一种支持结构化程序设计的语言,它合并了所有通常的控制结构和模块化概念,同时,它还支持面向对象的程序设计方法。 1.2 ABAP的特性 ABAP/4 支持商业

3、数据类型和操作。您可以用特殊日期和时间字段进行计算。 系统会自动执行必需的类型转换。 ABAP/4 包含一个叫 Open SQL 的SQL子集。用 Open SQL,您可以读取和访问数据库表,与所用的数据库系统无关。 ABAP/4 允许您定义和调用子程序。也可以调用其他程序的子程序。参数能够以各种方式从子程序传递或传递到子程序。 ABAP/4 包含一种特殊子程序,叫做功能模块。您可以在中央库中创建和维护功能模块。在调用程序和子程序之间功能模块有一个明确定义的数据接口。它们能够以调用程序的独立模式进行分别测试。 ABAP/4 报表程序用于分析数据库表中的数据。这种分析的结果可以显示在屏

4、幕上或发送到打印机上。逻辑数据库支持报表程序。 ABAP/4将对话程序组织为包含对话模块的模块池。每个动态程序(由一个屏幕及其流逻辑组成的“动态程序”)都基于一个ABAP/4 对话程序。流逻辑包含对 ABAP/4对话模块的调用。 1.3 和ABAP相关联的SAP BASIS结构 SAP R/3系统是一个典型的三层架构系统,包括: 表现层(Presentation Layer):这是SAP用户和R/3系统交流的接口,用户在这一层对SAP系统进行操作。这层将用户的命令或者操作传送给R/3系统,然后系统进行相应的处理后把数据返还给用户。 应用层(Application layer):

5、这层包括一个或者多个应用服务器和一个消息服务器。每一个应用服务器包括一系列服务以便运行应用程序。所有的服务分置在这些应用服务器之中,其实用户需要的只是其中的一个应用服务器,多个服务器之间传递信息以决定用户到底需要的是哪个服务器的服务。 数据库层(Database layer):这里就是SAP系统的核心,存放了所有SAP系统的数据。 图1三层逻辑结构 2 ABAP程序优化 2.1 语法优化 2.1.1 SELECT 写法一: SELECT MATNR INTO IT_MARA FROM MARA. APPEND IT_MARA. ENDSELECT. 写法

6、二: SELECT MATNR INTO TABLE IT_MARA FROM MARA. 写法一是将数据先放置到工作区再将工作区的数据添加至内表,第二种是将数据直接放置到内表里,当然第二种方法效率要高很多。同理尽可能的使用INTO ITABLE语句来代替SELECT—ENDSELECT。不要再循环中使用SELECT语句,这样每次循环都要SELECT一下,SELECT 本身就是循环,如此循环嵌套循环,时间消耗度是N*N。在数据量大了之后,在SELECT和END SELECT之间做处理的时间会很长,SELECT-END SELECT语句在整个过程中是保持数据库连接的,从而导致数据库端因为

7、连接超时而断开,因此在处理大数据量的报表中,不能用SELECT-END SELECT这种写法。 2.1.2 批量处理 写法一: LOOP AT INT_FLIGH.   IF INT_FLIGH-FLAG IS INITIAL.     INT_FLIGH-FLAG = 'X'.   ENDIF.   MODIFY INT_FLIGH. ENDLOOP. 写法二: INT_FLIGH-FLAG = 'X'. MODIFY INT_FLIGH TRANSPORTING FLAG WHERE FLAG IS INITIAL. 第一种方法是使用LOOP循环内表内的每一行数据

8、进行判断然后处理,第二种是直接对整个内表处理,当然第二种方法要快的多。同理合理应用聚合函数(max( ))、内表的批量添加(APPEND lINES),多项目查询(FOR ALL ENTRIES),整体赋值(MOVE-CORRESPONDING)都是化零为整的处理行为,对于数据量大的处理能起到很好的效果。 2.1.3 其他语句 1.使用WHERE语句,CHECK的效率较慢。 不推荐: SELECT * FROM ZFLIGHT.   CHECK : ZFLIGHT-AIRLN = 'LF' AND ZFLIGHT-FLIGH = 'BW222'. ENDSELECT. 推荐:

9、 SELECT * FROM ZFLIGHT WHERE AIRLN = 'LF' AND FLIGH = '222’. ENDSELECT. 2.使用视图代替基本表查询。 不推荐: SELECT * FROM ZCNTRY WHERE CNTRY LIKE 'IN%'.   SELECT SINGLE * FROM ZFLIGHT WHERE CNTRY = ZCNTRY-CNTRY AND AIRLN = 'LF'. ENDSELECT. 推荐: SELECT * FROM ZCNFL WHERE CNTRY LIKE 'IN%' AND AIRLN = 'LF'. EN

10、DSELECT. 3.使用二分法查询,提高查询内表数据速度。 不推荐: READ TABLE INT_FLIGH WITH KEY AIRLN = 'LF'. 推荐: READ TABLE INT_FLIGH WITH KEY AIRLN = 'LF' BINARY SEARCH. 4.避免使用SELECT DISTINCT语句,使用SORT + DELETE ADJACENT DUPLICATES 代替。 5.真确的使用INNER JOIN将两个或多个透明表连接起来查询。 2.2 簇表(BSEG)处理 提高程序的效率就要提高对簇表的处理,下面以最典型的BSEG说明。了解BS

11、EG的开发人员应该知道它于一般的透明表不同,它是一个簇表。对于一个簇表来说,除了主键项目外,其他项目都被编辑到一个长文本项目中,一起存储在表簇RFBLG中的vardata项目中,这就决定了作为簇表的BSEG无法再建立键值以外的索引(INDEX),所以一般我们对于透明表来说当主键项目不全或完全没有时,追加索引的作法对于BSEG表来说就不好用了。而BSEG簇表又是SAP系统中FICO 会计模块中最常被使用的数据表,所以运用好对BSEG表的访问技术对于FICO会计模块的扩展开发至关重要。 对於簇表来说,在数据库中没有与之同名的实体物理表相对应,所以虽然其可在ABAP中使用,但还是有一些限制的 :

12、 1. 不能使用SELECT DISTINCT语法,BSEG中的字段存储在VARDATA中,所以不能使用DISTINCT语句对单个项目去除重复。 2. 不能使用Native SQL,在数据库中没有与之同名的实体物理表相对应,所以不能使用Native SQL 对BSEG操作。 3. 不能使用Order by 语法,BSEG中的字段存储在VARDATA中,所以不能使用Order by语句对单个项目排序。 4. 不能再追加创建索引,BSEG中的字段存储在VARDATA中,所以不能再追加创建索引。 除此之外,对BSEG的访问要使用主键项目,如果没有主键项目虽然语法调试能够通过,但是程序执行起来

13、耗时长,效率低,而且随着业务量的增加执行时间问题会越发严重,甚至导致程序不能正常执行结束。当主键值不足时,可以使用如下二次索引透明表: BSAD:应收明细(已清帐)客户 BSID:应收明细(未清帐)客户 BSAS:总帐明细(已清帐)总账 BSIS:总帐明细(未清帐)总账 BSAK:应付明细(已清帐)供应商 BSIK:应付明细(未清帐)供应商使 BKPF 是财务凭证抬头,BSEG 是财务凭证行项目。在财务凭证记账的时候,数据被插入 BKPF 和 BSEG的同时插入以上六张表中的一个未清表。 下面举例说明一下效率的改进,在财务模块三栏账页打印程序(ZD600FIR022)中,下面

14、为耗时较多的部分源代码:    SELECT      BUKRS "公司代码        BELNR  "会计凭证编号        GJAHR  "会计年度        BUZEI  "会计凭证中的行项目号        HKONT  "总分类帐帐目        DMBTR  "按本位币计的金额        SHKZG "借方/贷方标识        PRCTR  "利润中

15、心        XNEGP  "标识: 反记帐       FROM BSEG INTO CORRESPONDING FIELDS OF TABLE GT_PZXM       WHERE BUKRS = P_BUKRS AND           GJAHR = P_GJAHR AND           PRCTR IN R_PRCTR AND           HKONT IN R_HKONT. 由于缺乏对主键BELNR(会计凭证编号)的条件限制,或使用FOR ALL ENTRIES 对BELNR限制时,数据库查询会非常耗时。对程

16、序测试分析,耗时情况如下(图二): 图二:耗时分析 可见数据库查询耗时78621682微秒(约等于1.3分钟),可见这样的效率太低了,用户已经无法忍受这样的等待。 改进后的程序(ZD600FIR022_1),提换掉上述耗时的源代码如下: SELECT    BUKRS  "公司代码        BELNR  "会计凭证编号        GJAHR  "会计年度        BUZEI  "会计凭证中的行项目号        HKONT  "总分类帐帐目       

17、 DMBTR  "按本位币计的金额        SHKZG  "借方/贷方标识        PRCTR  "利润中心        XNEGP  "标识: 反记帐     FROM BSAS INTO CORRESPONDING FIELDS OF TABLE GT_PZXM       WHERE BUKRS = P_BUKRS AND             GJAHR = P_GJAHR AND             PRCTR IN R_PRCTR AND             HKONT IN R_

18、HKONT.     SELECT     BUKRS  "公司代码        BELNR  "会计凭证编号        GJAHR  "会计年度        BUZEI  "会计凭证中的行项目号        HKONT  "总分类帐帐目        DMBTR  "按本位币计的金额        SHKZG  "借方/贷方标识        PRCTR  "利润中心        XNEGP  "标识

19、 反记帐    FROM BSIS APPENDING CORRESPONDING FIELDS OF TABLE GT_PZXM      WHERE BUKRS = P_BUKRS AND            GJAHR = P_GJAHR AND            PRCTR IN R_PRCTR AND            HKONT IN R_HKONT. 这样改为对两个相关透明表的查询,效率有很大的提高。对程序测试分析,耗时情况如下(图三): 图三:耗时分析 整个程序运行下来才518587微秒(约等于0.5秒),程序效率提高了很多,相比改进前的程序用

20、户很满意。 最后需要说明一点,不是所有的SAP体统都可以使用这种方法,能否使用取决于R/3系统的设计和配置。所以在试图使用该方法时应充分调查相关透明表与BSEG中的纪录是否相符,别速度提高了,结果处理对象范围减小了或增大了,那就与初衷背道而驰了,效率的提升一定要在确保业务数据正确的基础上再加以考虑。 2.3 测试 开发人员在开发完毕后可以通过测试,了解程序的运行效率。 SE30可以对SAP ABAP 效率测试,其中还包含了许多程序的优化方法。尤其是那些实用的提示和技巧。 SM66可以查看正在运行的程序和执行时间。 ST04可以对很多会话进行监控,单击:详细分析清单,可以选择分析监控

21、会话。比如选择Oracle会话,可以查看正在执行的SQL 语句。可以单击需要监控的SQL statement,进入明细。然后单击执行计划(Ctrl+Shift+F6),可以通过执行计划分析查询效率与使用索引的情况。(Ctrl+Shift+F7),可以追到这条SQL语名是哪个程序调用的。 3 小结 ABAP程序会需要花费大量的时间执行,而且会使其它进程被迫暂停以等待当前程序运行结束。对ABAP程序的优化最主要的是尽量减少I/O操作、内存占用和CPU的负载。类似对硬盘的读写的I/O操作是最耗费时间的,如果对内存的操作不加以控制,可能有些时候不得不对硬盘的交换空间操作,这样就增加了对磁盘的

22、I/O读写操作。CPU的负载可以通过优化程序来改善,在程序中尽量使用诸如SUM(SQL语句)或者COLLECT(ABAP语句)。尽可能把更多选择项放在用户选择界面上,以避免程序一次选出大量的数据。如果读出的记录条数在持续增长,你应该把这些数据分割成几个固定大小的数据块。比如说,你想调出一年的数据,就可以按照月份把一年的数据分成12个月调出。这样做能减少I/O的操作。最有效率的方法是改善您的应用和需求,要使需求合理规范,这才能使效率达到最高化。 参考文献: 1、黄佳、《SAP程序设计》、机械工业出版社、2006年1月。 作者简介:钮顺,2004年毕业于陕西西安西北大学计算机科学与技术专业,2006至今在信息管理部担任ERP系统开发工作。 8

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服