zoukankan      html  css  js  c++  java
  • JAVA 使用JCO3调用SAP RFC函数

    下载安装SAP JCO3依赖

    官方下载
    本站下载

    解压后找到 sapjco3.jar引入JAVA项目中;sapjco3.dll放到系统目录下

    实现DestinationDataProvider

    此Provider用以提供连接SAP目标的属性

    public class JCODestinationDataProvider implements DestinationDataProvider {
    	// 目标连接属性
    	Map<String, JCODestinationEntity> destMap = new HashMap<>();
    	
    	public JCODestinationDataProvider(Map<String, JCODestinationEntity> destMap) {
            this.destMap = destMap;
        }
        
        @Override
        public Properties getDestinationProperties(String destinationName) throws DataProviderException {
            JCODestinationEntity jcoDestinationEntity = destMap .get(destinationName);
            if (jcoDestinationEntity != null) {
                return toProperties(jcoDestinationEntity);
            }
            throw new DataProviderException(DataProviderException.Reason.INTERNAL_ERROR, "Destinantion is not avaliable: " + destinationName, null);
        }
    
        private Properties toProperties(JCODestinationEntity jcoDestinationEntity) {
            Properties connProps = new Properties();
            // 两种连接模式 消息服务器/应用服务器
            if (StringUtils.isNotBlank(jcoDestinationEntity.getMshost())) {
            	// 消息服务器地址
                connProps.setProperty(JCO_MSHOST, jcoDestinationEntity.getMshost());
                // 服务器组
                connProps.setProperty(JCO_GROUP, jcoDestinationEntity.getSgroup());
            } else {
            	// 应用服务器地址
                connProps.setProperty(JCO_ASHOST, jcoDestinationEntity.getAshost());
    
            }
            // R3名称
            connProps.setProperty(JCO_R3NAME, jcoDestinationEntity.getR3name());
            // 实例编号
            connProps.setProperty(JCO_SYSNR, jcoDestinationEntity.getSysnr());
            // 用户名
            connProps.setProperty(JCO_USER, jcoDestinationEntity.getSapUsername());
            // 密码
            connProps.setProperty(JCO_PASSWD, jcoDestinationEntity.getSapPassword());
            // 客户端
            connProps.setProperty(JCO_CLIENT, jcoDestinationEntity.getClient());
            // 语言
            connProps.setProperty(JCO_LANG, jcoDestinationEntity.getLang());
            // 最大活动连接数
            connProps.setProperty(JCO_PEAK_LIMIT, "10");
            // 最大空闲连接数
            connProps.setProperty(JCO_POOL_CAPACITY, "3");
            return connProps;
        }
    
        @Override
        public boolean supportsEvents() {
            return false;
        }
    
        @Override
        public void setDestinationDataEventListener(DestinationDataEventListener destinationDataEventListener) {
            throw new UnsupportedOperationException();
        }
    }
    

    注册DestinationDataProvider

    // 注册
    Environment.registerDestinationDataProvider(new JCODestinationDataProvider(
    	destMap // 传入目标属性配置数据
    ));
    

    调用RFC函数

    // 获取JCO目标
    JCoDestination jcoDestination = JCoDestinationManager.getDestination(destinationName);
    // 获取RFC函数
    JCoFunction jcoFunction = jcoDestination.getRepository().getFunction(functionName);
    // 获取传入参数接口,具体赋值方法变化较多可以参考JCO包中提供的官方API文档
    JCoParameterList pImlist= function.getImportParameterList();
    JCoParameterList pTmlist= function.getTableParameterList();
    JCoParameterList pCmlist= function.getChangingParameterList();
    // 调用RFC函数
    jcoFunction.execute(jcoDestination);
    // 获取返回结果接口,具体取值方法变化较多可以参考JCO包中提供的官方API文档
    JCoParameterList rEmlist= function.getExportParameterList();
    JCoParameterList rTmlist= function.getTableParameterList();
    JCoParameterList rCmlist= function.getChangingParameterList();
    
  • 相关阅读:
    第二章、开发环境部署
    第一章、数据分析介绍
    爬虫之Beautiful Soup
    爬虫之selenium
    使用Python连接Mongodb,对数据库进行操作
    Python练习实例002
    Python练习实例001
    Python入门练手100例
    Python
    剑指Offer-003:从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/luguojun/p/14294664.html
Copyright © 2011-2022 走看看