/// <summary> /// 传入参数,并动态调用,并返回传出参数。 /// </summary> public void Excute() { if (_funcMeta == null) { throw new SAPException("函数的元数据为空"); } if (_funcMeta.Is_RFC == false) { throw new SAPException("非RFC函数,不能远程运行!"); } HandleInput(); SAPFunction.InvokeFunction(_sysTemName, _functionName, _inputList, out _outputList); HandleOutput(); }
/// <summary> /// 使用JSON调用RFC函数。 /// </summary> /// <param name="sysName"></param> /// <param name="funame"></param> /// <param name="jsondata"></param> /// <returns></returns> public static string InvokeFunctionFromJson(string sysName, string funame, string jsondata) { MetaValueList list = null; if (String.IsNullOrWhiteSpace(jsondata)) { list = new MetaValueList(); } else { try { list = JsonConvert.DeserializeObject <MetaValueList>(jsondata); } catch (Exception ee) { return(JsonConvert.SerializeObject(ee)); } } MetaValueList outList = null; string output = ""; if (list != null) { SAPFunction.InvokeFunction(sysName, funame, list, out outList); } //序列化并输出结果 output = JsonConvert.SerializeObject(outList, new JsonSerializerSettings { Error = delegate(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args) { // errors.Add(args.ErrorContext.Error.Message); args.ErrorContext.Handled = true; } // Converters = { new IsoDateTimeConverter() } }); return(output); }