java调用sap接口_(二)通过JAVA调用SAP接口 (增加一二级参数)
/*** Created by gang.xu01@hand-china.com on 2018/12/4*/
public classMultiFromSAP {/*** description: 從sap獲取數據的工具類
*
* @date 2018/12/6 10:17 AM
*@authorgang.xu01@hand-china.com
*@paramsapConn sap連接
*@paraminterfaceName 接口名稱
*@paramfirstParamKey 一級參數key 用逗號分隔
*@paramfirstParamValue 一級參數value 用逗號分隔
*@paramsecondParamKey 二級參數key 用逗號分隔
*@paramsecondParamValue 二級參數value 用逗號分隔
*
*@returnList*/
public static ListgetSapData(SapConn sapConn, String interfaceName,
String firstParamKey, String firstParamValue,
String secondParamKey, String secondParamValue) {
List returnList = new ArrayList();
JCoFunction function;
JCoDestination destination=SAPConnUtils.connect(sapConn);
System.out.println("正在從SAP獲取數據");try{//調用interface函數
function =destination.getRepository().getFunction(interfaceName);//遍歷全部得到的table并處理
for(JCoField field : function.getTableParameterList()) {//按照需求可以整理出一條一條的數據以便插入數據庫
JCoTable responseTable =field.getTable();//一級參數
if("".equals(firstParamKey) || "".equals(firstParamValue)) {//不需要參數
}else{
String[] paramKeys= firstParamKey.split(",");
String[] paramValues= firstParamValue.split(",");for (int i = 0; i < paramKeys.length; i++) {
function.getImportParameterList().setValue(paramKeys[i],"null".equals(paramValues[i]) ? "": paramValues[i]);
}
}//二級參數
if("".equals(secondParamKey) || "".equals(secondParamValue)) {//不需要參數
}else{
responseTable.appendRow();
String[] paramKeys= secondParamKey.split(",");
String[] paramValues= secondParamValue.split(",");for (int i = 0; i < paramKeys.length; i++) {
responseTable.setValue(paramKeys[i],"null".equals(paramValues[i]) ? "": paramValues[i]);
}
}//調用函數得到返回結果(調用接口把值放到function中)
function.execute(destination);//獲取metaData(包含表的關鍵信息)
JCoRecordMetaData metaData =responseTable.getRecordMetaData();
SapData sapData= newSapData();
sapData.setFieldCount(metaData.getFieldCount());
String[] name= newString[sapData.getFieldCount()];
List> sapList = new ArrayList>();//獲取全部名稱
for (int j = 0; j < sapData.getFieldCount(); j++) {
name[j]=metaData.getName(j);
}
sapData.setFieldNames(name);//獲取全部數據
for (int i = 0; i < responseTable.getNumRows(); i++) {
responseTable.setRow(i);
Map sapMap = new HashMap();for(String fieldName : sapData.getFieldNames()) {
sapMap.put(fieldName, responseTable.getString (fieldName));
}
sapList.add(sapMap);
}
sapData.setData(sapList);
returnList.add(sapData);
}
}catch(Exception e) {
e.printStackTrace();return null;
}
System.out.println("獲取成功");returnreturnList;
}
}
總結
以上是生活随笔為你收集整理的java调用sap接口_(二)通过JAVA调用SAP接口 (增加一二级参数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7桌面图标的字体怎么变大 如何调整
- 下一篇: u盘提示位置不可用怎么解决 U盘无法使用