谈二次开发和客户化
企业已经越来越多的认识到,在国际先进管理思想的指导下,有效的利用IT技术和信息化软件系统(如ERP,CRM,SCM等),可以优化企业的业务流程,提高企业的运作的效率,为企业管理和决策提供准确的数据,从而提高企业在市场中的竞争力,实现企业盈利的目标。信息化在企业中应用成功的案例有很多,然而,令人遗憾的是企业信息化应用失败也不乏有之。当然,失败的原因有很多,有的可能是因为企业经营战略发生重大变化或管理变革受阻的问题,有的是技术不成熟问题,但更多的可能是部分系统已经应用,但是企业关心的一些具体需求却无法在系统中流畅的运转。为什么会出现这种情况呢?又该如何来解决呢?
市场上的ERP、CRM等商品化软件产品,属于通用软件产品,是针对一个或多个行业、多个用户而设计开发的软件系统。软件功能比较标准,流程设置相对规范化,注重的是一种通用性。当然,这些通用软件也会提供许多可调参数,通过设置这些参数来满足不同用户的不同需要,但这种灵活性往往是相对有限的,在很多情况下是无法通过调整软件参数来满足企业的一些特殊需求的。如以下几种现象:
现象一:由于不同企业的具有不同的具体情况和具体需求,可能会导致与ERP软件功能匹配的差异,软件商会强调ERP软件的通用性,要求企业改变其原有的流程来适应软件,而企业又可能会强调这些特殊需求存在的必要性,如果软件中无法实现这个功能,就无法正常的进行后继的工作。
现象二:虽然ERP软件可以提供丰富的统计和分析报表,但是可能有些报表的格式与企业要求的格式差异较大,有些综合分析的报表可能需要多张报表综合整理后才能提供。
从以上出现这些现象和问题可以看出,客观上ERP软件产品业在不断的完善其功能,但也不可能做到面面俱到;要求ERP具备适应各种变化的能力,但有时也无法应对市场的快速变化。此时,通过二次开发和客户化的工作,就可以较好的解决这些“特殊需求的问题”。
企业建设信息化的方式不外乎三种:使用成熟的ERP软件+少量的二次开发;使用不太成熟的ERP系统+比重较大的二次开发;纯粹的按照企业需求定制开发。从已实施成功的案例来看,采用第一种的方式实施成功的企业最多,而且随着典范作用的影响,越来越被企业认可;采用第二种形式的也有成功者但较少,大多是一些刚刚转型做ERP的软件商在企业中完善其产品;采用第三种形式成功的几乎没有,这多是计算机系统刚刚普及时较多存在的一种形式,它最大也只能实现部分业务的自动化,现在正逐步的萎缩。
如果企业是在ERP软件选型阶段,也要考虑到这些问题出现的可能性,了解一下你正在选型的ERP软件是否可以提供二次开发和客户化的功能。实际上,众多成熟的ERP软件商也都提供了支持的二次开发的功能和工具,如:MAPICS公司提供的报表设计器和二次开发具Centura,SAP提供的开发平台ABAP等。需要注意的是许多ERP软件不太成熟的软件商,可能会许诺把不能实现的功能放在二次开发中,这时企业可能就变成了软件商完善产品的试验田,而且会造成“没完没了”的ERP实施。
下面再让我们结合两个具体案例来探讨一下,在信息化应用过程中,二次开发主要会修改一些怎样的内容。
案例一:某制药企业准备在企业中应用ERP系统,并成立了专门的信息化小组,但是经过对市场上的ERP产品的功能进行比较分析以后发现,各个产品提供的绝大部分功能是相似的,并且各有优势和缺陷,再经过进一步的数据和流程模拟后发现,没有一个ERP产品完全的可以满足企业百分之百的业务需求,能达到百分之八十的就更少了。企业不可能因为这百分之二十的“缺陷”就不使用ERP系统了,他们分析了业务流程中存在哪些业务是本企业比较特殊而又必须客观存在的,哪些是临时存在以后会抛弃的,哪些是因为自己的流程不规范需要进行管理变革的,哪些是合理而又在ERP软件中没有的,然后决定哪些特殊业务需要企业变革来解决,哪些特殊需求放在二次开发中解决。经过综合的分析比较,最终他们选择了一家比较“适合”的ERP供应商。对于哪些企业自身比较特殊又非常重要的需求,由软件供应商通过二次开发的方式来解决,如:制药企业都必须通过GMP认证,对于GMP认证的文档和技术文献的管理,就是大多数ERP软件中所没有的,这一部分如果使用OA系统来实现比较牵强而且不能很好的与ERP系统中的质量模块接口。GMP认证的文档的管理对于制药企业来说是非常重要的,因此他们考虑通过二次开发的方式来实现这一功能。又如:仓库中使用的是层列分开的高架仓库,为了管理的方便,仓管员希望软件中通过一个比较直观形象的界面可以查看到某列某层货位存放的物料名称,数量、状态(合格与否)等动态信息,一般的ERP软件中只是提供了逐级报表查询的模式,比较麻烦,因此也准备通过二次开发方式来实现。
案例二:某涂料企业正在企业内部建设信息化项目,实施ERP系统。在实施过程中,随着市场的不断变化,一种“寄售”的销售模式越来越多的出现在销售过程,因为除工程定单外,对于一些大众化的涂料产品,如:油漆、涂料等会寄放在建材超市中销售,即企业发货到客户仓库,客户在一定时期后才计算所销出的产品,往往从发货到结算时间跨过发货当月的会计月度。造成企业在发货后并不能马上转销售成本,开出发票,登记应收账款,而是只能在会计处理上把已发出的货仍当作库存,在得到客户的付款承诺和开票通知后才能开发票,转成本,挂应收;但是另一方面,为了对销售应收的管理,财务部门又不得不建立另外一套帐记录这些发货,并定期和销售部门对帐,实质上就是财务部门从会计制度的角度和销售部从业务实际的角度对应收账款的理解的不同,财务和销售两部门同时管理,且计算方法不同,这样不可避免会出现不一致的结果,需耗费大量人力物力进行对账。显然这部分功能是随着市场的发展而出现的,也是现有ERP系统中所不能实现的,考虑到这部分特殊业务的重要性,该企业想到了通过二次开发来接解决的办法,于是决定与软件供应商签定二次开发的合同。
由案例一可以看出:对于ERP系统还未上线的企业来说,二次开发所要修改的主要是哪些具有非常高的重要性和必要性,可能会影响到ERP上线的一些特殊的具体需求。由案例二可以看出:对于ERP系统已经上线的企业来说,二次开发侧重于修改随着企业需求的变化出现的哪些影响企业正常业务的特殊需求。
接下来让我们来讨论一下,客户化和二次开发对ERP项目实施的影响:
客户化一般指在ERP实施过程中,把不涉及程序改动的工作,一般只需要软件的实施顾问或企业的操作人员就可完成。如修改报表格式,增加企业需要的一些业务查询报表等。借助ERP软件的报表生成功能,不需要有很多计算机知识,企业中的业务人员在实施顾问的指导下,很快就可以学会如何设置。
二次开发通常会涉及到软件模块的改动,要增加或修改软件的功能,一般需要专业的程序开发人员和软件实施顾问完成,需要借助软件商提供支持二次开发的工具,还可能需要有软件的源程序,这些可能需要支付额外的费用,而且并不是每个软件供应商都愿意提供源代码。一般来说,二次开发应该尽量的减少或避免。这是因为从事二次开发的人员必须熟悉软件的功能和相应数据库中表的结构,又要充分的理解用户的特殊业务的流程,这是需要一定的时间和工作量的,甚至可能会延误信息化项目的实施进程;再者改动软件后还会影响今后软件版本升级,因为软件供应商在开发新版本的软件系统时,可能根本不会考虑针对某个特定的用户的特殊需求所做的个性开发。
再让我们看一下在前面介绍的两个二次开发的案例中,这两家企业ERP应用的怎么样?
案例一:这家制药企业选择的是一家表面上功能非常全,而实际上ERP产品还不成熟的软件商,因为这家软件商的二次开发政策非常的灵活,采用的是“不太成熟的ERP软件+比重较大的二次开发的”方式。由于软件商所承诺的需要二次开发的功能太多,而且有些功能的个性化非常强,再者合同金额有限,不能安排精干的二次开发人员,结果由于二次开发的一而再再而三的拖延,造成ERP的实施项目,变成了没完没了的“马拉松”。后来由于二次开发中数据库中表结构的改动较大,无法进行版本升级,给维护工作带来麻烦。由于二次开发中出现的麻烦,导致ERP应用流程的不顺,也就无法实现企业通过ERP应用提高管理水平的初衷,无法体现ERP的真正价值了。
案例二:这家涂料企业是非常的幸运的,因为他们最初选择的就是一家非常成熟的国外ERP软件产品,他们的新出现的这项特殊业务,原来在国外已经比较的多,软件商在了解了用户的具体需求后发现与他们正在做汉化测试工作的新版本中就完全可以解决,后来他们仅做了少量的客户化工作就实现了这个功能。他们真正的享受到了成熟ERP所带来的高效率,体验到了ERP的价值所在。
因此,不难看出,企业实现信息化非常好的的路径是:通过选择成熟的ERP产品+少量的二次开发方式进行。如果必须要做二次开发,一定要认真的分析对比并权衡利弊,究竟是修改软件功能,还是改革现有的业务流程,或者是两者都有些修改,要寻求一种非常好的的解决方法。