前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java連接SAP實例

Java連接SAP實例

作者头像
惨绿少年.
发布2021-02-24 14:21:34
7510
发布2021-02-24 14:21:34
举报
文章被收录于专栏:ABAP

用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");
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档