使用ABAP运行时间分析工具SE30优化程序

  • ABAP运行时间分析工具使用SE30方法
    • (一) 操作
    • (二) 分析方法
    • (三) 相关事物码
    • (四) 附:SQL语句优化方法(引用部分)

ABAP运行时间分析工具使用SE30方法

使用ABAP运行时间分析工具的优化思想是二八原则,即优化目标放在最消耗效率的地方进行优化,进而获得最大的优化效果
示例:ZCN41N优化
优化办法:
1、项目定义不允许输入星号。
2、先权限检查
3、物料描述:放后面,当取出物料需求后,在进行抽取物料描述。
4、通过获取到的权限值:项目负责人(vener),进行过滤取项目,及后续WBS
5、通过获取到的权限值:MRP控制者(vener),进行过滤取网络
优化结果:
生产机优化前:15.50分
优化后:10.19分

(一) 操作

事物代码SE30 输入事物代码/程序/模块,点击Execute,进入程序界面,运行完成后退出,回到SE30界面,点击Evaluate显示分析报表,双击行项目可以看具体的明细。


(二) 分析方法

  1. 一看概述 ABAP/数据库运行时间比例
    不同时期数据量不一样,运行时间不一样,所以单从ABAP/数据库各自运行的时间,对比优化后与优化前的差别是不可行的。所以,需要从它们的处理时间占比的角度来分析优化的结果。比如下面示例中,优化前ABAP占比17.9%,数据库占比82%,表明数据库亟需优化,优化数据库更能有效提升运行效率。所以示例中着重优化了数据库处理效率。结果如下:
    优化前
    数据处理时间占比82%

    优化后
    数据处理时间占比降低至63%

    表明优化后数据库处理时间占比下降,总效率得到了提升
  2. 二看清单 行项目耗时
    在优化前,可以分析占比靠前的函数、数据库语句,优先优化靠前的项目,能够更有效的提升运行效率。 优化完成后,检查原先耗时较长的项是否还占比较大,可以得知优化是否有效。下面示例中优化前RESB处理时间排名靠前,经过优化后第一页已不再有RESB处理语句,表明优化有效果。
    优化前
    发现读取RESB处理时耗较长

    优化后
    RESB表读取耗时已不在前列,表明优化有效

    优化后RESB数据库耗时已不在排名靠前

(三) 相关事物码

SE30 ST12 ST05 DB02

(四) 附:SQL语句优化方法(引用部分)

  1. 用where语句
    不推荐
 Select * from zflight. Check : zflight-airln = ‘LF’ andzflight-fligh = ‘BW222’. Endselect.

推荐

  Select * from zflight whereairln = ‘LF’ and fligh = ‘BW222’. Endselect.
  1. 使用聚合函数
    不推荐
Maxnu = 0.
Select * from zflight where airln = ‘LF’ and cntry = ‘IN’.
Check zflight-fligh > maxnu.
Maxnu = zflight-fligh.
Endselect.

推荐

Select max( fligh ) from zflight into maxnu where airln = ‘LF’ and cntry = ‘IN’.
  1. 使用视图代替基本表查询
    不推荐
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’.
Endselect.
  1. 使用INTO table 代替select endselect
    不推荐
Refresh: int_fligh.
Select * from zflight into int_fligh.
Append int_fligh. Clear int_fligh.
Endselect.

推荐

Refresh: int_fligh.
Select * from zflight into table int_fligh.
  1. 使用批量修改内表代替逐行修改
    不推荐
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.
  1. 使用二分法查询,提高查询内表数据速度
    不推荐
Read table int_fligh with key airln = ‘LF’.

推荐

Read table int_fligh with key airln = ‘LF’ binary search.
  1. 两个内表添加使用批量增加代替逐行
    不推荐
Loop at int_fligh1.
Append int_fligh1 to int_fligh2.
Endloop.

推荐

Append lines of int_fligh1 to int_fligh2.
  1. 使用FOR ALL Entries
    不推荐
Loop at int_cntry.
Select single * from zfligh into int_fligh where cntry = int_cntry-cntry.
Append int_fligh.
Endloop.

推荐

Select * from zfligh appending table int_fligh
For all entries in int_cntry
Where cntry = int_cntry-cntry.
  1. 使用sort by 代替order by
  2. 避免使用SELECT DISTINCT语句
    使用的 ABAP SORT + DELETE ADJACENT DUPLICATES 代替.
  3. 两个实例
DATA: BEGIN OF it_mara OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
END OF it_mara.

第一种写法:

Select matnr
INTO it_mara
FROM mara.
APPEND it_mara.
ENDSelect.

第二种写法(high performace):

Select matnr
INTO TABLE it_mara
FROM mara.
DATA: BEGIN OF it_mara OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
END OF it_mara.
DATA: BEGIN OF it_makt OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
END OF it_makt.

第一种写法:

LOOP AT it_mara.
Select SINGLE maktx
INTO it_mara-maktx
FROM makt
Where matnr = it_mara-matnr AND
spras = sy-langu.
MODIFY it_mara TRANSPORTING maktx.
ENDLOOP.

第二种写法(high performace)

Select matnr maktx
INTO TABLE it_makt
FROM makt
FOR ALL ENTRIES IN it_mara
Where matnr = it_mara-matnr and
spras = sy-langu.

1 数据——>工作区,工作区——>内表,
2 数据——>内表
很明显少了一个过程 效率自然高了 如果数据量越大,效果是可想而知的

  1. 不要使用<>运算符

使用运行时间分析工具SE30优化ABAP程序相关推荐

  1. linux程序分析工具下载,linux 程序分析工具

    http://blog.csdn.net/denny_233/article/details/7477282 2012 linux程序分析工具介绍(一)--"/proc" 写在最前 ...

  2. 程序崩溃 分析工具_程序分析工具| 软件工程

    程序崩溃 分析工具 A program analysis tool implies an automatic tool that takes the source code or the execut ...

  3. Eclipse插件TPTP-程序Profile与分析工具详细教程

    TPTP简介 Eclipse Test & Performance Tools Platform 是Eclipse的一个顶级工程(Top-Level Project),TPTP项目封装了一大堆 ...

  4. ClickHouse留存分析工具十亿数据秒级查询方案

    作者:陈璐,腾讯 CSIG 高级数据分析师 本文实践了对于千万级别的用户,操作总数达万级别,每日几十亿操作流水的留存分析工具秒级别查询的数据构建方案.同时,除了留存分析,对于用户群分析,事件分析等也可 ...

  5. java按秒查询数据_ClickHouse留存分析工具十亿数据秒级查询方案

    作者:陈璐,腾讯 CSIG 高级数据分析师本文实践了对于千万级别的用户,操作总数达万级别,每日几十亿操作流水的留存分析工具秒级别查询的数据构建方案.同时,除了留存分析,对于用户群分析,事件分析等也可以 ...

  6. 性能分析工具 之 Perfetto基本使用

    Perfetto是google从Android10开始引入的一个全新的平台级跟踪分析工具.适用于Android.Linux和Chrome的更加通用和复杂的用于性能检测和跟踪分析的生产级开源项目.在an ...

  7. 静态代码分析工具简介

    静态代码分析工具简介 什么是静态代码分析 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句 ...

  8. 五款免费的安全分析工具

    移动和云计算的采用扩大了现代企业的安全边界,许多企业在更深入地了解其IT基础设施,以监控恶意活动或软件.这些潮流带来了越来越多有待评估的威胁数据.想把这些数据转化成有意义的情报,就需要不仅限于传统安全 ...

  9. ABAP程序性能优化

    程序效率优化的重点: 降低CPU负载 降低数据库负载(减少IO操作) 内存使用的优化 减低CPU负载: 1. 使用WHERE条件减少循环次数. 即推荐: LOOP AT itab WHERE vbel ...

最新文章

  1. JavaScript内存释放笔记
  2. 模式识别两种方法:知识和数据
  3. Linux网络编程实例详解
  4. dotnet 获得存储过程返回值和输出参数有什么不同 @@IDENTITY SCOPE_IDENTITY()
  5. C语言程序设计 认识函数
  6. JavaScript中的高级特性及特别对象、属性和方法
  7. iOS读取通讯录获取好友通讯录信息[名字(姓+名字),手机号码(多个号码)等]...
  8. 无法嵌入互操作类型NationalInstruments.TestStand.Interop.UI.ExecutionViewOptions。请改用适用的接口...
  9. McBSP初始化以及和EDMA的结合使用(C64X DSP)
  10. (附源码)计算机毕业设计SSM餐厅订餐系统
  11. 利用GPU加速的软件
  12. 用户体验之新浪滚动新闻
  13. 图文安装VMware Workstation教程
  14. 网站不收录怎么办?网站SEO优化工具
  15. 小纸条:阿里云资源分享站
  16. C++(17):any
  17. 微博短视频怎么去水印 视频消重软件推荐
  18. Android APP过检安全整改
  19. Hook函数三步走(SetWindowsHookEx、UnhookWindowsHookEx、CallNextHookEx)
  20. linux格式化TF卡工具

热门文章

  1. Linux shutdown命令
  2. 1.4、Python数据结构——字典(dict)
  3. Python实现字典树
  4. c语言用指针实现日期输出,C语言指针实现链表以及用gcc编译输出
  5. 10行python代码的词云
  6. 图灵奖设立50周年,向伟大的计算机科学家们致
  7. [LeetCode]股票买卖
  8. MAIL(POSTFIX-SMTPS DOVECOT-IMAPS)
  9. 分布式数据库ACID特性
  10. 第二章:Docker版本与安装介绍