sap-基於jco2.x的簡單封裝

來源:互聯網
上載者:User

公司引入一套基於 java 的 bpm系統,同時需要和 sap  系統整合,為了方便調用 bapi ,將 jco 做了簡單的封裝:

package com.hs.commUtil;<br />import java.io.File;<br />import java.io.FileInputStream;<br />import java.io.InputStream;<br />import java.util.Properties;<br />import com.sap.mw.jco.IFunctionTemplate;<br />import com.sap.mw.jco.IMetaData;<br />import com.sap.mw.jco.JCO;<br />import com.sap.mw.jco.JCO.Client;<br />import com.sap.mw.jco.JCO.Function;<br />import com.sap.mw.jco.JCO.Repository;<br />import com.sap.mw.jco.JCO.Structure;<br />import com.sap.mw.jco.JCO.Table;</p><p>public class SapRfc<br />{<br />/**<br /> * 擷取一個SAP的串連,並處於串連狀態<br /> * @return<br /> */<br />public static Client createJcoConn()<br />{<br />Properties prop = new Properties();<br />try{<br />String currpath = new File("").getAbsolutePath()+"//plugs//SAP_HOST.jcoDestination";<br />InputStream in = new FileInputStream(new File(currpath));<br />if(in != null){<br />prop.load(in);<br />String ashost = prop.getProperty("jco.client.ashost");<br />String clientnr = prop.getProperty("jco.client.client");<br />String sysnr = prop.getProperty("jco.client.sysnr");<br />String user = prop.getProperty("jco.client.user");<br />String pwd = prop.getProperty("jco.client.passwd");<br />String lang = prop.getProperty("jco.client.lang");</p><p>//String poolCpt = prop.getProperty("jco.destination.pool_capacity");<br />//String pealLmt = prop.getProperty("jco.destination.peak_limit");</p><p>Client myConnection = JCO.createClient(clientnr,<br />user,<br />pwd,<br />lang,<br />ashost,<br />sysnr);<br />myConnection.connect();<br />return myConnection;<br />}<br />}catch(Exception e){<br />e.printStackTrace(System.err);<br />}<br />return null;</p><p>}</p><p>/***<br /> * 關閉指定的 SAP 串連<br /> * @param myConnection SAP 串連<br /> */<br />public static void closeJcoConn(Client myConnection)<br />{<br />if(myConnection != null && myConnection.isAlive())<br />{<br />myConnection.disconnect();<br />}<br />}</p><p>/***<br /> * 擷取SAP的對像倉庫<br /> * @param myConnection SAP串連<br /> * @return<br /> */<br />public static Repository getRepository(Client myConnection)<br />{<br />Repository repository = new Repository("", myConnection);<br />return repository;<br />}</p><p>/***<br /> * 擷取SAP的RFC函數(BAPI)<br /> * @param funName<br /> * @param myConnection<br /> * @return<br /> */<br />public static Function getFunction(String funName,Client myConnection)<br />{<br />Repository myRepository = getRepository(myConnection);<br />return getFunction(funName, myRepository);<br />}</p><p>/**<br /> * 擷取SAP的RFC函數(BAPI)<br /> * @param funName<br /> * @param myRepository<br /> * @return<br /> */<br />public static Function getFunction(String funName,Repository myRepository)<br />{<br />IFunctionTemplate template = myRepository.getFunctionTemplate(funName.toUpperCase());<br />if (template != null)<br />{<br />Function fun = template.getFunction();<br />return fun;<br />}<br />return null;<br />}</p><p>/**<br /> * 擷取SAP的結構<br /> * @param structureName<br /> * @param myRepository<br /> * @return<br /> */<br />public static Structure getGeneralStructure(String structureName,Repository myRepository)<br />{<br />IMetaData structureDefinition = myRepository.getStructureDefinition(structureName.toUpperCase());<br />if (structureDefinition!=null)<br />{<br />Structure myStructure = JCO.createStructure(structureDefinition);<br />return myStructure;<br />}<br />return null;<br />}</p><p>/***<br /> * 擷取SAP的結構<br /> * @param structureName<br /> * @param myConnection<br /> * @return<br /> */<br />public static Structure getGeneralStructure(String structureName,Client myConnection)<br />{<br />Repository myRepository = getRepository(myConnection);<br />return getGeneralStructure(structureName,myRepository);<br />}</p><p>/***<br /> * 擷取SAP的表<br /> * @param tableName<br /> * @param myRepository<br /> * @return<br /> */<br />public static Table getGeneralTable(String tableName,Repository myRepository)<br />{<br />IMetaData tableDefinition = myRepository.getTableDefinition(tableName.toUpperCase());<br />if (tableDefinition!=null)<br />{<br />Table myTable = JCO.createTable(tableDefinition);<br />return myTable;<br />}<br />return null;<br />}</p><p>/***<br /> * 擷取SAP的表<br /> * @param tableName<br /> * @param myConnection<br /> * @return<br /> */<br />public static Table getGeneralTable(String tableName,Client myConnection)<br />{<br />Repository myRepository = getRepository(myConnection);<br />return getGeneralTable(tableName,myRepository);<br />}</p><p>/***<br /> * 提交在這個串連上的操作<br /> * @param myConnection<br /> */<br />public static void commit(Client myConnection)<br />{<br />Function fun = getFunction("BAPI_TRANSACTION_COMMIT", myConnection);<br />if (fun!=null)<br />{<br />myConnection.execute(fun);<br />}<br />}</p><p>/***<br /> * 復原在這個串連上的操作<br /> * @param myConnection<br /> */<br />public static void rollback(Client myConnection)<br />{<br />Function fun = getFunction("BAPI_TRANSACTION_ROLLBACK", myConnection);<br />if (fun!=null)<br />{<br />myConnection.execute(fun);<br />}<br />}</p><p>}<br />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.