壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5306|回复: 10

二次开发模式讨论

[复制链接]
发表于 2007/8/13 09:07:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
sap r/3实施过程中有很多要修改sap标准功能的需求,这时就用到了系统修正
系统修正有五个层次:定制、个性化、修改、增强和客户化开发

定制是针对公司业务的,由业务顾问来做,主要是根据客户的特点设置系统参数。sap产品设计过程中考虑了40多个行业的特点,所以配置参数非常多,可能有上万项,而且相互关联,一组参数实现一个个性化流程。sap还针对各个行业开发了叫做“最佳业务实践”的预配置参数包,其实就是行业老大咋做咱咋做,对快速实施很有帮助。恩信每个模块的设置功能类似这个。

个性化是针对特定用户的,由业务顾问或系统管理员来做,设置权限啦,个性化的菜单啦,日期、数字等显示格式啦。还可以用字段状态变式等技术手段把某个人不用的字段隐藏起来或者设置为必输,这样同一个界面展示在不同人的面前就不一样了。无非是为了简化操作。恩信的权限分配功能让用户只能看到有权限的菜单项,用xml来做输入有效性检查,也是类似的功能。

下面就涉及二次开发的部分了。写代码之前得说明一个事儿,为了区别sap的代码和非sap的代码,sap定义了程序名的 name space,所有 y z 开头的程序是非 sap的代码。写代码要先申请access key,两个级别,改sap代码的access key 和 写非sap代码的access key。这样,无论项目上线系统代码作了多少修改,很容易区分哪些代码是sap写的,哪些是咨询公司写的。特别是,出现bug的时候...

修改是指直接修改sap标准程序。这是sap公司极力反对的。因为标准程序改了,升级以后被新版本覆盖了,还得再改一次。再就是sap公司不能保证实施公司代码的功能符合软件的全局设计。但是客户是上帝,如果客户坚持非要修改,实施公司和客户共同向sap申请一个access key,也是可以改的。经验证明,每个公司这种修改都是恶梦的开始。有个例外,就是你发现了sap一个bug,等不到出patch或升级,这种修改就是必要的了。

增强很巧妙,sap根据经验知道在某些流程中的某个时间点用户需求很难确定,一家一个样,那索性就在这里留个口子,代码由实施公司在项目上写,爱写啥写啥,只要输入输出定义好了。有两种实现方式:
1、用户出口
调用一个函数,函数里只包含一个source,没其他代码,这个source程序名是z开头的。是的,以写非sap代码的access key就可以在这个source里加code。当然能访问的变量都在函数接口里定义好了。
2、badi
调用一个接口的方法(是的,就是面向对象)。项目实施公司新建一个此接口的实现类就好了。当然这个实现类也得y或z开头啦。
增强很牛,系统升级也不会丢。国内的软件没看见过这么弄的。恩信应该借鉴,java是oo的语言,jsp支持include语句。面向接口编程,可以这么用。

客户化开发就最简单了,可以新建一个y或z开头的程序,也可以建新数据库表(y或z开头)。想要什么功能自己设计开发,sap就管不着了。升级的时候copy过去就行了。我在恩信的目录里看到了extend目录,应该就是干这个的吧。

说了一大堆,都是原创。不同意可以拍砖,不懂可以问。大家研究,贡献经验,才能发展。
 楼主| 发表于 2007/8/13 09:13:34 | 显示全部楼层
此帖是我2006年研究恩信的时候提的建议,没有被采纳。可能恩信的合作伙伴们更倾向ajax下代码级的修改。准备有机会在webERP的二次开发中应用这些模式。虽然在产品架构和主要功能上还要遵循主项目的惯例,相信我们有能人把这块做得更好
 楼主| 发表于 2007/8/13 09:15:16 | 显示全部楼层

关于php源文件和函数的命名规范

在对开源软件进行二次开发的时候,我们还要考虑到升级的问题。那就要求我们在命名源文件和函数名的时候遵循特定的规则。

因为我们的二次开发分为三个层次,所以我建议针对此三个层次的修改建立如下规范:

1、修正系统BUG - 针对标准系统。比如我们修正了在线翻译工具。对于这种修改,我们会在论坛上发布系统补丁并将修改结果提交给weberp项目。这样的修改我们只需修改源文件就可以了。但代码注释要说明修复了哪个bug。

2、增强系统标准功能 - 针对标准系统。比如我们开发一个中国的资产负债表。对于这种修改,建议在程序源文件命名时遵循 系统标准功能 加 _CN的规范,如balancesheet_CN.php。并在原页面基础上改写。这样即使做了系统升级,我们只要把我们的_CN后缀名的文件重新copy进新版本的目录即可。这部分我们不会提交给weberp项目。

3、客户化开发 - 针对特定客户系统。比如给客户开发了一个特殊的功能。对于这种修改,建议在程序源文件命名时遵循 功能描述 加 _CN 加 _公司 的方式。这样即使做了系统升级,我们只要把客户 CN_公司 后缀名的文件重新copy进新版本即可。这部分不在weberp项目和本地化项目的工作范畴内,属于二次开发者和最终用户的项目行为。
 楼主| 发表于 2007/8/13 09:15:44 | 显示全部楼层
至于如何让标准功能和二次开发的功能协作,这个我正在构思和测试中。

初步设想是在header.inc里加页面跳转。如页面是 test.php 则跳到 test_CN.php。

如果可以的话,这些跳转的语句最好维护在一个单独的cn.inc文件里,这样就很容易看出当前的系统对标准功能做了哪些修改。
 楼主| 发表于 2007/8/13 09:16:05 | 显示全部楼层
遵循这些规范虽然看起来麻烦,但是对项目今后的运作有长远意义。

比如,我们可以清晰地界定weberp项目的bug和我们本地化项目的bug;可以从地址栏看出这个页面是不是该公司特有的功能(非标准功能)。
发表于 2007/10/14 11:16:06 | 显示全部楼层
很有参考价值,多谢。
发表于 2008/1/17 21:23:56 | 显示全部楼层
翻译成英文交到作者那里去
发表于 2008/7/5 10:46:10 | 显示全部楼层
算我一个
发表于 2009/7/27 08:31:55 | 显示全部楼层

帖子写得很好 继续加油了

路过,路过,灌水一下!



















瓜无滚圆,人无十全,好吃甜的,找卖糖的;好吃酸的,找卖醋的,懒人睡大觉ˇ三ˇ

老虎機上分器 汽车干扰器 游戏机定位器 CT透视仪 防身器材 地磅遥控器 电表节电器 动物乐园作弊器 霹雳旋风遥控器 http://www.ahhtdz.cn
发表于 2009/9/7 21:14:04 | 显示全部楼层
1、SAP条码验证管理插件的开发实例

   为了验证SAP系统中录入的条码的准确性,操作员对打印出的条码进行扫描;发现此条码在系统中不存在自动报警。

  涉及条码枪与SAP的整合应用。

2、SAP系统与国内财务软件的接口开发实例

   出于某些特殊原因,由于SAP系统财务处理的数据需要自动导入国内财务软件。在国内财务中,进行处理分析统计财务报表。

  涉及国际与国内财务核算方法及内容的转换问题。

3、SAP物料报废审批开发实例

   生产人员在SAP系统中录入物料报废处理单后,需要进行签核处理,然后再退回仓库做报废或退供应商。该系统可做到消息自动提醒及审批角色驱动。

   涉及开发的插件与SAP系统的整合应用。

4、SAP SPC 测量分析处理开发实例

   QC人员对生产出的精密设备进行机器检测,然后将检测完的数据自动传输给SPC系统进行分析出具检测的报告。该系统通过DDE实现数据实时自动传输。

   涉及开发的插件与SAP系统的整合应用。
www.gyerp.com
发表于 2009/10/16 16:01:28 | 显示全部楼层
挺好,期待WEBERP越来越完善。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 08:11 , Processed in 0.017271 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表