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);
分享到:
相关推荐
在SAP系统中,RFC(Remote Function Call)接口技术和BAPI(Business Application Programming Interface)接口技术是两个非常重要的技术概念。下面我们将对这两个技术进行详细的介绍。 RFC接口技术 RFC接口技术是...
调用BAPI的方法与调用自定义RFC类似,只是需要替换相应BAPI的名称。 在实际应用中,可能还需要处理异常,进行错误检查,以及对批量操作进行优化。例如,如果需要调用多个RFC,可以考虑使用JCO的批处理功能来提高...
SAP提供了JCo(Java Connector)库,使得Java应用程序可以直接调用SAP系统的BAPI,无需额外的中间件。这种整合方式极大地提升了跨平台应用的效率和性能。 #### 六、结论 BAPI与RFC的结合,为SAP系统的集成和扩展...
RFC是一种标准的ABAP调用机制,允许外部系统调用ABAP模块或函数模块,就像它们是在ABAP环境中直接调用一样。以下我们将详细介绍如何设置JCo环境、创建RFC连接以及发送和接收数据。 首先,确保你的项目中包含了JCo库...
接着,可以通过创建RFC连接,调用SAP的BAPI或RFC函数模块。BAPI是SAP提供的标准接口,封装了业务逻辑,而RFC则允许开发自定义的跨系统功能。 总的来说,SAP JCO 3.0.5版本提供了在Java环境中访问和操作SAP系统的...
总结,SAP_RFC和BAPI是SAP系统与其他系统集成的关键技术,通过C#调用BAPI,我们可以实现跨系统的业务流程自动化。在实际应用中,需要根据具体需求配置和处理BAPI的输入输出参数,以满足业务逻辑。理解并熟练运用这些...
本压缩包中的测试样例可能包含了使用Java调用BAPI和JCO的示例代码。这些样例有助于开发者快速理解和应用上述概念,例如,创建一个简单的Java程序,连接到SAP系统,调用一个BAPI,如BAPI_MATERIAL_GETDETAIL,获取...
要在不同系统间调用BAPI,首先需要在SM59中设置RFC(Remote Function Call)连接,指定目标R/3系统的服务器和系统编号。在ABAP环境中,可以通过SE38编写程序调用BAPI,例如使用`Call Function "ZBAPIXXXXX" ...
3. **调用BAPI**:在客户端程序中,使用适当的语言(如Java、ABAP、.NET等)编写代码,通过HTTP、RFC等方式调用BAPI。 4. **处理结果**:BAPI执行后,会返回结果,需要在客户端程序中处理这些结果,通常是解析XML...
以调用BAPI_MATERIAL_STOCK_GET为例,这个BAPI用于获取物料库存信息: 1. **准备输入参数**:如MATNR(物料号)和WERKS(工厂代码)。 2. **创建函数实例**:在编程环境中创建BAPI_MATERIAL_STOCK_GET的实例。 3. *...
调用BAPI时,如同调用ABAP中的Function Module,但BAPI不抛出异常,而是通过一个名为'return'的参数来返回错误信息。这个'return'参数的结构因BAPI而异,需要根据具体BAPI的文档进行处理。 2. JCO的使用 2.1 JCO...
PP-MM-RFC-BAPI-JCO等.rar"的压缩包文件包含了多个与SAP相关的学习资料,涵盖了许多关键模块和技术,包括ABAP编程、生产计划(PP)、物料管理(MM)、远程功能调用(RFC)、业务对象接口(BAPI)以及Java与SAP的集成...
在ABAP中调用BAPI的方法与调用功能模块的方法类似,但需要注意的是BAPI没有异常(Exception)的概念,调用的成功与否是通过参数`RETURN`来判断的。`RETURN`参数在不同的BAPI中可能有不同的结构,可能是结构(structure)...
这个接口允许开发者使用 Java、JavaScript 或 HTML5 来构建应用程序,同时无缝集成 SAP 功能,例如调用 RFC(远程功能调用)或 BAPI(业务对象函数调用)。 1. **RFC 调用**:RFC 是 SAP 系统提供的一种标准通信...
这个库包括了必要的接口、类和方法,使得开发者可以在Java中执行远程功能调用(RFC)和BAPI(Business Application Programming Interface)。 二、环境准备 1. 安装JDK:确保你的开发环境已经安装了Java ...
- 使用ABAP代码调用RFC函数模块,或者在其他系统(如Java、.NET)中使用SDK或HTTP请求来调用。 ### 3. RFC技术细节 - **使用ABAP调用RFC** - 使用`CALL FUNCTION`语句来调用本地或远程RFC。 - 示例代码: ```...
RFC允许外部系统(如Java、Python或其他编程语言的应用程序)与SAP系统进行集成。BAPI(Business Application Programming Interface)作为RFC的一种特例,专门处理业务逻辑,它是预定义的、封装了特定业务功能的...