Frage

Die Daten werden von SAP als JCO.Table zurückgegeben. Allerdings wollen wir nicht alle Spalten in der Ansicht angezeigt werden soll. Also, was wir getan haben, ist, dass wir eine Datei erstellt haben, genannt display.xml , die die JCO.Table Spalten angezeigt werden. Die display.xml wird auf eine Liste umgewandelt und jedes Feld wird überprüft, ob es in der Anzeigeliste befindet (siehe Code unten), die ab redundante aus der zweiten Reihe ist.

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.
           }
         }
    }

Was ist der bessere Weg, um die Felder in JCo zu filtern? Kann ich spaltenweise durchlaufen? Danke:)

War es hilfreich?

Lösung

Statt alle Felder der Tabelle Datensatz bekommen und sie gegen Felder in displayFields Überprüfung, können Sie nur die Felder des Datensatzes übernehmen, die in displayFields sind. Der folgende Code annehmen, dass displayFields ist eine Liste der String

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
   }
}

hoffe, das hilft,
Grüße, Guillaume

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top