質問
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のフィールドをフィルタリングするより良い方法は何ですか?列を賢く繰り返すことはできますか?ありがとうございました :)
解決
テーブルレコードのすべてのフィールドを取得し、ディスプレイフィールドに存在するフィールドに対してそれらをチェックする代わりに、ディスプレイフィールドにあるレコードのフィールドのみを取得できます。次のコードは、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
}
}
お役に立てれば、
よろしく、
ギヨーム
所属していません StackOverflow