gpt4 book ai didi

java - 如何修复 'JCO_ERROR_CONVERSION: Cannot convert a value from type java.lang.String to STRUCTURE'

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:22 31 4
gpt4 key购买 nike

我们在 SAP 系统中实现的功能之一无法正常工作。在 SAP 系统中,所有函数都正常工作并返回正确的值,但是,当在 Java JCo 中调用时,客户端需要一个结构而不是 String 或 int。

从参数中提取结构时,它会给出一个结构,该结构具有两个未命名的列,每个列都没有要填充的字节长度。

Metadata:
{[],[]}
0,0

我们在 SAP 系统中为输入参数“I_REZEPT”尝试了不同的数据类型,例如 int8 和 char12

private String sollwerte(JSONObject jsonin) throws JSONException, JCoException {
String id = String.valueOf(jsonin.getInt("rezeptid"));
JCoStructure in = input.getStructure("I_REZEPT");
System.out.println("Fieldcount:"+in.getFieldCount());
input.setValue("I_REZEPT", id);
e.printStackTrace();
function.execute(destination);
...

堆栈跟踪:

com.sap.conn.jco.ConversionException: (122) JCO_ERROR_CONVERSION: Cannot convert a value of '1' from type java.lang.String to STRUCTURE at field I_REZEPT
at com.sap.conn.jco.rt.AbstractRecord.createConversionException(AbstractRecord.java:436)
at com.sap.conn.jco.rt.AbstractRecord.createConversionException(AbstractRecord.java:430)
at com.sap.conn.jco.rt.AbstractRecord.setValue(AbstractRecord.java:2824)
at com.sap.conn.jco.rt.AbstractRecord.setValue(AbstractRecord.java:3933)
at edu.hsalbsig.intellifarm.connector.sap.IntellifarmSapFunction.sollwerte(IntellifarmSapFunction.java:226)
at edu.hsalbsig.intellifarm.connector.sap.IntellifarmSapFunction.execute(IntellifarmSapFunction.java:61)
at edu.hsalbsig.intellifarm.connector.mqtt.IntellifarmMqttClient.messageArrived(IntellifarmMqttClient.java:98)
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.deliverMessage(CommsCallback.java:513)
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.handleMessage(CommsCallback.java:416)
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.run(CommsCallback.java:213)
at java.base/java.lang.Thread.run(Thread.java:834)
<小时/>

在SAP系统中调试该功能时,它看起来像这样

Input:
|--------|
| PARAMETERS 'INPUT'
|--------|
|I_REZEPT|
|--------|
| |
|--------|
|I_REZEPT|
|--------|

预计是这样的

Input:
|------------------|
| PARAMETERS 'INPUT'
|------------------|
|I_REZEPT |
|------------------|
|012345678901234567|
|------------------|
| |
|------------------|

最佳答案

如果不知道 ABAP 端的函数接口(interface)定义,就很难在这里提供帮助。但是,如果 input.getStructure("I_REZEPT"); 有效,则此导入参数 I_REZEPT 似乎是结构。因此,您无法调用 input.setValue("I_REZEPT", (String)id); 并尝试为其设置字符串,这就是异常所显示的内容。 I_REZEPT 是一个 IMPORT 参数,并且是 STRUCTURE 类型,它不是 STRING 或 CHAR 类型参数。它包含各种其他字段 - 至少一个。

我想您可以调用 in.setValue(0, id); 来设置此结构的第一个字段,或者调用 in.setValue("FIELDNAME", id); 在结构中使用正确的字段名称。

关于java - 如何修复 'JCO_ERROR_CONVERSION: Cannot convert a value from type java.lang.String to STRUCTURE',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56468496/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com