关于jco远程调用sap的例子也比较多,在此,本人针对自己的项目做一个比较简单完整的整理,希望对初次接触的人能有所帮助。
步骤主要有一下几点:
1.开发环境配置
1.1首先要把librfc32.dll,sapjcorfc.dll 这两个文件放到服务器的系统的c:\windows\system32目录下。
1.2下载 sap.jar;sapjco.jar;sappool.jar放到JAVA应用下.
2.连接池配置,由于调用sap里的相关函数,因此,连接池还是配置一个公共的比较好,不至于每次都配置。
配置文件名为:SAPLogon.properties
#配置client
jco.client.client=800
#sap账号
jco.client.user=zhangsan
#sap账号密码
jco.client.passwd=654321
#sap服务器IP地址,如果是外网访问,则在内网IP前加/H/外网IP/H/192.168.0.88
jco.client.ashost=192.168.0.88
#系统编号
jco.client.sysnr=00
#语言
jco.client.lang=en
3.编写java类
package com.thinkway.erp360.presentation.web.controller.sap;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.IRepository;
import com.sap.mw.jco.JCO;
import com.sap.mw.jco.JCO.PoolManager;
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
import com.thinkway.erp360.business.domains.SalesOrderDeliver;
import com.thinkway.erp360.util.DataMethod;
public class Testrfc {
private static final String SAPHR_POOL_NAME = "SAP_Poolssss";
public static void getSAPPoolConnection() throws IOException {
PoolManager clientPoolManager = JCO.getClientPoolManager();
//JCO.Client mClient =null;
try{
JCO.Pool pool = clientPoolManager.getPool(SAPHR_POOL_NAME);
if (pool == null) {
Properties props = new Properties();
InputStream is = ZrfcSalesOrder.class.getResourceAsStream("SAPLogon.properties");
props.load(is);
JCO.addClientPool(SAPHR_POOL_NAME, // pool name
10, // maximum number of connections
props); // properties
}
//mConnection = JCO.getClient(SAPHR_POOL_NAME);
}catch (Exception ex) {
System.err.println(ex.getMessage());
}
finally{
//JCO.releaseClient(mConnection);
}
//return mClient;
}
public static void setConnection(){
try{
// mConnection = JCO.createClient("400",
// "rfcuser",
// "123456",
// "en",
// "192.168.10.88",
// "00");
}catch(Exception ex){
}
}
//查询接口:调用Z_ERP360_SALESORDER_GETDELIVER函数
public static void querySalesOrderGetlist(){//()throws IOException{
// setConnection();
DataMethod date = new DataMethod();
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
"ddMMyyyy");
java.text.SimpleDateFormat sdf1 = new java.text.SimpleDateFormat(
"ddMMyyyy");
JCO.Client client;
getSAPPoolConnection();
IRepository myRepository = JCO.createRepository(
"MYRepository", SAPHR_POOL_NAME);
System.out.println(myRepository.toString());
IFunctionTemplate ft = myRepository
.getFunctionTemplate("Z_ERP360_SALESORDER_GETDELIVER");
JCO.Function funGetList = ft.getFunction();
JCO.ParameterList input = funGetList
.getImportParameterList();
String today=(date.getCurrentDate()).toString(); //获取今天日期,并转换为String
//输入参数
input.setValue(sdf.parse("01012012"), "BDATE");
input.setValue(sdf.parse(today), "EDATE");
input.setValue("Z000", "IM_WERKS");
client = JCO.getClient(SAPHR_POOL_NAME);
client.execute(funGetList);
JCO.Table tDateRange = funGetList.getTableParameterList()
.getTable("T_DATA"); //SAP中的输出结构名称为T_DATA
System.out.println("tDateRange:" + tDateRange.getNumRows());
SalesOrderDeliver item = new SalesOrderDeliver();
for (int i = 0; i < tDateRange.getNumRows(); i++) {
tDateRange.setRow(i);
item.setAEDAT(tDateRange.getString("LFDAT"));
item.setBEZEI(tDateRange.getString("BEZEI"));
item.setBLDAT(tDateRange.getString("BLDAT"));
item.setBEZEI2(tDateRange.getString("BEZEI2"));
item.setWADAT(tDateRange.getString("WADAT"));
item.setKUNNR(tDateRange.getString("KUNNR"));
item.setLFIMG(tDateRange.getFloat("LFIMG"));
item.setARKTX(tDateRange.getString("ARKTX"));
item.setMATNR(tDateRange.getString("MATNR"));
// item.setMEINS(tDateRange.getString("MEINS"));
item.setPOSNR(tDateRange.getString("POSNR"));
item.setVBELN(tDateRange.getString("VBELN"));
item.setLFART(tDateRange.getString("LFART"));
item.setVKBUR(tDateRange.getString("VKBUR"));
item.setVKGRP(tDateRange.getString("VKGRP"));
item.setVKORG(tDateRange.getString("VKORG"));
item.setVRKME(tDateRange.getString("VRKME"));
item.setVTEXT(tDateRange.getString("VTEXT"));
item.setKODAT(tDateRange.getString("KODAT"));
System.out.println("Record ["
+ tDateRange.getString("VKORG") + "] 物料号= "
+ (tDateRange.getString("MATNR")).substring(10, 18) + " 供应商= "
+ tDateRange.getString("KUNNR") + ", 交货日期 "
+ tDateRange.getString("KODAT"));
}
} catch (Exception e) {
// TODO: handle exception
}
};
public void closeConnection(){
// mConnection.disconnect();
}
public static final void main(String[] args){
querySalesOrderGetlist();
}
}
4.SAPLogon.properties和业务类在同一包下,此时可以测试了。
5.为了更清楚,附件截图为SAP登陆账号,以及函数的一些截图,希望对初次接触的人有所帮助。
- 大小: 23.9 KB
- 大小: 39.5 KB
- 大小: 51.8 KB
- 大小: 35.8 KB
- 大小: 43.7 KB
- 大小: 90.8 KB
分享到:
相关推荐
JCO调用SAP包是实现这一通信的关键部分。下面将详细介绍JCO调用SAP的相关知识点。 1. JCO架构: JCO架构基于ABAP(Advanced Business Application Programming)和Java之间的互操作性。它包含三个主要组件:客户端...
总结,SAP jar包在Eclipse中Java使用JCO调用SAP中的RFC函数涉及到的知识点包括:SAP JCO接口、Eclipse项目配置、SAP系统连接、RFC函数调用、参数传递以及错误处理。通过这种方式,开发者可以利用Java的强大功能与SAP...
Java 使用JCO远程调用SAP RFC java 连接示例 JCO Linux 下安装详细步骤配置 JCO windows下安装详细步骤及配置 JCO linux windwos 所用到地包文件
使用 JCo 远程调用 SAP 系统函数 在本文中,我们将了解如何使用 Java 程序远程调用 ABAP 函数,使用 SAP 提供的 RFC 针对 Java 程序的 API——JCo。 首先,需要安装 JCo,安装过程中需要三个文件:librfc32.dll、...
以上就是使用JCo调用SAP端接口的基本流程。需要注意的是,为了确保兼容性和安全性,开发者需要根据SAP系统版本和操作系统选择正确的JCo版本。此外,SAP官方提供了详细的API文档和示例代码,可以帮助开发者更好地理解...
JCo库提供了可以直接在Java...该API通过JNI调用部署在客户端的SAP的RFC库。该RFC库是用C语言实现的,并且与JCo库 相互独立发布JCo组件的架构,配置,基本使用方法以及调试,如何对RFC方式调用的ABAP函数进行远程调试。
开发者可以通过这些API创建JCo连接,定义目的地(destination)信息,如系统ID、用户、密码和端口,然后通过这些目的地调用SAP的功能模块。 "2017/7/18"是这个版本的发布日期,这表明这是SAP在2017年7月18日提供的...
JCO提供了一种基于Java的接口,使得开发者可以调用SAP系统中的函数模块,就像它们是在本地程序中一样。这在跨系统集成、数据同步或自动化业务流程中非常有用。 在实施JCO连接SAP的过程中,你需要完成以下步骤: 1....
为了在Java应用程序中执行SAP RFC,我们需要定义一个`JCoFunction`对象,然后设置参数和表字段,最后通过`execute()`方法调用SAP函数模块。返回的结果可以是单个值,也可以是`JCoTable`对象,可以遍历其中的数据。 ...
SAP JCo是一个Java API,它提供了一组接口和类,使得开发人员能够创建 RFC 客户端,这些客户端可以调用SAP系统的模块,从而实现数据交换。SAP JCo支持两种主要的编程模型:同步和异步。同步模式下,调用SAP RFC后,...
`sapjco3.jar`是Java类库文件,包含了SAP JCo的所有Java源代码和资源,使得开发者可以在Java应用程序中调用SAP的功能。这个JAR文件提供了接口和类,如`SAPConnection`、`SAPFunction`和`SAPParameter`,让开发者能够...
3. RFC调用:通过SAP JCO3提供的API调用SAP系统中的RFC函数。 4. BAPI交互:理解和使用BAPI接口,实现业务逻辑的自动化。 5. IDoc处理:理解IDoc结构,创建和解析IDoc,实现数据交换。 6. 错误处理:编写适当的错误...
1. **远程方法调用(Remote Function Module Call, RFM)**:开发者可以使用SAP JCo调用SAP系统中的函数模块,就像调用本地Java方法一样,实现了Java和ABAP代码之间的无缝交互。 2. **数据转换**:SAP JCo提供了...
在Java中调用SAP RFC,通常需要使用JCo(Java Connector)库,这是SAP官方提供的Java API。JCo允许Java应用程序创建与SAP系统之间的连接,通过RFC接口进行交互。要使用JCo,你需要先在SAP系统中配置RFC目的地,然后...
这意味着需要在 SAP 系统中配置一个 RFC(Remote Function Call)目标,以便 Java 应用程序可以使用 JCO 连接器来调用 SAP 系统中的函数。 标签“JCO SAP connect Web”表明了该连接方式是使用 JCO 连接器将 Java ...
以下是一个完整的示例,演示了如何使用Java通过SAP JCo库调用ABAP函数模块,并处理导入与导出参数: ```java import com.sap.conn.jco.*; public class SAPFunctionCall { public static void main(String[] args...
RFC是一种标准的SAP通信机制,允许远程调用SAP系统的功能模块,就像它们是在本地调用一样。 在Linux环境下设置SAP JCO,你需要以下步骤: 1. 安装JDBC驱动:确保你的系统已经安装了Java Development Kit (JDK)。 2....
"sapjco zip JAVA调用SAP 所需要的资料"这个主题,涉及到的是使用Java通过JCO(Java Connector)来连接和通信SAP系统的核心组件。让我们详细探讨这些关键文件的作用以及如何使用它们。 首先,`sapjco3.dll`是SAP ...
1. **远程函数调用(RFC)**:JCo3允许Java应用通过RFC协议调用SAP系统中的ABAP函数模块。RFC是一种标准化的接口技术,使得外部系统可以像调用本地函数一样调用SAP的功能。 2. **BAPI调用**:BAPI(Business ...
`librfc32.dll`包含必要的函数调用,使得Java应用程序能够通过JCo调用SAP的ABAP函数模块。 其次,`sapjcorfc.dll`是SAP JCo的运行时库,它提供了Java和SAP RFC库之间的桥接。这个动态链接库文件负责将Java代码中的...