2013-04-22 41 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

相關問題