我正在尝试针对 JCo 对象实现一些 Java 模式(外观和迭代器)。
在这里,我试图在 JCoTable 上创建一个迭代器,就像我在 Java 中的任何集合一样。下面是我的课堂片段。在 MyClass 中,我有一个执行迭代的内部类。
我正在使用 table.getStructure(...) 方法,但缺少一些东西。我见过一些片段,他们使用元数据显式创建结构,但老实说,这些示例中没有代码,我在那里有点挣扎,担心我正在用一种复杂性换另一种。
我的目标是为其他 Java 程序员简化 SAP Bapi 调用和表处理。这是一个重构练习。我的返回变量在迭代器中不兼容。
先感谢您。
我的课:
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)