Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
 /// <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();
 }
Exemplo n.º 4
0
        /// <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("加载完成");
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
 //查询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"));
     }
 }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 12
0
        /// <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("加载完成");
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        /// <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);
            }
        }
Exemplo n.º 22
0
        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);
        }
Exemplo n.º 24
0
        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;
        }
Exemplo n.º 25
0
        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);
            }
        }