作者:JongWill声明:本文章仅用于SAP软件的应用与学习,不代表SAP公司。(注:文中所示截图来源SAP软件,相应著作权归SAP所有。)SAP公司的ERP系统是一套成熟的套装软件,它是博大精深的,但也不是无所不能。在中国式企业实际管理和应用中,企业会根据公司实际情况,推出了一些辅助系统对ERP系统中的一些不足之处进行补充,例如:财务管控、合同管理等系统,这些系统需要跟ERP系统进行开发各种数据传输接口甚至是一些需要权限控制的接口,本文主要讨论使用JAVA语言与SAP公司提供的JAVA语言远程调用函数Jco相结合远程调用ERP系统中自定义函数的实例,对涉及此方面的应用程序维护提供另一种解决思路。由于实际工作需要,我们对于连接ERP系统的各种接口方式都需要有一个明确的认识,需要对涉及到的接口方式的原理、效率等有一个充分的了解,才能在出现问题的时候根据问题的表象,以不同的角度处理、解决问题。具体处理过程什么是JCo?SAP Java Connector (SAP JCo)是个中间件组件,用于SAP组件和JAVA程序的开发。SAP JCO 支持两种方向连接SAP 服务器:inbound calls (Java calls ABAP) and outbound calls (ABAP calls Java)。SAP JCO可以用于桌面应用和WEB应用程序也可以作为组件嵌入到一下程序中:SAP Business Connector:用于与外边的JAVA程序的连接SAP Web Application Server:通过ABAP环境连接到嵌入式J2EE服务。JCo体系结构?从JAVA程序开始,JAVA 业务方法通过JCO 核心API,再通过RFC和JNI层,发送到SAP系统,系统响应了请求,并把相应信息通过以上路径返回到JAVA程序中。如何配置JCo?运行myeclipse新建一个项目,在包浏览器中右键单击项目名称选择【Build Path】——【Configure BuildPath】选择“Libraries”选项卡单击【Add External JARs】选择JCO的文件“sapjco.jar”进行加载,完成后如下图所示Jco连接方式?JCO有两种连接方式,连接池方式和直接连接方式。但是频繁创建新的连接可能导致严重的性能问题。典型的情况就是在Web应用程序中,如果每个session创建一个连接,那么用户数量很多的时候系对系统来说就是一场灾难。JCo库支持以连接池的形式重用已创建的连接。只需要调用JCO类的静态方法addClientPool即可创建一个连接池,并且可以在参数中指定连接池的名字和允许同时激活的最大连接数。 直接连接打开连接:调用函数和关闭连接:连接池创建连接池:获取和释放连接:创建RepositoryJCO.Repository:用于存取RFMs的元数据。JCo.Repository使用RFC的方式来调用ABAP中的函数,所以被调用的函数必须已经勾选“Remote-enabled”属性。调用一个函数之前,需要知道函数的元数据,比如函数名字,输入输出参数等等。在JCo.Repository中,必须通过类JCO.Repository来获取所有的ABAP函数的元数据,所以第一步是创建一个JCO.Repository类的对象。创建Jco RepositoryJCO.Repository类的构造函数有两个参数,第一个是可以任意指定的名字,第二个是当前使用的连接。此处也可以直接指定一个连接池的名字,JCo库将自动从该连接池中获取连接。此时,必须保证该连接使用的用户名在目标SAP服务器上有足够的权限。获得JCO.Repository类的实例之后,就可以通过该实例来获得函数的信息。创建JCO.FUNCTION执行JCO.FUNCTION 获取并输出数据对ERP系统二次开发软件开发人员来讲,了解每种与ERP系统的接口技术的原理是事关ERP系统维护重要组成部分,所以要重点掌握。
分享是一种精神
每一个ERPer都有自己独特的思考和感悟!
---SAP齐天大圣