JCo | Как перебирать столбцы - PullRequest
1 голос
/ 06 мая 2010

Данные из SAP возвращаются в виде таблицы JCo.Table. Однако мы не хотим отображать ВСЕ столбцы в ПРОСМОТРЕ. Итак, мы создали файл с именем display.xml , в котором есть столбцы JCO.Table для отображения. display.xml преобразуется в список, и каждое поле проверяется, присутствует ли оно в списке отображения (см. Код ниже), который является избыточным со второй строки и далее.

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? Могу ли я перебрать столбцы с умом? Спасибо:)

1 Ответ

3 голосов
/ 06 мая 2010

Вместо того, чтобы получать все поля записи таблицы и сравнивать их с полями, присутствующими в 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
   }
}

надеюсь, это поможет,
С уважением,
Гийом

...