Java連接SAP實例

2021-02-24 14:21:34 浏览数 (1)

用eclipse時,先導入sapjco3.jar進去。 如果沒有sapjco3包,可以https://download.csdn.net/download/qq_44861248/12696839下載,32位64位都有,并附有詳細操作說明。

代码语言:javascript复制
package testsap;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoDestinationManager;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoParameterList;
import com.sap.conn.jco.JCoRepository;
import com.sap.conn.jco.JCoTable;
import com.sap.conn.jco.ext.DestinationDataProvider;


public class test
{
	static String ABAP_AS_POOLED = "ABAP_AS_POOL";
    static
    {
        Properties connectProperties = new Properties();
        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST,"服務器Ip");
        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "連接的Client");  
        connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "Username");  
        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "Password");  
        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "事例號碼");
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "語言");
        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,    "10");
        createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties);
       
    }
    
	static void createDataFile(String name, String suffix, Properties properties) {
        File cfg = new File(name   "."   suffix);
        if (!cfg.exists()) {
            try {
                FileOutputStream fos = new FileOutputStream(cfg, false);
                properties.store(fos, "for tests only !");
                fos.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
	}
	private void writeArrayToTxt(JCoTable demands, String string) {
        try {
            FileWriter fw = new FileWriter(string);
            for (int i = 0; i < 1; i  ) {
                for (int j = 0; j < 1; j  )
                    fw.write(demands  "t");
                fw.write("n");
            }
            fw.close();
        }
        catch (IOException e){
            e.printStackTrace();
        } 
	
}	
	public static void RFC() throws JCoException {
		String RFCName = "調用的RFC";
		JCoDestination destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);
		JCoRepository repository = destination.getRepository();
		JCoFunction function = repository.getFunction(RFCName); 
		JCoParameterList input = function.getImportParameterList(); 
        input.setValue("要傳的參數", "參數值");	
        JCoStructure structure = input.getStructure("STRUTURENAME");//傳結構體類的參數
		structure.setValue("field1","value1");
		structure.setValue("field2", "value2");
        JCoTable tb_list = function.getTableParameterList().getTable("傳表");
        tb_list.appendRow();
        tb_list.setValue("表中列名","第一行的值");      
        function.execute(destination);
        JCoParameterList exportParams = function.getExportParameterList();//獲取返回的參數值
        String msg = exportParams.getString("參數1");
        
        JCoStructure returnStructure = exportParams.getStructure("STRUCTURE");//獲取返回的結構體的值
        String str1 = returnStructure.getString("字段1");
        String str2 = returnStructure.getString("字段2");
        
        JCoTable codes = function.getTableParameterList().getTable("返回的輸出表");
		//控制台輸出返回內容
        for (int i = 0; i < codes.getNumRows(); i  ) 
        {
            codes.setRow(i);
            System.out.println(codes.getString("輸出表的列名") 
            		't'   codes.getString("輸出表的列名"));    
            		 
        }
        //保存為txt文檔
        test wa = new test();
		wa.writeArrayToTxt(codes, "my.txt");
	}        
	public static void main(String[] args) throws JCoException  {
		
		RFC();
		
		   
	}
}	

上面的是單個服務器連接,群組服務器連接,換一下參數就行,下面是群組連接參數:

代码语言:javascript复制
connectProperties.setProperty(DestinationDataProvider.JCO_R3NAME,"系統ID");
		connectProperties.setProperty(DestinationDataProvider.JCO_GROUP,"群組名");
		connectProperties.setProperty(DestinationDataProvider.JCO_MSHOST,"服務器IP");
		connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT,"client");
		connectProperties.setProperty(DestinationDataProvider.JCO_USER,"username");
		connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD,"password");
		connectProperties.setProperty(DestinationDataProvider.JCO_LANG,"EN");
		connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,"10");
		connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");

0 人点赞