gpt4 book ai didi

java - 尝试使用 java.util.iterator 迭代 JCoTable 时出现错误

转载 作者:行者123 更新时间:2023-12-01 14:39:13 26 4
gpt4 key购买 nike

我正在尝试针对 JCo 对象实现一些 Java 模式(Facade 和 Iterator)。

在这里,我尝试在 JCoTable 上创建一个迭代器,就像在 Java 中创建任何集合一样。下面是我的类片段。在 MyClass 中,我有一个执行迭代的内部类。

我正在使用table.getStructure(...)方法,但缺少一些东西。我见过一些片段,其中他们使用元数据显式创建结构,但老实说,这些示例中没有代码,我在那里有点挣扎,担心我正在用一种复杂性换取另一种复杂性。

我的目标是为其他 Java 程序员简化 SAP BAPI 调用和表处理。这是一个重构练习。我的返回变量在迭代器中不兼容。

提前谢谢您。

我的类(class):

class MyClass 
...
protected JCoTable table;
...

private class JCoTableIterator implements Iterator<JCoRecord> {

public boolean hasNext() {
return table.getRow() < table.getNumRows();
}
@Override
public JCoRecord next() {
return table.getStructure(table.getRow() + 1);
}
@Override
public void remove() {
table.deleteRow();
}
}

我的实现:

Iterator<JCoRecord> it = table.iterator();
while(it.hasNext()) {
JCoRecord record = it.next(); <<<<< *Exception
logger.info(record.getString("WERKS"));
... other field procesing ...
}

但是在 JCoRecord record = it.next() 行上,我收到以下错误。

com.sap.conn.jco.ConversionException: (122) JCO_ERROR_CONVERSION: Cannot convert 
field VBELN of type CHAR to StructureRecord
at com.sap.conn.jco.rt.AbstractRecord.createConversionException(AbstractRecord.java:415)
at com.sap.conn.jco.rt.AbstractRecord.createConversionException(AbstractRecord.java:410)
at com.sap.conn.jco.rt.AbstractRecord.getStructure(AbstractRecord.java:2472)

最佳答案

假设您想要迭代表的行,我会说您使用了 JCoTable.getStructure() 。顾名思义,它获取当前所选记录的第 n 个字段并尝试将其作为结构返回。当然,只有当该单个列是结构化列时,这才是可能的 - 如果它是单个(原子)字段,那么我预计此转换会失败,并显示您遇到的错误消息。

关于java - 尝试使用 java.util.iterator 迭代 JCoTable 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157145/

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