Вопрос
Данные от 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? Могу ли я итеративную колонну мудро? Спасибо :)
Решение
Вместо того, чтобы получать все поля записи таблицы и проверять их на полях, присутствующих в дисплеях, вы можете взять только поля записи, которые находятся в дисплеев. Следующий код предполагает, что отображение отображения представляет собой список строки
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
}
}
надеюсь это поможет,
С уважением,
Гийоз