Domino 是 IBM Lotus 的旗舰式服务器产品,是运行在服务器端的协作软件,能够使处于不同地域的人员协同工作,它可以提供很多功能:企业电子邮件服务、协作服务、文档数据库管理、Web 应用访问服务等。
SAP R/3 是服务器 / 客户机环境下的企业资源计划系统,可用于处理一个公司的经营管理任务。SAP R/3 的功能以模块化的方式组合在一起,它包含了很多功能模块,如 SD( 销售和分销 )、MM( 物料管理 )、FI( 财务会计 )、CO( 管理会计 )、PP( 生产计划 )、AM( 资产管理 )、QM( 质量管理 )、PM( 工厂维护 )、HR( 人力资源 )、PS( 项目系统 )、WF( 工作流 ) 等。
我们要讨论的问题就是如何实现 Domino 系统和 SAP R/3 的集成。现代企业很重视企业的信息化建设,企业信息化程度已经达到很高的水平,有的企业同时拥有基于 Domino 的办公和邮件系统、基于 SAP R/3 的 ERP 系统。Domino 的优势在于邮件系统、工作流和协同机制;而 SAP 系统是一套强大的 ERP 管理软件。目前,很多企业的信息系统没有充分利用和集成起来,各个系统还是信息的孤岛,信息不能被各个系统共享,如 SAP 中信息不能为 Domino 办公系统所利用,Domino 中的数据也不为 SAP 所使用。办公系统的审批文档在 Domino 系统中流转完成后也就结束了,需要专门的人员再次录入 SAP 系统,这样造成管理人员重复录入;同时,各个系统的孤立不能使信息快速流转,不能提高协同工作的效率。因此,作为 Enterprise Application Integration(EAI) 的部分,实现 Domino 系统和 SAP 系统的有效集成是一件很有意义的事情,可以实现 Domino 和 SAP 系统优势互补;同时,充分利用两个系统的信息,提高信息运作效率,实现两个系统的信息共享。
那么如何实现 Domino 和 SAP 的集成、如何把两个孤立的系统连接起来,这篇文章就是要探讨这个问题,寻找可以操作的集成技术。
如果要实现 Domino 和 SAP R/3 集成,有效的方法是依靠扩展来完成。因此,Lotus Domino 提供了一些方法和产品实现 SAP 系统和 Domino 应用的集成,如 LotusScript Extension for SAP R/3, SAP Workflow Integration for Domino, Lotus Domino Connector for SAP R/3, Domino MTA for SAP R/3, IBM MQSeries Link for SAP R/3 等。
同时,SAP R/3 也提供了扩展接口实现数据的集成。SAP R/3 系统不会让用户直接调用和修改底层的表数据,但是 SAP R/3 允许用户在应用层上调用 SAP R/3 的函数。下面的模型可以描述 Domino 和 SAP R/3 的集成设计思路。
下面简单介绍一下上图中列出的 Lotus 的产品。
LotusScript Extension for SAP R/3:可以编写程序实现 Domino 和 SAP 的集成。
SAP Workflow Integration for Domino:实现 SAP 的工作流和 Domino 邮件的集成。
Domino MTA for SAP R/3:实现 SAP 的邮件和 Domino 的邮件集成。
IBM MQSeries Link for SAP R/3:实现 SAP 和 Domino 的消息系统 MQ 的集成。
接着,重点分析使用 LotusScript Extension for SAP R/3 实现 Domino 和 SAP R/3 系统集成的方法。
现在着重探讨其中的一种方法,使用 LotusScript Extension for SAP R/3 实现 Domino 应用和 SAP R/3 的集成,简称为 LSX 方法。Lotus 应用通过 RFC 函数直接调用 BAPI 函数,向 SAP 中传输数据;BAPI 函数可以实现 SAP 中的复杂功能。下图是 LotusScript Extension for SAP R/3 的模型。
LotusScript 可以调用 SAP BAPI 函数。LotusScript 代码可以通过 RFC 函数来调用 SAP 函数,创建对象和接口。向接口参数中传递数据,执行对象的方法,访问和执行 SAP R/3 函数,操作 SAP 数据。
LotusScript Extension for SAP R/3 提供了 Domino 与 SAP 集成的途径,它就象两根管道之间的联接器和集成点,企业中的 Domino 和 SAP R/3 系统可以形象地比喻为两个管道。
以前企业中的 Domino 和 SAP R/3 系统各自孤立,实现集成很困难;LotusScript Extension for SAP R/3 解决了 Domino 与 SAP 集成的问题,这种集成不是简单的对接和邮件集成,也不是界面上的集成,而是应用和信息上的集成。
通过这种集成,Lotus 可以控制复杂的 SAP 函数,可以自动实现 SAP 系统中的操作,把两个系统紧密地结合在一起。
Lotus Domino 具有集成的应用开发软件和设计元素、完整的编成工具。其中, Lotus Domino 的编成工具包括 LotusScript、Formula、Java、JavaScript 等。LotusScript 是一个与 Basic 兼容的程序设计语言,是一个面向对象的程序设计环境,具有丰富的类、方法和属性,包含有集成的对象浏览器和程序调试环境,可以直接调用 Domino/Notes 服务。
SAP 也有开发语言 ABAP 和集成开发环境。 ABAP 函数是通过 SAP 开发平台中的各种工具编辑、编译并应用于 SAP 系统的程序,是使用 ABAP 开发出来的程序。ABAP 函数的主要任务是设计用户对话和数据库对话 , 实现表现层和应用层数据传递和交互控制。
LotusScript Extension for SAP R/3 方法中,需要 Lotus Domino 开发人员与 SAP 开发人员分工协作,共同完成。首先 SAP 开发人员开发出 ABAP 函数。然后,Lotus Domino 开发人员用 LotusScript 语言编写调用脚本,通过 RFC 调用 BAPI 函数。最后,Domino 系统就可以访问 SAP 的应用逻辑,访问 SAP R/3 中的数据和应用。其中,RFC 函数是 LotusScript Extension for SAP R/3 方法的核心和精华。
LotusScript Extension for SAP R/3 能够使 Lotus Domino 直接访问 SAP 数据,因为它提供了一组类,称为 RFC(Remote Function Call)类,这些类与 Notes 类一样,可以在 LotusScript 中进行调用和调试跟踪。如果 LotusScript 中直接调用 RFC 函数,需要在 Notes 中设置环境,在脚本对象(Scripts Object)的 Options 中加上 Uselsx Lsx 。
RFC 函数中含有很多 RFC 类和对象。RFCServer 类是 Lotus 应用访问 SAP R/3 系统的基本对象,它包括了一些很有用的属性,同时也包含了从 Lotus 到 SAPR/3 连接的状态信息。RFCFunction 类可以创建 RFCFunction 对象,初始化 ABAP 函数;当 RFCFunction 对象创建后,相应的 Imports/Exports 以及表 (Tables) 会自动被建立起来,它的属性包括 Imports、Exports、Tables、Message, 还有 call() 方法。RFCTable 类是 RFCFunction 的表,包括行项目,类似关系数据库的表。RFCRow 类是 RFCTable 中的行。下面介绍如何使用 LotusScript Extension for SAP R/3 方法。
LotusScript 可以调用 SAP BAPI 函数。LotusScript 代码可以通过 RFC 函数来调用 SAP 函数,创建对象和接口。向接口参数中传递数据,执行对象的方法,访问和执行 SAP R/3 函数。
Set rfcCreateTzone=New RFCFunction(objServer,"Z_TM_TZONE1") Set rfcTZ_table=rfcCreateTzone.Table("ITAB_TZONE") For i=1 To 30 Set rfcCurRow= rfcTZ_table.Rows.InsertRow rfcCurRow.LAND1=uidoc.FieldGetText("Number"+Cstr(i)) rfcCurRow.ZONE1=uidoc.FieldGetText("endno1"+Cstr(i)) rfcCurRow.VTEXT=uidoc.FieldGetText("pr1"+Cstr(i)) Next If rfcCreateTzone.call =False Then Set rfcReturn=rfcCreateTzone.Table("ITAB_MSG1") errorMessage="SAP R/3 中创建失败 , 错误信息 :"+rfcCreateTzone.message Else returnStr=rfcCreateTzone.Imports("FLAG1").value If returnStr="X" Then errorMessage="R/3 运输区创建成功。" End If End if
上面的函数调用就是使用了 RFC 对象和类,首先通过 RFC 初始化 ABAP 函数 Z_TM_TZONE1,然后向对象中传递参数,最后通过 Call 操作执行该对象的功能,把数据写入到 SAP R/3 系统中,这样可以通过 LotusScript Extension for SAP R/3 实现 Domino 系统与 SAP 系统的集成 , 可以直接操纵 SAP R/3 中的数据。
通过采用 LotusScript Extension for SAP R/3 实现 Domino 与 SAP 的集成,充分利用两个系统的信息,提高信息运作效率,实现两个系统的信息共享,实现了两个系统的协同性。比如,审批流程在基于 Lotus Domino 的应用中进行,可以进行复杂的流程审批,然后把数据自动写入 SAP R/3 系统 , 实现了两个系统的连续操作,提高应用申请的响应速度和数据维护效率。
通过使用 LotusScript Extension for SAP R/3 方法,可以对公司的基于 Lotus Domino 的办公自动化应用进行优化,实现 Domino 与 SAP 的集成。比如基于 Lotus Domino 的财务报销电子化应用,首先在 Lotus 中做报销申请,审批通过以后再由数据创建岗直接导入 SAP 的财务模块和成本控制模块。还有,基于 Lotus Domino 的采购订单电子化应用在 Lotus 中实现申请和审批,然后由采购部直接导入到 SAP 的物料管理模块。
再举一个例子,在基于 Lotus Domino 的运输报价电子化应用中,平台核算岗在运输报价电子化应用中提交报价新增申请,总部主数据岗审核通过后 , 直接将数据导入到 SAP 的运输模块 (TM) 中。业务流程可以描述为,首先平台核算岗在 Lotus Domino 运输报价电子化应用中提交申请,经过平台经理审批、加签人审批、受理人审批;最后,总部主数据岗审核通过后,点击“写入 SAP”按钮,把审批后的数据写入 SAP 的运输模块。
如果 Domino 和 SAP R/3 没有集成,管理人员需要花费大量时间和重复工作。以运输报价电子化应用为例,首先,在基于 Lotus Domino 运输报价电子化应用中提交承运商报价申请,然后各级领导审批,在 Lotus Domino 中流程审批完成也就结束了。最后,SAP 管理人员登录到 SAP R/3 系统,用 VS01 、TK11 等事务代码一步一步 SAP R/3 系统中录入和创建承运商报价,可想而知,这个过程很繁琐和复杂。同时,复杂的审批在 SAP R/3 中是无法实现的,只有 Domino 的工作流才能够实现。
如果实现 Domino 和 SAP R/3 集成后,审批在 Lotus Domino 运输报价电子化应用中进行;审批完成以后,“写入 SAP”功能可以自动实现创建承运商报价。其中,“写入 SAP”的功能就实现了手工在 SAP R/3 中操作的过程。
从企业管理的角度来说,Domino 与 SAP 集成还具有如下优点,管理控制 SAP 系统数据申请流程、减轻用户操作难度、避免数据重复输入、提前对数据进行检查 、对 SAP 系统数据管理进行跟踪、降低成本、整合业务流程、延伸 ERP 的管理理念。
本文通过 Domino 与 SAP 的集成技术研究,论述了 LotusScript Extension for SAP R/3 方法。LotusScript Extension for SAP R/3 方法是在具体工作中摸索出来的方法,不需要购买昂贵的 EAI 产品。LotusScript Extension for SAP R/3 方法可以实现 Domino 与 SAP R/3 深层次的集成,提高了业务的流转效率,优化了业务流程。并且使各个系统优势互补,最大程度利用 Domino 与 SAP R/3 系统,延伸了 ERP 管理理念。
最后 , 向所有对本文有帮助的人表示感谢。
原文链接:http://www.ibm.com/developerworks/cn/lotus/ls-cn-dominosap/index.html