示例#1
0
        /// <summary>
        /// execute with Executetable
        /// </summary>
        /// <param name="trxContext">TransactionContext</param>
        /// <param name="parameterList">SAPParameterList</param>
        /// <returns></returns>
        public SAPFunction ExecuteTable(TransactionContext trxContext, SAPParameterList parameterList)
        {
            SetCommandParameterTable(parameterList);

            DefaultSAPFunction sapFunction = new DefaultSAPFunction();

            try
            {
                sapFunction.Invoke(this.rfcDestination, rfcFunction);
                MessageData messageData = new MessageData("scci00002", Properties.Resources.scci00002, this.rfcDestination.Name.ToString());
                logger.Info(messageData);
            }
            catch (RfcAbapRuntimeException ex)
            {
                MessageData messageData = new MessageData("scce00016", Properties.Resources.scce00016, ex.GetType().Name.ToString(), ex.Message);
                logger.Error(messageData, ex);
                throw new Framework.SystemException(messageData, ex);
            }
            catch (RfcInvalidStateException ex)
            {
                MessageData messageData = new MessageData("scce00017", Properties.Resources.scce00017, ex.GetType().Name.ToString(), ex.Message);
                logger.Error(messageData, ex);
                throw new Framework.SystemException(messageData, ex);
            }
            catch (Exception ex)
            {
                MessageData messageData = new MessageData("scce00018", Properties.Resources.scce00018, ex.GetType().Name.ToString(), ex.Message);
                logger.Error(messageData, ex);
                throw new Framework.SystemException(messageData);
            }
            return(sapFunction);
        }
示例#2
0
        /// <summary>
        /// execute with ExecuteReader
        /// </summary>
        /// <param name="trxContext"></param>
        /// <param name="parameterList"></param>
        /// <returns></returns>
        public SAPFunction ExecuteTable(TransactionContext trxContext, SAPParameterList parameterList)
        {
            SetCommandParameterTable(rfcFunction, parameterList);

            DefaultSAPFunction sapFunction = new DefaultSAPFunction();

            sapFunction.Invoke(this.rfcDestination, rfcFunction);

            return(sapFunction);
        }
示例#3
0
        /// <summary>
        ///  set command parameter values to sap irfc table from the dao
        /// </summary>
        /// <param name="parameterList">SAPParameterList</param>
        /// <returns></returns>
        private void SetCommandParameterTable(SAPParameterList parameterList)
        {
            foreach (SAPParameter parameter in parameterList.Parameters)
            {
                IRfcTable irfcTable = rfcFunction.GetTable(parameter.Name);
                irfcTable.Insert();

                SAPParameterList tableParameterList = (SAPParameterList)parameter.Value;
                foreach (SAPParameter tableParameter in tableParameterList.Parameters)
                {
                    irfcTable.SetValue(tableParameter.Name, tableParameter.Value);
                }
            }
        }
示例#4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="irfcFunction"></param>
        /// <param name="parameterList"></param>
        /// <returns></returns>
        private IRfcFunction SetCommandParameter(IRfcFunction irfcFunction, SAPParameterList parameterList)
        {
            foreach (SAPParameter parameter in parameterList.Parameters)
            {
                if (parameter.Value == null)
                {
                    continue;
                }

                if (parameter.Value.GetType() == typeof(DefaultSAPParameterList))
                {
                    IRfcTable irfcTable = rfcFunction.GetTable(parameter.Name);


                    SAPParameterList tableParameterList = (SAPParameterList)parameter.Value;
                    if (tableParameterList.ParameterLists.Length > 0)
                    {
                        foreach (SAPParameterList tableParameterLists in tableParameterList.ParameterLists)
                        {
                            irfcTable.Insert();

                            foreach (SAPParameter tableParameter in tableParameterLists.Parameters)
                            {
                                irfcTable.CurrentRow.SetValue(tableParameter.Name, tableParameter.Value);
                            }
                        }
                    }
                    else
                    {
                        irfcTable.Insert();
                        foreach (SAPParameter tableParameter in tableParameterList.Parameters)
                        {
                            irfcTable.SetValue(tableParameter.Name, tableParameter.Value);
                        }
                    }
                }
                else
                {
                    irfcFunction.SetValue(parameter.Name, parameter.Value);
                }
            }


            return(irfcFunction);
        }
示例#5
0
        /// <summary>
        /// execute with ExecuteReader
        /// </summary>
        /// <param name="trxContext">TransactionContext</param>
        /// <param name="parameterList">SAPParameterList</param>
        /// <returns></returns>
        public SAPFunction Execute(TransactionContext trxContext, SAPParameterList parameterList)
        {
            SetCommandParameter(parameterList);

            DefaultSAPFunction sapFunction = new DefaultSAPFunction();

            try
            {
                sapFunction.Invoke(this.rfcDestination, rfcFunction);

                MessageData messageData = new MessageData("scci00002", Properties.Resources.scci00002, this.rfcDestination.Name.ToString());
                logger.Info(messageData);
            }
            catch (RfcAbapRuntimeException ex)
            {
                //cannot serialize sap rfc exception hence passing exception name and message to the messagedata
                MessageData messageData = new MessageData("scce00005", Properties.Resources.scce00005, ex.GetType().Name.ToString(), ex.Message);
                logger.Error(messageData, ex);
                throw new Framework.SystemException(messageData);
            }
            catch (RfcInvalidStateException ex)
            {
                //cannot serialize sap rfc exception hence passing exception name and message to the messagedata
                MessageData messageData = new MessageData("scce00009", Properties.Resources.scce00009, ex.GetType().Name.ToString(), ex.Message);
                logger.Error(messageData, ex);
                throw new Framework.SystemException(messageData);
            }
            catch (Exception ex)
            {
                //cannot serialize sap rfc exception hence passing exception name and message to the messagedata
                MessageData messageData = new MessageData("scce00007", Properties.Resources.scce00007, ex.GetType().Name.ToString(), ex.Message);
                logger.Error(messageData, ex);
                throw new Framework.SystemException(messageData);
            }
            return(sapFunction);
        }
示例#6
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);
        }
示例#7
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);
        }
示例#8
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);
        }
示例#9
0
 /// <summary>
 /// add  parameterlists
 /// </summary>
 /// <param name="name"></param>
 /// <param name="value"></param>
 public void AddParameterList(SAPParameterList sapParameterList)
 {
     parameterLists.Add(sapParameterList);
 }
示例#10
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)
        {
            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);
        }
示例#12
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);
        }
示例#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", inVo.PlantCode);
            sapParameter.AddParameter("IM_FROM_MATERIAL", inVo.FromMaterialNumber);
            sapParameter.AddParameter("IM_TO_MATERIAL", inVo.ToMaterialNumber);
            sapParameter.AddParameter("IM_LGORT", inVo.StorageLocationCode);

            SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameter);

            DataTable sapTable = sapFuntion.GetSAPTable("TB_STOCK_DATA");

            //StockVo outVo = new StockVo();
            string  stockQty;
            StockVo outVo = new StockVo();

            foreach (DataRow dr in sapTable.Rows)
            {
                StockVo currOutVo = new StockVo();
                stockQty = ConvertNull <string>(dr, "UNRESTRICTED_STCK");
                currOutVo.UnrestrictedStock = (int)Convert.ToDecimal(stockQty);

                currOutVo.ItemNumber    = ConvertNull <string>(dr, "MATERIAL");
                currOutVo.StockQty      = (int)Convert.ToDecimal(stockQty);
                currOutVo.WarehouseCode = ConvertNull <string>(dr, "LGORT");
                currOutVo.InternalLot   = ConvertNull <string>(dr, "BATCH");
                currOutVo.SupplierCode  = ConvertNull <string>(dr, "VENDOR");
                currOutVo.SupplierName  = ConvertNull <string>(dr, "V_DESC");
                currOutVo.OrderStr      = ConvertNull <string>(dr, "GR_DATE") + ConvertNull <string>(dr, "GR_TIME") + ConvertNull <string>(dr, "BATCH");
                currOutVo.PlanToConsume = currOutVo.UnrestrictedStock;
                currOutVo.StockReserve  = currOutVo.UnrestrictedStock;
                currOutVo.StockReserve2 = currOutVo.UnrestrictedStock;

                currOutVo.SapBatchNumber    = ConvertNull <string>(dr, "BATCH");
                currOutVo.VendorBatchNumber = ConvertNull <string>(dr, "V_BATCH");

                outVo.StockListVo.Add(currOutVo);
            }


            List <SapMessageVo> messageList     = new List <SapMessageVo>();
            DataTable           sapMessageTable = sapFuntion.GetSAPTable("TB_RETURN");

            foreach (DataRow dr in sapMessageTable.Rows)
            {
                SapMessageVo message = new SapMessageVo
                {
                    MessageType      = ConvertNull <string>(dr, "TYPE"),
                    MessageClassId   = ConvertNull <string>(dr, "ID"),
                    MessageNumber    = ConvertNull <string>(dr, "NUMBER"),
                    LogNumber        = ConvertNull <string>(dr, "MESSAGE"),
                    LogMessageNumber = ConvertNull <string>(dr, "LOG_NO"),
                    MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1"),
                    MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2"),
                    MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3"),
                    MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4")
                };
                messageList.Add(message);
            }

            outVo.SapMessageListVo = messageList;

            return(outVo);
        }
        public override ValueObject Execute(TransactionContext trxContext, ValueObject vo)
        {
            PurchaseOrderInVo inVo = (PurchaseOrderInVo)vo;

            //create command
            SAPCommandAdapter sapCommandAdapter = base.GetSAPCommandAdaptor(trxContext, "ZGTMMFG38_MES_SAP_INBOUND"); // SAPRFCNameEnum.RFC_DELIVERY_ORDER.GetValue());

            SAPParameterList sapParameterTableInput = sapCommandAdapter.CreateParameterList();

            SAPParameterList sapParameter;

            //create parameter for TABLES TB_LIFNR: STRUCTURE ZGTMMS62,
            if (inVo.LIFNRValueList != null && inVo.LIFNRValueList.Count > 0)
            {
                SAPParameterList sapParameterTableLIFNR = sapCommandAdapter.CreateParameterList();
                foreach (String value in inVo.LIFNRValueList)
                {
                    sapParameter = sapCommandAdapter.CreateParameterList();
                    sapParameter.AddParameter("LIFNR", value);

                    sapParameterTableLIFNR.AddParameterList(sapParameter);
                }
                sapParameterTableInput.AddParameter("TB_LIFNR", sapParameterTableLIFNR);
            }



            //create parameter for TABLES TB_EBELN: STRUCTURE ZGTMMS63,
            if (inVo.EBELNValueList != null && inVo.EBELNValueList.Count > 0)
            {
                SAPParameterList sapParameterTableEBELN = sapCommandAdapter.CreateParameterList();
                foreach (String value in inVo.EBELNValueList)
                {
                    sapParameter = sapCommandAdapter.CreateParameterList();
                    sapParameter.AddParameter("EBELN", value);

                    sapParameterTableEBELN.AddParameterList(sapParameter);
                }
                sapParameterTableInput.AddParameter("TB_EBELN", sapParameterTableEBELN);
            }

            //create parameter for TABLES TB_MATNR: STRUCTURE ZGTMMS64,
            if (inVo.MATNRValueList != null && inVo.MATNRValueList.Count > 0)
            {
                SAPParameterList sapParameterTableMATNR = sapCommandAdapter.CreateParameterList();
                foreach (String value in inVo.MATNRValueList)
                {
                    sapParameter = sapCommandAdapter.CreateParameterList();
                    sapParameter.AddParameter("MATNR", value);

                    sapParameterTableMATNR.AddParameterList(sapParameter);
                }
                sapParameterTableInput.AddParameter("TB_MATNR", sapParameterTableMATNR);
            }

            //create parameter for TABLES TB_BEDAT_RANGE:STRUCTURE ZGTMMS65,
            if (!string.IsNullOrEmpty(inVo.BEFromDate) && !string.IsNullOrEmpty(inVo.BEToDate))
            {
                SAPParameterList sapParameterTableBEDATRANGE = sapCommandAdapter.CreateParameterList();
                sapParameterTableBEDATRANGE.AddParameter("SIGN", "I");
                sapParameterTableBEDATRANGE.AddParameter("OPTION", "BT");
                sapParameterTableBEDATRANGE.AddParameter("LOW", inVo.BEFromDate);
                sapParameterTableBEDATRANGE.AddParameter("HIGH", inVo.BEToDate);
                sapParameterTableInput.AddParameter("TB_BEDAT_RANGE", sapParameterTableBEDATRANGE);
            }
            //create parameter for TABLES TB_EINDT_RANGE: STRUCTURE ZGTMMS65,
            if (!string.IsNullOrEmpty(inVo.EINFromDate) && !string.IsNullOrEmpty(inVo.EINToDate))
            {
                SAPParameterList sapParameterTableEINDTRANGE = sapCommandAdapter.CreateParameterList();
                sapParameterTableEINDTRANGE.AddParameter("SIGN", "I");
                sapParameterTableEINDTRANGE.AddParameter("OPTION", "BT");
                sapParameterTableEINDTRANGE.AddParameter("LOW", inVo.EINFromDate);
                sapParameterTableEINDTRANGE.AddParameter("HIGH", inVo.EINToDate);
                sapParameterTableInput.AddParameter("TB_EINDT_RANGE", sapParameterTableEINDTRANGE);
            }

            sapParameterTableInput.AddParameter("IM_WERKS", ServerConfigurationDataTypeEnum.DEFAULT_SAP_PLANT_CODE.GetValue());
            sapParameterTableInput.AddParameter("IM_STATUS", inVo.Status);

            SAPFunction sapFuntion = sapCommandAdapter.Execute(trxContext, sapParameterTableInput);

            //PO Count Value
            string POCount = sapFuntion.GetSAPValue("EX_COUNT");

            //PO INFO table data
            DataTable headerTable = sapFuntion.GetSAPTable("TB_OUTDATA");

            // result message table data
            DataTable resultMessageTable = sapFuntion.GetSAPTable("TB_RETURN");

            PurchaseOrderOutVo outVo = new PurchaseOrderOutVo();

            // get the Header data
            foreach (DataRow dr in headerTable.Rows)
            {
                PurchaseOrderOutVo curroutVo = new PurchaseOrderOutVo();
                curroutVo.Material            = ConvertNull <string>(dr, "MATNR");
                curroutVo.MaterialName        = ConvertNull <string>(dr, "MAKTX");
                curroutVo.Supplier            = ConvertNull <string>(dr, "LIFNR");
                curroutVo.SupplierName        = ConvertNull <string>(dr, "NAME1");
                curroutVo.PurchaseOrderNumber = ConvertNull <string>(dr, "EBELN");
                curroutVo.POLineNumber        = ConvertNull <string>(dr, "EBELP");
                curroutVo.OrderQuantity       = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "MENGE")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "MENGE")).ToString().Replace(",", ""));
                curroutVo.OpenQuantity        = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "OPENQ")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "OPENQ")).ToString().Replace(",", "")); // decimal.Parse(ConvertNull<string>(dr, "OPENQ"));
                curroutVo.ReceivedQuantity    = decimal.Parse(string.IsNullOrEmpty((ConvertNull <string>(dr, "WEMNG")).ToString().Trim()) ? "0" : (ConvertNull <string>(dr, "WEMNG")).ToString().Replace(",", "")); //decimal.Parse(ConvertNull<string>(dr, "WEMNG"));
                curroutVo.Unit = ConvertNull <string>(dr, "MEINS");

                if (outVo.PurchaseOrderList == null)
                {
                    outVo.PurchaseOrderList = new List <PurchaseOrderOutVo>();
                }

                if (!string.IsNullOrWhiteSpace(POCount))
                {
                    outVo.POCount = Convert.ToInt32(POCount);
                }
                outVo.PurchaseOrderList.Add(curroutVo);
            }


            //get the Return Message data
            outVo.PurchaseOrderResultMessageList = new List <SapMessageVo>();
            foreach (DataRow dr in resultMessageTable.Rows)
            {
                SapMessageVo message = new SapMessageVo();
                message.MessageType      = ConvertNull <string>(dr, "TYPE");
                message.MessageClassId   = ConvertNull <string>(dr, "ID");
                message.MessageNumber    = ConvertNull <string>(dr, "NUMBER");
                message.Message          = ConvertNull <string>(dr, "MESSAGE");
                message.LogNumber        = ConvertNull <string>(dr, "LOG_NO");
                message.LogMessageNumber = ConvertNull <string>(dr, "LOG_MSG_NO");
                message.MessageVariable1 = ConvertNull <string>(dr, "MESSAGE_V1");
                message.MessageVariable2 = ConvertNull <string>(dr, "MESSAGE_V2");
                message.MessageVariable3 = ConvertNull <string>(dr, "MESSAGE_V3");
                message.MessageVariable4 = ConvertNull <string>(dr, "MESSAGE_V4");

                message.Parameter = ConvertNull <string>(dr, "PARAMETER");
                message.Row       = ConvertNull <string>(dr, "ROW");
                message.Field     = ConvertNull <string>(dr, "FIELD");
                message.System    = ConvertNull <string>(dr, "SYSTEM");

                outVo.PurchaseOrderResultMessageList.Add(message);
            }
            return(outVo);
        }
示例#15
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);
        }
示例#16
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);
        }
示例#17
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);
        }
示例#18
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);
        }
        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);
        }