我们在 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);
...
Stacktrace: com.sap.conn.jco.ConversionException: (122) JCO_ERROR_CONVERSION: 无法在 com.sap.conn.jco.rt.AbstractRecord 的字段 I_REZEPT 中将值“1”从 java.lang.String 类型转换为 STRUCTURE。 createConversionException(AbstractRecord.java:436) 在 com.sap.conn.jco.rt.AbstractRecord.createConversionException(AbstractRecord.java:430) 在 com.sap.conn.jco.rt.AbstractRecord.setValue(AbstractRecord.java:2824)在 com.sap.conn.jco.rt.AbstractRecord.setValue(AbstractRecord.java:3933) 在 edu.hsalbsig.intellifarm.connector.sap.IntellifarmSapFunction.sollwerte(IntellifarmSapFunction.java:226) 在 edu.hsalbsig.intellifarm.connector .sap.IntellifarmSapFunction.execute(IntellifarmSapFunction.java:61) at edu.hsalbsig.intellifarm.connector.mqtt.IntellifarmMqttClient.messageArrived(IntellifarmqttClient.java:98) 在 org.eclipse.paho.client.mqttv3.internal.CommsCallback.handleMessage(CommsCallback.java:416) 在 org.eclipse.paho.client.mqttv3.internal.CommsCallback.deliverMessage(CommsCallback.java:513) 在 org .eclipse.paho.client.mqttv3.internal.CommsCallback.run(CommsCallback.java:213) 在 java.base/java.lang.Thread.run(Thread.java:834)
虽然从 SAP 调试功能看起来像这样
Input:
|--------|
| PARAMETERS 'INPUT'
|--------|
|I_REZEPT|
|--------|
| |
|--------|
|I_REZEPT|
|--------|
预期是这样的
Input:
|------------------|
| PARAMETERS 'INPUT'
|------------------|
|I_REZEPT |
|------------------|
|012345678901234567|
|------------------|
| |
|------------------|