注:本人身为SAP咨询顾问,故如下以SAP开发语言ABAP做为例子,其余语言雷同。 安全
在SAP领域,作开发的人不少,会ABAP的也很多,但真心懂ABAP,懂开发的人却很少。不少人从事开发行业,只是单纯为了开发而开发,为了写代码而写代码。只要可以实现功能,哪怕里面埋了不少雷挖了不少坑也可有可无,甚至BUG百出。SAP系统最注重的是代码的质量以及运行高效率和简洁,不然一旦程序有问题,影响的并非程序自己,而会影响到实际企业生产,甚至必定程度上影响到决策层的判断。跟SAP其余模块同样,ABAP没个大几年的累积经验是没法成为大神级别的,除非是天生天赋异禀。所以会点ABAP语法和开发并无什么了不得,跟其余诸如.net、Java和PHP等语言同样,培训一段时间就可以上手了,但真的要作到把控需求,功能可扩展延展性就难了。也印证了一句话:会ABAP的不稀奇,懂ABAP才难求;会业务模块的不稀奇,即会业务又懂开发才万金难求!函数
如下列举几项,简要说说会开发和懂开发的区别:性能
1、更新错误问题测试
会开发的人:循环一百次,每次暂停一秒后再Insert表,直到成功为止,若是100次了还失败,那就忽略!因此一旦出现这样的状况,程序就会卡死;spa
懂开发的人:Try一下,捕获消息号和文本抛出,而后RollBack。但若是是可有可无的表(如日志表),直接就忽略掉;.net
以下图神奇的代码:3d
2、多重逻辑判断问题日志
会开发的人:IF能写多少就写多少,哪怕功能里面都是重复的逻辑;blog
懂开发的人:采用ABAP的动态语法,将重复的功能整合在一块儿,区别就在动态语法判断上;排序
以下图代码:
3、SAP加强的写法
须要说明的是SAP加强是对系统标准功能和逻辑的一种延伸和更改,须要很是的慎重,同时最好有参数表来作开关控制,输出的消息也得有长文本作描述;
会开发的人:找到一个加强就兴奋不已,而后直接写代码,不考虑任何扩展和开关控制,也是直接Message出来消息,很难追踪;
懂开发的人:不只作了参数控制,同时还会作事务代码或程序名的判断,至于Message则在SE91里面作消息号新建引用,方便维护和追踪!
以下图神奇的代码:(代码里还有很明显的错误,若是是修改采购订单,则会一直报错误,提示费用申请单已经存在)
4、先后逻辑不一致的问题
会开发的人:想到哪里就写到哪里,不用判断上下文的逻辑衔接;
懂开发的人:逻辑严谨性很强,作到先后数据和逻辑一致;
以下图神奇的代码:
以上程序运行的结果就变成了(金额和单价扩大一万倍):
5、SAP接口模式之争
会开发的人:认为Webservice是万能统一的,因此无论第三方系统是什么平台和语言,一概用Webservice来作接口,更要命的是全部接口都共用一个出口地址。而且认为RFC不安全不稳定;
针对接口的开发,不论是输入仍是输出,一概用行类型来作多笔记录的传输。无视SAP系统警告说会下降接口的性能;
懂开发的人:除非第三方平台是上古时代开发的或者语言很是老旧,不然尽可能能用RFC就用RFC,而且善用Table页签和“例外”的功能;
以下图神奇的代码:
又好比输出结构:
针对这种处理方式,SAP系统会绝不留情得给出这样的警告:
6、统一数据源问题
会开发的人:针对用户的需求,来一个写一个功能,哪怕报表逻辑都是相似的,因而写得多了不免会发现一样的数值每每在不一样的地方不一致;
懂开发的人:针对用户的需求,凡是功能相似的都作成一个可重复使用的接口或函数,全部须要用到的地方都调用它取值,统一数据源;
这里没图!
7、注释问题
相信每一个开发人员都会遇到看前人的代码,而后又没有任何注释的那种绝望感!
会开发的人:根本不知道啥叫注释,也重来不会注释;
懂开发的人:在很是重要的地方会加入业务需求的说明,以及每一行重要代码的设置说明;
以下图神奇的代码(谁能知道这个是什么鬼?)
8、导入模板是啥样的?
这个或许能够说是用户体验问题,但在IT眼里看来,这分明就是懂不懂开发的问题!
会开发的人:作好批导程序,就扔在那爱谁谁,一段时间以后连本身都不知道导入模板应该是啥样的,是TXT文本导入仍是Excel导入,只能继续看程序;
懂开发的人:在批导的画面作一个按钮能够下载模板;
以下图(相信全部人看到下图都会一脸懵逼):
以上大概列举了我在作项目过程当中所遇到的主要的问题,还有不少不少开发相关的事故,都是那些只会写代码而不懂系统逻辑的新手写的。好比基本的数据存在性校验、好比数据读取错误、基本的除数不能为0的判断、针对 FOR ALL ENTRIES IN 不作存在性检查、使用 BINARY SEARCH不作排序等,历来不懂什么叫测试。遇到这样的事故,有时候会啼笑皆非,要给IT增长很多的负担。也只能感叹一句,会开发简单,懂开发难,懂业务又懂开发,简直万金难求!