Esempio n. 1
0
        public async Task <TOutput> GetStructAsync <TOutput>(List <string> options, bool includeUnsafeFields = false, string delimiter = "|", string noData = "")
            where TOutput : class, ISapTable
        {
            using IRfcConnection rfcConnection = GetConnection();
            using IRfcFunction rfcFunction     = rfcConnection.CreateFunction(READ_TABLE_FUNCTION_NAME);

            List <string> fieldNames = GetRfcEntityFieldNames(typeof(TOutput), includeUnsafeFields);

            var inputParameters = new TableInputParameter
            {
                Query     = GetRfcTableName <TOutput>(),
                Delimiter = delimiter,
                NoData    = noData,
                RowCount  = 1,
                RowSkips  = 0,
                Fields    = fieldNames?.Select(f => new TableField {
                    FieldName = f
                }).ToArray(),
                Options = options?.Select(o => new TableOption {
                    Text = o
                }).ToArray()
            };

            TableOutputParameter result = await rfcFunction.InvokeAsync <TableOutputParameter>(inputParameters);

            return(ConvertToStruct <TOutput>(result, delimiter, fieldNames));
        }
Esempio n. 2
0
 private T ConvertToStruct <T>(TableOutputParameter outputParameter, string delimiter, List <string> fieldList)
 {
     if (outputParameter?.Data == null)
     {
         return(default);
Esempio n. 3
0
 private List <T> ConvertToList <T>(TableOutputParameter outputParameter, string delimiter, List <string> fieldNames)
 {
     return(outputParameter.Data?.Select(x => ConvertTo <T>(x, delimiter, fieldNames)).ToList() ?? Activator.CreateInstance <List <T> >());
 }