(⼀)通过JAVA连接SAP(sapjco3.jar在Windows和MacOS上的配
置)
(⼀)通过JAVA连接SAP调⽤接⼝ (sapjco3.jar在Windows和MacOS上的配置)
⼀、sapjoc3.jar获取
由于sap官⽹提供的链接需要合作公司提供账号密码,如果商⽤请索要正确的⽤户名密码下载,如果只是想做测试使⽤,可以使⽤我这⾥提供的链接,资源失效请及时提醒我,谢谢
密码:1u0t
密码:7zuv
密码:lafl
⼆、测试项⽬环境准备
1. 新建项⽬
这个就不多谈了,直接上图,我这⾥新建了⼀个空的测试项⽬,新建lib⽂件夹,准备把需要⽤到的jar包丢进来
2. windows和macOS环境配置
1. windows
直接把 sapjco3.jar sapjco3.dll sapjco3.pdb 拷贝⾄lib下,然后add library把他们都添加进去
2. macOS
把 sapjco3.jar 和 libsapjco3.jnilib 拷贝⾄lib下,同样add libray添加进去,这⾥只需要add sapjco3.jar 即可。
WARNING: 这⾥很多博客讲到需要添加classpath在变量⾥⾯,这是参照了官⽅提供的安装⽅式,这⾥的话我们只需要将上述⽂件拷贝⾄lib⽂件夹下即可。
三、源码编写及测试
⾸先编写⽤来放置sap连接信息的SapConn实体类
SapConn
/**
* Created by gang. on 2018/12/6
*/
public class SapConn {
// SAP服务器
private String JCO_ASHOST;
麦克杰克逊的歌// SAP系统编号
private String JCO_SYSNR;
// SAP集团
private String JCO_CLIENT;
// SAP⽤户名
private String JCO_USER;
cre
// SAP密码
massmutualprivate String JCO_PASSWD;
// SAP登录语⾔
private String JCO_LANG;
// 最⼤连接数
private String JCO_POOL_CAPACITY;
/
/ 最⼤连接线程
private String JCO_PEAK_LIMIT;
// SAP ROUTER
private String JCO_SAPROUTER;
public SapConn(String JCO_ASHOST, String JCO_SYSNR, String JCO_CLIENT, String JCO_USER,
String JCO_PASSWD, String JCO_LANG, String JCO_POOL_CAPACITY, String JCO_PEAK_LIMIT,
String JCO_SAPROUTER) {
this.JCO_ASHOST = JCO_ASHOST;
this.JCO_SYSNR = JCO_SYSNR;
this.JCO_CLIENT = JCO_CLIENT;
this.JCO_USER = JCO_USER;
this.JCO_PASSWD = JCO_PASSWD;
this.JCO_LANG = JCO_LANG;
this.JCO_POOL_CAPACITY = JCO_POOL_CAPACITY;
this.JCO_PEAK_LIMIT = JCO_PEAK_LIMIT;
this.JCO_SAPROUTER = JCO_SAPROUTER;
}sppc
public SapConn() {}
public String getJCO_ASHOST() {
return JCO_ASHOST;
}
public void tJCO_ASHOST(String JCO_ASHOST) {
this.JCO_ASHOST = JCO_ASHOST;
}
public String getJCO_SYSNR() {
return JCO_SYSNR;
}
public void tJCO_SYSNR(String JCO_SYSNR) {
this.JCO_SYSNR = JCO_SYSNR;
}
public String getJCO_CLIENT() {
return JCO_CLIENT;
}
public void tJCO_CLIENT(String JCO_CLIENT) {
this.JCO_CLIENT = JCO_CLIENT;
}
public String getJCO_USER() {
return JCO_USER;
}
public void tJCO_USER(String JCO_USER) {
this.JCO_USER = JCO_USER;
}
public String getJCO_PASSWD() {
return JCO_PASSWD;
}
public void tJCO_PASSWD(String JCO_PASSWD) {
this.JCO_PASSWD = JCO_PASSWD;
}
public String getJCO_LANG() {
return JCO_LANG;
}
public void tJCO_LANG(String JCO_LANG) {
this.JCO_LANG = JCO_LANG;
}
public String getJCO_POOL_CAPACITY() {
return JCO_POOL_CAPACITY;
}
public void tJCO_POOL_CAPACITY(String JCO_POOL_CAPACITY) {
this.JCO_POOL_CAPACITY = JCO_POOL_CAPACITY;
}
public String getJCO_PEAK_LIMIT() {
return JCO_PEAK_LIMIT;
}
public void tJCO_PEAK_LIMIT(String JCO_PEAK_LIMIT) {
this.JCO_PEAK_LIMIT = JCO_PEAK_LIMIT;
}
public String getJCO_SAPROUTER() {
return JCO_SAPROUTER;
}
public void tJCO_SAPROUTER(String JCO_SAPROUTER) {
this.JCO_SAPROUTER = JCO_SAPROUTER;
}
@Override
public String toString() {
return "SapConn{" +
"JCO_ASHOST='" + JCO_ASHOST + '\'' +
", JCO_SYSNR='" + JCO_SYSNR + '\'' +
", JCO_CLIENT='" + JCO_CLIENT + '\'' +
", JCO_USER='" + JCO_USER + '\'' +
", JCO_PASSWD='" + JCO_PASSWD + '\'' +
", JCO_LANG='" + JCO_LANG + '\'' +
", JCO_POOL_CAPACITY='" + JCO_POOL_CAPACITY + '\'' +
", JCO_PEAK_LIMIT='" + JCO_PEAK_LIMIT + '\'' +
", JCO_SAPROUTER='" + JCO_SAPROUTER + '\'' +
'}';destiny 爱情公寓
}
}
然后编写⽤来建⽴sap连接的SapConn作为连接类
编写连接类SAPConnUtils 下⾯是源码
/**
* Created by gang. on 2018/12/4
*/
public class SAPConnUtils {
private static final String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL";
/**
* 创建SAP接⼝属性⽂件。
* @param name ABAP管道名称
* @param suffix 属性⽂件后缀
* @param properties 属性⽂件内容
*/
private static void createDataFile(String name, String suffix, Properties properties){
File cfg = new File(name+"."+suffix);
ists()){
cfg.deleteOnExit();walk
}动漫培训
try{
ruoyuFileOutputStream fos = new FileOutputStream(cfg, fal);
properties.store(fos, "for tests only !");
fos.clo();
}catch (Exception e){
System.out.println("Create Data file fault, error msg: " + e.toString());
throw new RuntimeException("Unable to create the destination file " + Name(), e); }
}
/**
* 初始化SAP连接
*/
private static void initProperties(SapConn sapConn) {
Properties connectProperties = new Properties();
// SAP服务器
connectProperties.tProperty(DestinationDataProvider.JCO_ASHOST, JCO_ASHOST());
// SAP系统编号
connectProperties.tProperty(DestinationDataProvider.JCO_SYSNR, JCO_SYSNR());
// SAP集团
connectProperties.tProperty(DestinationDataProvider.JCO_CLIENT, JCO_CLIENT());
// SAP⽤户名
connectProperties.tProperty(DestinationDataProvider.JCO_USER, JCO_USER());
// SAP密码
connectProperties.tProperty(DestinationDataProvider.JCO_PASSWD, JCO_PASSWD());
// SAP登录语⾔
connectProperties.tProperty(DestinationDataProvider.JCO_LANG, JCO_LANG());
// 最⼤连接数
connectProperties.tProperty(DestinationDataProvider.JCO_POOL_CAPACITY, JCO_POOL_CAPACITY());
// 最⼤连接线程
connectProperties.tProperty(DestinationDataProvider.JCO_PEAK_LIMIT, JCO_PEAK_LIMIT());
// SAP ROUTER
connectProperties.tProperty(DestinationDataProvider.JCO_SAPROUTER, JCO_SAPROUTER());
createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties);
}
/**
* 获取SAP连接
clot什么意思
* @return SAP连接对象
*/
public static JCoDestination connect(SapConn sapConn){
System.out.println("正在连接⾄");
JCoDestination destination = null;
initProperties(sapConn);
try {
destination = Destination(ABAP_AS_POOLED);
destination.ping();
System.out.println("已成功建⽴sap的连接");
} catch (JCoException e) {
System.out.println("Connect SAP fault, error msg: " + e.toString());
}
return destination;
}
}
接下来编写⼀个简单的测试类test
/**
* Created by gang. on 2018/12/9
*/
public class testCon {
public static void main(String[] args) {
SapConn con = new SapConn(
"127.0.0.1",
"123",
"456",doctor
"abc",
"abc",
"abc",
"123",
"321",
"123456"
);
/
/ 测试连接
}
}
如果出现如下结果表明连接失败,请检查连接类。
此时如果调⽤结果如下则表明建⽴连接成功。