JCo是一个高性能的,基于JNI的中间件,它实现了SAP的RFC(Remote Function Call)协议。
1、JCo的安装
将sapjco.jar加入项目的classpath中。
把 librfc32.dll 和 sapjcorfc.dll copy 到system32里(机子上如果有SAP就不用了)
2、与SAP的连接
JCo支持两种连接方式,direct connections和connection pools。
direct connections:
import com.sap.mw.jco.*;
public TutorialConnect1() {
JCO.Client mConnection;
try {
mConnection = JCO.createClient("001", // SAP client
"", // userid
"****", // password
null, // language
"", // server host name
"00"); // system number mConnection.connect();
mConnection.disconnect();
} catch (Exception ex) {
}
}
connection pools:
static final String POOL_NAME = "Pool";
public TutorialConnect2() {
JCO.Client mConnection;
try {
JCO.Pool pool = JCO.getClientPoolManager().getPool(POOL_NAME);
if (pool == null) {
OrderedProperties properties = OrderedProperties.load("/logon.properties");
JCO.addClientPool(POOL_NAME, // pool name
5, // maximum number of connections
logonProperties); // properties
}
mConnection = JCO.getClient(POOL_NAME);
} catch (Exception ex) {
} finally { //返回连接到连接池,否则会导致无可用连接
JCO.releaseClient(mConnection);
}
}
logon.properties文件的定义:
jco.client.client=001
jco.client.user=userid
jco.client.passwd=****
jco.client.ashost=hostname
jco.client.sysnr=00
3、对SAP进行操作
SAP中有JCO.Repository对象,包含着SAP的RFM的运行环境元数据。
JCO.Repository mRepository;
mRepository = new JCO.Repository("ARAsoft", mConnection);
构造器中包含两个参数,第一个是一个任意名称,第二个是连接池或JCO.Client对象。
IFunctionTemplate对象包含着某个特定的RFM元数据,JCO.Function则代表着一个包含所有参数的RFM。它们之间的关系类似Java中Class和Object的关系。
IFunctionTemplate ft = mRepository.getFunctionTemplate("BAPI_SALESORDER_GETLIST");
//ft为空表示没有在SAP发现对应的RFM
if (ft == null) return null;
JCO.Function function = ft.getFunction();
JCO.ParameterList对象包含做Function的输入、输出和表参数。
client = JCO.getClient(SID); //从Pool中取得Client
JCO.ParameterList input = function.getImportParameterList();
//设置参数,参数名为第二个参数,参数值为第一个参数,
input.setValue("0000001200", "CUSTOMER_NUMBER" );
input.setValue( "1000", "SALES_ORGANIZATION");
client.execute(function);
分享到:
相关推荐
idoc 和 bapi 和 rfc 之间的区别,idoc是系统间利用message传递,不涉及底层函数调用,idoc的处理方式是用edi来执行的.
SAP BAPI和RFC接口技术的详细介绍,有需要的dowm
ABAP Web Dynpro调用BAPI
java使用jco调用rfc案例 如何传递不同类型参数 解析对应的返回格式
英文培训资料, PPT 格式,SAP BAPI & RFC Intro 简介
SAP R/3的接口方式主要有RFC(Romote Function Call,远程函数调用)、IDOC、BAPI三种,BAPI实际上也是RFC函数,它处理一组业务。使用Tcode:BAPI/BAPIW在SAP系统中可查看到各模块的BAPI函数。
A major component of the Business Framework are the Business Application Programming Interfaces (BAPIs), which represent visible interfaces at the component boundaries and whose properties serve to ...
ABAP 高级开发RFC BAPI
webdinpro text
C#通过NCO组建,直接调用SAP BAPI接口。app.config中配置SAP连接信息,代码中加入调用函数。注意引用的DLL是针对64位操作系统的。
BAPI 修改CJ20N 创建的项目网络中的组件等信息 BAPI_NETWORK_COMP_CHANGE
ABAP_RFC_BAPI培训教程.docx
ABAP开发中调用BAPI执行业务,有时会遇到所需字段在标准BAPI没提供,可以通过该方法实现字段扩展
Delphi通过BAPI连接SAP.7z
采购订单BAPI增强数值型字段转换方法
什么是BAPI BAPI: Business Application Programming Interface 商业应用程序接口 1.访问R3中业务对象与业务过程的标准编程接口。 2.BAPIs 实现了BOR中业务对象的方法 3.BAPIs 通过RFC-enable的功能模块实现。 4....
BAPI 比较详细的BAPI资料 BAPI 比较详细的BAPI资料
此文章讲解了关于sap的RFC,BAPI,ALE,IDOC的开发技术之间的联系,区别。
远程链接SAP系统,和其他系统做接口。该文件是用C#编的,实例是调用md04的BAPI接口。
在SAP中发布BAPI的流程,SAP开发应用,不过没有实际的项目背景,没有服务器可能这个资料没有用的。