克米亚sap论坛,最好的sap论坛,sap系统,sap培训,kemiya,克米亚,sap账号,sap ides,sap mm,sap hana,sap fico,sap pp

 找回密码
 注册
查看: 25|回复: 0

SpringBoot项目接入Jco调用SAP接口遇到的问题

[复制链接]
kmy 发表于 2021-4-7 16:47:07 | 显示全部楼层 |阅读模式
1.1 It is not allowed to rename or repackage the original archive "sapjco3.jar".
由于jar包是下载到本地的,所以将 jar包添加到本地仓库。再在项目中引用。
maven命令:
mvn install:install-file -Dfile=D:\sapjco3.jar -DgroupId=sapjco3 -D artifactId=sapjco3 -Dversion=1.0 -Dpackaging=jarpom.xml中添加引用
        <!--sap jco-->        <dependency>            <groupId>sapjco3</groupId>             <artifactId>sapjco3</artifactId>             <version>IDE</version>        </dependency>项目打包时,会生成sapjco3-IDE.jar包,这个包名会引发Jco的异常。
Illegal JCo archive "sapjco3-IDE.jar". It is not allowed to rename or repackage the original archive "sapjco3.jar".项目打包后,需要手动将项目包中的sapjco3-IDE.jar重命名为sapjco3.jar,然后重新启动项目即可。
1.2更新解决办法:
1.将sapjco3.jar安装到本地maven仓库与服务器中。
2.项目中使用本地仓库的引用
3.在pom文件中配置,在项目打包时,过滤sapjco3.jar,不将其打包到最后的包中4.把sapjco3.jar拷贝到服务器上,更新服务器的环境变量,classPath中添加sapjco3.jar5.正常启动项目即可。
优点:一劳永逸,不需要每次更新包时,去手动修改包名;缺点:一劳;
2.DestinationDataProvider already registered
注册过DestinationDataProvider后,使用结束,需要手动释放,否则再次调用方法会报异常。
void test(){    try{        ···        Environment.registerDestinationDataProvider(myDataProvider);                ···    }catch(Exception ex){        log.info(ex.getMessage());    }finally{        Environment.unregisterDestinationDataProvider(myDataProvider);    }}
3.call function
方法调用操作顺序: 1.设置入参 -> 2.执行方法 -> 3.获取返回结果
JCoFunction function =  destination.getRepository().getFunction("your function name");0.数据类型sap数据类型一共有三种
字段 / 结构(Structure) / 表(Table)1.入参在调用function之前,可以修改function的入参。
// 字段类型的入参JCoParameterList inputParameterList = function.getImportParameterList();inputParameterList.setValue("param_name","value");// table类型的入参JCoParameterList tableParameterList = function.getTableParameterList();JCoTable jCoTable = tableParameterList.getTable("table_param_name");jCoTable.appendRow(); // 添加行jCoTable.setValue("columnName", "value");// 执行方法function.execute(destination);···2.出参···// 执行方法function.execute(destination);// 字段类型的出参String feildResult = function.getExportParameterList().getString("fieldName");// table类型的出餐JCoTable result_table = function.getTableParameterList().getTable("result_table_name");for (int i = 0; i < result_table.getNumRows(); i++, result_table.nextRow()) {    result_table.setRow(i); // 打开行数据    result_table.getString("columnName"); // 获取对应列的值    ···}console.log("talk is cheap, show me you code.")

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|克米亚sap论坛,sap账号,sap系统,sap ides,sap学习机,sap练习环境 ( 重庆瑞瑞宝科技有限公司 渝ICP备18002525号-10 )

GMT+8, 2021-4-19 16:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表