首页 > 嘉寅说说 > 郭裕的SAP ABAP性能优化培训课程
2012
09-10

郭裕的SAP ABAP性能优化培训课程

最近看到网络论坛上有讨论ABAP程序性能优化的话题。我最近一段时间恰好在整理对外公开讲述课程的课表(见ASKGUOYU所开设课程和计划表),这个课表中的大部分课程的课程设计和讲述内容,都按照我自己的体系和特色进行。

但是,过去工作这些年,我常常会遇到这样的情况:有时某些企业内部顾问(已经具备相当工作经验)非常需要参加某些模块中比较难的一些标准课程的培训,比如,FICO中的AC660、AC530课程,PP、PLM中的变式配置的有关课程,他们不知道哪里有这样的课程可以参加(SAP也不是经常开展这些课程,其他培训机构都是面向初学者为主);或者,比如SAP或者行业内的一些朋友们,已经接到了客户的培训需求,要请老师到客户现场讲述这些课程,但一下子却难以找到合适的可以讲述这些课程的老师。这些课程,相比对应模块中的那些基础或入门的首要课程,比如FICO的AC010,AC040等,业务模块的SCM500,SCM600,要困难的多,一下子很难找到合适的老师。所以,我在我的所开设课程和计划表中,增加了这么一项培训业务:《SAP标准培训课程培训》,在这一块业务中,重点是推广讲述SAP每个模块中最难的标准课程的培训。关于这一块业务的介绍是:

郭裕针对SAP标准培训课程中那些难度非常大的课程,专门推出对外的培训服务。这些标准培训课程,是对应模块领域中难度最大的课程,或者学习者想通过标准文档进行自学,难度非常大;学习者无法自己构造那些复杂的培训场景;或者通过自学无法获得非常深刻的印象,学习效果不佳。而郭裕专门为这些“硬骨头”课程开设的培训课程,能帮助大家解决这些问题:
1. 不但是讲述这些课程中的知识和技能、同时也会从无到有的展示建立这些课程场景的搭建过程,这些搭建过程往往都是实际项目的关键部分;郭裕甚至会精心准备一些标准课程之外的非常生动的案例和场景来帮助大家来理解课程的知识要点。
2. 郭裕为这些课程的授课进行了精心准备。所有这些课程,郭裕在之前都有录制高质量的视频材料(但视频不会发给大家),而基于课堂的教学具有更佳的培训互动,会取得更好的效果。参加郭裕的培训和您们自己学习标准培训文档,会有天壤之别的感受。之前很多读者有观看过郭裕的SAP ALE/IDOC的视频,与您自己看BC619教程的做对比,您就会有深刻的体会和对比。郭裕来讲述这些的标准课程,一方面确保全面覆盖这些标准课程本身内容,另外一方面,郭裕会基于他的工作经验,增加更多更形象更生动的案例来丰富讲述内容,让学员参加这些原本高难度的课程内容的培训也是一种享受。

在SAP ABAP这一模块中,我选了有两个主题的标准课程来讲,其中有一门是BC490:ABAP Performance Tuning。 在论坛中,很多人都说,学习ABAP的性能优化,自己看BC490的教程即可。确实是的,SAP的很多教程已经写的非常好了。但是参加由我来讲述的BC490的课程,你将获得:
1. 非常清晰的SAP ABAP高性能编程原则,参加完毕我的课程,你永远不会忘记这些原则;
2. 我之前有很好的数据库性能优化的基础积累,加上对于SAP系统的技术和业务模块的深入了解和长久的工作经验,这些积累对于我把这个课程讲述的非常生动、形象和有趣提供了很好的基础。参加这个课程,你学到的应该远远超过你的看书所能掌握的知识,尽管这个课程是,郭裕来讲述BC490,但郭裕讲述的远远不只是BC490。
3. 我的所有课程都在之前积累了丰富的视频(这些演示包含了非常典型典型的实际项目问题场景)。所以在参加我的课程,你将看到比书本单纯的文字说明要生动的多的案例。

所以,如果您的公司有准备提供年度培训经费,让您精进您的ABAP工作技能。或者您有客户有需要寻找具有丰富的ABAP经验,同时又能把BC490课程讲述的很好的人来做培训老师,都可以联系我。

最后,关于ABAP性能优化,在这个帖子上:
http://www.itpub.net/thread-1714238-1-1.html,我也做了一些回答,主要内容是:

ABAP程序的性能优化,这样表述可能更好一些:
1. 减少磁盘I/O次数,频繁读取数据表,是非常耗费时间的。所以在SAP需要读取某个表的数据,尽可能的一次性的放在内表中,这减少了IO,那些Loop中使用select是大量的增加了IO次数;减少I/O次数是最先要注意的。现在的内存数据库,本质也是使用大量的内存尽量减少磁盘IO的需要,在业务结束数据再归档到硬盘数据库中。

2. 提高I/O效率。比如查询尽可能的利用主键、索引。对于查询大表来说,主键和索引是非常重要的。我有一个标准,如果查询一个数据库表,这个数据库表的数据超过10万,如果在SQL中没用到任何索引或者主键,这是不可以接受的。当然我们不能任意增加数据库表的索引,但是在SAP技术中,可以通过其他内表作为查询条件走一下弯路来尽量用到索引。

3. 提高CPU的效率。比如loop是比较耗费资源的,还使用折半查找(binary search)明显提高CPU搜索内存区域的排序后内表的效率。尤其是两个loop潜套,一般来说应该尽量避免,可以先整理数据,转化为loop和read table来提高性能。我们也可以为自己建立一个标准,在一年的程序的开发中,你能使用两个loop潜套的机会只有5次,在程序中永远不能出现3次loop的情况,这样你就尽量少的使用loop嵌套了。

4. 减少内存的耗用。尽量只选择需要的数据,只需要的字段到内存中来。及时清理不需要的内存占用。对于ECC程序来说,在程序运行时是一个事务性系统,所以我们可以利用报表程序的选择条件的配合,选择合适的从数据库表读取数据的顺序,可以大大的减少多余的内存耗用(比如之前,我们先读A表,然后B表,再C表,我们也可以根据选择条件,如果从C表先读取数据,再从A表读取数据,B表读取数据,内存可能会少用很多)。

5.对业务的更深入了解,可以得到更合理的程序编写和优化能力。尤其是SAP系统,要得到一个报表的结果,可能有多种从不同数据表获取数据的方法,但是有些可能较为曲折和低效,有些则可以提高效率。

6. 一些辅助的手段,类似于数据仓库技术(比如用额外的空间存储数据库的一些汇总数据),从1个亿的数据表中访问数据和从一个10万的汇总表访问数据,差别会有很大的不同。比如很多企业都有大量的ecc的报表要获取每月历史物料的库存数据和月度消耗数据,如果大量的程序都频繁的从mseg中读取数据,效率不太好,可以考虑建议中间表,这个表示汇总的数据,其他的类似于同样计算需求的从这个中间表来访问数据。

另外,我制作了大约15个讲述长度在25分钟左右的关于ABAP性能优化设计方面的视频材料:

文件名 标题 主要内容
ABAP_Perf_1 磁盘IO的次数和时间 本小节主要探讨程序性能优化的和“硬盘瓶颈”有关的因素,如果在我们的ABAP程序中减少磁盘的IO操作次数,并如何减少磁盘IO的时间(提高I/O的效率)。
ABAP_Perf_2 内存耗用及 CPU时间 本小节讨论ABAP程序编写如何降低内存耗用,以及提高CPU运行效率的一些方法、技巧、原则等。
ABAP_Perf_3 数据库表的读取顺序 数据库数据选择的入口表的选择;结合必须输入的选择条件作为入口表的选择,以提升数据库查询的效率(提高I/O效率)
ABAP_Perf_4 内表为查询条件问题1 使用内表的数据字段作为数据库表的查询条件,当内表数据太多,内表的查询字段的数据重复度不高时,会有严重的性能问题(数据层会产生很多不同的SQL,提升了I/O操作的次数),本小节和后面2个小节展示了典型的问题和两种不同的解决方案。
ABAP_Perf_5 内表为查询条件问题2 继续前一个小节讲述。
ABAP_Perf_6 内表为查询条件问题3 继续前面小节的内容讲述。
ABAP_Perf_7 及时清扫现场的习惯 及时清扫现场的重要性,包括内表清空,读取循环内表到数据到工作区,工作区要及时清空,一方面这些编程习惯提升了系统性能,另外也减少了程序出错的几率。
ABAP_Perf_8 工具:SQL性能跟踪 SQL Trace的运用。并结合一个实际案例进行程序优化。
ABAP_Perf_9 工具ABAP性能跟踪 ABAP程序运行时分析工具,更形象化了解程序运行的各部分内容的时间开销。
ABAP_Perf_10 数据库访问的知识 介绍一些和ABAP编程有关的数据库数据访问有关知识,比如Index, Buffer table等内容。数据库的执行计划。
ABAP_Perf_11 内表知识补充讲述 补充讲述内表相关知识,不同的内表类型和性能优化时选择。
ABAP_Perf_12 SAP 系统性能总览 从Basis角度,了解SAP系统是否是否存在某些性能瓶颈。
ABAP_Perf_13 性能优化案例之一 为客户的ABAP程序提供性能调优服务,记录下的典型案例之一。这些案例本身并不重要,还是优化时候的思路和知识的灵活运用才是重点。
ABAP_Perf_14 性能优化案例之二 为客户的ABAP程序提供性能调优服务,记录下的典型案例之二。
ABAP_Perf_15 性能优化案例之三 为客户的ABAP程序提供性能调优服务,记录下的典型案例之三

其他信息:
1. 郭裕的所有的ABAP视频的完整目录见《郭裕的SAP ABAP视频目录
2. 郭裕的其他SAP标准课程培训表,见《郭裕所开设的培训课程表》一文的3.5章节内容。

最后编辑:
作者:yitai
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。