2010-05-06 25 views
1

來自SAP的數據作爲JCo.Table返回。 但是,我們不希望顯示VIEW中的所有列。 因此,我們所做的是,我們創建了一個名爲display.xml的文件,它具有要顯示的JCO.Table列。 display.xml被轉換爲列表並且每個字段被驗證,如果其在顯示列表中存在(參見下面的代碼),其從第二行開始是冗餘的。JCo |如何迭代列明智

final Table outputTable = jcoFunction.getTableParameterList(). 
        getTable("OUTPUT_TABLE"); 
    final int numRows = outputTable.getNumRows(); 
    for (int i = 0; i < numRows; i++) {   
     final FieldIterator fields = outputTable.fields(); 
     while (fields.hasNextFields()) { 
      final JCO.Field recordField = fields.nextField(); 
      final String sapFieldName = recordField.getName(); 
      final DisplayFieldDto key = new DisplayFieldDto(sapFieldName); 
      if (displayFields.contains(key)) { 
       System.out.println("recordField.getName() = " 
          + recordField.getName()); 
       final String sapFieldName = (String)recordField.getValue();  
      } else { 
      // ignore the field. 
      } 
     } 
    } 

什麼是更好的方式來過濾JCo中的字段? 我可以迭代列明智嗎? 謝謝:)

回答

3

而不是獲取表記錄的所有字段,並根據displayFields中存在的字段檢查它們,您可以只採取displayFields中記錄的字段。 下面的代碼假設displayFields是字符串

的列表
for (int i = 0; i < ouputTable.getNumRows(); i++) { 
    outputTable.setRow(i); 
    Iterator it = displayField.iterator(); 
    // get fields of current record 
    while(it.hasNext()){ 
     String fieldName = (String)it.next(); 
     String value = outputTable.getString(fieldName); 
     // do what you need to do with the field and value 
    } 
} 

希望這有助於
問候,
紀堯姆

+0

謝謝。它確實幫了我。 – HanuAthena 2010-05-06 14:19:35