导言

本页面打算收集SAP CRM实施中可以用于避免性能问题的注意事项,重要的事项会由图标标识。

如果你有其他的技巧想要说出来,别犹豫!

性能注意事项

通用

缓存读取类访问,特别是在性能关键的地方,比如字段检查,这时要避免数据库查询。

尝试把所有的东西放在同一个CRM_ORDER_MAINTAIN调用当中,以避免不必要的开销。编辑多文档的时候也是一样,需要被替换为一个调用。

不要无限制地使用SAP内部API,比如,只读取需要的数据就可以,而不是整个业务。

总是把性能放在心上,特别是在实现经常被调用的代码的时候。这也包括,要事先预计好代码被调用的情况。

.在维护业务后,不要忘记使用CRM_ORDER_INITIALIZE函数,以释放缓存占用的内存。

ABAP Programming and Performance Notes  要考虑到通用的性能指导方针(避免嵌套循环、数据库的反复查询)更多信息请看:ABAP ProgrammingPerformance Notes

处理行项目的时候,不要通过header guid 使用函数CRM_ORDERADM_I_READ_OB(比如行项目层级的事件回调),这对性能来说极为关键,特别是在处理大量项目的时候。
在仅仅是读取当前项目所在层级的时候,应使用函数CRM_ORDERADM_I_STRUCT_READ_OB。

系统设置

阅读note 1162685 以获取有关CRM WebClient UI设置的通用信息。

阅读note 1162605 ,关于如何改善CRM WebClient UI使用中的网络性能。

阅读note 1281896 以获取有关CRM WebClient UI共享内存大小设置的信息。

扩展性

不在字段检查中放置性能昂贵的代码。

为增强进行运行时性能评估(考虑到包含API调用的整个运行期间,并不是只有附加的代码会导致性能问题,问题也有可能是不适当的API调用所导致的)。

不使用生成的表扩展处理垃圾数据。

在生成扩展时,你可以考虑关闭通用的检查、实现一个专门的检查,以提高性能。

事件处理器

不要将行项目交叉地放到各个立即执行的回调函数中,而是应该放在文档处理的结尾处。

Always keep the concept of secondary
transaction categories ("Nebenbus") in your mind. Make sure that newly
registered EC function modules only run for the desired objects.

只有在真的需要某个值的时候,才应该在事件处理器回调中请求数据。

使用CRMD_TRACE来找到事件处理器回调注册(应当被放置)的正确位置。

报表框架

搜索用户指定字段的时候,考虑扩展合适的索引表。阅读note 1527039.

要考虑到权限检查也是查询过程的一部分,并仔细观察查询权限检查对数据库查询带来的影响。

定价, VMC, 产品配置

尽可能降低价格处理的复杂性:考察多种情况,检查不常用的情况类型,限制价格处理的访问数量,使用合适的请求禁止某些在处理中不需要的情况。

查阅note 1269480 获取有关配置、VMC和IPC的性能问题。

查询note 1005457 获取VMC设置(Java 堆).

VMC日志只需要记录错误。

CRM IPC定价公式实现的基本准则:
- 不要进行表访问。自建表的读取不会被IPC缓存,因此应当在CRM服务端实现定价准备步骤。 I
- 在用户出口(user exit)的实现中,避免运行时错误(空指针异常)。
- 在用户出口处避免使用循环。

CRM功能自定义

Actions:保持条件尽可能的简单,不管它是一个计划(scheduling condition)或者是初始条件(starting conditions)。这使得Actions条件和报表查询的速度更快。

Actions:对复杂的计划和起始条件使用各自的BAdI EVAL_SCHEDCOND_PPF 或EVAL_STARTCOND_PPF来实现,这样可以获得比使用基于工作流的条件更高的性能。基于条件的工作流通常会由一个解释器来解释并且访问数据,这会成为性能的关键。

Actions: 操作:对不同的业务场景使用不同的PPF配置。这可以让运行时变快,因为检查的条件和更少,配置的需要加载的Actions也更少。

Actions: 状态检查应当被视为计划条件建模,而不是初始条件。被计划条件填满的Actions,会在应用初始化其删除之前持续存在。在某些情况下,这可以导致不必要的PPF选择报表的长时间运行。
一个初始条件应该只是导致导致action运行的延迟,条件的其它部分必须是计划条件的一部分。

预约:在日期配置信息中移除不需要的日期,例如如果你没有使用账单计划的话

修改文档:检查是否可以无效化某个文档的修改功能。(可以通过业务类型自定义使其无效,标识是‘No Change Docunments’)

关于Actions的更多信息,请参考Action profiles in SAP CRM

Web Client UI 框架

只把需要的视图/assignment blocks放置在UI上面。如果视图/assignment blocks不是经常需要的,使用懒加载模式。

不在组件控制器中的DO_PREPARE_OUTPUT方法中使用性能昂贵的代码,因为在每次往返中,它都要被处理。

不要只是为了防止读取到缓存中未更新的数据而绕过BOL缓存。要寻找数据不一致的原因,并且修改其中的问题。

不使用复杂的绑定(更新一个节点,将引发多个其它节点的更新,以及/或者一串其它节点)。

注册事件时,不要忘记解除注册(否则,事件处理器将仍然被调用,甚至在不再需要的情况下)。

在UI组件中,不使用ALL组件集。否则会消耗不必要的内存。

本文链接:http://www.cnblogs.com/hhelibeb/p/6103685.html

英文原文:Performance Tips and Tricks

SAP CRM 性能小技巧的更多相关文章

  1. Java性能小技巧

    局部决定总体. 一个应用的总体性能取决于每一个组件的性能. 以下是一些帮助你提高应用性能的Java编程技巧: 编程技巧 原因及策略 避免反复创建对象 为什么: 更少的对象会须要更少的垃圾回收 使用的空 ...

  2. YbSoftwareFactory 代码生成插件【二十一】:Web Api及MVC性能提升的几个小技巧

    最近在进行 YbSoftwareFactory 的流程功能升级,目前已经基本完成,现将用到的一些关于 Web Api 及 MVC 性能提升的一些小技巧进行了总结,这些技巧在使用.配置上也相当的简单,但 ...

  3. 客户端JS性能的一些优化的小技巧

    下面是一些关于客户端JS性能的一些优化的小技巧:1.[顶]关于JS的循环,循环是一种常用的流程控制.JS提供了三种循环:for(;;). while().for(in).在这三种循环中 for(in) ...

  4. 开发Android应用 提升性能的小技巧

    前 言 2015年,Android OS 目前在手机操作系统的市场占有率已达59%,权威机构预计,Android市场占有率在2016年将达到63%,由于Android的开放性,未来占有率还将不断增加, ...

  5. .NET性能优化小技巧

    .NET 性能优化小技巧 Intro 之前做了短信发送速度的提升,在大师的指导下,发送短信的速度有了极大的提升,学到了一些提升 .NET 性能的一些小技巧 HttpClient 优化 关于使用 Htt ...

  6. 10个提升MySQL性能的小技巧

    从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫. 在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之 ...

  7. How Javascript works (Javascript工作原理) (十一) 渲染引擎及性能优化小技巧

    个人总结:读完这篇文章需要20分钟,这篇文章主要讲解了浏览器中引擎的渲染机制. DOMtree       ----|   |---->  RenderTree CSSOMtree  ----| ...

  8. Java 性能调优小技巧

    1.在知道必要之前不要优化系统 这可能是最重要的性能调整技巧之一.你应该遵循常见的最佳实践做法并尝试高效地实现用例.但是,这并不意味着在你证明必要之前,你应该更换任何标准库或构建复杂的优化. 在大多数 ...

  9. JavaScript 工作原理之十一-渲染引擎及性能优化小技巧

    原文请查阅这里,略有删减,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScript 工作原理的第十一章. 迄 ...

随机推荐

  1. HTML骨架结构

    前面的话   一个完整的HTML文档必须包含3个部分:文档声明.文档头部和文档主体.而正是它们构成了HTML的骨架结构.前面已经分别介绍过文档声明和文档头部,本文将详细介绍构成HTML骨架结构的基础元 ...

  2. 学习ASP.NET Core, 怎能不了解请求处理管道[6]: 管道是如何随着WebHost的开启被构建出来的?

    注册的服务器和中间件共同构成了ASP.NET Core用于处理请求的管道, 这样一个管道是在我们启动作为应用宿主的WebHost时构建出来的.要深刻了解这个管道是如何被构建出来的,我们就必须对WebH ...

  3. SVD奇异值分解的基本原理和运用

    SVD奇异值分解: SVD是一种可靠的正交矩阵分解法.可以把A矩阵分解成U,∑,VT三个矩阵相乘的形式.(Svd(A)=[U*∑*VT],A不必是方阵,U,VT必定是正交阵,S是对角阵<以奇异值 ...

  4. WebApi基于Token和签名的验证

    最近一段时间在学习WebApi,涉及到验证部分的一些知识觉得自己并不是太懂,所以来博客园看了几篇博文,发现一篇讲的特别好的,读了几遍茅塞顿开(都闪开,我要装逼了),刚开始读有些地方不理解,所以想了很久 ...

  5. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

  6. Nginx学习笔记--001-Nginx快速搭建

    Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的R ...

  7. css选择器

    常用css选择器,希望对大家有所帮助,不喜勿喷. 1.*:通用选择器 * { margin: 0; padding: 0; } 选择页面上的全部元素,通常用于清除浏览器默认样式,不推荐使用. 2.#i ...

  8. 使用Hudson搭建自动构建服务器

    环境: ubuntu1404_x64 说明: 使用hudson和git搭建自动构建服务器的简单示例 安装hudson及相关插件 安装hudson 安装命令如下: sudo sh -c "ec ...

  9. Linux 入门之网络配置

    查看网络状态 ifconfig 修改网络参数 实验环境centos6.5,其他系统自行百度 ls /etc/sysconfig/network-scripts 显示所有文件, vi /etc/sysc ...

  10. Windows Server 2008 R2 下配置TLS1.2,添加自签名证书

    前言 2017年1月1日起App Store上的所有App应用将强制开启ATS功能. 苹果的ATS(App Transport Security)对服务器硬性3点要求: ① ATS要求TLS1.2或者 ...