2013-04-22 38 views
0

我试图针对JCo对象实现一些Java模式(Facade和Iterator)。获取错误尝试使用java.util.iterator迭代JCoTable

在这里,我试图通过JCoTable创建一个Iterator,就像我在Java中的任何集合一样。以下是我的课堂片段。在MyClass中,我有一个执行迭代的内部类。

我使用table.getStructure(...)方法,但我错过了一些东西。我已经看到了一些使用元数据明确创建结构的片段,但说实话,这些代码并不存在于这些例子中,我在那里挣扎一点,担心我为另一个复杂性交易。

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

预先感谢您。

我的类:

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纪录= 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)  
+0

您能否指定您正在使用的JCo的哪个版本?版本2和版本3之间存在巨大的API差异,也许这就是为什么你会被各种不起作用的例子搞糊涂的原因。 – vwegert 2013-04-23 06:46:05

+0

@vwegert,我正在使用JCo 3.我认为是因为我使用了sapjco3.dll和sapjco3.jar。 – Davidson 2013-04-23 14:01:59

回答

1

假设你要遍历表中的行,我说你正在使用JCoTable.getStructure()格格不入。顾名思义,它需要当前选中记录的第n个字段,并尝试将其作为结构返回。这当然只有当这个单独的列是一个结构化列时才可能 - 如果它是一个单一的(原子)字段,那么我希望这个转换会失败,并带有您遇到的错误消息。

+0

我在进一步查看API后意识到,我真的不需要编写自己的Iterator ...关于JCoTable的方法对于.nextRow(),.firstRow()等是足够的... – Davidson 2013-04-23 20:51:43

+0

To be诚实的,我想知道为什么你试图重新发明轮子... ;-) – vwegert 2013-04-24 06:04:57

+0

有时候,事情不会马上点击​​我 - 老年,我想。我是这里的主要/独家开发人员,还有一些其他人,他们对Java很陌生但很渴望。所以,我试图简化接口。我们是一家新的SAP商店(1年)。我仍然自己学习RFC/JCo的东西。我欣赏被压抑的笑声! :) – Davidson 2013-04-24 15:27:39

相关问题