来自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中过滤字段的更好方法是什么?我可以迭代列吗?谢谢您:)
发布于 2010-05-06 12:36:27
与其获取表记录的所有字段并根据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
}
}希望这能帮上忙
致以敬意,
纪尧姆
https://stackoverflow.com/questions/2780439
复制相似问题