2010-05-06 2 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

Смежные вопросы