public T GetStruct(IRfcConnection connection, List <string> whereClause = null, bool getUnsafeFields = false, string delimiter = "|", string noData = "") { CreateFunction(connection, ReadTableFunctionName); List <string> tableFields = GetTableFields(typeof(T), getUnsafeFields); var tableName = GetTableName <T>(); var inputParameters = new RfcReadTableInputParameter { Query = tableName, Delimiter = delimiter, NoData = noData, RowCount = 1, RowSkips = 0, Fields = tableFields?.Select(x => new RfcReadTableField { FieldName = x })?.ToArray(), Options = whereClause?.Select(x => new RfcReadTableOption { Text = x }).ToArray() }; RfcReadTableOutputParameter result = Invoke <RfcReadTableOutputParameter>(inputParameters); return(ConvertToStruct(result, delimiter, tableFields)); }
private T ConvertToStruct(RfcReadTableOutputParameter outputParameter, string delimiter, List <string> fieldList) { if (outputParameter?.Data == null) { return(null); } if (outputParameter.Data.Length < 1) { return(Activator.CreateInstance <T>()); } return(ConvertTo(outputParameter.Data.First(), delimiter, fieldList)); }
private List <T> ConvertToList(RfcReadTableOutputParameter outputParameter, string delimiter, List <string> fieldList) { return(outputParameter.Data?.Select(x => ConvertTo(x, delimiter, fieldList))?.ToList() ?? Activator.CreateInstance <List <T> >()); }