提问人:Ram 提问时间:4/5/2023 最后编辑:SuncatcherRam 更新时间:8/23/2023 访问量:122
为 S4 创建 JCoFunction 时出现未知类型
Unknown type when creating JCoFunction for S4
问:
我在为系统的 BAPI 创建对象时出现以下错误。但是,我能够为系统创建对象。JCoFunction
"SWNC_STATREC_READ_INSTANCE"
S/4HANA
R/3
java.lang.IllegalArgumentException: Unknown type -1 when trying to add field MESSAGE_ID to record [Ljava.lang.String;@42c4641f
at com.sap.conn.jco.rt.AbstractMetaData.add(AbstractMetaData.java:256)
at com.sap.conn.jco.rt.DefaultRecordMetaData.add(DefaultRecordMetaData.java:363)
at com.sap.conn.jco.rt.AbapRepository$DDICHelper.constructMetaData(AbapRepository.java:2889)
at com.sap.conn.jco.rt.AbapRepository$DDICHelper.constructMetaData(AbapRepository.java:2734)
at com.sap.conn.jco.rt.AbapRepository$DDICHelper.constructMetaData(AbapRepository.java:2824)
at com.sap.conn.jco.rt.AbapRepository$DDICHelper.queryRecordMetaData(AbapRepository.java:2421)
at com.sap.conn.jco.rt.AbapRepository.queryRecordMetaData(AbapRepository.java:1108)
at com.sap.conn.jco.rt.AbapRepository.queryRecordMetaData(AbapRepository.java:703)
at com.sap.conn.jco.rt.AbapRepository.getRecordMetaData(AbapRepository.java:929)
at com.sap.conn.jco.rt.AbapRepository$DDICHelper.queryFunctionTemplate(AbapRepository.java:2110)
at com.sap.conn.jco.rt.AbapRepository.queryFunctionTemplate(AbapRepository.java:1044)
at com.sap.conn.jco.rt.AbapRepository.queryFunctionTemplate(AbapRepository.java:623)
at com.sap.conn.jco.rt.AbapRepository.getFunctionTemplate(AbapRepository.java:885)
at com.sap.conn.jco.rt.BasicRepository.getFunction(BasicRepository.java:163)
at com.grc.riskanalysis.util.SAPUtil.getReportTypeTxns(SAPUtil.java:1201)
下面是用于创建对象的 Java 代码:JCoFunction
final JCoDestination destination = getDestination(sapSystemVO.getDestinationName().trim());
JCoFunction function = destination.getRepository().getFunction("SWNC_STATREC_READ_INSTANCE");
有没有其他方法可以为S/4HANA系统的BAPI创建对象?
用户在S/4HANA中创建对象需要任何额外的授权?JCoFunction
答:
3赞
3 revsSandra Rossi
#1
该问题与 R/3 或 S/4HANA 无关,而是与从 JCo 调用的启用 RFC 的函数模块的参数中使用“最新”ABAP 类型(int8、UTCLONG 等)有关,即,如果 JCo 程序的参数接口不引用最新的 ABAP 类型,则使用旧的 S/4HANA 版本,可以成功调用。SWNC_STATREC_READ_INSTANCE
解决方案:安装并使用最新的 JCo 库。
参考(取决于 JCo 版本):
- JCo 独立连接器
- 注释 2531996 - SAP Java 连接器版本 3.0.18 (int8)
- 备注 3143390 - SAP Java IDoc 库版本 3.1.2 (UTCLONG) (+ 更高版本的修复3276799 - SAP Java 连接器版本 3.1.7)
- NetWeaver AS Java 中的集成 JCo 3.x 库(版本 2.x 不支持 int8 和 UTCLONG))
编辑:参考了在trixx评论后编辑的关于不同JCo风格的注释。
评论
1赞
Ram
4/8/2023
谢谢。它与最新的JCO库一起使用。此最新版本要求在 Windows 服务器上安装 Visual Studio 2013 运行时库。
1赞
Trixx
4/17/2023
@Sandra:您的答案和解决方案是正确的,但请记住,列出的 SAP 注释仅指 NetWeaver AS Java 中的嵌入式 JCo 库。对于 JCo 独立连接器,SAP 会发布引用其软件组件“SAP JCO”的特定注释,例如注释 2531996。
1赞
Sandra Rossi
4/17/2023
@Trixx谢谢,我没有意识到。还添加了编辑的答案和其他参考资料,使其成为更好的答案。
0赞
Trixx
4/17/2023
@Sandra:你非常尽职尽责,值得你的高分。:)从 3.1.2 版开始,JCo 独立版添加了 utclong 支持(可以在 SDK 附带的 releasenotes.html 中看到)。但是,由于这是 JCo 3.1 的第一个 GA 版本,因此在这种特殊情况下,似乎不存在针对此补丁级别的特定 SAP 说明。
评论