public static dynamic ExecuteBAPI(InputBAPI Input) { DataSet resultDataSet; Dictionary <String, String> connectionParams = new Dictionary <string, string>(); String[] connectionStringArray = Input.ConnectionString.Split(';'); foreach (String configEntry in connectionStringArray) { connectionParams.Add(configEntry.TrimEnd().TrimStart().Split('=')[0], configEntry.TrimEnd().TrimStart().Split('=')[1]); } using (var connection = new SapConnection(connectionParams)) { connection.Open(); var command = new SapCommand(Input.BAPIName, connection); foreach (Parameter param in Input.Parameters) { command.Parameters.Add(param.Name, param.Value); } resultDataSet = command.ExecuteDataSet(); } return(JToken.FromObject(resultDataSet)); }
private Tuple <IEnumerable <T1>, IEnumerable <T2>, IEnumerable <T3>, IEnumerable <T4>, IEnumerable <T5> > ListMultiple <T1, T2, T3, T4, T5>() { var quantity = this.GetTypeQuantity <T1, T2, T3, T4, T5>(); this.ValidateQuery <T1, T2, T3, T4, T5>(quantity); var items1 = Enumerable.Empty <T1>(); var items2 = Enumerable.Empty <T2>(); var items3 = Enumerable.Empty <T3>(); var items4 = Enumerable.Empty <T4>(); var items5 = Enumerable.Empty <T5>(); using (var connection = new SapConnection(GetConnectionConfig())) { connection.Open(); var command = this.GetCommand(connection); if (quantity >= 1) { items1 = this.ExecuteQuery <T1>(command); } if (quantity >= 2) { items2 = this.ExecuteQuery <T2>(command); } if (quantity >= 3) { items3 = this.ExecuteQuery <T3>(command); } if (quantity >= 4) { items4 = this.ExecuteQuery <T4>(command); } if (quantity >= 5) { items5 = this.ExecuteQuery <T5>(command); } } return(new Tuple <IEnumerable <T1>, IEnumerable <T2>, IEnumerable <T3>, IEnumerable <T4>, IEnumerable <T5> >(items1, items2, items3, items4, items5)); }
static void Main(string[] args) { using (var connection = new SapConnection("DEV")) { connection.Open(); var session = new SapSession(connection); //var transaction = connection.BeginTransaction(); var command = new SapCommand("BAPI_GET_PROJECT_DETAILS_TABLE", connection); command.Parameters.Add("PROJECT_TYPE","EP"); session.StartSession(); var resultDataSet = command.ExecuteDataSet(); session.EndSession(); var sapDataReader = command.ExecuteReader("RESULTS"); var i = 0; while(sapDataReader.Read()) { Console.WriteLine("{0} : {1}",i,sapDataReader.Item.GetString(0)); i++; } Console.WriteLine(sapDataReader.RowCount); //transaction.Commit(); //var rfcTables = command.ExecuteRfcTables(); } Console.WriteLine("Done !"); Console.ReadKey(); }
static void Main(string[] args) { using (var connection = new SapConnection("DEV")) { connection.Open(); var session = new SapSession(connection); //var transaction = connection.BeginTransaction(); var command = new SapCommand("BAPI_GET_PROJECT_DETAILS_TABLE", connection); command.Parameters.Add("PROJECT_TYPE", "EP"); session.StartSession(); var resultDataSet = command.ExecuteDataSet(); session.EndSession(); var sapDataReader = command.ExecuteReader("RESULTS"); var i = 0; while (sapDataReader.Read()) { Console.WriteLine("{0} : {1}", i, sapDataReader.Item.GetString(0)); i++; } Console.WriteLine(sapDataReader.RowCount); //transaction.Commit(); //var rfcTables = command.ExecuteRfcTables(); } Console.WriteLine("Done !"); Console.ReadKey(); }
/// <summary> /// Execute SAP RFC-function. /// </summary> /// <param name="function">Name of the SAP function</param> /// <returns>JToken dictionary of export parameter or table values returned by SAP function.</returns> public static dynamic ExecuteFunction(ExecuteFunctionInput taskInput) { var connectionParams = ConnectionStringToDictionary(taskInput.ConnectionString.Value); var returnvalues = new JObject(); FunctionInput input; IRfcFunction sapFunction; if (taskInput.InputType == InputType.JSON) { try { input = new FunctionInput(taskInput.InputFunctions); } catch (Exception e) { throw new Exception("Failed to parse input JSON", e); } } else if (taskInput.InputType == InputType.PARAMETERS) { input = new FunctionInput(); var structures = new List <Structure>(); foreach (var s in taskInput.SimpleInput.Functions) { structures.Add(new Structure { Name = s.Name, Fields = s.Fields }); } input.Functions = structures.ToArray(); } else { throw new Exception("Invalid input type!"); } using (var connection = new SapConnection(connectionParams)) { connection.Open(); var repo = connection.Destination.Repository; using (var session = new SapSession(connection)) { session.StartSession(); foreach (var f in input.Functions) { try { sapFunction = repo.CreateFunction(f.Name); } catch (Exception e) { throw new Exception($"Failed to create function: {e.Message}", e); } try { f.PopulateRfcDataContainer(sapFunction); } catch (Exception e) { throw new Exception($"Failed to populate function input structure: {e.Message}", e); } try { sapFunction.Invoke(connection.Destination); } catch (Exception e) { throw new Exception($"Invoking function failed: {e.Message}", e); } var tables = GetTableNames(sapFunction); var exportParams = GetExportParameters(sapFunction); var tablesAsJObject = new JObject(); foreach (var table in tables) { var rfcTable = sapFunction.GetTable(table); tablesAsJObject.Add(table, JToken.FromObject(RfcTableToDataTable(rfcTable, table))); } foreach (var parameter in exportParams) { tablesAsJObject.Add(parameter.Key, parameter.Value); } returnvalues.Add(f.Name, tablesAsJObject); } session.EndSession(); } } return(returnvalues); }