Odoo(OpenERP)与SAP的对比

本文比较了开源ERP系统Odoo与行业巨头SAP的不同之处。Odoo因其简单的用户体验和较低的培训成本而受到欢迎,但在开箱即用的功能、向下兼容性和专业顾问资源方面面临挑战。SAP则以其强大的品牌影响力、广泛的生态系统和稳健的企业解决方案著称。
译者: 苏州-微尘
英文地址: http://sapficonsultant.com/odoo-openerp-vs-sap/
译文地址:  http://blog.youkuaiyun.com/wangnan537/article/details/44987547

(微尘注)
Odoo与SAP,前者是开源ERP领域的翘楚,后者是ERP行业的执牛耳者。两者常被Odoo从业人员拿来作比较,言谈间大有舍Odoo其谁、欲与SAP一较高下之势。本文的作者是专业的财务人士,有Odoo实施经验,后来转做SAP顾问。作者从5个方面比较了两者的异同。虽然有些观点不敢苟同,但个别看法却是一针见血。站在自己的角度看问题,往往厚此薄彼,但保持谨慎的乐观尤为重要。
Odoo(OpenERP)的创始人Fabien Pinckaers对二者作过简要概括: SAP是领导者,Odoo是挑战者。SAP有更好的品牌和生态链,Odoo有更优的产品和价格。[1] 这两句话可以看作是Odoo的定位与目标。

----------正文分割线----------

作为一家Odoo(OpenERP)实施公司的前雇员,我对其有所了解,可能我是为数不多的既有Odoo又有SAP从业经验的人。老实说,大约一年半以前我喜欢上了OpenERP。起初惊为天人,现在看来则更有吸引力。有很多功能会让每个人为之心动;它简单易用,而且在大部分情况下、与多数业务解决方案相比,终端用户所需的必要培训更少。

在SAP小幅度增长的同时,Odoo正在赢得粉丝,这是开源项目关键的成功因素。也许你在想,为什么我离开Odoo的环境,投身于感觉又老又丑、学习曲线陡峭的SAP。主要原因在于:Odoo开箱即用的功能有限、bug、像我这样财经专业的行家里手无用武之地。关于两者的比较,我来表达下我的一些想法。


(1) 开箱即用的功能

在SAP商业套件的背后是7千多万行代码;根据Odoo开放日(2014)的数据,Odoo有15万行代码。一个有趣且并不那么广为人知的的事实是,SAP商业套件也有开源的代码,这意味着在自负风险的情况下,你可以更改核心应用程序。这也意味着如果你不喜欢你的顾问,你可以换掉他,而不会丢失定制开发的源码。

说到功能,在我11个月的Odoo顾问生涯中,我和几个客户有过不愉快的经历。在仓库、生产、采购、销售模块,有很多流程不通过二开无法实现。我不会谈论会计模块,因为基于我在财务和管理会计方面的经验,它和我的期望值相去甚远。会计将是Odoo 9.0版本最大的项目之一, 所以这里可能我们可能会看到一些改进。

比较SAP商业套件与Odoo并不是一个好主意,因为他们面向的是不同类型的客户。商业套件面向诸如财富500强这类的大公司,而Odoo面向中小型企业。在中小企业市场,SAP有其他产品具有很强的竞争力,这就是SAP Business ByDesign。这是个云解决方案,价格非常合理、功能丰富,同时有大量的工具用于快速有效的部署。

(2) 向下兼容性

有个关键之处是SAP胜出而Odoo让人失望的,尤其对大公司而言--向下兼容性。SAP和他们产品的维护和开发,向下兼容性一直牢记于心。商业套件中有许多代码已有二十多年历史,还能与新版本完美结合。Odoo却非如此,每一个新版本都意味着代码和数据的迁移。如果你使用开箱即用的功能,你肯定要签订Odoo企业维护合同,此合同将包括bug修复和新版本迁移。

如果你要定制开发,这将是个非常痛苦的任务。不止是说咨询和重组工程的IT成本,还包括要测试迁移功能的员工的大量工作。众所周知,不管你在测试环境付出多大的努力,多数情况下你还是会在生产系统发现错误,因为生产系统总是最好的测试环境。

我的观点是,当你选择Odoo而不是其他业务解决方案供应商时,应该总是牢记维护这个系统需要多少成本。要非常注意的是,大部分成本隐藏或包含在你支付的员工工时中。

(3) 标价

Odoo云解决方案,每用户/应用需花费12欧元。这意味着如果你使用销售、营销、会计、项目、采购、仓库、生产和人力资源,每用户需花费96欧元每月或1152欧元每年。据我所知,如需要Odoo企业合同,同样的定价适用于自部署的方案;否则,你需要有很好的技术顾问并为之支付类似的费用。

正如前面提到的,SAP Business ByDesign是云解决方案,有极具竞争力的价格,从10欧元(自服务的用户)到179欧元每人月不等。最昂贵的用户费用可能只有几个员工需要。ByDesign需要你最低用10个组用户或企业用户。每个组用户要花费79欧元,每月最低花费大概在800欧元。

就定价而言,Odoo给小型企业提供了更便宜的选择,甚至2个用户可免费访问云解决方案。一个关键的事实是,在他们的云上并不接受定制的代码。这意味着如果你需要定制开发(我认为这很有可能),你得用自己或Odoo合作伙伴的自部署方案。如果你有超过10个用户,从长远来看哪种方案花费更少很难定论,特别是在考虑自己公司参与的情况下。

(4) Bug

在OpenERP6.1和7.0的发布版中,bug是个大问题,有大量的bug妨碍了软件的投产使用。去年它确实困扰着我和我负责的客户。从接下来的版本8开始,这个问题会越来越缓解,因为每个新的核心功能将首先发布到云平台,在这里客户会进行额外的测试。我希望这是一个好的转变,因为一些风险在云端客户(会更快发现、更快修复--微尘注)。
相比较而言,SAP解决方案成熟得多,向后兼容性肯定会帮助你避免很多问题。当然,SAP也会有bug,但这些多半是次要的问题,不会将你的业务置于危险的境地。

(5) 业务经验丰富的顾问

Odoo仍不成熟,具有某一领域业务背景的资深顾问一将难求。大多数Odoo顾问是泛泛的专家,为所有模块(可能不包括会计)提供咨询。业务人员中,财务顾问的机会是有限的,能从Odoo中得到的收益对他们没有吸引力。原因很简单,Odoo的客户多是5到20人的公司,无需高级的行业知识、不需要收入预期很高的资深专业人士。
不管怎样,众所周知的是,Odoo由感觉良好的IT极客引领。对他们而言,机会完美。处在Odoo的成熟阶段,他们的技能可被大为赏识。在某些情况下你可能会看到,软件工程师试图让你相信他们精于业务咨询。

结语

Odoo作为非常有吸引力的解决方案,很适合一些公司。如果开箱即用的功能满足你的需求,那就放手去做吧!可能你将会非常满意。但记住,闪亮的表面背后,实施之路可能很不愉快。定制开发要非常小心,从长远来看它会让你花费很多。客观而论,和别的软件实施成本差不多。要求演示,你可以准确的看到你的业务流程是什么样子。你也应该要求灾难恢复计划,因为一旦你意识到你高度依赖于你的ERP解决方案,就会明白这非常重要。

注:
[1]http://www.quora.com/OdooApps/What-is-the-exact-comparison-between-SAP-OpenERP-will-OpenERP-suceed-where-SAP-failed

更新纪录:
2015-04-11  第一版
2015-07-31  第二版

  • 调整两处术语翻译
  • 更正一处翻译错误
<think>我们被要求回答在Odoo中调用SAP的RFC接口的方法。根据用户历史,他们之前提供了通过XML-RPC调用Odoo函数的代码,但这不是当前问题。当前问题是关于Odoo调用SAP的RFC接口。 关键点:Odoo调用SAP的RFC(Remote Function Call)接口。这通常需要使用SAP提供的库(如PyRFC)来连接SAP系统并调用RFC函数。 步骤: 1. 确保环境支持:PyRFC需要在有SAP NWRFC SDK的环境中安装。 2. 安装PyRFC:在Odoo运行的Python环境中安装pyrfc库。 3. 编写调用代码:在Odoo的自定义模块中,创建方法调用SAP RFC。 注意事项: - SAP NWRFC SDK:需要从SAP官网下载并安装,然后将路径添加到环境变量(Linux)或系统路径(Windows)。 - PyRFC安装:`pip install pyrfc` 示例代码框架(在Odoo的自定义模块中): 假设我们有一个模型,其中包含一个按钮或方法用于触发RFC调用。 首先,在模型中导入pyrfc,然后编写调用方法。 但是要注意:由于pyrfc依赖于SAP NWRFC SDK,所以必须确保Odoo服务器运行的环境中有这个SDK并且配置正确。 由于Odoo通常运行在服务端,我们需要在服务端安装并配置好这些依赖。 接下来,我们给出一个示例代码,展示如何在Odoo模型方法中调用SAP RFC函数。 假设我们有一个模型`my.module`,我们添加一个方法`call_sap_rfc`: ```python from odoo import models, api import pyrfc class MyModel(models.Model): _name = 'my.model' @api.model def call_sap_rfc(self): # 建立连接 conn = pyrfc.Connection( ashost='sap_host', # SAP应用服务器地址 sysnr='00', # 系统编号 client='100', # 客户端编号 user='username', passwd='password', lang='EN' ) # 调用RFC函数,例如'STFC_CONNECTION'(一个测试函数) result = conn.call('STFC_CONNECTION', REQUTEXT='Hello SAP!') # 处理结果 return result ``` 注意:在实际应用中,我们需要处理异常(比如网络问题、认证失败等),并且将连接参数放在配置文件中(如使用`odoo.conf`或自定义配置模型)而不是硬编码。 另外,由于PyRFC可能不在Odoo的依赖中,我们需要在自定义模块的`__manifest__.py`中声明外部依赖: ```python 'depends': ['base'], 'external_dependencies': { 'python': ['pyrfc'], }, ``` 这样在安装模块时,Odoo会检查是否安装了pyrfc,如果没有,则尝试安装(但注意:如果系统没有安装SAP NWRFC SDK,则pip安装pyrfc会失败,所以必须先手动安装SDK)。 总结步骤: 1. 在SAP服务器上申请权限并获取连接参数(包括ashost, sysnr, client, user, passwd)。 2. 在运行Odoo的服务器上安装SAP NWRFC SDK(根据操作系统不同,安装方法不同)。 3. 在Odoo的Python环境中安装pyrfc(`pip install pyrfc`)。 4. 在自定义Odoo模块中编写调用RFC的方法,使用pyrfc建立连接并调用。 5. 处理可能出现的异常,确保稳定性。 注意:在Odoo在线环境(如SaaS)中,可能无法安装系统级依赖(如SAP NWRFC SDK),因此这种方法通常适用于自托管的Odoo。 另外,也可以考虑使用中间件(比如一个单独的Web服务)来代理OdooSAP之间的通信,这样可以将SAP连接相关的依赖放在中间件上,而不是Odoo服务器上。 相关问题建议: 1. 在Odoo中调用SAP RFC时如何处理认证信息的安全存储? 2. 调用SAP RFC的常见错误及解决方法? 3. 如何设计Odoo模块以支持多个SAP系统的连接? 根据以上分析,我们给出回答。 </think>### 在Odoo中调用SAP RFC接口的方法 要在Odoo中调用SAP的RFC接口,主要通过以下步骤实现: #### 1. **准备SAP连接环境** - 安装`pyrfc`库:这是调用SAP RFC的标准Python库 ```bash pip install pyrfc ``` - 获取SAP连接参数: - `ashost`:SAP应用服务器IP - `sysnr`:系统编号 (如"00") - `client`:客户端号 (如"800") - `user`:SAP用户名 - `passwd`:SAP密码 #### 2. **在Odoo模块中实现RFC调用** 在自定义模块的Python文件中添加RFC调用逻辑: ```python from odoo import models, api import pyrfc class SAPIntegration(models.Model): _name = 'sap.integration' def call_sap_rfc(self, rfc_name, params): try: # 建立SAP连接 conn = pyrfc.Connection( ashost='sap_server_ip', sysnr='00', client='800', user='sap_user', passwd='sap_password' ) # 调用RFC函数 result = conn.call(rfc_name, **params) conn.close() return result except pyrfc.RFCError as e: error_msg = f"SAP RFC调用失败: {e.message}" raise ValueError(error_msg) @api.model def get_material_data(self, material_id): """示例:获取物料主数据""" params = { 'MATERIAL': material_id, 'LANGUAGE': 'EN' } return self.call_sap_rfc('BAPI_MATERIAL_GET_DETAIL', params) ``` #### 3. **关键配置说明** 1. **连接安全性** - 建议将SAP凭证存储在`odoo.conf`配置文件中 - 使用Odoo的加密字段存储敏感信息 ```python password = fields.Char(string='SAP Password', encrypt=True) ``` 2. **异常处理** - 捕获`pyrfc.RFCError`处理RFC错误 - 实现重试机制应对网络波动 3. **数据格式转换** - 使用`simple_salesforce`或`xmltodict`处理返回的XML数据 - 日期格式转换(SAP日期 → Python日期) #### 4. **部署注意事项** - **SAP NWRFC SDK**:必须在服务器安装[SAP NW RFC SDK](https://support.sap.com/en/product/connectors/nwrfcsdk.html) - **库兼容性**:确保`pyrfc`版本Python和SAP系统兼容 - **连接池**:高频调用时使用连接池管理资源 - **异步处理**:长时间操作建议使用Odoo队列作业 > **最佳实践**:通过中间件(如Apache Camel)解耦OdooSAP的直接连接,提升系统稳定性和可维护性[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值