`
jgtang82
  • 浏览: 405930 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

(转) R/3 接口项目经验分享

阅读更多

某 ERP 主要应用 SAP R/3 系统,某接口项目是原系统与 SAP R/3 的部分集成。
在 ERP 的实施中,面临众多原有异构系统与正在实施的 SAP R/3 的集成问题。基于以后在一个平台上维护及监视接口比较方便的考虑,ERP 项目组决定采用 SAP XI。
SAP XI(Exchange Infrastructure)是SAP Netweaver 中的一个产品。SAP Netweaver 是一种可随时用于业务运作、面向服务的平台,适用于SAP的所有解决方案。基于Netweaver,企业能够实现各个层面充分的集成,降低信息系统建设的总体成本(TCO)。归纳起来,
第一个层面,是人的集成,产品以Portal比较有代表性;
第二个层面,是信息的集成,产品有Knowledge Management 和MDM(Master Data Management)等;
第三个层面,是流程的集成,即 XI;
第四个层面,是平台的集成,在这个层面上,SAP 提供的是支持开放标准(如XML)的底层架构,可以实现灵活的互接。

XI 的集成又可以分为两个层次,
第一个层次称为Integration Broker,以消息的方式进行的数据的交换;
另外一个层次是 BPM,即业务流程管理。

在 XI 中,数据(可以使一条记录,比如单个的物料主数据;也可以是多条记录,比如含主单明细的供应商主数据)从某一个业务系统通过 XI 发送到另外一个业务系统,站在业务系统的角度,前者称为 Sender,后者称为 Receiver 。

适配器(Adapter)进行 XI-XML 格式与业务系统的特定类型的数据格式之间的转换。依据业务系统的数据格式的不同,适配器可以分为多种类型,比如 SOAP Adapter, JDBC Adapter, File Adapter, RFC Adapter 和 IDoc Adapter 等。通常说的实现方式,譬如 SOAP+RFC,是指Sender 与 XI 之间使用 SOAP Adapter,XI 与 Receiver 之间使用 RFC Adapter。

Integration Broker 的工作原理大致如下。XI 主动或者被动通过一个适配器从 Sender 取得数据,数据进入 XI 后的存在形式是基于 SOAP 的 XI-XML 格式的消息。消息在 XI 内部,依照事先做好的配置,决定消息将发送到哪一个业务系统,进行何种转换以及选用哪一个适配器将消息发送出去。消息最终通过适配器将 XI-XML 格式的消息转换为特定类型的数据并发送给 Receiver。

BPM 是建立在前者的基础上的,BPM 使用了 work flow 的概念,涉及到业务逻辑的处理。一个典型的订票例程的应用如下。某旅行社 A 发出北京到孟买的订票请求,两个航空公司 B 和 C 分别有北京到新加坡和新加坡到孟买的航线。A的订票请求在 XI 内部被分割为两个订票请求,请求消息分别发往两个航空公司并等待反馈。如果得到两个都订票成功的反馈,则将反馈进行合并处理,并返回给旅行社;如果得到一个成功一个失败的反馈,则需要将反馈合并处理,将订票失败消息返回给旅行社,同时向其中一家航空公司发送取消订票的请求;如果得到均失败的反馈,则值需要将反馈合并处理,将订票失败消息返回给旅行社。

在此接口项目中,经多次确认、修改和论证,最终确定采用 Integration Broker,具体的实现方式是 SOAP+RFC 与 JDBC+IDoc 。

采用 Integration Broker 主要是考虑到现有的集成业务逻辑简单、清晰,并不存在特别复杂的业务逻辑的现象,而 BPM 存在配置复杂以及技术上的风险。

在某些功能点,考虑到客户对的实时性要求,采用了 SOAP+RFC 方式。SOAP和RFC均为同步数据交换协议,包括输入和输出参数。SOAP是建立在 HTTP 协议基础之上的一种协议,通过特定格式的 XML文件来进行数据交换。RFC 是 Remote Function Call的简称,广泛应用在 SAP 的产品之间,类似于常见的 RPC。
SOAP+RFC 方式实现的难点在于某系统发送 SOAP 消息的客户端如何建立,以及如何得到 SAP R/3 的反馈。前者通过相关文档的帮助下得到解决,后者是通过实现错误信息同步由 R/3反馈给 XI,XI 再反馈给某系统来解决的。

其他对实时性没有要求的接口,采用了 JDBC+IDoc 方式。其特点在于 JDBC 方式实现起来比较简单,系统只需要将要传给 R/3 的数据存放到临时表,XI会通过 JDBC 方式从临时表取走数据;XI 向系统写数据,会通过调用存储过程,直接将数据写入后台数据库,生成相关单据。采用 IDoc 方式,其特点是 IDoc 实现了对数据的封装,能够记录数据的传输状态。IDoc 方式是 SAP 推荐的 SAP 产品间的标准数据交换方式。这种方式是之前JDBC+File 方案的替代,在方案改变后,我方的程序完全没有改变,这是采用中间件的优点的一个体现。

JDBC+IDoc 方式实现的难点是对出错如何处理。在三个可选方案中,采用的是最简单的人工干预方法,即对于出错,统一由 XI 发送包含错误信息的电子邮件给相关人员。

如果有条件的话,自己搭建一套SAP XI DEMO EXAMPLE环境,其中涉及了RFC,SOAP,IDOC,XI的adapter,对大家学习ID(Integration Directory)极为有用

分享到:
评论

相关推荐

    pytorch实现的源代码项目简单分享.docx

    ### PyTorch实现的源代码项目相关知识点 ...综上所述,通过充分利用上述资源,无论是初学者还是有一定经验的研发人员都能够有效地学习和运用PyTorch进行项目开发。希望这些知识点能对你有所帮助!

    226.MATLAB编程 rtools.zip

    在MATLAB编程中,RTools扮演着一个桥梁的角色,它使得用户可以方便地在MATLAB中调用R语言的函数和包,这对于需要结合两者优势的复杂项目尤其有用。以下是一些关于MATLAB编程和RTools的知识点: 1. **R接口**:R...

    微机原理与接口技术课程设计报告加减计数器.doc

    最后,课程设计的结论和体会部分,学生通常会分享在设计过程中遇到的问题、解决方法以及对微机原理和接口技术更深入的理解。 总的来说,这个课程设计项目不仅锻炼了学生的实践能力,也深化了他们对微机系统中硬件和...

    Android高级应用源码-使用ShareSDK完成一键分享.zip

    1. **ShareSDK集成**:如何在Android项目中导入并配置ShareSDK,设置不同的社交平台账号,以及如何调用接口进行一键分享。 2. **Android权限管理**:由于分享可能涉及到用户的社交账号,因此源码可能会涉及到...

    3D魔方源程序

    这要求程序能够解析类似于F2R、R U R' U'这样的魔方旋转描述语言,不仅增加了程序的灵活性,也为编程新手提供了一个学习解析和执行复杂指令集的机会。 从“3DCube第一版”的文件名可以推测,这应该是“3D魔方源程序...

    开源项目-r0fls-gostats.zip

    开源项目-r0fls-gostats.zip 是一个专注于Go语言的统计分析工具,名为gostats。这个项目是开源的,意味着它的源代码对公众开放,任何人都可以查看、使用、学习甚至改进它。gostats提供了针对Go程序的性能和运行情况...

    1500冗余通讯案例分享.pdf

    本文以1500冗余PLC(SIMATIC S7-1500 Redundant)为例,分享了一个实际项目中的经验,涉及到的主要知识点包括I/O模块选型、冗余系统与其他PLC的通讯方式、与上位机/触摸屏的通讯配置,以及在实际测试过程中遇到的...

    开源项目-V-I-C-T-O-R-12306.zip

    开源项目-V-I-C-T-O-R-12306.zip是一个与12306购票相关的开源项目,它提供了一种工具化的解决方案,帮助用户更高效地进行火车票的查询和购买。开源项目的本质是软件代码公开,允许社区成员查看、使用、修改和分发...

    智能家居项目分配

    例如,作者提到了自己在USB-HID协议上的经验,初期花费大量时间深入研究理论,但最终发现可以直接参考现有代码进行修改,以达到项目需求。这里揭示了一个重要教训:明确项目目标,避免过度研究基础理论,而应更专注...

    ARM开发导论

    10. **项目经验分享**:分享真实的嵌入式开发案例,帮助学生了解实际工作中的问题和解决方案。 通过这门课程的学习,新手开发者将能够掌握ARM开发的基础知识,具备初步的嵌入式系统设计和调试能力。同时,课程还...

    R8C中文资料

    4. **在线社区**: 用户可以在瑞萨电子的官方网站上找到一个活跃的技术交流平台,可以在这里提问、分享经验和解决方案。 #### 六、注意事项 1. **信息更新**: 由于技术不断进步,产品的相关信息可能会有所变化,请...

    NeroSDK-v1.06

    Nero可能有一个活跃的开发者论坛或社区,用户可以在其中交流经验,分享代码,寻求帮助。 通过NeroSDK-1.06,开发者可以构建出拥有专业级光盘刻录功能的应用程序,提供给用户高效、稳定的光盘管理体验。在实际开发中...

    AVR学习资料 及学习方法,及例程等多方面信息,对大家很有帮助

    2. 在线社区:如Reddit的r/AVR和AVR Freaks论坛,是获取帮助和分享经验的好地方。 3. 教程与书籍:如《AVR Microcontroller Primer》和《AVR Microcontroller and Embedded Systems》等书籍。 六、实例应用 1. PWM...

    使用pytorch实现的源代码项目资源.docx

    - **使用建议**:积极参与社区活动,如提问、回答问题、分享自己的项目经验等,这样既能获得反馈也能帮助他人。 通过上述资源的学习和实践,你可以建立起扎实的PyTorch使用基础,并逐步掌握如何将其应用于实际项目...

    java项目实战1

    【Java项目实战1】—— 学习猿地电子商务系统需求分析 在当今信息化时代,随着科技的飞速发展,网上阅读已经成为人们获取知识...通过这个项目,开发者不仅可以提升Java编程能力,还能学习到项目管理和团队协作的经验。

    httprunner_httprunner_

    它提供了简单易用的语法,使得测试脚本编写快速高效,特别适合于对 RESTful API 进行功能、性能和接口回归测试。...无论是初学者还是经验丰富的测试工程师,都能快速上手并发挥其优势,提高测试效率和质量。

    pb9写CE设备(RAPI)

    4. 参考其他开发者的经验分享,例如论坛帖子或博客文章,学习他们是如何解决类似问题的。 总的来说,"pb9写CE设备(RAPI)"是一项涉及编程语言迁移、跨平台通信和嵌入式系统开发的工作,需要扎实的编程基础和良好的...

    Python库 | tidytuesday-0.0.6-py3-none-any.whl

    Python库“tidytuesday”是数据科学家和分析师的利器,主要针对的是tidyverse的理念,这是一个在R语言中广泛使用的数据分析框架。tidytuesday库的版本0.0.6-py3-none-any.whl是一个Python轮子文件,适用于Python 3...

    platform-tools_r30.0.4-windows源码.zip

    对于有经验的开发者,源码的获取也意味着他们可以编译自己的Platform Tools版本,确保与特定的设备或项目需求完全匹配。这通常涉及到Android的NDK和SDK构建系统。 7. **版本迭代** r30.0.4是一个具体的版本号,...

    keil教程 手把手教你使用keil软件

    2. 在线社区:如Stack Overflow、嵌入式论坛等,可以寻求问题解答和经验分享。 3. 项目实例:通过实际项目锻炼,加深理论与实践的结合。 总结,Keil教程不仅涵盖了软件安装、项目创建、编程、编译、调试等基本操作...

Global site tag (gtag.js) - Google Analytics