SAP非结构化文件交互的研究与实现
2014-03-07常玉慧
常玉慧
(江苏理工学院计算机工程学院,江苏 常州 213001)
0 引言
随着企业信息化水平的不断提高,成熟的ERP管理系统在企业的信息化进程中扮演越来越重要的角色。SAP作为全球ERP管理软件和业务解决方案的领导者,通过其自身应用软件,服务支持和开放性平台,为全球各个行业的企业用户提供全面先进的企业管理软件解决方案。SAP系统完美的实现企业生产管理,仓库管理,物流管理,销售管理和财务成本的无缝集成,方便得出具各种分析报表,快速准确地为企业的管理层提供全面的决策信息。SAP系统提供了各种接口技术,使得企业用户在实施SAP的过程中能够和原有的信息管理系统通过SAP接口技术进行数据的交互,在SAP实施的过程中,打破企业在管理中存在的信息孤岛。
1 SAP系统应用文件接口的目的
SAP的接口技术主要有:RFC,BAPI,ALE/IDOC,EDI,WEB SERVICE等,这些接口技术采用 SAP的标准技术进行开发,可以方便的从SAP系统存取各种业务数据,和其他信息系统进行交互,这样就可以保持原有系统的稳定运行,节省企业的开发实施成本,企业在实施过程中可以根据自己的实际情况,选择相应的接口实现企业各个信息系统的全面集成。
而对于超大数据量的数据交互,企业在实施SAP的过程中,采用非结构化的文件交互方式来实现。笔者针对利用SAP系统的文件传输技术,实现SAP系统和其他信息系统的非结构化文件传输交互。
2 SAP文件接口常用技术
2.1 SAP系统整体架构
SAP系统从业务上来讲,包含资产会计(AM)、财务会计(FI)、管理会计(CO)、物料管理(MM)、生产计划控制(PP)、销售分销(SD)、人力资源(HR)等企业在生产管理经营各个业务模块的管理,这些不同的模块在SAP系统中实现了全面的集成,各个模块的在SAP系统上共同运行,实现企业经营的全面管理,如图 1 所示:[1]
图1 SAP系统业务模块
在技术架构上,SAP系统是一个三层架构的系统,分为表示服务器、应用服务器和数据库服务器(有点类似于在用JAVA等其他语言开发基于WEB的系统时候的MVC模式)。SAP的三层架构不但能实现系统逻辑上的分离,也能实现硬件上的分隔。即表示服务器、应用服务器和数据库服务器可以分别安装在不同的硬件服务器上,以实现系统能够实现最大的效能。图2就形象的说明了SAP的三层架构的分布[2]。
图2 SAP系统分层架构
其中SAP的所用标准程序和自定义开发的程序都是在应用服务器上运行的。
2.2 SAP非结构化文件交互的实现
接下来,我们就详细阐述几种SAP系统利用文件和外部系统如何进行交互的方法。
2.2.1 SAP应用服务器生成文件
利用SAP应用服务器,作为文件的存储媒介,来实现SAP系统与其他外部系统的文件数据的交互。利用这种方式,我们可以通过后台作业的方式,定期从SAP的服务器中读取外部系统的生成的文件,并在处理完文件里面的数据后,生成新的文件存储在SAP应用服务器中,供外部非SAP系统读取,接受处理的反馈信息。
在使用这种存储方式实现文件数据交互的时候,可以通过SAP的OPEN DATASET的命令来实现,这个命令可以实现SAP系统把文件数据读入到SAP系统中,也可以把SAP系统中的数据生成数据文件存放在SAP应用服务器中。
当从SAP的应用服务器上读取文件到SAP系统的时候,使用以下的示例步骤来实现:
(1)在服务器上打开文件;
(2)运用READ DATASET把数据读入体统变量;
(3)判断数据是否读取完毕;
(4)读取数据并处理完毕后,关闭文件。
在服务器上打开文件:
读取文件中的数据到SAP系统变量中:
此处省略对数据的处理逻辑:
读取完成后,需要关闭文件:
要把SAP系统里的数据生成文件放到SAP服务器的时候,可以参考如下步骤:
(1)在服务器上打开文件;
(2)把系统的数据写入应用服务器;
(3)写入数据完毕后,关闭文件。
在服务器上打开文件,在此处没有使用默认的编码方式,而是采用的带有BOM的UTF-8的编码方式,主要是考虑到了不同国家的语言的兼容。UTF-8可以很好的兼容各个国家的文字,避免国家间的数据传输乱码:
往文件中写入SAP内表中的数据,在写入文件的时候,使用TAB制表符作为字段间的间隔。
文件写结束以后,需要关毕文件:
这种方式在国际某高端自行车零配件的生产集团得到了很好的应用,由于集团的产品很多,每周都会有一个外部系统要安排每种产品以后三个月的生产计划,然后把排好的生产计划,通过接口技术把数据导入SAP系统中,由于数据量非常庞大,通过常规的接口技术实时的交互,会对系统造成很大的压力。该集团采用了后台作业和SAP文件处理的方案,成功的实现了SAP系统和外部排产系统产品生产计划的交互,如图3所示。
图3 某自行车配件工厂生产计划文件传输流程
2.2.2 FTP 服务器传输文件
此外,利用FTP协议,也是传输文件数据常用的一种方法。FTP协议是一个客户/服务器架构的系统,是TCP/IP协议之一,利用FTP协议,可以完成两台计算机上的文件的上传和下载,从而实现文件数据的交互。通过SAP系统提供的标准的函数也能实现利用FTP服务器实现文件的DownLoad和Up-Load。这样的功能也在某省的国家电网系统中得到了很好的应用。
图4简单的说明了FTP协议在总部和网省的文件交互的具体实现:当总部有文件下达的时候,会首先把文件放到FTP文件服务器上面,然后通过两个系统之间的消息服务,通知网省的SAP ERP系统到FTP文件服务器上去取文件,网省在文件获取成功以后,又会通过系统间的消息服务反馈给总部ERP系统。这样的一个流程,就完成了总部和网省系统的文件交互的整个过程。这个流程可以在有文件传输的时候时候,实时的去通知对方系统,不需要通过后台来实现,是整个传输过程更加清晰易于控制。
下面介绍一下,怎么样在SAP系统里通过FTP协议实现文件的上传和下载的功能,在编写代码实现功能前,要先检查系统是否配置的FTP的客户端,确保系统已经安装SAPFTP.EXE。并且通过RSFTP005命令经行SAPFTP检查。完成相关的检查后,就可以通过代码实现FTP的相关操作了。
首先先看如何SAP如何从FTP服务器中下载文件,需要完成以下几个步骤:
(1)把登陆密码转换为SAP的内部编码;
(2)建立FTP的链接;
(3)从FTP的文件服务器下载数据;
(4)完成下载后关闭文件服务器。
图4 某省电网文件传输结构图
对访问的密码根据SAP的要求做转换:
建立和FTP服务器的链接。SAPFTPA参数表示在服务器端建立和FTP的链接。
从FTP服务器下载文件数据到SAP系统:
关闭SAP和FTP服务器的链接:
同样要实现上传的功能,也要分为以下几个步骤:
(1)把登陆密码转换为SAP的内部编码;
(2)建立FTP的链接;
(3)把系统中的数据上传到FTP服务器;
(4)上传后关闭文件服务器。
对访问的密码根据SAP的要求做转换:
建立和FTP服务器的链接。SAPFTPA参数表示在服务器端建立和FTP的链接:
从SAP系统传输数据到FTP服务器:
关闭FTP连接服务器:
2.2.3 HTTP 服务器传输文件
也可以通过HTTP协议来传输文件,在SAP中创建类似其他语言(例JAVA等)HTTP_CLIENT对象,模拟HTTP协议,利用HTTP Request对象来传输文件。这种方法要在系统里面配置和外部系统的链接,通过SM59命令来实现,链接类型设置为G,即HTTP协议,创建成功以后,在系统中显示如图5所示,利用这个链接,创建CL_HTTP_CLIENT类的对象,模仿HTTP协议实现文件的传输FTP agreement。
图5 Connection Test图
3 结束语
在SAP的系统开发中,提供了多种和外部系统交互的方法,在实施SAP之前,也可以通过接口技术把原来的系统和SAP系统进行集成,以减少SAP实施的风险,降低实施的成本。以上就是在SAP二次开发中常用的几种文件传输的方法,对于实施人员,可以根据自己的需要,选择合适的技术来实现数据的交互。
[1]黄佳.SAP高级应用开发:RFC、BAPI、ALE、Workflow、SAP连接器、WebDynpro及 BSP[M].北京:人民邮电出版社,2008:5-6.
[2]唐骏华.工程师突击——SAP ABAP实用程序开发攻略[M].北京:机械工业出版社,2010:3-5.