SAP JCO connector 例子
生活随笔
收集整理的這篇文章主要介紹了
SAP JCO connector 例子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SAP JCO connector3與SAP 通過RFC的方式建立連接以及數據交互的例子。
步驟:
- 初始化連接用戶名,密碼,連接池等信息
sap-conig.properties文件:
#notes:更多配置項@see com.sap.conn.jco.ext.DestinationDataProvider #客戶端編號 jco.client.client=830 #用戶名 jco.client.user= #密碼 jco.client.passwd= #語言 jco.client.lang=ZH #IP jco.client.ashost= #系統編號 jco.client.sysnr=10 #最大空閑連接數 jco.destination.pool_capacity=1000 #超時 jco.destination.max_get_client_time=100 #最大活動連接數 jco.destination.peak_limit=1000SapJcoStore.java 初始化
/*** 初始化SAP連接* @param fdPoolName* @return* @throws Exception*/private static synchronized JCoDestination doInitialize(String fdPoolName)throws Exception {Properties sapConfig=new Properties();// Properties的配置項@see com.sap.conn.jco.ext.DestinationDataProviderInputStream is=SapJcoStore.class.getResourceAsStream("/com/test/share/sap/sap-config.properties");sapConfig.load(is); // 擴展參數,需要擴展參數的時候使用sapConfig.setProperty((String)DestinationDataProvider.class.getField("JCO_SAPROUTER").get(DestinationDataProvider.class),"/H/219.141.250.71/H/");createDataFile(fdPoolName, "jcoDestination", sapConfig);JCoDestination destination=getDestination(fdPoolName);return destination;}/*** 創建連接文件(必須)* @param name* @param suffix* @param properties*/private static void createDataFile(String name, String suffix, Properties properties) {File cfg = new File(name + "." + suffix);try {FileOutputStream fos = new FileOutputStream(cfg, false);properties.store(fos, "for connection");fos.close();} catch (Exception e) {throw new RuntimeException("Unable to create the destination file "+ cfg.getName(), e);}}- 建立連接池
- 通過連接池獲取BAPI傳輸對象JCOFunction
- 填充數據-->execute
填充數據有import 跟table 2種
/*** 填充數據,根據上面表格* 在SAP中間件其實也就是解析在填充數據這里加工很多配置,實現同理**/public static JCoFunction fillData(JCoFunction jcoFunc){JCoRecord record =jcoFunc.getImportParameterList();// 構造業務數據Map<String, Object> importData=new HashMap<String, Object>();importData.put("COMPANYCODE", "8880");importData.put("CUSTOMER", "0099000032");importData.put("KEYDATE", "20070830"); // 填充傳入值for(String key:importData.keySet()){Object value=importData.get(key);record.setValue(key, value);}// 上面構造數據只有傳入的參數數據,下面是傳入table的數據/*設置值JCoTable jcoTable= jcoFunc.getTableParameterList().getTable("");for(){// 增加一行數據,同時游標也只想了當前行jcoTable.appendRow(); // 設置當前行的某個列的值jcoTable.setValue("", "");jcoTable.setValue("", "");....}*/return jcoFunc;}execute
/**** @param poolName 連接池名稱* @param function 傳輸的帶數據JCoFunction對象* @return* @throws Exception*/public Object processSap(String poolName, JCoFunction function)throws Exception {doBefore();try {parsePostData(function);JCoFunction func = execFunc(function, poolName);Object rtn = parseRtnData(func);return rtn;} catch (Exception e) {doError(e);} finally {doAfter();}return null;}- 處理返回值 主要是遍歷,游標的處理
demo例子
https://github.com/tian-github/sapjco3_demo
總結
以上是生活随笔為你收集整理的SAP JCO connector 例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 取供应商客户的期初表
- 下一篇: SAP——102和122和161区别