![](/img/trans.png)
[英]How to fix "Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject" error in Android?
[英]How to fix 'JCO_ERROR_CONVERSION: Cannot convert a value from type java.lang.String to STRUCTURE'
我們在SAP中實現的功能之一無法正常運行。 在SAP中,所有函數都可以正常工作並返回正確的值,但是,在Java JCo中調用時,客戶端需要的是結構而不是字符串或整數。 從Parameter中提取結構時,它會提供一個結構,該結構具有兩個未命名的列,每個列均不填充字節長度。
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。 com.sap.conn.jco.rt.AbstractRecord.createConversionException(AbstractRecord.java:436)com.sap.conn.jco.rt.AbstractRecord.setValue(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 org.eclipse.paho.client.mqttv3.internal.edu.hsalbsig.intellifarm.connector.mqtt.IntellifarmMqttClient.messageArrived(IntellifarmMqttClient.java:98)上的.sap.IntellifarmSapFunction.execute(IntellifarmSapFunction.java:61)。 (CommsCallback.java:513),位於org.eclipse.paho.client.mqttv3.internal.CommsCallback.handleMessage(CommsCallback.java: 416),位於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|
|------------------|
| |
|------------------|
如果不從ABAP方面了解您的功能接口定義,那么在這里很難提供幫助。 但是如果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);
在結構中使用正確的字段名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.