Esempio n. 1
0
        private List <MaterialDefinition> SetMaterialDefinitionOption(MaterialQueryOptions queryOptions, List <Material> materialList)
        {
            var definitionList = new List <MaterialDefinition>();

            if (queryOptions.IncludeDefinition)
            {
                var             list  = materialList.Where(x => x.Code != null).Select(x => (object)x.Code).ToList();
                List <object>[] parts = list.Partition(PartitionCount);

                foreach (List <object> part in parts)
                {
                    List <string> query = new AbapQuery()
                                          .Set(QueryOperator.In("MATNR", part))
                                          .GetQuery();


                    using IRfcConnection connection = _serviceProvider.GetService <IRfcConnection>();
                    connection.Connect();
                    using IReadTable <MaterialDefinition> tableFunction = _serviceProvider.GetService <IReadTable <MaterialDefinition> >();
                    List <MaterialDefinition> definitions = tableFunction.GetTable(connection, query);
                    if (definitions.Any())
                    {
                        definitionList.AddRange(definitions);
                    }
                }
            }

            return(definitionList);
        }
Esempio n. 2
0
        public Material GetMaterial(string materialCodePrefix, bool getUnsafeFields = true, int rowCount = 0)
        {
            var query = new AbapQuery().Set(QueryOperator.Equal("MATNR", materialCodePrefix))
                        .And(QueryOperator.NotEqual("LVORM", true, RfcTablePropertySapTypes.BOOLEAN_X)).GetQuery();

            using IRfcConnection connection = _serviceProvider.GetService <IRfcConnection>();
            connection.Connect();

            using IReadTable <Material> tableFunction = _serviceProvider.GetService <IReadTable <Material> >();
            List <Material> result = tableFunction.GetTable(connection, query, rowCount: rowCount, getUnsafeFields: getUnsafeFields);

            return(result.First());
        }
Esempio n. 3
0
        public List <Material> GetMaterialsByPrefix(string materialCodePrefix,
                                                    MaterialQueryOptions options = null, bool getUnsafeFields = true, int rowCount = 0)
        {
            options ??= new MaterialQueryOptions();
            var query = new AbapQuery().Set(QueryOperator.StartsWith("MATNR", materialCodePrefix))
                        .And(QueryOperator.NotEqual("LVORM", true, RfcTablePropertySapTypes.BOOLEAN_X)).GetQuery();

            using IRfcConnection connection = _serviceProvider.GetService <IRfcConnection>();
            connection.Connect();

            using IReadTable <Material> tableFunction = _serviceProvider.GetService <IReadTable <Material> >();
            List <Material> result = tableFunction.GetTable(connection, query, rowCount: rowCount, getUnsafeFields: getUnsafeFields);

            return(SetOptions(result, options, getUnsafeFields));
        }