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); }
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()); }
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)); }