基于BAPI的ERP与MES集成研究

  • A+
所属分类:ERP

企业资源计划ERP(Enterprise Resource Plan)已经发展成为当今企业管理软件的主流,越来越多的系统开始考虑与ERP的集成,制造执行系统MES(Manufacturing Execution System)就是其中之一。

MES是制造业中的一种车间层控制系统,它定位于上层计划管理与底层控制系统之间,所以为了实现企业的整体信息化,在实施了ERP和MES的制造业企业中,将这两个系统实现集成是必要的。要实现这两个系统的集成,ERP和MES的开放性是前提,1996年,SAP公司和微软共同制订的商业应用编程接口BAPI(Business Application Programming Interface)是一个很好的开放性规范。当前许多ERP厂商已经在研究并已实现BAPI,提出了集成解决方案。其中SAP R/3就是一个很好的应用产品,它实现了更大的灵活开放性,提高了产品的竞争力。

本文通过对BAPI概念、设计以及调用方法的研究,设计了一个ERP与MES的集成案例来实现对BAPI的应用。

2 ERP中的业务框架

2.1 业务框架技术

框架的概念已经广泛应用于编程中,它可以更好地集成各个独立的应用程序从而便于将来的程序标准化。SAP将这种思想应用到了企业软件中,形成了业务框架的思想。这种思想实质上是面向对象技术在企业软件中的应用扩展。业务组件可以看成是ERP中的模块(例如人力资源模块就是一个业务组件),它是由一些业务对象及其功能组成的。业务对象是面向对象技术的应用,它封装定义了一些业务数据、函数和接口。而且所有的业务对象都存放在ERP的业务对象仓库BOR(Business Object Repository)中。同时每个业务对象都提供一些业务应用程序接口。程序可以通过一些预定的通讯方式进行接口访问,通过面向对象的方式与业务对象进行通讯。

2.2 业务对象体系结构

在业务对象仓库中包含许多业务对象,通过业务对象的方法来提供BAPI。它们提供了与ERP软件的高级接口,使得ERP组件能够进行面向对象的通讯。业务对象封装业务数据和业务过程,同时隐含最底层的数据结构和实现方法。

2.3 业务框架中数据访问的方式

通常ERP系统中数据的访问是通过直接访问底层数据库的方式来实现的,要实现系统之间的集成,数据的传输和访问是最基础的。由各种语言开发的外部系统要访问ERP系统的数据,最基本的是利用JDBC/ODBC方式进行数据的直接访问。但是,有时ERP系统的数据库并不是完全开放的。随着业务框架技术的引入以及业务应用程序接口(BAPI)的出现,ERP的数据访问就有了一个高效的接口。同时业务框架提供了一个数据库的接口――数据字典,它是一种能够定义和管理数据类型和结构,以及定义管理数据表及其视图的工具。通过数据字典可以进行底层数据库的基本操作,这样就为用户对ERP的二次开发提供了很方便的工具。

3 BAPI实现

业务应用程序接口(BAPI)被定义为业务对象的方法,内部软件组件的集成和外部客户开发的应用系统的集成都能使用BAPI。BAPI是在业务对象仓库(BOR)中定义的业务对象的方法,通过能被远程调用的功能模块(Function Module)来实现。功能模块是在功能模块库中设计定义的,用于对可供访问输入输出参数。BAPI实施的步骤如下:1) 在数据字典中定义BAPI中需要用到的数据结构;2) 实现BAPI的基于RFC协议的功能模块设计;3) 在业务对象仓库中将BAPI定义为商业对象的方法。

4 ERP与MES集成信息分析

MES作为一个车间层的信息采集处理系统,并没有一个共同的标准,也就是说不同行业的MES系统可能差别很大。因此先行的MES系统一般都是具体针对某个行业开发的,但是通过分析它与ERP系统的联系,我们发现MES系统主要需要的是ERP的数据,包括物料、生产数量、完工日期、标准物料、标准生产工艺等信息,这些信息主要包含在ERP中的物料主数据以及生产订单中。MES系统收集到这些信息后可以用来指导底层控制系统从而控制车间的生产。

另一方面,为了便于信息的分析与处理,我们可以将MES采集的信息传递到ERP中,通过ERP比较强大的报表处理功能来进行信息的统计与处理。

5 ERP与MES集成模型设计与实现

5.1 集成方案设计

根据某半导体企业的MES系统需求,通过分析系统数据,我们需要将ERP中的信息传递到MES系统中,同时也需要传递一些MES系统的信息到ERP中以实现信息的交互。基于这样的分析,设计了一个ERP与MES系统集成的模型。所采用的ERP系统是SAP R/3系统,MES系统是基于C#语言开发的,底层数据库采用Access数据库。整个系统的集成方案设计步骤如下:

1) 在原有MES系统中附加数据库表以收集从ERP中下载的数据。

2) 在ERP中开发BAPI接口,用于实现数据的传递。

3) 在MES系统中附加一个模块,用于调用BAPI接口来实现到MES系统附加的数据库表中的数据传递,并且从这个附加数据库表中抽取数据以更新原有数据库。这个模块采用VB语言进行开发。同时,通过调用BAPI接口来实现原有MES系统的数据信息上传到ERP中。

通过对集成信息的分析,在集成功能上,根据从ERP下载还是上传数据,可以分为两个方面。一方面,开发BAPI接口实现从ERP下载数据到MES系统中,设计了三个接口:1)下载物料组接口;2)下载物料主数据接口;3)下载工作订单接口;另一方面,开发BAPI接口实现从MES上传数据到ERP系统中,设计了一个接口:上传完工信息接口。通过对这些接口的调用,可以实现数据的传递,最终实现系统的集成。

5.2 BAPI接口设计

下面通过一个例子来说明BAPI接口的设计。在ERP中采用了R/3的开发语言ABAP/4来开发BAPI接口。

根据对下载物料组接口的设计过程的描述来说明BAPI接口的设计。对BAPI接口设计,首先在业务对象库(BOR)的业务对象MaterialGroup中添加方法MaterialGroup.GetList,

其次,在Function Builder中创建实现方法MaterialGroup的功能模块,命名为BAPI_MATERIALGROUP

_GET_LIST,该功能模块是RFC功能模块,可以从外部系统调用该功能模块。功能模块包含输入输出参数和实现代码,输入输出参数的设计在数据字典中进行。

功能模块的实现代码是采用ABAP/4语言编写的,实现代码的数据声明定义部分如下:

FUNCTION BAPI_MATERIALGROUP_GET_LIST.

CLEAR RETURN.

REFRESH RETURN.

CLEAR R_MATKL.

REFRESH R_MATKL.

CLEAR: PI_SPRAS, PI_LANGUAGE, PI_LANGUAGE_ISO, PI_MATKL,PI_FLAG_WGBEZ.

CLEAR: G_MSGV1, G_MSGV2, G_MSGV3, G_MSGV4.

CLEAR: BAPIWWG5_LANGUAGE, WWG5_LANGUAGE.

PI_FLAG_WGBEZ = SHORTDESCRIPTIONFLAG.

PI_LANGUAGE = LANGUAGE.

PI_LANGUAGE_ISO = LANGUAGEISO.

R_MATKL[] = MATERIALGROUPRANGE[].

CLEAR: G_SUBRC, G_SUBRC_LANGU_PARAMS. G_SUBRC_CHECKS = 4.

最后,通过将功能模块BAPI_MATERIALGROUP_GET_

LIST指定给业务对象的方法MaterialGroup.GetList实现BAPI接口的设计。

5.3 调用BAPI接口实现系统集成

在实现系统集成数据传递的这个附加模块的开发中,首先要连接ERP系统,即连接R/3系统。通过VB程序来实现,连接界面如图1。实现连接ERP系统的代码从略。

连接到SAP后我们就可以通过调用BAPI接口来实现数据的传输了。调用BAPI(BAPI_MATERIALGROUP_GET_LIST)的VB代码从略。

6 总结与展望

BAPI技术和业务对象技术为ERP接口的标准化提供了很好的方法。ERP系统的不断扩展使得ERP的集成需求越来越多,MES系统作为制造业中的一个重要系统,它同ERP系统的集成实现了整个制造型企业内部信息的完整集成交换,这样的集成提高了企业的生产效率。本文通过对集成相关技术的介绍以及集成模型的设计开发,展现了如何通过BAPI接口实现企业系统之间的集成途径。随着网络技术的发展,越来越多的系统开始考虑在Web上的应用,ERP系统也要跟踪这一发展方向。Web上的ERP系统的应用必然导致在Web上集成ERP系统以及其他应用系统方向上的研究,面向对象技术形成的业务框架、业务对象以及BAPI同样会有一个很好的应用空间。


本文出自:亿恩科技【www.enkj.com】

河南亿恩科技股份有限公司(www.enkj.com)始创于2000年,专注服务器托管19年,是国家工信部认定的综合电信服务运营商。亿恩为近五十万的用户提供服务器托管、服务器租用、机柜租用、云服务器、网站建设等网络基础服务,另有网总管、名片侠网络推广服务,使得客户不断的获得更大的收益。 服务热线:400-723-6868 服务器/云主机 24小时售后服务电话:0371-60135900 虚拟主机/智能建站 24小时售后服务电话:0371-55621053
广告也精彩
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: