JCO | كيفية تكرار العمود الحكيم
سؤال
يتم إرجاع البيانات من 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