前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA 使用JCO3调用SAP RFC函数

JAVA 使用JCO3调用SAP RFC函数

作者头像
路过君
发布2020-11-12 11:05:32
1.8K0
发布2020-11-12 11:05:32
举报
文章被收录于专栏:路过君BLOG from CSDN

下载安装SAP JCO3依赖

官方下载 本站下载

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

实现DestinationDataProvider

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

代码语言:javascript
复制
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

代码语言:javascript
复制
// 注册
Environment.registerDestinationDataProvider(new JCODestinationDataProvider(
	destMap // 传入目标属性配置数据
));

调用RFC函数

代码语言:javascript
复制
// 获取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();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下载安装SAP JCO3依赖
  • 实现DestinationDataProvider
  • 注册DestinationDataProvider
  • 调用RFC函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档