Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
 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> >());
 }