Java连接RFC综合例子,Sap接口集成例子,java调用sap例子 java使用sapjco3处理RFC集成 sap快速二次开发 sap接口开发入门到精通

   一个完整详细的项目Demojava连接RFC综合例子,java调用sap例子,泛微E8,E9调用SAPRFC例子_泛微sap-Java文档类资源-CSDN下载

   最近使用java连接RFC,把这个例子保存,以后方便查看。

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.JCoFunction;
import com.sap.conn.jco.JCoParameterList;
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, "***.**.**.201");//服务器
		connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "**");        //系统编号
		connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "***");       //SAP集团
		//connectProperties.setProperty(DestinationDataProvider.JCO_SAPROUTER,"/H/**.**.**.**/H/"); //外网使用路由,VPN后不使用
		connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "****");      //SAP用户名
		connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "***");     //密码
		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(){
		System.out.println("正在连接至SAP...");
		JCoDestination destination =null;
		try {
			destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);
			destination.ping();
	        System.out.println("已成功建立sap的连接");
		} catch (JCoException e) {
			System.out.println("Connect SAP fault, error msg: " + e.toString());
		}
		return destination;
	}
	//private static Logger log = Logger.getLogger(SAPConn.class); // 初始化日志对象
	
	
	public static void main(String[] args) {
		JCoFunction function = null;
		JCoDestination destination = SAPConn.connect();
		String sum="";//求和
		try {
			//调用Z_WS_TEST函数
			function = destination.getRepository().getFunction("ZHRCN_IF_TIME_****");
			JCoParameterList input = function.getImportParameterList();
			//NUM1
			input.setValue("NUM1", "10");
			//NUM2
			input.setValue("NUM2", "8");
			
			function.execute(destination);
			sum= function.getExportParameterList().getString("NUM");//调用接口返回值 

			System.out.println("求和为:" + sum);
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

	
}

	    public void RFCRUN_0015(List<Map<String,Object>> list,Map<String, Object> pmap) {
	    	JCoFunction function = null;
			JCoDestination destination = SAPConn.connect();
			JCoTable T_ACCDOCUMENT =null;
			boolean check=false;
			
			for(int m=0;m<list.size();m++) {
	    		Map<String,Object> map=list.get(m);
	    		
				try {

					if(!check) {
						//调用Z_WS_TEST函数
						function = destination.getRepository().getFunction("ZHRCN_IF_***");					
						 //获取传table的参数TableParameterList,ImportParameterList可debug查看参数是否有值
			            //T_ACCDOCUMENT = function.getTableParameterList().getTable("IT_***"); 
						T_ACCDOCUMENT = function.getImportParameterList().getTable("IT_***");
			            check=true;
					}
						JSONObject json = new JSONObject();
		        		T_ACCDOCUMENT.appendRow();//增加一行  
		                for(Entry<String, Object> entry:map.entrySet()){  
		                	T_ACCDOCUMENT.setValue(entry.getKey(), entry.getValue());
		                	json.put(entry.getKey(),entry.getValue());
		                }
		                T_ACCDOCUMENT.setValue("BEGDA",pmap.get("dtbg").toString());//dtbg 
		                json.put("BEGDA", pmap.get("dtbg").toString());
		                logger.info(json.toString());
		            if((m+1)%500==0 || m==(list.size()-1)) {
		            	 check=false;
						function.execute(destination);
						
						String  RTYPE= function.getExportParameterList().getString("RTYPE");//调用接口返回值 
						String  RTMSG= function.getExportParameterList().getString("RTMSG");//调用接口返回值 
						logger.info(String.valueOf(m+1)+"----"+RTYPE+"----"+RTMSG);
						//获取返回的table两参数,TableParameterList、ExportParameterList,可debug查参数
						//JCoTable rsultTable = function.getTableParameterList().getTable("ET_P0015");
						JCoTable rsultTable = function.getExportParameterList().getTable("ET_P0015");
						boolean loopFlag = !rsultTable.isEmpty();  //判断 这张表中有木有数据 
						while(loopFlag){ //循环获取数据
							logger.info(rsultTable.getString("PERNR")+"__"+
							rsultTable.getString("BEGDA")+"__"+
							rsultTable.getString("LGART")+"__"+
							rsultTable.getString("BETRG")+"__"+
							rsultTable.getString("TYPE")+"__"+
							rsultTable.getString("MSG"));
							loopFlag = rsultTable.nextRow(); // 移动到下一行 
						}
		          }
					
				}catch (Exception e) {
					e.printStackTrace();
				}
				
			 }
	    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weijia3624

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值