private void loadFields_Click(object sender, EventArgs e) { try { if (!Check()) { return; } if (!Check()) { return; } this.dataGridView1.Rows.Clear(); DataTable dtTableMetaList = SAPFunction.DDIF_FIELDINFO_GET(_systemName, _tableName); // ReadTableFieldCollection co = dt.Fields; for (int i = 0; i < dtTableMetaList.Rows.Count; i++) { this.dataGridView1.Rows.Add(new object[] { false, dtTableMetaList.Rows[i]["FIELDNAME"], dtTableMetaList.Rows[i]["SCRTEXT_M"] }); } dataGridView1.AutoResizeColumns(); // saveContext(); } catch (Exception ee) { MessageBox.Show(ee.Message); } }
/// <summary> ///根据函数名,返回函数的元数据,各个参数的名称,类型等。 /// </summary> /// <param name="sysName"></param> /// <param name="funame"></param> /// <returns></returns> public static RfcFunctionMetadata GetRfcFunctionMetadata(string sysName, string funame) { funame = funame.ToUpper().Trim(); if (string.IsNullOrEmpty(funame)) { throw new SAPException("请输入函数!!"); } if (!SAPFunction.CheckFunction(sysName, funame)) { throw new SAPException("函数不存在!!"); } RfcFunctionMetadata MetaData = null; try { RfcDestination destination = SAPDestination.GetDesByName(sysName); //destination.Repository.ClearAllMetadata(); MetaData = destination.Repository.GetFunctionMetadata(funame); } catch (RfcAbapException rfce) { throw new SAPException(rfce.Key + rfce.Message); } catch (RfcAbapRuntimeException rfcrunteime) { throw new SAPException(rfcrunteime.Key + rfcrunteime.Message); } return(MetaData); }
/// <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> /// 从SAP系统中加载表或结构的定义。 /// /// </summary> void loadTableMetaData() { String sysName = _systemName.ToUpper().Trim(); DtMetaList = SAPFunction.DDIF_FIELDINFO_GET(sysName, _tableName); DeleteRows(ref DtMetaList); DeleteColumn(ref DtMetaList); if (EventTableReadMeta != null) { EventTableReadMeta(this); } //MessageBox.Show("加载完成"); }
private void btnLoadFields2_Click(object sender, EventArgs e) { if (!Check()) { return; } this.dataGridView2.Rows.Clear(); DataTable dtColumns = SAPFunction.DDIF_FIELDINFO_GET(_systemName, "DFIES"); for (int i = 0; i < dtColumns.Rows.Count; i++) { this.dataGridView2.Rows.Add(new object[] { false, dtColumns.Rows[i]["FIELDNAME"], dtColumns.Rows[i]["SCRTEXT_M"] }); } dataGridView2.AutoResizeColumns(); SetDefaultOptions(); }
/// <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); }
//查询RFC函数列表 public ContentResult getFuncList(string funcname) { try { var output = SqliteReadTable.GetRFCList(targetSystem, funcname); if (string.IsNullOrEmpty(output)) { if (funcname.Length >= 3) { SAPFunction.GetRFCfunctionListAndSaveToDb(targetSystem, funcname); output = SqliteReadTable.GetRFCList(targetSystem, funcname); } } // output = "{" + output + "}"; return(Content(output, "text/html")); } catch (Exception ex) { var message = JsonConvert.SerializeObject(ex.Message); message = "{error:" + message + "}"; return(Content(message, "text/html")); } }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { MoConfirmationMaterialVo inVo = (MoConfirmationMaterialVo)vo; MoConfirmationHeaderVo header = (MoConfirmationHeaderVo)inVo.MoConfirmationHeaderVo; //MoConfirmationMaterialVo materialsVo = (MoConfirmationMaterialVo)inVo.MoConfirmationMaterialListVo.FirstOrDefault(); List <MoConfirmationMaterialVo> materials = inVo.MoConfirmationMaterialListVo; SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, SAPRFCNameEnum.RFC_MANUFACTURING_ORDER_CONFIRMATION.GetValue()); //get the sapuser from cache memory SapUserVo sapUserVo = sapCommandAdapter.GetSapUser(trxContext); DateTime dbTime = trxContext.ProcessingDBDateTime; SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("PLANT", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); // ); sapParameter.AddParameter("ORDER_NUMBER", header.OrderNumber); sapParameter.AddParameter("IMUSER", sapUserVo.SapUser); //set sapuser using using sessionid sapParameter.AddParameter("IMDATE", dbTime.ToString("yyyyMMdd")); //submitting datetime "yyyyMMdd" sapParameter.AddParameter("IMTIME", dbTime.ToString("HHmmss")); //submitting datetime "HHmmss" sapParameter.AddParameter("SUPERVISOR", trxContext.UserData.UserCode); //nidecmes login user sapParameter.AddParameter("ACT_STARTDATE", header.StartDateTime.ToString("yyyyMMdd")); sapParameter.AddParameter("ACT_STARTTIME", header.StartDateTime.ToString("HHmmss")); sapParameter.AddParameter("ACT_ENDDATE", header.EndDateTime.ToString("yyyyMMdd")); sapParameter.AddParameter("ACT_ENDTIME", header.EndDateTime.ToString("HHmmss")); sapParameter.AddParameter("MAN_HOUR", header.ManHour.ToString("0.000")); sapParameter.AddParameter("MACHINE_HOUR", header.MachineHour.ToString("0.000")); sapParameter.AddParameter("WORKUNIT", header.WorkTimeUnit); sapParameter.AddParameter("POSTDATE", header.PostingDate.ToString("yyyyMMdd")); sapParameter.AddParameter("CAL_FLAG", header.CancellationFlag); sapParameter.AddParameter("END_FLAG", header.EndFlag); sapParameter.AddParameter("CONF_NO", header.ConfirmationNumber.ToString()); sapParameter.AddParameter("CONF_CNT", header.ConfirmationCounter.ToString()); sapParameter.AddParameter("MULTI_FLAG", header.MultiFlag); sapParameter.AddParameter("IM_COUNT", header.MaterialCount); sapParameter.AddParameter("IM_TOTAL", header.MaterialQuantityTotal.ToString("0.000")); SAPParameterList sapParameterTable; SAPParameterList sapParameterTableLists = sapCommandAdapter.CreateParameterList(); foreach (MoConfirmationMaterialVo m in materials) { //rfcTable.Insert(); sapParameterTable = sapCommandAdapter.CreateParameterList(); sapParameterTable.AddParameter("ORDER_NUMBER", m.OrderNumber); sapParameterTable.AddParameter("IMDATE", dbTime.ToString("yyyyMMdd")); sapParameterTable.AddParameter("IMTIME", dbTime.ToString("HHmmss")); sapParameterTable.AddParameter("MATERIAL", m.MaterialNumber); sapParameterTable.AddParameter("BATCH", m.SapBatchNumber); sapParameterTable.AddParameter("V_BATCH", m.VendorBatchNumber); sapParameterTable.AddParameter("MOVETYPE", m.MovementType); sapParameterTable.AddParameter("ACT_QUANTITY", m.Quantity.ToString()); sapParameterTable.AddParameter("LGORT", m.StorageLocation); sapParameterTable.AddParameter("UNIT", m.Unit); sapParameterTableLists.AddParameterList(sapParameterTable); } sapParameter.AddParameter("TB_ORDER_MOVEMENT", sapParameterTableLists); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter); MoConfirmationResultVo resultVo = new MoConfirmationResultVo { OutSapFlag = sapFuntion.GetSAPValue("OUT_SAPFLAG") }; List <SapMessageVo> messageList = new List <SapMessageVo>(); DataTable sapTable = sapFuntion.GetSAPTable("TB_RETURN"); foreach (DataRow dr in sapTable.Rows) { SapMessageVo message = new SapMessageVo { OrderNumber = ConvertNull <string>(dr, "AUFNR"), MessageType = ConvertNull <string>(dr, "TYPE"), MessageClassId = ConvertNull <string>(dr, "ID"), MessageNumber = ConvertNull <string>(dr, "NUMBER"), LogNumber = ConvertNull <string>(dr, "MESSAGE"), LogMessageNumber = ConvertNull <string>(dr, "LOG_NO"), MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"), MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"), MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"), MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4") }; resultVo.MessageList.Add(message); } return(resultVo); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { ManufacturingOrderVo inVo = (ManufacturingOrderVo)vo; List <MRPControllerRangeVo> mrpControllers = inVo.MRPControllerRangeListVo; //create command SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, SAPRFCNameEnum.RFC_MANUFACTURING_ORDER.GetValue()); //create parameter SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("IM_PLANT", inVo.PlantCode); if (!string.IsNullOrEmpty(inVo.FromDate)) { sapParameter.AddParameter("IM_FROM_DATE", inVo.FromDate); } if (!string.IsNullOrEmpty(inVo.ToDate)) { sapParameter.AddParameter("IM_TO_DATE", inVo.ToDate); //"20160323" } if (!string.IsNullOrEmpty(inVo.OrderType)) { sapParameter.AddParameter("IM_ORDERTYPE", inVo.OrderType);//ZP01 } if (!string.IsNullOrEmpty(inVo.WorkCenter)) { sapParameter.AddParameter("IM_WORKCENTER", inVo.WorkCenter); } if (!string.IsNullOrEmpty(inVo.MoNumberFrom)) { sapParameter.AddParameter("IM_FROM_MONO", inVo.MoNumberFrom); } if (!string.IsNullOrEmpty(inVo.MoNumberTo)) { sapParameter.AddParameter("IM_TO_MONO", inVo.MoNumberTo); } if (!string.IsNullOrEmpty(inVo.Shift)) { sapParameter.AddParameter("IM_SHIFT", inVo.Shift); } sapParameter.AddParameter("IM_SOURCE", inVo.Source); sapParameter.AddParameter("IM_BOM", inVo.IncludeBOM); SAPParameterList sapParameterTable; SAPParameterList sapParameterTableLists = sapCommandAdapter.CreateParameterList(); sapParameterTable = sapCommandAdapter.CreateParameterList(); foreach (MRPControllerRangeVo mrp in mrpControllers) { sapParameterTable.AddParameter("SIGN", mrp.Sign); sapParameterTable.AddParameter("HIGH", mrp.High); sapParameterTable.AddParameter("OPTION", mrp.Option); sapParameterTable.AddParameter("LOW", mrp.Low); sapParameterTableLists.AddParameterList(sapParameterTable); } sapParameter.AddParameter("TB_MRP_CNTRL_RANGE", sapParameterTableLists); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter); //MO data DataTable sapMOTable = sapFuntion.GetSAPTable("TB_MANUFACTURING_ORDER"); // result BOM data DataTable sapMODetailTable = sapFuntion.GetSAPTable("TB_ORDER_DETAIL"); ManufacturingOrderVo outVo = new ManufacturingOrderVo(); foreach (DataRow dr in sapMOTable.Rows) { ManufacturingOrderVo currOutVo = new ManufacturingOrderVo(); currOutVo.MoNumber = ConvertNull <string>(dr, "ORDER_NUMBER").TrimStart('0'); currOutVo.ItemCd = ConvertNull <string>(dr, "MATERIAL").TrimStart('0'); currOutVo.ItemName = ConvertNull <string>(dr, "MATERIAL_TEXT"); currOutVo.ProductionDate = ConvertNull <string>(dr, "PRODUCTION_START_DATE"); currOutVo.Shift = ConvertNull <string>(dr, "SHIFT"); currOutVo.TargetQty = ConvertNull <string>(dr, "TARGET_QUANTITY"); currOutVo.OrderType = ConvertNull <string>(dr, "ORDER_TYPE"); currOutVo.MrpController = ConvertNull <string>(dr, "MRP_CONTROLLER"); currOutVo.Status = ConvertNull <string>(dr, "SYSTEM_STATUS"); currOutVo.WorkCenter = ConvertNull <string>(dr, "WORK_CENTER"); currOutVo.FinishDate = ConvertNull <string>(dr, "PRODUCTION_FINISH_DATE"); currOutVo.FinishTime = ConvertNull <string>(dr, "FINISH_TIME"); if (sapMODetailTable != null && sapMODetailTable.Rows.Count > 0) { DataRow[] drDetail = sapMODetailTable.Select("ORDER_NUMBER = '" + ConvertNull <string>(dr, "ORDER_NUMBER") + "'"); if (drDetail.Length > 0) { currOutVo.MoConfirmationMaterialListVo = new List <MoConfirmationMaterialVo>(); foreach (DataRow currdrdetail in drDetail) { MoConfirmationMaterialVo detailOutVo = new MoConfirmationMaterialVo(); detailOutVo.OrderNumber = ConvertNull <string>(currdrdetail, "ORDER_NUMBER").TrimStart('0'); detailOutVo.MaterialNumber = ConvertNull <string>(currdrdetail, "MATERIAL").TrimStart('0'); detailOutVo.MaterialOld = ConvertNull <string>(currdrdetail, "MATERIAL_OLD").TrimStart('0'); detailOutVo.AlternateGroup = ConvertNull <string>(currdrdetail, "ALT_GROUP"); detailOutVo.SapBatchNumber = ConvertNull <string>(currdrdetail, "BATCH"); detailOutVo.ProcureType = ConvertNull <string>(currdrdetail, "PROCURE_TYPE"); detailOutVo.VendorBatchNumber = ConvertNull <string>(currdrdetail, "VENDOR_BATCH"); detailOutVo.SapVendor = ConvertNull <string>(currdrdetail, "VENDOR"); detailOutVo.StorageLocation = ConvertNull <string>(currdrdetail, "LGORT"); detailOutVo.Quantity = (int)Convert.ToDecimal(ConvertNull <string>(currdrdetail, "QUANTITY")); detailOutVo.Unit = ConvertNull <string>(currdrdetail, "UNIT"); detailOutVo.MovementType = ConvertNull <string>(currdrdetail, "MOVETYPE"); currOutVo.MoConfirmationMaterialListVo.Add(detailOutVo); } } } outVo.ManufacturingOrderListVo.Add(currOutVo); } //MoConfirmationMaterialVo moConfirmationMaterialOutVo; //foreach (DataRow dr in orderDetailTable.Rows) //{ // moConfirmationMaterialOutVo = new MoConfirmationMaterialVo(); // moConfirmationMaterialOutVo.OrderNumber = ConvertNull<string>(dr, "ORDER_NUMBER").TrimStart('0'); // moConfirmationMaterialOutVo.MaterialNumber = ConvertNull<string>(dr, "MATERIAL").TrimStart('0'); // moConfirmationMaterialOutVo.MaterialOld = ConvertNull<string>(dr, "MATERIAL_OLD").TrimStart('0'); // moConfirmationMaterialOutVo.AlternateGroup = ConvertNull<string>(dr, "ALT_GROUP"); // moConfirmationMaterialOutVo.SapBatchNumber = ConvertNull<string>(dr, "BATCH"); // moConfirmationMaterialOutVo.VendorBatchNumber = ConvertNull<string>(dr, "VENDOR_BATCH"); // moConfirmationMaterialOutVo.SapVendor = ConvertNull<string>(dr, "VENDOR"); // moConfirmationMaterialOutVo.StorageLocation = ConvertNull<string>(dr, "LGORT"); // moConfirmationMaterialOutVo.Quantity = (int) Convert.ToDecimal(ConvertNull<string>(dr, "QUANTITY")); // moConfirmationMaterialOutVo.Unit = ConvertNull<string>(dr, "UNIT"); // moConfirmationMaterialOutVo.MovementType = ConvertNull<string>(dr, "MOVETYPE"); // outVo.MoConfirmationMaterialListVo.Add(moConfirmationMaterialOutVo); //} outVo.SapMessageListVo = new List <SapMessageVo>(); DataTable sapMessageTable = sapFuntion.GetSAPTable("TB_RETURN"); foreach (DataRow dr in sapMessageTable.Rows) { SapMessageVo message = new SapMessageVo { MessageType = ConvertNull <string>(dr, "TYPE"), MessageClassId = ConvertNull <string>(dr, "ID"), MessageNumber = ConvertNull <string>(dr, "NUMBER"), LogNumber = ConvertNull <string>(dr, "MESSAGE"), LogMessageNumber = ConvertNull <string>(dr, "LOG_NO"), MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"), MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"), MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"), MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4") }; outVo.SapMessageListVo.Add(message); } return(outVo); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { SubmitOutBoundVo inVo = (SubmitOutBoundVo)vo; inVo.SubmitOutBoundVoMessageList = new List <SapMessageVo>(); SubmitOutBoundVo outVo = new SubmitOutBoundVo(); outVo = inVo; outVo.SubmitOutBoundVoMessageList = new List <SapMessageVo>(); List <SubmitOutBoundVo> pos = new List <SubmitOutBoundVo>(); pos = inVo.SubmitOutBoundVoList; SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, "Z_GTPPFG2301_GOODSMVT_CREATE"); SAPParameterList sapParameterTableList = sapCommandAdapter.CreateParameterList(); SAPParameterList sapParameterTable; //for (int ii = inVo.SubmitOutBoundVoList.Count - 1; ii >= 0; ii--) //{ foreach (SubmitOutBoundVo curVo in pos) { sapParameterTable = sapCommandAdapter.CreateParameterList(); sapParameterTable.AddParameter("MATERIAL", curVo.MATERIAL); sapParameterTable.AddParameter("PLANT", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); sapParameterTable.AddParameter("STGE_LOC", curVo.STGE_LOC); sapParameterTable.AddParameter("BATCH", curVo.BATCH); sapParameterTable.AddParameter("MOVE_TYPE", curVo.MOVE_TYPE); sapParameterTable.AddParameter("ENTRY_QNT", curVo.ENTRY_QNT); sapParameterTable.AddParameter("ENTRY_UOM", curVo.ENTRY_UOM); sapParameterTable.AddParameter("MOVE_STLOC", curVo.MOVE_STLOC); sapParameterTable.AddParameter("ZROW", curVo.ZROW); sapParameterTableList.AddParameterList(sapParameterTable); } //} SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("IM_GOODSMVT_CODE", inVo.IM_GOODSMVT_CODE); sapParameter.AddParameter("IM_PSTNG_DATE", inVo.IM_PSTNG_DATE); sapParameter.AddParameter("IM_PR_UNAME", trxContext.UserData.UserCode); sapParameter.AddParameter("IM_HEADER_TXT", inVo.IM_HEADER_TXT); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter); List <SapMessageVo> messageList = new List <SapMessageVo>(); DataTable sapMessageTable = sapFuntion.GetSAPTable("TB_RETURN"); foreach (DataRow dr in sapMessageTable.Rows) { SapMessageVo message = new SapMessageVo { MessageType = ConvertNull <string>(dr, "TYPE"), MessageClassId = ConvertNull <string>(dr, "ID"), MessageNumber = ConvertNull <string>(dr, "NUMBER"), LogNumber = ConvertNull <string>(dr, "MESSAGE"), LogMessageNumber = ConvertNull <string>(dr, "LOG_NO"), MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"), MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"), MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"), MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4"), Row = ConvertNull <string>(dr, "ROW") }; outVo.SubmitOutBoundVoMessageList.Add(message); } SapMessageVo message1 = new SapMessageVo(); message1.Message = sapCommandAdapter.ToString(); outVo.SubmitOutBoundVoMessageList.Add(message1); return(outVo); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { string DEFAULT_DATE_FORMAT = "0000-00-00"; string DEFAULT_TIME_FORMAT = "00:00:00"; ManufacturingOrderVo inVo = (ManufacturingOrderVo)vo; List <MRPControllerRangeVo> mrpControllers = inVo.MRPControllerRangeListVo; //create command SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, "Z_GTPPFG1201_MO_OUT");// SAPRFCNameEnum.RFC_MANUFACTURING_ORDER.GetValue()); //create parameter SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("IM_PLANT", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); if (!string.IsNullOrEmpty(inVo.FromDate)) { sapParameter.AddParameter("IM_FROM_DATE", inVo.FromDate); } if (!string.IsNullOrEmpty(inVo.ToDate)) { sapParameter.AddParameter("IM_TO_DATE", inVo.ToDate); } if (!string.IsNullOrEmpty(inVo.OrderType)) { sapParameter.AddParameter("IM_ORDERTYPE", inVo.OrderType); } if (!string.IsNullOrEmpty(inVo.WorkCenter)) { sapParameter.AddParameter("IM_WORKCENTER", inVo.WorkCenter); } if (!string.IsNullOrEmpty(inVo.MoNumberFrom)) { sapParameter.AddParameter("IM_FROM_MONO", inVo.MoNumberFrom); } if (!string.IsNullOrEmpty(inVo.MoNumberTo)) { sapParameter.AddParameter("IM_TO_MONO", inVo.MoNumberTo); } if (!string.IsNullOrEmpty(inVo.Shift)) { sapParameter.AddParameter("IM_SHIFT", inVo.Shift); } if (inVo.ActQty != null) { sapParameter.AddParameter("IM_ACTQTY", inVo.ActQty); } if (!string.IsNullOrEmpty(inVo.Line)) { sapParameter.AddParameter("IM_LINE", inVo.Line); } sapParameter.AddParameter("IM_SOURCE", inVo.Source); sapParameter.AddParameter("IM_BOM", inVo.IncludeBOM); if (!string.IsNullOrEmpty(inVo.IncludeDBSAVE)) { sapParameter.AddParameter("IM_DBSAVE", inVo.IncludeDBSAVE); } SAPParameterList sapParameterTable; SAPParameterList sapParameterTableLists = sapCommandAdapter.CreateParameterList(); sapParameterTable = sapCommandAdapter.CreateParameterList(); foreach (MRPControllerRangeVo mrp in mrpControllers) { sapParameterTable.AddParameter("SIGN", mrp.Sign); sapParameterTable.AddParameter("HIGH", mrp.High); sapParameterTable.AddParameter("OPTION", mrp.Option); sapParameterTable.AddParameter("LOW", mrp.Low); sapParameterTableLists.AddParameterList(sapParameterTable); } sapParameter.AddParameter("TB_MRP_CNTRL_RANGE", sapParameterTableLists); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter); //MO data DataTable sapMOTable = sapFuntion.GetSAPTable("TB_MANUFACTURING_ORDER"); // result BOM data DataTable sapMODetailTable = sapFuntion.GetSAPTable("TB_ORDER_DETAIL"); ManufacturingOrderVo outVo = new ManufacturingOrderVo(); foreach (DataRow dr in sapMOTable.Rows) { ManufacturingOrderVo currOutVo = new ManufacturingOrderVo(); string datetimeval; currOutVo.MoNumber = ConvertNull <string>(dr, "ORDER_NUMBER").TrimStart('0'); currOutVo.ItemCd = ConvertNull <string>(dr, "MATERIAL").TrimStart('0'); currOutVo.ItemName = ConvertNull <string>(dr, "MATERIAL_TEXT"); currOutVo.Shift = ConvertNull <string>(dr, "SHIFT"); currOutVo.TargetQty = ConvertNull <string>(dr, "TARGET_QUANTITY"); currOutVo.OrderType = ConvertNull <string>(dr, "ORDER_TYPE"); currOutVo.MrpController = ConvertNull <string>(dr, "MRP_CONTROLLER"); currOutVo.Status = ConvertNull <string>(dr, "SYSTEM_STATUS"); currOutVo.WorkCenter = ConvertNull <string>(dr, "WORK_CENTER"); currOutVo.ProductionDate = ConvertNull <string>(dr, "START_DATE"); currOutVo.StartTime = ConvertNull <string>(dr, "START_TIME"); currOutVo.FinishDate = ConvertNull <string>(dr, "FINISH_DATE"); currOutVo.FinishTime = ConvertNull <string>(dr, "FINISH_TIME"); currOutVo.GoodsReceipt = ConvertNull <string>(dr, "GOODS_RECIPIENT");//没有数据 currOutVo.PloductionPlant = ConvertNull <string>(dr, "PRODUCTION_PLANT"); datetimeval = ConvertNull <string>(dr, "EXPL_DATE"); if (!string.IsNullOrWhiteSpace(datetimeval) && !string.Equals(datetimeval, DEFAULT_DATE_FORMAT)) { currOutVo.ExplDate = DateTime.ParseExact(datetimeval, "yyyy-MM-dd", null); } datetimeval = ConvertNull <string>(dr, "ROUTING_NO"); if (!string.IsNullOrWhiteSpace(datetimeval)) { currOutVo.RoutingNo = Convert.ToInt32(datetimeval); } datetimeval = ConvertNull <string>(dr, "RESERVATION_NUMBER"); if (!string.IsNullOrWhiteSpace(datetimeval)) { currOutVo.ReservationNumber = Convert.ToInt32(datetimeval); } datetimeval = ConvertNull <string>(dr, "ACTUAL_RELEASE_DATE"); if (!string.IsNullOrWhiteSpace(datetimeval) && !string.Equals(datetimeval, DEFAULT_DATE_FORMAT)) { currOutVo.ActualReleaseDate = DateTime.ParseExact(datetimeval, "yyyy-MM-dd", null); } datetimeval = ConvertNull <string>(dr, "PRODUCTION_FINISH_DATE"); if (!string.IsNullOrWhiteSpace(datetimeval) && !string.Equals(datetimeval, DEFAULT_DATE_FORMAT)) { currOutVo.ProductionFinishDate = DateTime.ParseExact(datetimeval, "yyyy-MM-dd", null); } datetimeval = ConvertNull <string>(dr, "PRODUCTION_START_DATE"); if (!string.IsNullOrWhiteSpace(datetimeval) && !string.Equals(datetimeval, DEFAULT_DATE_FORMAT)) { currOutVo.ProductionStartDate = DateTime.ParseExact(datetimeval, "yyyy-MM-dd", null); } datetimeval = ConvertNull <string>(dr, "ACTUAL_START_DATE"); if (!string.IsNullOrWhiteSpace(datetimeval) && !string.Equals(datetimeval, DEFAULT_DATE_FORMAT)) { currOutVo.ActualStartDate = DateTime.ParseExact(datetimeval, "yyyy-MM-dd", null); } datetimeval = ConvertNull <string>(dr, "ACTUAL_FINISH_DATE"); if (!string.IsNullOrWhiteSpace(datetimeval) && !string.Equals(datetimeval, DEFAULT_DATE_FORMAT)) { currOutVo.ActualFinishDate = DateTime.ParseExact(datetimeval, "yyyy-MM-dd", null); } datetimeval = ConvertNull <string>(dr, "SCRAP"); currOutVo.Scrap = Convert.ToDecimal(datetimeval); currOutVo.Unit = ConvertNull <string>(dr, "UNIT"); currOutVo.EnteredBy = ConvertNull <string>(dr, "ENTERED_BY"); datetimeval = ConvertNull <string>(dr, "ENTER_DATE"); if (!string.IsNullOrWhiteSpace(datetimeval) && !string.Equals(datetimeval, DEFAULT_DATE_FORMAT)) { currOutVo.EnterDate = DateTime.ParseExact(datetimeval, "yyyy-MM-dd", null); } currOutVo.DeletionFlag = ConvertNull <string>(dr, "DELETION_FLAG"); datetimeval = ConvertNull <string>(dr, "CONF_NO"); if (!string.IsNullOrWhiteSpace(datetimeval)) { currOutVo.ConfNo = Convert.ToInt32(datetimeval); } datetimeval = ConvertNull <string>(dr, "CONF_CNT"); if (!string.IsNullOrWhiteSpace(datetimeval)) { currOutVo.ConfCnt = Convert.ToInt32(datetimeval); } datetimeval = ConvertNull <string>(dr, "SCHED_FIN_TIME"); if (!string.IsNullOrWhiteSpace(datetimeval) && !string.Equals(datetimeval, DEFAULT_TIME_FORMAT)) { currOutVo.SchedFinTime = DateTime.ParseExact(ConvertNull <string>(dr, "SCHED_FIN_TIME"), "HH:mm:ss", null); } datetimeval = ConvertNull <string>(dr, "SCHED_START_TIME"); if (!string.IsNullOrWhiteSpace(datetimeval) && !string.Equals(datetimeval, DEFAULT_TIME_FORMAT)) { currOutVo.SchedStartTime = DateTime.ParseExact(ConvertNull <string>(dr, "SCHED_START_TIME"), "HH:mm:ss", null); } datetimeval = ConvertNull <string>(dr, "ACTUAL_START_TIME"); if (!string.IsNullOrWhiteSpace(datetimeval) && !string.Equals(datetimeval, DEFAULT_TIME_FORMAT)) { currOutVo.ActualStartTime = DateTime.ParseExact(ConvertNull <string>(dr, "ACTUAL_START_TIME"), "HH:mm:ss", null); } datetimeval = ConvertNull <string>(dr, "CONFIRMED_QUANTITY"); if (!string.IsNullOrWhiteSpace(datetimeval)) { currOutVo.ConfirmedQuantity = Convert.ToDecimal(datetimeval); } currOutVo.PlanPlant = ConvertNull <string>(dr, "PLAN_PLANT"); currOutVo.Batch = ConvertNull <string>(dr, "BATCH"); currOutVo.PVersion = ConvertNull <string>(dr, "P_VERSION"); currOutVo.WKName = ConvertNull <string>(dr, "WK_NAMAE"); currOutVo.CostName = ConvertNull <string>(dr, "COST_NAME"); currOutVo.CostCenter = ConvertNull <string>(dr, "COST_CENTER"); currOutVo.Wempf = ConvertNull <string>(dr, "GOODS_RECIPIENT");//Not Exist in RFC but Exist in DB currOutVo.rowsall = sapMODetailTable.Rows.Count; if (sapMODetailTable != null && sapMODetailTable.Rows.Count > 0) { DataRow[] drDetail = sapMODetailTable.Select("ORDER_NUMBER = '" + ConvertNull <string>(dr, "ORDER_NUMBER") + "'"); currOutVo.rows = drDetail.Length; if (drDetail.Length > 0) { currOutVo.MoConfirmationMaterialListVo = new List <MoConfirmationMaterialVo>(); foreach (DataRow currdrdetail in drDetail) { MoConfirmationMaterialVo detailOutVo = new MoConfirmationMaterialVo(); detailOutVo.OrderNumber = ConvertNull <string>(currdrdetail, "ORDER_NUMBER").TrimStart('0'); detailOutVo.MaterialNumber = ConvertNull <string>(currdrdetail, "MATERIAL").TrimStart('0'); detailOutVo.MaterialOld = ConvertNull <string>(currdrdetail, "MATERIAL_OLD").TrimStart('0'); detailOutVo.AlternateGroup = ConvertNull <string>(currdrdetail, "ALT_GROUP"); detailOutVo.SapBatchNumber = ConvertNull <string>(currdrdetail, "BATCH"); detailOutVo.ProcureType = ConvertNull <string>(currdrdetail, "PROCURE_TYPE"); detailOutVo.VendorBatchNumber = ConvertNull <string>(currdrdetail, "VENDOR_BATCH"); detailOutVo.SapVendor = ConvertNull <string>(currdrdetail, "VENDOR"); detailOutVo.StorageLocation = ConvertNull <string>(currdrdetail, "LGORT"); detailOutVo.Quantity = (string.IsNullOrEmpty(ConvertNull <string>(currdrdetail, "QUANTITY")) ? 0M : Convert.ToDecimal(ConvertNull <string>(currdrdetail, "QUANTITY"))); detailOutVo.Unit = ConvertNull <string>(currdrdetail, "UNIT"); detailOutVo.MovementType = ConvertNull <string>(currdrdetail, "MOVETYPE"); currOutVo.MoConfirmationMaterialListVo.Add(detailOutVo); } } } outVo.ManufacturingOrderListVo.Add(currOutVo); } foreach (DataRow currdrdetail in sapMODetailTable.Rows) { MoConfirmationMaterialVo detailOutVo = new MoConfirmationMaterialVo(); detailOutVo.OrderNumber = ConvertNull <string>(currdrdetail, "ORDER_NUMBER").TrimStart('0'); detailOutVo.MaterialNumber = ConvertNull <string>(currdrdetail, "MATERIAL").TrimStart('0'); detailOutVo.MaterialOld = ConvertNull <string>(currdrdetail, "MATERIAL_OLD").TrimStart('0'); detailOutVo.AlternateGroup = ConvertNull <string>(currdrdetail, "ALT_GROUP"); detailOutVo.SapBatchNumber = ConvertNull <string>(currdrdetail, "BATCH"); detailOutVo.ProcureType = ConvertNull <string>(currdrdetail, "PROCURE_TYPE"); detailOutVo.VendorBatchNumber = ConvertNull <string>(currdrdetail, "VENDOR_BATCH"); detailOutVo.SapVendor = ConvertNull <string>(currdrdetail, "VENDOR"); detailOutVo.StorageLocation = ConvertNull <string>(currdrdetail, "LGORT"); detailOutVo.Quantity = (string.IsNullOrEmpty(ConvertNull <string>(currdrdetail, "QUANTITY")) ? 0M : Convert.ToDecimal(ConvertNull <string>(currdrdetail, "QUANTITY"))); detailOutVo.Unit = ConvertNull <string>(currdrdetail, "UNIT"); detailOutVo.MovementType = ConvertNull <string>(currdrdetail, "MOVETYPE"); outVo.MoConfirmationMaterialListVo.Add(detailOutVo); } outVo.SapMessageListVo = new List <SapMessageVo>(); DataTable sapMessageTable = sapFuntion.GetSAPTable("TB_RETURN"); foreach (DataRow dr in sapMessageTable.Rows) { SapMessageVo message = new SapMessageVo { MessageType = ConvertNull <string>(dr, "TYPE"), MessageClassId = ConvertNull <string>(dr, "ID"), MessageNumber = ConvertNull <string>(dr, "NUMBER"), LogNumber = ConvertNull <string>(dr, "MESSAGE"), LogMessageNumber = ConvertNull <string>(dr, "LOG_NO"), MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"), MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"), MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"), MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4") }; outVo.SapMessageListVo.Add(message); } return(outVo); }
/// <summary> /// 从SAP系统中加载表或结构的定义。 /// /// </summary> void loadTableMetaData() { String sysName = _systemName.ToUpper().Trim(); DtMetaList = SAPFunction.DDIF_FIELDINFO_GET(sysName, _tableName); DeleteRows(ref DtMetaList); DeleteColumn(ref DtMetaList); eventGetTableInfo(this); ////在当前激活的工作表上存放数据 //ws = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); //ListObject ls = null; //if (!ws.Controls.Contains(_tableName)) //{ // int count = ws.ListObjects.Count; // for (int i = 1; i < count + 1; i++) // { // if (ws.ListObjects[i].Name == _tableName) // { // ws.ListObjects[i].Delete(); // // ws.Controls.Remove(_tableName); // } // } // ls = ws.Controls.AddListObject(ws.Range["A4"], _tableName); //} //else //{ // ls = (ListObject)ws.Controls[_tableName]; //} // ls.SetDataBinding(dtMetaList); // ws.Rows[1].Clear(); // DataTable dtColumnName = SAPFunction.DDIF_FIELDINFO_GET(sysName, "DFIES"); // int j = 0; // for (int i = 0; i < dtColumnName.Rows.Count; i++) // { // if (TitleList.Count>0) // { // if (TitleList.Contains(dtColumnName.Rows[i]["FIELDNAME"].ToString())) // { // ws.Cells.set_Item(4, j + 1, dtColumnName.Rows[i]["SCRTEXT_L"].ToString().Trim()); // j += 1; // } // } // else // { // ws.Cells.set_Item(4, i + 1, dtColumnName.Rows[i]["SCRTEXT_L"].ToString().Trim()); // } // } ////清空两行抬头,并重新设置。 //ws.Columns.AutoFit(); //ws.Columns.ShrinkToFit = true; ////saveContext(); //ws = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); //ws.Name = _tableName; MessageBox.Show("加载完成"); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { StockVo inVo = (StockVo)vo; //create command SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, SAPRFCNameEnum.RFC_STOCK.GetValue()); //create parameter SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("IM_PLANT", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); // inVo.PlantCode); sapParameter.AddParameter("IM_LGORT", inVo.StorageLocationCode); //create table parameter and set to parameter SAPParameterList sapParameterTable = sapCommandAdapter.CreateParameterList(); foreach (string material in inVo.MaterialList) { SAPParameterList sapParameterRow = sapCommandAdapter.CreateParameterList(); sapParameterRow.AddParameter("MATERIAL", material); sapParameterTable.AddParameterList(sapParameterRow); } sapParameter.AddParameter("TB_MATERIAL", sapParameterTable); //create function SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter); DataTable sapTable = sapFuntion.GetSAPTable("TB_STOCK_DATA"); StockVo outVo = new StockVo(); foreach (DataRow dr in sapTable.Rows) { string stockQty = ConvertNull <string>(dr, "UNRESTRICTED_STCK"); StockVo currOutVo = new StockVo { ItemNumber = ConvertNull <string>(dr, "MATERIAL"), WarehouseCode = ConvertNull <string>(dr, "LGORT"), InternalLot = ConvertNull <string>(dr, "BATCH"), SupplierCode = ConvertNull <string>(dr, "VENDOR"), SupplierName = ConvertNull <string>(dr, "V_DESC"), OrderStr = ConvertNull <string>(dr, "GR_DATE") + ConvertNull <string>(dr, "GR_TIME") + ConvertNull <string>(dr, "BATCH"), SapBatchNumber = ConvertNull <string>(dr, "BATCH"), VendorBatchNumber = ConvertNull <string>(dr, "V_BATCH"), StockQty = (int)Convert.ToDecimal(stockQty), UnrestrictedStock = (int)Convert.ToDecimal(stockQty), PlanToConsume = (int)Convert.ToDecimal(stockQty), StockReserve = (int)Convert.ToDecimal(stockQty), StockReserve2 = (int)Convert.ToDecimal(stockQty) }; outVo.StockListVo.Add(currOutVo); } List <SapMessageVo> messageList = new List <SapMessageVo>(); DataTable sapMessageTable = sapFuntion.GetSAPTable("TB_RETURN"); foreach (DataRow dr in sapMessageTable.Rows) { SapMessageVo message = new SapMessageVo { MessageType = ConvertNull <string>(dr, "TYPE"), MessageClassId = ConvertNull <string>(dr, "ID"), MessageNumber = ConvertNull <string>(dr, "NUMBER"), LogNumber = ConvertNull <string>(dr, "MESSAGE"), LogMessageNumber = ConvertNull <string>(dr, "LOG_NO"), MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"), MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"), MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"), MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4") }; messageList.Add(message); } outVo.SapMessageListVo = messageList; List <string> errorMaterialList = new List <string>(); DataTable errorMaterialTable = sapFuntion.GetSAPTable("TB_ERROR_MATERIAL"); foreach (DataRow dr in errorMaterialTable.Rows) { string errorMaterial = ConvertNull <string>(dr, "MATERIAL"); errorMaterialList.Add(errorMaterial); } outVo.ErrorMaterialList = errorMaterialList; return(outVo); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { StockVo inVo = (StockVo)vo; //create command SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, SAPRFCNameEnum.RFC_STOCK.GetValue()); //create parameter SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("IM_PLANT", inVo.PlantCode); sapParameter.AddParameter("IM_FROM_MATERIAL", inVo.FromMaterialNumber); sapParameter.AddParameter("IM_TO_MATERIAL", inVo.ToMaterialNumber); sapParameter.AddParameter("IM_LGORT", inVo.StorageLocationCode); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter); DataTable sapTable = sapFuntion.GetSAPTable("TB_STOCK_DATA"); //StockVo outVo = new StockVo(); string stockQty; StockVo outVo = new StockVo(); foreach (DataRow dr in sapTable.Rows) { StockVo currOutVo = new StockVo(); stockQty = ConvertNull <string>(dr, "UNRESTRICTED_STCK"); currOutVo.UnrestrictedStock = (int)Convert.ToDecimal(stockQty); currOutVo.ItemNumber = ConvertNull <string>(dr, "MATERIAL"); currOutVo.StockQty = (int)Convert.ToDecimal(stockQty); currOutVo.WarehouseCode = ConvertNull <string>(dr, "LGORT"); currOutVo.InternalLot = ConvertNull <string>(dr, "BATCH"); currOutVo.SupplierCode = ConvertNull <string>(dr, "VENDOR"); currOutVo.SupplierName = ConvertNull <string>(dr, "V_DESC"); currOutVo.OrderStr = ConvertNull <string>(dr, "GR_DATE") + ConvertNull <string>(dr, "GR_TIME") + ConvertNull <string>(dr, "BATCH"); currOutVo.PlanToConsume = currOutVo.UnrestrictedStock; currOutVo.StockReserve = currOutVo.UnrestrictedStock; currOutVo.StockReserve2 = currOutVo.UnrestrictedStock; currOutVo.SapBatchNumber = ConvertNull <string>(dr, "BATCH"); currOutVo.VendorBatchNumber = ConvertNull <string>(dr, "V_BATCH"); outVo.StockListVo.Add(currOutVo); } List <SapMessageVo> messageList = new List <SapMessageVo>(); DataTable sapMessageTable = sapFuntion.GetSAPTable("TB_RETURN"); foreach (DataRow dr in sapMessageTable.Rows) { SapMessageVo message = new SapMessageVo { MessageType = ConvertNull <string>(dr, "TYPE"), MessageClassId = ConvertNull <string>(dr, "ID"), MessageNumber = ConvertNull <string>(dr, "NUMBER"), LogNumber = ConvertNull <string>(dr, "MESSAGE"), LogMessageNumber = ConvertNull <string>(dr, "LOG_NO"), MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"), MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"), MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"), MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4") }; messageList.Add(message); } outVo.SapMessageListVo = messageList; return(outVo); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { PurchaseOrderInVo inVo = (PurchaseOrderInVo)vo; //create command SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, "ZGTMMFG38_MES_SAP_INBOUND"); // SAPRFCNameEnum.RFC_DELIVERY_ORDER.GetValue()); SAPParameterList sapParameterTableInput = sapCommandAdapter.CreateParameterList(); SAPParameterList sapParameter; //create parameter for TABLES TB_LIFNR: STRUCTURE ZGTMMS62, if (inVo.LIFNRValueList != null && inVo.LIFNRValueList.Count > 0) { SAPParameterList sapParameterTableLIFNR = sapCommandAdapter.CreateParameterList(); foreach (String value in inVo.LIFNRValueList) { sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("LIFNR", value); sapParameterTableLIFNR.AddParameterList(sapParameter); } sapParameterTableInput.AddParameter("TB_LIFNR", sapParameterTableLIFNR); } //create parameter for TABLES TB_EBELN: STRUCTURE ZGTMMS63, if (inVo.EBELNValueList != null && inVo.EBELNValueList.Count > 0) { SAPParameterList sapParameterTableEBELN = sapCommandAdapter.CreateParameterList(); foreach (String value in inVo.EBELNValueList) { sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("EBELN", value); sapParameterTableEBELN.AddParameterList(sapParameter); } sapParameterTableInput.AddParameter("TB_EBELN", sapParameterTableEBELN); } //create parameter for TABLES TB_MATNR: STRUCTURE ZGTMMS64, if (inVo.MATNRValueList != null && inVo.MATNRValueList.Count > 0) { SAPParameterList sapParameterTableMATNR = sapCommandAdapter.CreateParameterList(); foreach (String value in inVo.MATNRValueList) { sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("MATNR", value); sapParameterTableMATNR.AddParameterList(sapParameter); } sapParameterTableInput.AddParameter("TB_MATNR", sapParameterTableMATNR); } //create parameter for TABLES TB_BEDAT_RANGE:STRUCTURE ZGTMMS65, if (!string.IsNullOrEmpty(inVo.BEFromDate) && !string.IsNullOrEmpty(inVo.BEToDate)) { SAPParameterList sapParameterTableBEDATRANGE = sapCommandAdapter.CreateParameterList(); sapParameterTableBEDATRANGE.AddParameter("SIGN", "I"); sapParameterTableBEDATRANGE.AddParameter("OPTION", "BT"); sapParameterTableBEDATRANGE.AddParameter("LOW", inVo.BEFromDate); sapParameterTableBEDATRANGE.AddParameter("HIGH", inVo.BEToDate); sapParameterTableInput.AddParameter("TB_BEDAT_RANGE", sapParameterTableBEDATRANGE); } //create parameter for TABLES TB_EINDT_RANGE: STRUCTURE ZGTMMS65, if (!string.IsNullOrEmpty(inVo.EINFromDate) && !string.IsNullOrEmpty(inVo.EINToDate)) { SAPParameterList sapParameterTableEINDTRANGE = sapCommandAdapter.CreateParameterList(); sapParameterTableEINDTRANGE.AddParameter("SIGN", "I"); sapParameterTableEINDTRANGE.AddParameter("OPTION", "BT"); sapParameterTableEINDTRANGE.AddParameter("LOW", inVo.EINFromDate); sapParameterTableEINDTRANGE.AddParameter("HIGH", inVo.EINToDate); sapParameterTableInput.AddParameter("TB_EINDT_RANGE", sapParameterTableEINDTRANGE); } sapParameterTableInput.AddParameter("IM_WERKS", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); sapParameterTableInput.AddParameter("IM_STATUS", inVo.Status); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameterTableInput); //PO Count Value string POCount = sapFuntion.GetSAPValue("EX_COUNT"); //PO INFO table data DataTable headerTable = sapFuntion.GetSAPTable("TB_OUTDATA"); // result message table data DataTable resultMessageTable = sapFuntion.GetSAPTable("TB_RETURN"); PurchaseOrderOutVo outVo = new PurchaseOrderOutVo(); // get the Header data foreach (DataRow dr in headerTable.Rows) { PurchaseOrderOutVo curroutVo = new PurchaseOrderOutVo(); curroutVo.Material = ConvertNull <string>(dr, "MATNR"); curroutVo.MaterialName = ConvertNull <string>(dr, "MAKTX"); curroutVo.Supplier = ConvertNull <string>(dr, "LIFNR"); curroutVo.SupplierName = ConvertNull <string>(dr, "NAME1"); curroutVo.PurchaseOrderNumber = ConvertNull <string>(dr, "EBELN"); curroutVo.POLineNumber = ConvertNull <string>(dr, "EBELP"); curroutVo.OrderQuantity = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "MENGE")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "MENGE")).ToString().Replace(",", "")); curroutVo.OpenQuantity = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "OPENQ")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "OPENQ")).ToString().Replace(",", "")); // decimal.Parse(ConvertNull<string>(dr, "OPENQ")); curroutVo.ReceivedQuantity = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "WEMNG")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "WEMNG")).ToString().Replace(",", "")); //decimal.Parse(ConvertNull<string>(dr, "WEMNG")); curroutVo.Unit = ConvertNull <string>(dr, "MEINS"); if (outVo.PurchaseOrderList == null) { outVo.PurchaseOrderList = new List <PurchaseOrderOutVo>(); } if (!string.IsNullOrWhiteSpace(POCount)) { outVo.POCount = Convert.ToInt32(POCount); } outVo.PurchaseOrderList.Add(curroutVo); } //get the Return Message data outVo.PurchaseOrderResultMessageList = new List <SapMessageVo>(); foreach (DataRow dr in resultMessageTable.Rows) { SapMessageVo message = new SapMessageVo(); message.MessageType = ConvertNull <string>(dr, "TYPE"); message.MessageClassId = ConvertNull <string>(dr, "ID"); message.MessageNumber = ConvertNull <string>(dr, "NUMBER"); message.Message = ConvertNull <string>(dr, "MESSAGE"); message.LogNumber = ConvertNull <string>(dr, "LOG_NO"); message.LogMessageNumber = ConvertNull <string>(dr, "LOG_MSG_NO"); message.MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"); message.MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"); message.MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"); message.MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4"); message.Parameter = ConvertNull <string>(dr, "PARAMETER"); message.Row = ConvertNull <string>(dr, "ROW"); message.Field = ConvertNull <string>(dr, "FIELD"); message.System = ConvertNull <string>(dr, "SYSTEM"); outVo.PurchaseOrderResultMessageList.Add(message); } return(outVo); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { int totalQty = 0; int imCount = 0; ValueObjectList <DispatchReportItemDtlVo> LIST = new ValueObjectList <DispatchReportItemDtlVo>(); //if (vo is ValueObjectList<DispatchReportItemDtlVo>) //{ // LIST = (ValueObjectList<DispatchReportItemDtlVo>)vo; //} //else //{ // LIST.add((DispatchReportItemDtlVo)vo); //} //create command SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, "Z_GTSDFG7401_SCAN_DELIVERY"); // SAPRFCNameEnum.RFC_PICKING_LIST.GetValue()); SAPParameterList sapParameterTableLists = sapCommandAdapter.CreateParameterList(); DispatchReportItemDtlVo inVo = (DispatchReportItemDtlVo)vo; //foreach (DispatchReportItemDtlVo inVo in LIST.GetList()) //{ //int pickedQuantity = 0; //foreach (DispatchReportItemDtlVo currVo in inVo.DipatchReportItemDetailsList) //{ // pickedQuantity += currVo.ItemQuantity; //} //create parameter for table IT_LIPS SAPParameterList sapParameterTable = sapCommandAdapter.CreateParameterList(); //sapParameterTable.AddParameter("SIGN", "I"); //value set from invo //sapParameterTable.AddParameter("OPTION", "EQ"); sapParameterTable.AddParameter("VBELN", ("0000000000" + inVo.DeliveryOrderNo.ToString().Trim()).Substring(("0000000000" + inVo.DeliveryOrderNo.ToString().Trim()).Length - 10, 10)); sapParameterTable.AddParameter("POSNR", inVo.DeliveryOrderUnit.ToString()); sapParameterTable.AddParameter("PIKMG", inVo.ItemQuantity.ToString()); // picked quantity sapParameterTable.AddParameter("CHARG", inVo.LotNo); // picked quantity sapParameterTable.AddParameter("WADAT_IST", inVo.ActualDeliveryDate.ToString("yyyyMMdd")); // picked quantity sapParameterTable.AddParameter("LGORT", inVo.StorageLocation); // picked quantity sapParameterTableLists.AddParameterList(sapParameterTable); //totalQty += pickedQuantity; imCount++; //} //create parameter for table Z_GTSDFG7301_DELIVERY_RFC SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("IM_PLANT", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); // "1100"); sapParameter.AddParameter("IM_COUNT", 1); sapParameter.AddParameter("IM_TOTAL", inVo.ItemQuantity.ToString()); sapParameter.AddParameter("IT_LIPS", sapParameterTableLists); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter); DataTable resultMessageTable = sapFuntion.GetSAPTable("ET_RETURN"); DispatchReportItemDtlVo outVo = new DispatchReportItemDtlVo(); // outVo.DeliveryOrderResultMessageList = new List<DeliveryOrderResultMessageVo>(); outVo.DispatchReportResultMessageList = new List <SapMessageVo>(); foreach (DataRow dr in resultMessageTable.Rows) { SapMessageVo message = new SapMessageVo(); message.MessageType = ConvertNull <string>(dr, "TYPE"); message.MessageClassId = ConvertNull <string>(dr, "ID"); message.MessageNumber = ConvertNull <string>(dr, "NUMBER"); message.Message = ConvertNull <string>(dr, "MESSAGE"); message.LogNumber = ConvertNull <string>(dr, "LOG_NO"); message.LogMessageNumber = ConvertNull <string>(dr, "LOG_MSG_NO"); message.MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"); message.MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"); message.MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"); message.MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4"); outVo.DispatchReportResultMessageList.Add(message); } return(outVo); }
public bool InstallAndRun() { IRfcFunction function = null; this._result.Clear(); try { if (this._des == null) { throw new SAPException(Messages.Connectionisnotvalid); } this._LastError = ""; if (!String.IsNullOrEmpty(CustomFunction)) { function = _des.Repository.CreateFunction(CustomFunction); } else { bool hasFunction = SAPFunction.CheckFunction(_sysName, "ZVI_RFC_ABAP_INSTALL_AND_RUN"); if (hasFunction) { function = _des.Repository.CreateFunction("ZVI_RFC_ABAP_INSTALL_AND_RUN"); } //else //{ // hasFunction = SAPFunction.CheckFunction(_sysName, "RFC_ABAP_INSTALL_AND_RUN"); // if (hasFunction) // { // function = _des.Repository.CreateFunction("RFC_ABAP_INSTALL_AND_RUN"); // } //} } if (function == null) { throw new SAPException("无法找到运行程序"); } IRfcTable table = function.GetTable("PROGRAM"); if (this._code.Count <= 1) { throw new Exception(Messages.Thegivencodeisnotvalid); } foreach (string str in this._code) { table.Append(); IRfcStructure row = table.CurrentRow; row.SetValue("ZEILE", str); } function.Invoke(_des); } catch (RfcCommunicationException e) { throw new SAPException(e.Message); } catch (RfcAbapException e) { throw new SAPException(e.Key + e.Message); } this._LastError = function.GetString("ERRORMESSAGE"); if (this._LastError != "") { return(false); } IRfcTable table2 = function.GetTable("WRITES"); for (int i = 0; i < table2.RowCount; i++) { this._result.Add(table2[i].GetString("ZEILE")); } return(true); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { Decimal AllowableToError = 0.5M; MoConfirmationMaterialVo inVo = (MoConfirmationMaterialVo)vo; MoConfirmationHeaderVo header = (MoConfirmationHeaderVo)inVo.MoConfirmationHeaderVo; //MoConfirmationMaterialVo materialsVo = (MoConfirmationMaterialVo)inVo.MoConfirmationMaterialListVo.FirstOrDefault(); List <MoConfirmationMaterialVo> materials = inVo.MoConfirmationMaterialListVo; if (header.CancellationFlag != "CAL") { MoConfirmationResultVo FrontResultVo = new MoConfirmationResultVo(); List <SapMessageVo> FrontMessageList = new List <SapMessageVo>(); bool DataIsOk = true; MoConfirmationMaterialVo materialProduct = materials.Find(s => s.MovementType == Properties.Resources.MOVEMENT_TYPE); if (materialProduct == null) { DataIsOk = false; SapMessageVo NullMessage = new SapMessageVo { OrderNumber = header.OrderNumber, MessageType = Properties.Resources.ErrorMessageCategory, MessageClassId = "000", MessageNumber = "000", LogNumber = Properties.Resources.scce00036, LogMessageNumber = "000", MessageVariable1 = "", MessageVariable2 = "", MessageVariable3 = "", MessageVariable4 = "" }; FrontResultVo.MessageList.Add(NullMessage); } else { if (materialProduct.SapBatchNumber != header.LotNoOfUsers) { DataIsOk = false; SapMessageVo BatchDifferentMessage = new SapMessageVo { OrderNumber = header.OrderNumber, MessageType = Properties.Resources.ErrorMessageCategory, MessageClassId = "000", MessageNumber = "000", LogNumber = Properties.Resources.scce00037, LogMessageNumber = "001", MessageVariable1 = "", MessageVariable2 = "", MessageVariable3 = "", MessageVariable4 = "" }; FrontResultVo.MessageList.Add(BatchDifferentMessage); } if (materialProduct.Quantity != header.ProductionOfUsers) { DataIsOk = false; SapMessageVo BatchDifferentMessage = new SapMessageVo { OrderNumber = header.OrderNumber, MessageType = Properties.Resources.ErrorMessageCategory, MessageClassId = "000", MessageNumber = "000", LogNumber = Properties.Resources.scce00038, LogMessageNumber = "002", MessageVariable1 = "", MessageVariable2 = "", MessageVariable3 = "", MessageVariable4 = "" }; FrontResultVo.MessageList.Add(BatchDifferentMessage); } } Decimal MaterQtyAll = materials.Where(r => r.MovementType != Properties.Resources.MOVEMENT_TYPE).Sum(t => t.Quantity); if (header.TotalOfUsers >= MaterQtyAll - AllowableToError && header.TotalOfUsers <= MaterQtyAll + AllowableToError) { } else { DataIsOk = false; SapMessageVo BatchDifferentMessage = new SapMessageVo { OrderNumber = header.OrderNumber, MessageType = Properties.Resources.ErrorMessageCategory, MessageClassId = "000", MessageNumber = "000", LogNumber = Properties.Resources.scce00039, LogMessageNumber = "003", MessageVariable1 = "", MessageVariable2 = "", MessageVariable3 = "", MessageVariable4 = "" }; FrontResultVo.MessageList.Add(BatchDifferentMessage); } if (!DataIsOk) { FrontResultVo.OutSapFlag = Properties.Resources.ErrorMessageCategory; return(FrontResultVo); } } SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, SAPRFCNameEnum.RFC_MANUFACTURING_ORDER_CONFIRMATION.GetValue()); //get the sapuser from cache memory SapUserVo sapUserVo = sapCommandAdapter.GetSapUser(trxContext); DateTime dbTime = trxContext.ProcessingDBDateTime; SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("PLANT", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); // ); sapParameter.AddParameter("ORDER_NUMBER", header.OrderNumber); sapParameter.AddParameter("IMUSER", sapUserVo.SapUser); //set sapuser using using sessionid sapParameter.AddParameter("IMDATE", dbTime.ToString("yyyyMMdd")); //submitting datetime "yyyyMMdd" sapParameter.AddParameter("IMTIME", dbTime.ToString("HHmmss")); //submitting datetime "HHmmss" if (string.IsNullOrEmpty(header.Supervisor)) { sapParameter.AddParameter("SUPERVISOR", trxContext.UserData.UserCode); //nidecmes login user } else { sapParameter.AddParameter("SUPERVISOR", header.Supervisor); // trxContext.UserData.UserCode); //nidecmes login user } sapParameter.AddParameter("ACT_STARTDATE", header.StartDateTime.ToString("yyyyMMdd")); sapParameter.AddParameter("ACT_STARTTIME", header.StartDateTime.ToString("HHmmss")); sapParameter.AddParameter("ACT_ENDDATE", header.EndDateTime.ToString("yyyyMMdd")); sapParameter.AddParameter("ACT_ENDTIME", header.EndDateTime.ToString("HHmmss")); sapParameter.AddParameter("MAN_HOUR", header.ManHour.ToString("0.000")); sapParameter.AddParameter("MACHINE_HOUR", header.MachineHour.ToString("0.000")); sapParameter.AddParameter("WORKUNIT", header.WorkTimeUnit); sapParameter.AddParameter("POSTDATE", header.PostingDate.ToString("yyyyMMdd")); sapParameter.AddParameter("CAL_FLAG", header.CancellationFlag); sapParameter.AddParameter("END_FLAG", header.EndFlag); sapParameter.AddParameter("CONF_NO", header.ConfirmationNumber.ToString()); sapParameter.AddParameter("CONF_CNT", header.ConfirmationCounter.ToString()); sapParameter.AddParameter("MULTI_FLAG", header.MultiFlag); sapParameter.AddParameter("IM_COUNT", header.MaterialCount); sapParameter.AddParameter("IM_TOTAL", header.MaterialQuantityTotal.ToString("0.000")); SAPParameterList sapParameterTable; SAPParameterList sapParameterTableLists = sapCommandAdapter.CreateParameterList(); foreach (MoConfirmationMaterialVo m in materials) { //rfcTable.Insert(); sapParameterTable = sapCommandAdapter.CreateParameterList(); sapParameterTable.AddParameter("ORDER_NUMBER", m.OrderNumber); sapParameterTable.AddParameter("IMDATE", dbTime.ToString("yyyyMMdd")); sapParameterTable.AddParameter("IMTIME", dbTime.ToString("HHmmss")); sapParameterTable.AddParameter("MATERIAL", m.MaterialNumber); sapParameterTable.AddParameter("BATCH", m.SapBatchNumber); sapParameterTable.AddParameter("V_BATCH", m.VendorBatchNumber); sapParameterTable.AddParameter("MOVETYPE", m.MovementType); sapParameterTable.AddParameter("ACT_QUANTITY", m.Quantity.ToString()); sapParameterTable.AddParameter("LGORT", m.StorageLocation); sapParameterTable.AddParameter("UNIT", m.Unit); sapParameterTableLists.AddParameterList(sapParameterTable); } sapParameter.AddParameter("TB_ORDER_MOVEMENT", sapParameterTableLists); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter); MoConfirmationResultVo resultVo = new MoConfirmationResultVo { OutSapFlag = sapFuntion.GetSAPValue("OUT_SAPFLAG") }; List <SapMessageVo> messageList = new List <SapMessageVo>(); DataTable sapTable = sapFuntion.GetSAPTable("TB_RETURN"); foreach (DataRow dr in sapTable.Rows) { SapMessageVo message = new SapMessageVo { OrderNumber = ConvertNull <string>(dr, "AUFNR"), MessageType = ConvertNull <string>(dr, "TYPE"), MessageClassId = ConvertNull <string>(dr, "ID"), MessageNumber = ConvertNull <string>(dr, "NUMBER"), LogNumber = ConvertNull <string>(dr, "MESSAGE"), LogMessageNumber = ConvertNull <string>(dr, "LOG_NO"), MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"), MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"), MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"), MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4") }; resultVo.MessageList.Add(message); } return(resultVo); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { PurchaseOrderInVo inVo = (PurchaseOrderInVo)vo; //create command SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, "ZGTMMFG38_MES_SAP_INBOUND"); // SAPRFCNameEnum.RFC_DELIVERY_ORDER.GetValue()); SAPParameterList sapParameterTableInput = sapCommandAdapter.CreateParameterList(); SAPParameterList sapParameter; //create parameter for TABLES TB_LIFNR: STRUCTURE ZGTMMS62, if (inVo.LIFNRValueList != null && inVo.LIFNRValueList.Count > 0) { SAPParameterList sapParameterTableLIFNR = sapCommandAdapter.CreateParameterList(); foreach (String value in inVo.LIFNRValueList) { sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("LIFNR", value); sapParameterTableLIFNR.AddParameterList(sapParameter); } sapParameterTableInput.AddParameter("TB_LIFNR", sapParameterTableLIFNR); } //create parameter for TABLES TB_EBELN: STRUCTURE ZGTMMS63, if (inVo.EBELNValueList != null && inVo.EBELNValueList.Count > 0) { SAPParameterList sapParameterTableEBELN = sapCommandAdapter.CreateParameterList(); foreach (String value in inVo.EBELNValueList) { sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("EBELN", value); sapParameterTableEBELN.AddParameterList(sapParameter); } sapParameterTableInput.AddParameter("TB_EBELN", sapParameterTableEBELN); } //create parameter for TABLES TB_MATNR: STRUCTURE ZGTMMS64, if (inVo.MATNRValueList != null && inVo.MATNRValueList.Count > 0) { SAPParameterList sapParameterTableMATNR = sapCommandAdapter.CreateParameterList(); foreach (String value in inVo.MATNRValueList) { sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("MATNR", value); sapParameterTableMATNR.AddParameterList(sapParameter); } sapParameterTableInput.AddParameter("TB_MATNR", sapParameterTableMATNR); } //create parameter for TABLES TB_BEDAT_RANGE:STRUCTURE ZGTMMS65, if (!string.IsNullOrEmpty(inVo.BEFromDate) && !string.IsNullOrEmpty(inVo.BEToDate)) { SAPParameterList sapParameterTableBEDATRANGE = sapCommandAdapter.CreateParameterList(); sapParameterTableBEDATRANGE.AddParameter("SIGN", "I"); sapParameterTableBEDATRANGE.AddParameter("OPTION", "BT"); sapParameterTableBEDATRANGE.AddParameter("LOW", inVo.BEFromDate); sapParameterTableBEDATRANGE.AddParameter("HIGH", inVo.BEToDate); sapParameterTableInput.AddParameter("TB_BEDAT_RANGE", sapParameterTableBEDATRANGE); } //create parameter for TABLES TB_EINDT_RANGE: STRUCTURE ZGTMMS65, if (!string.IsNullOrEmpty(inVo.EINFromDate) && !string.IsNullOrEmpty(inVo.EINToDate)) { SAPParameterList sapParameterTableEINDTRANGE = sapCommandAdapter.CreateParameterList(); sapParameterTableEINDTRANGE.AddParameter("SIGN", "I"); sapParameterTableEINDTRANGE.AddParameter("OPTION", "BT"); sapParameterTableEINDTRANGE.AddParameter("LOW", inVo.EINFromDate); sapParameterTableEINDTRANGE.AddParameter("HIGH", inVo.EINToDate); sapParameterTableInput.AddParameter("TB_EINDT_RANGE", sapParameterTableEINDTRANGE); } sapParameterTableInput.AddParameter("IM_WERKS", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); sapParameterTableInput.AddParameter("IM_STATUS", inVo.Status); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameterTableInput); //PO Count Value string POCount = sapFuntion.GetSAPValue("EX_COUNT"); //PO INFO table data DataTable headerTable = sapFuntion.GetSAPTable("TB_OUTDATA"); // result message table data DataTable resultMessageTable = sapFuntion.GetSAPTable("TB_RETURN"); PurchaseOrderDataVo outVo = new PurchaseOrderDataVo(); // get the Header data foreach (DataRow dr in headerTable.Rows) { PurchaseOrderDataVo curroutVo = new PurchaseOrderDataVo(); curroutVo.AFNAM = ConvertNull <string>(dr, "AFNAM"); curroutVo.AMTLC = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "AMTLC")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "AMTLC")).ToString().Replace(",", "")); try { curroutVo.BEDAT = DateTime.Parse(ConvertNull <string>(dr, "BEDAT")); } catch { curroutVo.BEDAT = DateTime.MinValue; } curroutVo.BISMT = ConvertNull <string>(dr, "BISMT"); try { curroutVo.BUDAT = DateTime.Parse(ConvertNull <string>(dr, "BUDAT")); } catch { curroutVo.BUDAT = DateTime.MinValue; } curroutVo.EBELN = ConvertNull <string>(dr, "EBELN"); curroutVo.EBELP = ConvertNull <string>(dr, "EBELP"); try { curroutVo.EINDT = DateTime.Parse(ConvertNull <string>(dr, "EINDT")); } catch { curroutVo.EINDT = DateTime.MinValue; } curroutVo.EKNAM = ConvertNull <string>(dr, "EKNAM"); curroutVo.ESTKZ_DESC = ConvertNull <string>(dr, "ESTKZ_DESC"); curroutVo.LGPBE = ConvertNull <string>(dr, "LGPBE"); curroutVo.LIFNR = ConvertNull <string>(dr, "LIFNR"); curroutVo.MAKTX = ConvertNull <string>(dr, "MAKTX"); curroutVo.MATNR = ConvertNull <string>(dr, "MATNR"); curroutVo.MEINS = ConvertNull <string>(dr, "MEINS"); curroutVo.MENGE = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "MENGE")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "MENGE")).ToString().Replace(",", "")); curroutVo.NAME1 = ConvertNull <string>(dr, "NAME1"); curroutVo.NETWR = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "NETWR")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "NETWR")).ToString().Replace(",", "")); curroutVo.OPENQ = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "OPENQ")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "OPENQ")).ToString().Replace(",", "")); curroutVo.OPNAMTLC = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "OPNAMTLC")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "OPNAMTLC")).ToString().Replace(",", "")); curroutVo.PEINH = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "PEINH")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "PEINH")).ToString().Replace(",", "")); curroutVo.STATUS = ConvertNull <string>(dr, "STATUS"); curroutVo.UNITP = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "UNITP")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "UNITP")).ToString().Replace(",", "")); curroutVo.VERSG = ConvertNull <string>(dr, "VERSG"); curroutVo.WAERS = ConvertNull <string>(dr, "WAERS"); curroutVo.WAERS_L = ConvertNull <string>(dr, "WAERS_L"); curroutVo.WEMNG = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "WEMNG")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "WEMNG")).ToString().Replace(",", "")); curroutVo.WRBTR = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "WRBTR")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "WRBTR")).ToString().Replace(",", "")); curroutVo.XBLNR = ConvertNull <string>(dr, "XBLNR"); curroutVo.ZAD_NAME = ConvertNull <string>(dr, "ZAD_NAME"); if (outVo.PurchaseOrderDataList == null) { outVo.PurchaseOrderDataList = new List <PurchaseOrderDataVo>(); } outVo.PurchaseOrderDataList.Add(curroutVo); } //get the Return Message data outVo.PurchaseOrderResultMessageList = new List <SapMessageVo>(); foreach (DataRow dr in resultMessageTable.Rows) { SapMessageVo message = new SapMessageVo(); message.MessageType = ConvertNull <string>(dr, "TYPE"); message.MessageClassId = ConvertNull <string>(dr, "ID"); message.MessageNumber = ConvertNull <string>(dr, "NUMBER"); message.Message = ConvertNull <string>(dr, "MESSAGE"); message.LogNumber = ConvertNull <string>(dr, "LOG_NO"); message.LogMessageNumber = ConvertNull <string>(dr, "LOG_MSG_NO"); message.MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"); message.MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"); message.MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"); message.MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4"); message.Parameter = ConvertNull <string>(dr, "PARAMETER"); message.Row = ConvertNull <string>(dr, "ROW"); message.Field = ConvertNull <string>(dr, "FIELD"); message.System = ConvertNull <string>(dr, "SYSTEM"); outVo.PurchaseOrderResultMessageList.Add(message); } return(outVo); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { DeliveryOrderVo inVo = (DeliveryOrderVo)vo; //create command SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, "Z_GTSDFG7301_DELIVERY_RFC"); // SAPRFCNameEnum.RFC_DELIVERY_ORDER.GetValue()); //create parameter for table IT_WERKS SAPParameterList sapParameterTable1 = sapCommandAdapter.CreateParameterList(); sapParameterTable1.AddParameter("SIGN", "I"); //value set from invo sapParameterTable1.AddParameter("OPTION", "EQ"); sapParameterTable1.AddParameter("PLANT_LOW", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); // "1100"); sapParameterTable1.AddParameter("PLANT_HIGH", ""); //create parameter for table IT_VBELN SAPParameterList sapParameterTable2 = sapCommandAdapter.CreateParameterList(); sapParameterTable2.AddParameter("SIGN", "I"); //value set from invo sapParameterTable2.AddParameter("OPTION", "EQ"); sapParameterTable2.AddParameter("DELIV_NUMB_LOW", inVo.DoNo); //"0081110720" sapParameterTable2.AddParameter("DELIV_NUMB_HIGH", inVo.DoNo); //"0081110720" //create parameter for table Z_GTSDFG7301_DELIVERY_RFC SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("IT_WERKS", sapParameterTable1); sapParameter.AddParameter("IT_VBELN", sapParameterTable2); SAPFunction sapFuntion = sapCommandAdapter.ExecuteTable(trxContext, sapParameter); //Header table data DataTable headerTable = sapFuntion.GetSAPTable("ET_HEADER"); //detail table data DataTable itemTable = sapFuntion.GetSAPTable("ET_ITEM"); // result message table data DataTable resultMessageTable = sapFuntion.GetSAPTable("ET_RETURN"); DeliveryOrderVo outVo = new DeliveryOrderVo(); // get the Header data foreach (DataRow dr in headerTable.Rows) { outVo.CreationDate = DateTime.ParseExact(ConvertNull <string>(dr, "ERDAT"), "yyyy-MM-dd", null); outVo.DoumentDate = DateTime.ParseExact(ConvertNull <string>(dr, "AUDAT"), "yyyy-MM-dd", null); outVo.Status = ConvertNull <string>(dr, "GBSTK"); outVo.PickedQuantity = Convert.ToInt32(Convert.ToDecimal(ConvertNull <string>(dr, "PIKMG"))); outVo.DoNo = ConvertNull <string>(dr, "VBELN"); outVo.CustomerPoNumber = ConvertNull <string>(dr, "BSTNK"); outVo.CustomerNumber = ConvertNull <string>(dr, "KUNNR").TrimStart('0'); outVo.CustomerName = ConvertNull <string>(dr, "NAME1"); outVo.SoNo = ConvertNull <string>(dr, "VBELN_SALES").TrimStart('0'); outVo.Amount = Convert.ToInt32(Convert.ToDecimal(ConvertNull <string>(dr, "MENGE"))); outVo.DeliveryDate = DateTime.ParseExact(ConvertNull <string>(dr, "BLDAT"), "yyyy-MM-dd", null); outVo.DocumentType = ConvertNull <string>(dr, "AUART"); } //get the Item data outVo.DeliveryOrderDtlList = new List <DeliveryOrderDtlVo>(); foreach (DataRow dr in itemTable.Rows) { DeliveryOrderDtlVo dtlOutVo = new DeliveryOrderDtlVo(); dtlOutVo.SoNumber = ConvertNull <string>(dr, "VGBEL"); dtlOutVo.SoItem = ConvertNull <string>(dr, "VGPOS"); dtlOutVo.OrderQuantity = Convert.ToInt32(Convert.ToDecimal(ConvertNull <string>(dr, "KWMENG"))); dtlOutVo.QuantityStock = Convert.ToInt32(Convert.ToDecimal(ConvertNull <string>(dr, "LGMNG"))); dtlOutVo.DoNo = ConvertNull <string>(dr, "VBELN"); dtlOutVo.DeliveryItemNumber = ConvertNull <string>(dr, "POSNR"); dtlOutVo.BatchNo = ConvertNull <string>(dr, "CHARG"); dtlOutVo.MaterialNumber = ConvertNull <string>(dr, "MATNR"); dtlOutVo.MaterialType = ConvertNull <string>(dr, "MTART"); dtlOutVo.MaterialTypeDesc = ConvertNull <string>(dr, "MTBEZ"); dtlOutVo.MaterialDesc = ConvertNull <string>(dr, "MAKTX"); dtlOutVo.MaterialStatisticsGroup = ConvertNull <string>(dr, "VERSG"); dtlOutVo.MaterialStatisticsGroupDesc = ConvertNull <string>(dr, "BEZEI20"); dtlOutVo.MaterialGroup = ConvertNull <string>(dr, "MATKL"); dtlOutVo.MaterialGroupDesc = ConvertNull <string>(dr, "WGBEZ"); dtlOutVo.QuantitySales = Convert.ToInt32(Convert.ToDecimal(ConvertNull <string>(dr, "LFIMG"))); if (!string.Equals(ConvertNull <string>(dr, "ERDAT"), "0000-00-00")) { dtlOutVo.PickingDate = DateTime.ParseExact(ConvertNull <string>(dr, "ERDAT"), "yyyy-MM-dd", null); } //dtlOutVo.PickingTime = DateTime.ParseExact(ConvertNull<string>(dr, "ERZET"), "HH:mm:ss", null); dtlOutVo.StorageLocation = ConvertNull <string>(dr, "LGORT"); outVo.DeliveryOrderDtlList.Add(dtlOutVo); } //get the Return Message data outVo.DeliveryOrderResultMessageList = new List <SapMessageVo>(); foreach (DataRow dr in resultMessageTable.Rows) { SapMessageVo message = new SapMessageVo(); message.MessageType = ConvertNull <string>(dr, "TYPE"); message.MessageClassId = ConvertNull <string>(dr, "ID"); message.MessageNumber = ConvertNull <string>(dr, "NUMBER"); message.Message = ConvertNull <string>(dr, "MESSAGE"); message.LogNumber = ConvertNull <string>(dr, "LOG_NO"); message.LogMessageNumber = ConvertNull <string>(dr, "LOG_MSG_NO"); message.MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"); message.MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"); message.MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"); message.MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4"); outVo.DeliveryOrderResultMessageList.Add(message); } return(outVo); }
/// <summary> /// 填充所有的参数调用SAP RFC函数后,填充所有的参数 /// </summary> /// <param name="funame">函数名</param> /// <param name="list">输入参数列表</param> /// <param name="olist">输出参数列表</param> /// <returns></returns> private static bool InvokeFunctionFromJson(string sysName, string funame, RfcInputListJson list, out RfcOutputListJson olist) { try { if (funame == "" || null == list) { olist = null; return(false); } if (!SAPFunction.CheckFunction(sysName, funame)) { olist = null; return(false); } RfcDestination destination = SAPDestination.GetDesByName(sysName); RfcFunctionMetadata MetaData = destination.Repository.GetFunctionMetadata(funame); IRfcFunction function = MetaData.CreateFunction(); //初步序列化后的参数还需要进一步进行格式化,把结构体与表格都转化成SAP格式。 list.All.Clear(); list.All.AddRange(list.Import); list.All.AddRange(list.Change); list.All.AddRange(list.Tables); foreach (var item in list.All) { if (item.Value == null) { continue; } RfcParameterMetadata p = MetaData[item.Name]; if (p == null) { continue; } //尝试把OBJECT反解析成对应的类型 if (p.DataType == RfcDataType.STRUCTURE) { Console.WriteLine(item.Value.GetType().ToString()); if (item.Value.GetType().ToString() != "Newtonsoft.Json.Linq.JArray" && item.Value.GetType().ToString() != "System.Array") { continue; } if (item.Value.GetType().ToString() != "System.Array") { // continue; } IRfcStructure str = function.GetStructure(item.Name, true); var arr = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(item.Value.ToString()); if (arr.Count == 1) { //结构使用第一行 var o = arr[0]; for (int s = 0; s < str.Metadata.FieldCount; s++) { RfcFieldMetadata field = str.Metadata[s]; str.SetValue(field.Name, o[field.Name]); } } item.Value = str; } else if (p.DataType == RfcDataType.TABLE) { if (string.IsNullOrEmpty(item.Value.ToString())) { continue; } IRfcTable tbl = function.GetTable(item.Name, true); var arr = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(item.Value.ToString()); for (int x = 0; x < arr.Count; x++) { IRfcStructure str = tbl.Metadata.LineType.CreateStructure(); for (int s = 0; s < tbl.Metadata.LineType.FieldCount; s++) { RfcFieldMetadata field = tbl.Metadata.LineType[s]; str.SetValue(field.Name, arr[x][field.Name]); } tbl.Append(str); } item.Value = tbl; } } //填充所有的参数 for (int i = 0; i < MetaData.ParameterCount; i++) { RfcParameterMetadata pMetadata = MetaData[i]; if (list.All.Exists(x => x.Name == pMetadata.Name)) { var value = list.All.Find(x => x.Name == pMetadata.Name).Value; if (value != null) { function.SetValue(pMetadata.Name, value); } } } //远程调用函数 try { function.Invoke(destination); } catch (RfcAbapException ee) { throw new Exception(ee.Key + ee.Message); } //保留调用结果。 RfcOutputListJson outlist = new RfcOutputListJson(); //循环读取结果。把所以的结果都保存到List<object>中。 for (int i = 0; i < MetaData.ParameterCount; i++) { RfcParameterMetadata pMetadata = MetaData[i]; // if (pMetadata.Direction == RfcDirection.IMPORT) { continue; } RfcKeyValueJson d = new RfcKeyValueJson(); d.Name = pMetadata.Name; if (pMetadata.DataType == RfcDataType.STRUCTURE) { //注意,在这里就算是结构体,也把放到List中,这样可以序列化成数组格式。 List <object> tb_list = new List <object>(); IRfcStructure row = function.GetStructure(pMetadata.Name); Dictionary <string, object> rowd = new Dictionary <string, object>(); for (int x = 0; x < row.Metadata.FieldCount; x++) { rowd.Add(row[x].Metadata.Name, row[x].GetValue()); } tb_list.Add(rowd); d.Value = tb_list; } else if (pMetadata.DataType == RfcDataType.TABLE) { List <object> tb_list = new List <object>(); IRfcTable table = function.GetTable(pMetadata.Name); var readItems = table.RowCount; if (readItems > 0) { try { //保存结果到数据库。 RfcTableMetadata tableMeta = pMetadata.ValueMetadataAsTableMetadata; var _table = new SapTable(sysName, funame + "_" + pMetadata.Name, tableMeta.LineType.Name); _table.DbConnectionString = ConfigFileTool.SAPGlobalSettings.GetDefaultDbConnection(); _table.NewTable = true; _table.SaveDataTable(SAPFunction.RfcTableToDataTable(table)); // RfcTableToDb dbhelper = new RfcTableToDb(funame, d.Name, tble); // dbhelper.saveTable(); } catch (Exception ee) { throw new Exception(ee.Message); } // ThreadStart threadStart = new ThreadStart(dbhelper.saveTable); // Thread thread = new Thread(threadStart); // thread.Start(); //DbHelper.saveRfcTable(funame,ref tble); } //控制100条,数据过多会序列华出错。以后再做改善, if (readItems > 10) { readItems = 10; } for (int rowc = 0; rowc < readItems; rowc++) { IRfcStructure row = table[rowc]; Dictionary <string, object> rowd = new Dictionary <string, object>(); for (int x = 0; x < row.Metadata.FieldCount; x++) { rowd.Add(row[x].Metadata.Name, row[x].GetValue()); } tb_list.Add(rowd); } d.Value = tb_list; } else { d.Value = function.GetValue(pMetadata.Name); } //存放于不同的集合也是为了序列化方便。 switch (pMetadata.Direction) { case RfcDirection.CHANGING: outlist.Change.Add(d); break; case RfcDirection.EXPORT: outlist.Export.Add(d); break; case RfcDirection.IMPORT: outlist.Import.Add(d); break; case RfcDirection.TABLES: outlist.Tables.Add(d); break; } } olist = outlist; return(true); } catch (Exception e) { throw new SAPException(e.Message); } }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { MaterialInVo inVo = (MaterialInVo)vo; //create command SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, SAPRFCNameEnum.RFC_MATERIAL.GetValue()); //create parameter SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("IM_WERKS", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); // inVo.ImWerks); // "1100"); sapParameter.AddParameter("IM_PERIOD_FROM", inVo.ImPeriodFrom); // "20160323"); sapParameter.AddParameter("IM_PERIOD_TO", inVo.ImPeriodTo); // "20160323"); sapParameter.AddParameter("IM_MATERIAL_FROM", inVo.ImMaterialFrom); // "ZP01"); sapParameter.AddParameter("IM_MATERIAL_TO", inVo.ImMaterialTo); // "ZP01"); sapParameter.AddParameter("IM_SOURCE", inVo.ImSource); // "1"); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter); DataTable sapMaterial = sapFuntion.GetSAPTable("TB_MATERIAL_DATA"); DataTable sapVendor = sapFuntion.GetSAPTable("TB_VENDOR_DATA"); DataTable sapReturn = sapFuntion.GetSAPTable("TB_RETURN"); MaterialOutVo outVo = new MaterialOutVo(); ////getting material detail outVo.MaterialListVo = new List <Vo.MaterialOutVo>(); foreach (DataRow dr in sapMaterial.Rows) { MaterialOutVo currOutVo = new MaterialOutVo(); currOutVo.outmatnr = ConvertNull <string>(dr, "OUT_MATNR"); currOutVo.outmaktx = ConvertNull <string>(dr, "OUT_MAKTX"); currOutVo.outmtart = ConvertNull <string>(dr, "OUT_MTART"); if (IsValid(ConvertNull <string>(dr, "OUT_ERSDA"))) { currOutVo.outersda = Convert.ToDateTime(ConvertNull <string>(dr, "OUT_ERSDA")); } if (IsValid(ConvertNull <string>(dr, "OUT_LAEDA"))) { currOutVo.outlaeda = Convert.ToDateTime(ConvertNull <string>(dr, "OUT_LAEDA")); } currOutVo.outlvorm1 = ConvertNull <string>(dr, "OUT_LVORM1"); currOutVo.outxchpf = ConvertNull <string>(dr, "OUT_XCHPF"); currOutVo.outmeins = ConvertNull <string>(dr, "OUT_MEINS"); currOutVo.outbismt = ConvertNull <string>(dr, "OUT_BISMT"); currOutVo.outmatkl = ConvertNull <string>(dr, "OUT_MATKL"); currOutVo.outspart = ConvertNull <string>(dr, "OUT_SPART"); currOutVo.outprdha = ConvertNull <string>(dr, "OUT_PRDHA"); currOutVo.outmstae = ConvertNull <string>(dr, "OUT_MSTAE"); currOutVo.outmtpos = ConvertNull <string>(dr, "OUT_MTPOS"); currOutVo.outntgew = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_NTGEW")); currOutVo.outgewei = ConvertNull <string>(dr, "OUT_GEWEI"); currOutVo.outvolum = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_VOLUM")); currOutVo.outvoleh = ConvertNull <string>(dr, "OUT_VOLEH"); currOutVo.outgroes = ConvertNull <string>(dr, "OUT_GROES"); currOutVo.outzeinr = ConvertNull <string>(dr, "OUT_ZEINR"); currOutVo.outwerks = ConvertNull <string>(dr, "OUT_WERKS"); currOutVo.outlvorm2 = ConvertNull <string>(dr, "OUT_LVORM2"); currOutVo.outdisgr = ConvertNull <string>(dr, "OUT_DISGR"); currOutVo.outekgrp = ConvertNull <string>(dr, "OUT_EKGRP"); currOutVo.outmmsta = ConvertNull <string>(dr, "OUT_MMSTA"); currOutVo.outdismm = ConvertNull <string>(dr, "OUT_DISMM"); currOutVo.outminbe = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_MINBE")); currOutVo.outfxhor = Convert.ToInt32(ConvertNull <string>(dr, "OUT_FXHOR")); currOutVo.outdispo = ConvertNull <string>(dr, "OUT_DISPO"); currOutVo.outdsnam = ConvertNull <string>(dr, "OUT_DSNAM"); currOutVo.outdisls = ConvertNull <string>(dr, "OUT_DISLS"); currOutVo.outbstmi = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_BSTMI")); currOutVo.outbstma = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_BSTMA")); currOutVo.outbstfe = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_BSTFE")); currOutVo.outmabst = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_MABST")); currOutVo.outrdprf = ConvertNull <string>(dr, "OUT_RDPRF"); currOutVo.outbstrf = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_BSTRF")); currOutVo.outbeskz = ConvertNull <string>(dr, "OUT_BESKZ"); currOutVo.outsobsl = ConvertNull <string>(dr, "OUT_SOBSL"); currOutVo.outlgpro = ConvertNull <string>(dr, "OUT_LGPRO"); currOutVo.outusequ = ConvertNull <string>(dr, "OUT_USEQU"); currOutVo.outvspvb = ConvertNull <string>(dr, "OUT_VSPVB"); currOutVo.outrgekz = ConvertNull <string>(dr, "OUT_RGEKZ"); currOutVo.outlgfsb = ConvertNull <string>(dr, "OUT_LGFSB"); currOutVo.outdzeit = Convert.ToInt32(ConvertNull <string>(dr, "OUT_DZEIT")); currOutVo.outplifz = Convert.ToInt32(ConvertNull <string>(dr, "OUT_PLIFZ")); currOutVo.outwebaz = Convert.ToInt32(ConvertNull <string>(dr, "OUT_WEBAZ")); currOutVo.outmrppp = ConvertNull <string>(dr, "OUT_MRPPP"); currOutVo.outfhori = ConvertNull <string>(dr, "OUT_FHORI"); currOutVo.outeisbe = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_EISBE")); currOutVo.outlgrad = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_LGRAD")); currOutVo.outeislo = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_EISLO")); currOutVo.outrwpro = ConvertNull <string>(dr, "OUT_RWPRO"); currOutVo.outshflg = ConvertNull <string>(dr, "OUT_SHFLG"); currOutVo.outshzet = Convert.ToInt32(ConvertNull <string>(dr, "OUT_SHZET")); currOutVo.outshpro = ConvertNull <string>(dr, "OUT_SHPRO"); currOutVo.outstrgr = ConvertNull <string>(dr, "OUT_STRGR"); currOutVo.outvrmod = ConvertNull <string>(dr, "OUT_VRMOD"); currOutVo.outvint1 = Convert.ToInt32(ConvertNull <string>(dr, "OUT_VINT1")); currOutVo.outvint2 = Convert.ToInt32(ConvertNull <string>(dr, "OUT_VINT2")); currOutVo.outmiskz = ConvertNull <string>(dr, "OUT_MISKZ"); currOutVo.outmtvfp = ConvertNull <string>(dr, "OUT_MTVFP"); currOutVo.outaltsl = ConvertNull <string>(dr, "OUT_ALTSL"); currOutVo.outkausf = Convert.ToDecimal(ConvertNull <string>(dr, "OUT_KAUSF")); currOutVo.outkzaus = ConvertNull <string>(dr, "OUT_KZAUS"); if (IsValid(ConvertNull <string>(dr, "OUT_AUSDT"))) { currOutVo.outausdt = Convert.ToDateTime(ConvertNull <string>(dr, "OUT_AUSDT")); } currOutVo.outnfmat = ConvertNull <string>(dr, "OUT_NFMAT"); outVo.MaterialListVo.Add(currOutVo); } ////getting supplier detail outVo.SupplierListVo = new List <Vo.SupplierVo>(); foreach (DataRow dr in sapVendor.Rows) { SupplierVo currVo = new SupplierVo(); currVo.OutMatnr = ConvertNull <string>(dr, "OUT_MATNR"); currVo.OutWerks = ConvertNull <string>(dr, "OUT_WERKS"); currVo.OutEkorg = ConvertNull <string>(dr, "OUT_EKORG"); if (IsValid(ConvertNull <string>(dr, "OUT_VALID_FROM"))) { currVo.OutValidFrom = Convert.ToDateTime(ConvertNull <string>(dr, "OUT_VALID_FROM")); } if (IsValid(ConvertNull <string>(dr, "OUT_VALID_TO"))) { currVo.OutValidTo = Convert.ToDateTime(ConvertNull <string>(dr, "OUT_VALID_TO")); } currVo.OutVendor = ConvertNull <string>(dr, "OUT_VENDOR"); currVo.OutName = ConvertNull <string>(dr, "OUT_NAME"); outVo.SupplierListVo.Add(currVo); } outVo.SapMessageListVo = new List <SapMessageVo>(); foreach (DataRow dr in sapReturn.Rows) { SapMessageVo message = new SapMessageVo(); message.MessageType = ConvertNull <string>(dr, "TYPE"); message.MessageCode = ConvertNull <string>(dr, "CODE"); message.Message = ConvertNull <string>(dr, "MESSAGE"); message.LogNumber = ConvertNull <string>(dr, "LOG_NO"); message.LogMessageNumber = ConvertNull <string>(dr, "LOG_MSG_NO"); message.MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"); message.MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"); message.MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"); message.MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4"); outVo.SapMessageListVo.Add(message); } return(outVo); }
public override ValueObject Execute(TransactionContext trxContext, ValueObject vo) { PoGoodReceiptVo inVo = (PoGoodReceiptVo)vo; List <PoGoodReceiptVo> pos = inVo.PoGoodReceiptList; //create command SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, "ZGTMMFG39_MES_TO_SAP"); // SAPRFCNameEnum.RFC_DELIVERY_ORDER.GetValue()); //create parameter for table IT_WERKS SAPParameterList sapParameterTableList = sapCommandAdapter.CreateParameterList(); SAPParameterList sapParameterTable; ////multiple PO details set //foreach (PoGoodReceiptVo m in pos) //{ // sapParameterTable = sapCommandAdapter.CreateParameterList(); // //DOCU_DATE:DATE, POSTING_DATE:DATE, DELIV_NOTE:CHAR16, BATCH:CHAR10, PO_NUM:CHAR10, ITEM:NUM(5), MATERIAL:CHAR18, QUAN:BCD[7:3], VENDRBATCH:CHAR15 // sapParameterTable.AddParameter("DOCU_DATE", m.DocumentDate); //Document date // sapParameterTable.AddParameter("POSTING_DATE", m.PostingDate); //Posting date // sapParameterTable.AddParameter("DELIV_NOTE", m.DeliveryNote); //Delivery Note // sapParameterTable.AddParameter("BATCH", m.Batch); //Batch // sapParameterTable.AddParameter("PO_NUM", m.PurchaseOrderNumber); //PO Number // sapParameterTable.AddParameter("ITEM", m.POItem); //PO Item // sapParameterTable.AddParameter("MATERIAL", m.Material); //Material // sapParameterTable.AddParameter("QUAN", m.Quantity); //Quantity in Unit of Entry // sapParameterTable.AddParameter("VENDRBATCH", m.SupplierLotNo); //Vendor Batch // sapParameterTableList.AddParameterList(sapParameterTable); //} for (int ii = pos.Count - 1; ii >= 0; ii--) { sapParameterTable = sapCommandAdapter.CreateParameterList(); sapParameterTable.AddParameter("DOCU_DATE", pos[ii].DocumentDate); //Document date sapParameterTable.AddParameter("POSTING_DATE", pos[ii].PostingDate); //Posting date sapParameterTable.AddParameter("DELIV_NOTE", pos[ii].DeliveryNote); //Delivery Note sapParameterTable.AddParameter("BATCH", pos[ii].Batch); //Batch sapParameterTable.AddParameter("PO_NUM", pos[ii].PurchaseOrderNumber); //PO Number sapParameterTable.AddParameter("ITEM", pos[ii].POItem); //PO Item sapParameterTable.AddParameter("MATERIAL", pos[ii].Material); //Material sapParameterTable.AddParameter("QUAN", pos[ii].Quantity); //Quantity in Unit of Entry sapParameterTable.AddParameter("VENDRBATCH", pos[ii].SupplierLotNo); //Vendor Batch sapParameterTableList.AddParameterList(sapParameterTable); } SAPParameterList sapParameter = sapCommandAdapter.CreateParameterList(); sapParameter.AddParameter("IM_PLANT", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue()); sapParameter.AddParameter("TB_INPUT", sapParameterTableList); SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter); List <SapMessageVo> messageList = new List <SapMessageVo>(); DataTable sapTable = sapFuntion.GetSAPTable("TB_RETURN"); PoGoodReceiptVo resultVo = new Vo.PoGoodReceiptVo(); //get the Return Message data resultVo.PoGoodReceiptResultMessageList = new List <SapMessageVo>(); //if (sapTable != null && sapTable.Rows.Count > 0) //{ // DataView dv = sapTable.DefaultView; // dv.Sort = "ROW desc"; // sapTable = dv.ToTable(); //} foreach (DataRow dr in sapTable.Rows) { SapMessageVo message = new SapMessageVo(); message.MessageType = ConvertNull <string>(dr, "TYPE"); message.MessageClassId = ConvertNull <string>(dr, "ID"); message.MessageNumber = ConvertNull <string>(dr, "NUMBER"); message.Message = ConvertNull <string>(dr, "MESSAGE"); message.LogNumber = ConvertNull <string>(dr, "LOG_NO"); message.LogMessageNumber = ConvertNull <string>(dr, "LOG_MSG_NO"); message.MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"); message.MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"); message.MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"); message.MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4"); message.Parameter = ConvertNull <string>(dr, "PARAMETER"); message.Row = ConvertNull <string>(dr, "ROW"); message.Field = ConvertNull <string>(dr, "FIELD"); message.System = ConvertNull <string>(dr, "SYSTEM"); resultVo.PoGoodReceiptResultMessageList.Add(message); } return(resultVo); }
public DataSet doZaBAPI(String wsOrderNumber, String wsBWClose, String wsBWOpen, String wsColClose, String wsColOpen, String wsLoginUser, String wsPDFDirectory, String wsCreatedDate, List<GOODSMVT_ITEM> wsGoodsMvtItem, List<TIMETICKETS> wsTimeTickets) { SAPFunction ZBAPI = new SAPFunction(); ZBAPI.setName("ZMOBILE_MASS_UPDATE_BAPI"); //MEASUREMENTS ZBAPI.AddInputParameter("AUFNR", wsOrderNumber); ZBAPI.AddInputParameter("BW_CLOSER", wsBWClose); ZBAPI.AddInputParameter("BW_OPENR", wsBWOpen); ZBAPI.AddInputParameter("COL_CLOSER", wsColClose); ZBAPI.AddInputParameter("COL_OPENR", wsColOpen); ZBAPI.AddInputParameter("GOODSMVT_HEADER:PSTNG_DATE", wsCreatedDate); //GOODS MOVEMENT CODE ZBAPI.AddInputParameter("GOODSMVT_CODE:GM_CODE", "03"); //GOODS MOVEMENT ITEM - MULTIPLE (TABLE) for (int x = 0; x < wsGoodsMvtItem.Count; x++) { ZBAPI.AddInputParameter("GOODSMVT_ITEM[" + x + "]:ORDERID", wsOrderNumber); ZBAPI.AddInputParameter("GOODSMVT_ITEM[" + x + "]:MATERIAL", wsGoodsMvtItem[x].MATERIAL); ZBAPI.AddInputParameter("GOODSMVT_ITEM[" + x + "]:PLANT", wsGoodsMvtItem[x].PLANT); ZBAPI.AddInputParameter("GOODSMVT_ITEM[" + x + "]:STGE_LOC", wsGoodsMvtItem[x].STGE_LOC); ZBAPI.AddInputParameter("GOODSMVT_ITEM[" + x + "]:ENTRY_UOM", "EA"); ZBAPI.AddInputParameter("GOODSMVT_ITEM[" + x + "]:MOVE_TYPE", "261"); ZBAPI.AddInputParameter("GOODSMVT_ITEM[" + x + "]:ENTRY_QNT", wsGoodsMvtItem[x].ENTRY_QNT); } //TIMETICKETS - MULTIPLE (TABLE) for (int x = 0; x < wsTimeTickets.Count; x++) { ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:OPERATION", wsTimeTickets[x].OPERATION); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:ORDERID", wsOrderNumber); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:ACT_WORK", wsTimeTickets[x].ACT_WORK); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:ACT_WORK_2", wsTimeTickets[x].ACT_WORK_2); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:FIN_CONF", " "); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:CONF_TEXT", wsTimeTickets[x].CONF_TEXT); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:EXEC_START_DATE", wsTimeTickets[x].EXEC_START_DATE); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:EXEC_START_TIME", wsTimeTickets[x].EXEC_START_TIME); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:EXEC_FIN_DATE", wsTimeTickets[x].EXEC_FIN_DATE); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:EXEC_FIN_TIME", wsTimeTickets[x].EXEC_FIN_TIME); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:EX_CREATED_BY", "Mobile"); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:EX_CREATED_DATE", wsTimeTickets[x].EX_CREATED_DATE); ZBAPI.AddInputParameter("TIMETICKETS[" + x + "]:EX_CREATED_TIME", wsTimeTickets[x].EX_CREATED_TIME); } //PDF DATA (STRUCTURE) ZBAPI.AddInputParameter("DOCUMENTDATA:DOCUMENTNUMBER", wsOrderNumber); ZBAPI.AddInputParameter("DOCUMENTDATA:DOCUMENTVERSION", "00"); ZBAPI.AddInputParameter("DOCUMENTDATA:WSAPPLICATION1", "PDF"); ZBAPI.AddInputParameter("DOCUMENTDATA:DESCRIPTION", wsLoginUser); ZBAPI.AddInputParameter("DOCUMENTDATA:DOCUMENTPART", "001"); ZBAPI.AddInputParameter("DOCUMENTDATA:STATUSEXTERN", "RE"); ZBAPI.AddInputParameter("DOCUMENTDATA:DOCFILE1", wsPDFDirectory); //PDF FILES (TABLE) ZBAPI.AddInputParameter("DOCUMENTFILES:SOURCEDATACARRIER", "SAP-SYSTEM"); ZBAPI.AddInputParameter("DOCUMENTFILES:STORAGECATEGORY", "SAP-SYSTEM"); ZBAPI.AddInputParameter("DOCUMENTFILES:ORIGINALTYPE", "1"); ZBAPI.AddInputParameter("DOCUMENTFILES:DOCUMENTNUMBER", wsOrderNumber); ZBAPI.AddInputParameter("DOCUMENTFILES:WSAPPLICATION", "PDF"); ZBAPI.AddInputParameter("DOCUMENTFILES:DOCFILE", wsPDFDirectory); ZBAPI.AddOutputParameter("RETURN:MESSAGE"); ZBAPI.AddOutputParameter("RETURN:LOG_NO"); ZBAPI.AddOutputParameter("RETURN:LOG_MSG_NO"); ZBAPI.AddOutputParameter("RETURN:MESSAGE_V1"); ZBAPI.AddOutputParameter("RETURN:MESSAGE_V2"); ZBAPI.AddOutputParameter("RETURN:MESSAGE_V3"); ZBAPI.AddOutputParameter("RETURN:MESSAGE_V4"); ZBAPI.AddOutputParameter("DETAIL_RETURN:TYPE"); ZBAPI.AddOutputParameter("DETAIL_RETURN:MESSAGE_ID"); ZBAPI.AddOutputParameter("DETAIL_RETURN:MESSAGE_NUMBER"); ZBAPI.AddOutputParameter("DETAIL_RETURN:MESSAGE"); ZBAPI.AddOutputParameter("DETAIL_RETURN:LOG_NUMBER"); ZBAPI.AddOutputParameter("DETAIL_RETURN:LOG_MSG_NO"); ZBAPI.AddOutputParameter("DETAIL_RETURN:MESSAGE_V1"); ZBAPI.AddOutputParameter("DETAIL_RETURN:MESSAGE_V2"); ZBAPI.AddOutputParameter("DETAIL_RETURN:MESSAGE_V3"); ZBAPI.AddOutputParameter("DETAIL_RETURN:MESSAGE_V4"); ZBAPI.AddOutputParameter("DETAIL_RETURN:PARAMETER"); ZBAPI.AddOutputParameter("DETAIL_RETURN:ROW"); ZBAPI.AddOutputParameter("DETAIL_RETURN:FIELD"); ZBAPI.AddOutputParameter("DETAIL_RETURN:SYSTEM"); ZBAPI.AddOutputParameter("DETAIL_RETURN:FLG_LOCKED"); ZBAPI.AddOutputParameter("DETAIL_RETURN:CONF_NO"); ZBAPI.AddOutputParameter("DETAIL_RETURN:CONF_CNT"); SAPProcessRemoteFunction p8 = new SAPProcessRemoteFunction(); p8.ProcessSAPFunction(ZBAPI); return ZBAPI.Results; }
public static RfcOutputListJson GetFunMetaList(string sysName, string funame) { RfcOutputListJson paralist = new RfcOutputListJson(); try { if (string.IsNullOrEmpty(funame)) { throw new SAPException("请输入函数!!"); } if (!SAPFunction.CheckFunction(sysName, funame)) { throw new SAPException("函数不存在!!"); } funame = funame.ToUpper(); RfcDestination destination = SAPDestination.GetDesByName(sysName); destination.Repository.ClearAllMetadata(); RfcFunctionMetadata MetaData = destination.Repository.GetFunctionMetadata(funame); IRfcFunction function = null; function = MetaData.CreateFunction(); //根据参数的方向,分为四种(CHANGING,EXPORT,IMPORT,TABLES); for (int i = 0; i < MetaData.ParameterCount; i++) { RfcParameterMetadata pMetadata = MetaData[i]; paralist.All.Add(pMetadata); switch (pMetadata.Direction) { case RfcDirection.CHANGING: paralist.Change.Add(pMetadata); break; case RfcDirection.EXPORT: paralist.Export.Add(pMetadata); break; case RfcDirection.IMPORT: paralist.Import.Add(pMetadata); break; case RfcDirection.TABLES: paralist.Tables.Add(pMetadata); break; } //参数也可能是结构体,表,ABAP对象 //一定要分开TRY,因为有些是没有的 if (pMetadata.DataType == RfcDataType.STRUCTURE) { try { //结构体的行项目结构 List <object> elelist = new List <object>(); RfcStructureMetadata strucmeta = pMetadata.ValueMetadataAsStructureMetadata; for (int f = 0; f < strucmeta.FieldCount; f++) { RfcFieldMetadata fieldm = strucmeta[f]; elelist.Add(fieldm); } paralist.Objects.Add(pMetadata.Name, elelist); } catch (Exception) { // throw new SAPException(ee.Message); } } if (pMetadata.DataType == RfcDataType.TABLE) { //表结构的行项目结构 List <object> tbllist = new List <object>(); RfcTableMetadata tablem = pMetadata.ValueMetadataAsTableMetadata; for (int t = 0; t < tablem.LineType.FieldCount; t++) { RfcFieldMetadata fieldm = tablem.LineType[t]; tbllist.Add(fieldm); } paralist.Objects.Add(pMetadata.Name, tbllist); } if (pMetadata.DataType == RfcDataType.CLASS) { //abap object 属性 List <object> attlist = new List <object>(); RfcAbapObjectMetadata abapitem = pMetadata.ValueMetadataAsAbapObjectMetadata; for (int o = 0; o < abapitem.AttributeCount; o++) { RfcAttributeMetadata abapobject = abapitem[o]; attlist.Add(abapobject); } paralist.Objects.Add(pMetadata.Name, attlist); } } return(paralist); } catch (Exception ee) { throw new SAPException(ee.Message); } }