參考:https://blog.csdn.net/wenfeifang/article/details/88675998
sap那需要傳遞兩個參數,返回結構
package com.shengquan.sapcode.util;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties;
import com.alibaba.fastjson.JSON;
import com.sap.conn.jco.*;
import com.sap.conn.jco.ext.DestinationDataProvider;
// 連接池
public class SapConnect {
static final String ABAP_AS_POOLED = "ABAP5_WITHOUT_POOL";//配置文件名
static final String ABAP_T = "ABAP5_WITHOUT_POOL";
static{
Properties connectProperties = new Properties();
//test
connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "");// IP
connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "");// 系統編號
connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, ""); // 客戶端編號
connectProperties.setProperty(DestinationDataProvider.JCO_USER, "");// 用戶名
connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "");// 密碼
connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "ZH");// 語言
createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties);
}
/* 創建連接池的配置文件 */
private static void createDataFile(String name, String suffix, Properties properties){
File cfg = new File(name+"."+suffix);
if(cfg.exists()){
cfg.deleteOnExit();
}
try{
FileOutputStream fos = new FileOutputStream(cfg, false);
properties.store(fos, "for tests only !");
fos.close();
}catch (Exception e){
System.out.println("Create Data file fault, error msg: " + e.toString());
throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
}
}
public static void main(String[] args) {
String bapiFunctionName = "WC_NM_ZJD";
JCoFunction function = null;
//JCoFunction是一個接口,代表SAP系統的函數庫
JCoDestination destination = null;
try {
//連接SAP,獲取一個連接對象
destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);
System.out.println("鏈接成功");
//獲取到SAP的函數
function = destination.getRepository().getFunction(bapiFunctionName);
System.out.println("function=="+function);
JCoParameterList input = function.getImportParameterList(); // 獲得函數的import參數列表
input.setValue("I_MONI","模擬數據");
input.setValue("I_MONE", "名稱");
function.execute(destination);
JCoParameterList output = function.getExportParameterList(); // 獲得Export變量列表。
JCoStructure jiegou=output.getStructure("E_NM");//獲取結構
System.out.println("變量=="+jiegou);
String bb=jiegou.getString("TYPE");//返回結構中的某一個字段
System.out.println("變量=="+bb);
} catch (JCoException e) {
System.out.println("鏈接失敗");
e.printStackTrace();
}
}
public static JCoDestination connect(){
JCoDestination destination =null;
try {
destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);
} catch (JCoException e) {
System.out.println("Connect SAP fault, error msg: " + e.toString());
}
return destination;
}
}