JCo | Cómo recorrer la columna sabia
Pregunta
Los datos de SAP se devuelve como un JCo.Table. Sin embargo, no queremos que se muestren todas las columnas de la vista. Por lo tanto, lo que hemos hecho es que hemos creado un archivo llamado display.xml , que tiene las columnas JCO.Table a visualizar. La display.xml se convierte a una lista y cada campo se verifica si está presente en la lista de visualización (ver el código de abajo) que es redundante de segunda fila en adelante.
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.
}
}
}
¿Cuál es la mejor manera de filtrar los campos en JCo? ¿Puedo repetir la columna sabia? Gracias:)
Solución
En lugar de obtener todos los campos del registro de la tabla, y comprobando los campos presentes en displayFields, usted podría tomar solamente los campos del registro que están en displayFields. El siguiente código supongamos que displayFields es una lista de cadena
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
}
}
Espero que esta ayuda,
Saludos,
Guillaume