java语言 百分网手机站

SAP与JAVA接口技术研究与应用

时间:2020-09-02 11:12:34 java语言 我要投稿

SAP与JAVA接口技术研究与应用

  导语:SAP系统架构之下的组件数量庞大,各个组件间需要无缝地衔接,而且开放性的SAP系统还要实现与其他系统平台随时通信,让用户感觉只是在一个系统中进行工作。下面就由小编为大家介绍一下SAP与JAVA接口技术研究与应用,欢迎大家阅读!

SAP与JAVA接口技术研究与应用

  一、SAP系统接口技术

  (一)SAP RFC接口技术

  RFC是远程函数调用的缩写,是SAP系统之间以及SAP与外部系统之间程序通信的基本接口技术,诸多其他更高层的SAP接口和通信技术,如BAPI,ALE等,都是基于RFC实现的。是SAP公司最早提供的与其他系统的接口解决方案。

  在系统间通信过程中,需区分发送系统和接受系统。RFC调用请求从发送系统中传至接受系统,其中发送请求的系统在通信过程中又称为RFC客户端,通信的另一方则称为RFC服务器。RFC客户端发起远程功能调用以执行RFC服务器提供的功能。其中调用系统和被调用系统可以是SAP系统或非SAP系统,此外还可以在SAP系统内部将特定的应用服务器指定为目标系统。

  RFC方式简单易行,它只需要通过Java将所需参数传递给RFC,SAP会自动将结果集返还给Java的List、Vector等可以用于存储数据的方法。

  (二)BAPI(Business AppIication Programming Interface)接口技术

  BAPl是指SAP中经过精确定义的业务应用的数据和处理接口。SAP采用了Object―Oriented技术,逻辑定义了系统的所有功能目标,并且将所有的目标和BAPIs存储于企业目标库BOR,借助于BOR和BAPI,整个SAP系统中的业务对象均可以通过面向对象的视图进行组织,并使用BAPI进行访问操作。在SAP内部组件及SAP与非SAP组件之间的技术整合和业务数据交换过程中起着非常重要的作用。SAP通过BAPI实现组件间的信息和数据交换,并通过该标准接口把整个系统链接为一个整体。

  BOR能提供的目标类相当于程序设计语言中的Class概念,其定义的接口主要包括基本数据和接口界面。基本数据包含了所有目标类的通用属性,接口界面包括主字段、方法、特征、事件等功能。

  (三)ALE-IDoc接口技术

  ALE(Application Link and Enabling)应用连接授权,是专门为SAP与SAP之间所设计的整合中间件,它采用分布――集成式的SAP系统实现基础,包括经系统控制的业务消息交换以及松散连接的SAP系统间的数据一致性管理。在ALE中,系统间的数据集成过程并不是通过共享一个中心数据库,而是通过异步或同步传输从而实现了业务分布化,管理集中化,即使接受方网络中断,在下一个连通时刻,数据仍可发送到目的系统。从技术角度来说,ALE主要应用于两个有业务联系的SAP系统之间的数据同步,但也支持在SAP和非SAP系统间的数据同步的实现。

  二、SAP与Java程序的接口分析应用

  (一)JCO与JAVA连接

  1.建立连接池。连接池的创建通过调用JCO方法addClientPool()来实现。

  2.创建原数据。原数据对象通过调用方法createRepository()来创建。原数据对象包含了所有在运行期间函数组的其中的数据。

  3.创建函数模版。函数模版对象通过调用方法getFunctionTempIate()获得。

  4.创建函数。通过调用方法getFunction()创建函数对象。

  5.获取连接。通过调用getClient()从连接池中获取连接对象。

  6.提供输入参数。通过调用getImportParameterList()给函数赋输人参数值。

  7.执行函数。通过调用方法execute()来执行函数。

  8.获取结果集。通过调用方法getExportParameterList()获取RFC的结果集。

  9.断开连接池。通过调用方法removeClientPool()来断开连接。

  (二)接口性能优化

  1.因为连接池中的连接是可重用和可保持的,所以可以降低系统开销,最大并发连接数量的限制避免过多地占用SAP系统的资源,尽管如此,也不要使用过小的最大并发连接数从而造成应用系统的性能瓶颈,为了容纳由应用系统造成的额外负载,SAP系统要经过一些配置。

  2.使用一个新的function对象时,为了提高性能而重用已有的function对象,不仅是多于的,而且还很危险,因为JCo的Repository为每个function模块缓存了元数据,如果重用一个含有表参数的function,而这个function中的表中的行数据没有被清除,那么更多的行数据会添加到这个表上,从而会造成错误的结果,这是使用一个新的'function对象时要注意的。

  3.只需使用一个Repository对象,因为Repository对象可以动态重新得到SAP function模块中的元数据并重新缓存,所以使用一个就够了,如果使用过多的Repository对象,会降低应用系统和SAP系统的性能

  4.应用系统只使用了function中的一小部分参数,为了提高性能,可以使用setActive()方法将那些应用程序不使用的参数设置为非活动状态,包括Table Parameter、ParameterList以及JCO.Request对象

  5.添加多行数据到JCO的Table对象中时,使用appendRows方法代替appendRow()方法,这样可以提高性能

  6.为了提高性能,JCO只在访问连接池和Repository对象时采取同步,其他的操作都是异步的,在多线程的环境下,不同线程之间共享对象(比如Table对象)是值得警惕的,并且一个连接对象是不能共享访问的,这样导致发生异常Exception

  三、结论

  JCO是一个高性能的,基于JNI的中间件,它实现了SAP的RFC协议。当用户面临流程或者数据整合方面的需求的时候,就迫切需要一种高效的方式,在SAP系统和Java平台之间实时地交换数据。本文主要通过对SAP接口和JCO组件的重点介绍,让大家对此类接口有一个直观的认识,为日常接口开发工作提供参考。

【SAP与JAVA接口技术研究与应用】相关文章:

理解Java的接口与抽象类11-24

Java接口介绍12-08

深入理解Java事物原理与应用12-01

介绍Java array接口11-29

Java中的stream流的解析与应用12-01

关于Java各种接口的介绍11-27

Java中接口的知识汇总12-01

Java中Executor接口用法大全11-27

java Runnable接口如何创建线程10-03

java与php的区别06-08