Java通过JCo连接SAP的ABAP

所需jar包附件放在前面 Java用JCO连接SAP.zip

1、将librfc32.dll、sapjcorfc.dll、sapjco3.dll文件复制到C:\Windows\System32目录下;

测试是否成功:

        a、将sapjco3.jar放在C盘根目录下;

        b、打开cmd命令输入java -jar C:/sapjco3.jar或者java -cp C:/sapjco3.jar com.sap.conn.jco.rt.About

        c、出现下图中所示即为成功

0

2、新建web项目将sapidoc3.jar、sapidocjco.jar、sapjco3.jar导入lib中

3、类SAPConn.java代码如下:

import java.io.File;
import java.io.FileOutputStream;
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.ext.DestinationDataProvider;

public class SAPConn {
	private static final String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL";  
    static{  
        Properties connectProperties = new Properties();  
        //服务器 
        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "10.10.1.66"); 
 	    //系统编号  
        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "02");       
        //SAP集团  
        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "150");       
        //SAP用户名  
        connectProperties.setProperty(DestinationDataProvider.JCO_USER, "00000001");  
        //密码  
        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "123456");     
        //登录语言  
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "zh");        
        //最大连接数   
        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");  
        //最大连接线程  
        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");     
        createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties);  
    }  
    /** 
     * 创建SAP接口属性文件。 
     * @param name  ABAP管道名称 
     * @param suffix    属性文件后缀 
     * @param properties    属性文件内容 
     */  
    private static void createDataFile(String name, String suffix, Properties properties){  
        File cfg = new File(name+"."+suffix);  
        if(cfg.exists()){  
            cfg.deleteOnExit();  
        }  
        try{  
            FileOutputStream fos = new FileOutputStream(cfg, false);  
            properties.store(fos, "for tests only !");  
            fos.close();  
        }catch (Exception e){  
        	System.out.println("Create Data file fault, error msg: " + e.toString());  
            throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);  
        }  
    }  
    /** 
     * 获取SAP连接 
     * @return  SAP连接对象 
     */  
    public static JCoDestination connect(){  
        JCoDestination destination =null;  
        try {  
            destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);  
        } catch (JCoException e) {  
            System.out.println("Connect SAP fault, error msg: " + e.toString());  
        }  
        return destination;  
    }
}  

类Function.java代码如下:
import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoParameterList;

public class Function {
	public static String getMonthLastday(){
		String data="";  
	    JCoFunction function = null;  
	    //连接sap,其实就类似于连接数据库  
	    JCoDestination destination = SAPConn.connect();
		 try {  
			 //调用函数  (该函数必须具有远程调用权限)
			 function = destination.getRepository().getFunction("ZBDC_TEST");  
	         //获取参数  
	         //JCoParameterList input = function.getImportParameterList();
			 //给参数赋值
	         //input.setValue( "I_DATE","20160725",);
			 //连接SAP执行function
	         function.execute(destination);  
	         //获取执行结果
	         JCoParameterList output = function.getExportParameterList();
	         //从结果集中取出结果
	         data = output.getString("SUBRC");
		 } catch (JCoException e) {  
	         	e.printStackTrace();  
	     }   
		 return data;  
	}
	
	public static void main(String[] args) {
		System.out.println(getMonthLastday());
	}
}

最初分享时间: 2016.08.04

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值