예제 #1
1
        //将RFC表转换DATATABLE格式
        public static DataTable GetDataTableFromRfcTable(IRfcTable rfcTable)
        {
            DataTable dtRet = new DataTable();

            for (int liElement = 0; liElement < rfcTable.ElementCount; liElement++)
            {
                RfcElementMetadata rfcEMD = rfcTable.GetElementMetadata(liElement);
                dtRet.Columns.Add(rfcEMD.Name);
            }

            foreach (IRfcStructure row in rfcTable)
            {
                DataRow dr = dtRet.NewRow();

                for (int liElement = 0; liElement < rfcTable.ElementCount; liElement++)
                {
                    RfcElementMetadata rfcEMD = rfcTable.GetElementMetadata(liElement);

                    dr[rfcEMD.Name] = row.GetString(rfcEMD.Name);
                    // Console.WriteLine("{0} is {1}", rfcEMD.Documentation, dr[rfcEMD.Name]);
                }

                dtRet.Rows.Add(dr);

            }

            return dtRet;
        }
예제 #2
0
        internal SapDataReader(IRfcTable rfcTable)
        {
            if (rfcTable == null)
            {
                throw new ArgumentNullException("rfcTable");
            }

            _rfcTable = rfcTable;

            RowCount = rfcTable.RowCount;

            ResetIndex();
        }
예제 #3
0
        /// <summary>
        /// Converts SAP table to .NET DataTable table
        /// </summary>
        /// <param name="sapTable">The SAP table to convert.</param>
        /// <returns></returns>
        public static DataTable RfcTableToDataTable(IRfcTable sapTable, string name)
        {
            DataTable adoTable = new DataTable(name);
            //... Create ADO.Net table.
            for (int liElement = 0; liElement < sapTable.ElementCount; liElement++)
            {
                RfcElementMetadata metadata = sapTable.GetElementMetadata(liElement);
                adoTable.Columns.Add(metadata.Name, GetDataType(metadata.DataType));
            }

            //Transfer rows from SAP Table ADO.Net table.
            foreach (IRfcStructure row in sapTable)
            {
                DataRow ldr = adoTable.NewRow();
                for (int liElement = 0; liElement < sapTable.ElementCount; liElement++)
                {
                    RfcElementMetadata metadata = sapTable.GetElementMetadata(liElement);

                    switch (metadata.DataType)
                    {
                        case RfcDataType.DATE:
                            ldr[metadata.Name] = row.GetString(metadata.Name).Substring(0, 4) + row.GetString(metadata.Name).Substring(5, 2) + row.GetString(metadata.Name).Substring(8, 2);
                            break;
                        case RfcDataType.BCD:
                            ldr[metadata.Name] = row.GetDecimal(metadata.Name);
                            break;
                        case RfcDataType.CHAR:
                            ldr[metadata.Name] = row.GetString(metadata.Name);
                            break;
                        case RfcDataType.STRING:
                            ldr[metadata.Name] = row.GetString(metadata.Name);
                            break;
                        case RfcDataType.INT2:
                            ldr[metadata.Name] = row.GetInt(metadata.Name);
                            break;
                        case RfcDataType.INT4:
                            ldr[metadata.Name] = row.GetInt(metadata.Name);
                            break;
                        case RfcDataType.FLOAT:
                            ldr[metadata.Name] = row.GetDouble(metadata.Name);
                            break;
                        default:
                            ldr[metadata.Name] = row.GetString(metadata.Name);
                            break;
                    }
                }
                adoTable.Rows.Add(ldr);
            }
            return adoTable;
        }
예제 #4
0
        public void pagodocumentosingreso(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_SOCIEDAD, List <DetalleViasPago> P_VIASPAGO, List <T_DOCUMENTOS> P_DOCSAPAGAR, string P_PAIS, string P_MONEDA, string P_CAJA, string P_CAJERO, string P_INGRESO, string P_APAGAR)
        {
            try
            {
                T_Retorno.Clear();
                pagomessage = "";
                status      = "";
                comprobante = "";
                message     = "";
                stringRfc   = "";
                IRfcTable lt_PAGO_DOCS;
                IRfcTable lt_PAGO_MESS;
                // CERR_CAJA CERR_CAJA_resp;
                ESTATUS retorno;
                T_Retorno.Clear();
                //Conexion a SAP

                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();
                //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_REC_Y_FAC");
                    BapiGetUser.SetValue("ID_CAJA", P_CAJA);
                    BapiGetUser.SetValue("PAY_CURRENCY", P_MONEDA);
                    BapiGetUser.SetValue("LAND", P_PAIS);

                    BapiGetUser.SetValue("TOTAL_FACTURAS", Convert.ToDouble(P_APAGAR));
                    BapiGetUser.SetValue("TOTAL_VIAS", Convert.ToDouble(P_INGRESO));
                    P_INGRESO = P_INGRESO.Replace(",", "");
                    P_INGRESO = P_INGRESO.Replace(".", "");
                    double Diferencia = Convert.ToDouble(P_APAGAR) - Convert.ToDouble(P_INGRESO);
                    BapiGetUser.SetValue("DIFERENCIA", Convert.ToDouble(P_APAGAR) - Convert.ToDouble(P_INGRESO));
                    IRfcTable GralDat3 = BapiGetUser.GetTable("RETURN");
                    try
                    {
                        if (Diferencia != 0)
                        {
                            GralDat3.Append();
                            GralDat3.SetValue("TYPE", "X");
                            GralDat3.SetValue("ID", "");
                            GralDat3.SetValue("NUMBER", "");
                            GralDat3.SetValue("MESSAGE", "");
                            GralDat3.SetValue("LOG_NO", "");
                            GralDat3.SetValue("LOG_MSG_NO", "");
                            GralDat3.SetValue("MESSAGE_V1", "");
                            GralDat3.SetValue("MESSAGE_V2", "");
                            GralDat3.SetValue("MESSAGE_V3", "");
                            GralDat3.SetValue("MESSAGE_V4", "");
                            GralDat3.SetValue("PARAMETER", "");
                            GralDat3.SetValue("ROW", "");
                            GralDat3.SetValue("FIELD", "");
                            GralDat3.SetValue("SYSTEM", "");
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message + ex.StackTrace);
                    }
                    BapiGetUser.SetValue("RETURN", GralDat3);

                    IRfcTable GralDat = BapiGetUser.GetTable("VIAS_PAGO");
                    try
                    {
                        for (var i = 0; i < P_VIASPAGO.Count; i++)
                        {
                            GralDat.Append();
                            GralDat.SetValue("MANDT", P_VIASPAGO[i].MANDT);
                            GralDat.SetValue("LAND", P_VIASPAGO[i].LAND);
                            GralDat.SetValue("ID_COMPROBANTE", P_VIASPAGO[i].ID_COMPROBANTE);
                            GralDat.SetValue("ID_DETALLE", P_VIASPAGO[i].ID_DETALLE);
                            GralDat.SetValue("VIA_PAGO", P_VIASPAGO[i].VIA_PAGO);
                            double Monto = Convert.ToDouble(P_VIASPAGO[i].MONTO); // 100;
                            if (P_VIASPAGO[i].MONEDA == "CLP")
                            {
                                Monto = Monto / 100;
                                GralDat.SetValue("MONTO", Convert.ToString(Monto));
                            }
                            else
                            {
                                GralDat.SetValue("MONTO", P_VIASPAGO[i].MONTO);
                            }
                            GralDat.SetValue("MONEDA", P_VIASPAGO[i].MONEDA);
                            if (P_VIASPAGO[i].BANCO != "")
                            {
                                GralDat.SetValue("BANCO", P_VIASPAGO[i].BANCO.Substring(0, 3));
                            }
                            else
                            {
                                GralDat.SetValue("BANCO", P_VIASPAGO[i].BANCO);
                            }
                            GralDat.SetValue("EMISOR", P_VIASPAGO[i].EMISOR);
                            GralDat.SetValue("NUM_CHEQUE", P_VIASPAGO[i].NUM_CHEQUE);
                            GralDat.SetValue("COD_AUTORIZACION", P_VIASPAGO[i].COD_AUTORIZACION);
                            GralDat.SetValue("NUM_CUOTAS", P_VIASPAGO[i].NUM_CUOTAS);
                            GralDat.SetValue("FECHA_VENC", Convert.ToDateTime(P_VIASPAGO[i].FECHA_VENC));
                            GralDat.SetValue("TEXTO_POSICION", P_VIASPAGO[i].TEXTO_POSICION);
                            GralDat.SetValue("ANEXO", P_VIASPAGO[i].ANEXO);
                            GralDat.SetValue("SUCURSAL", P_VIASPAGO[i].SUCURSAL);
                            GralDat.SetValue("NUM_CUENTA", P_VIASPAGO[i].NUM_CUENTA);
                            GralDat.SetValue("NUM_TARJETA", P_VIASPAGO[i].NUM_TARJETA);
                            GralDat.SetValue("NUM_VALE_VISTA", P_VIASPAGO[i].NUM_VALE_VISTA);
                            GralDat.SetValue("PATENTE", P_VIASPAGO[i].PATENTE);
                            GralDat.SetValue("NUM_VENTA", P_VIASPAGO[i].NUM_VENTA);
                            GralDat.SetValue("PAGARE", P_VIASPAGO[i].PAGARE);
                            GralDat.SetValue("FECHA_EMISION", Convert.ToDateTime(P_VIASPAGO[i].FECHA_EMISION));
                            GralDat.SetValue("NOMBRE_GIRADOR", P_VIASPAGO[i].NOMBRE_GIRADOR);
                            GralDat.SetValue("CARTA_CURSE", P_VIASPAGO[i].CARTA_CURSE);
                            GralDat.SetValue("NUM_TRANSFER", P_VIASPAGO[i].NUM_TRANSFER);
                            GralDat.SetValue("NUM_DEPOSITO", P_VIASPAGO[i].NUM_DEPOSITO);
                            GralDat.SetValue("CTA_BANCO", P_VIASPAGO[i].CTA_BANCO);
                            GralDat.SetValue("IFINAN", P_VIASPAGO[i].IFINAN);
                            GralDat.SetValue("CORRE", P_VIASPAGO[i].CORRE);
                            GralDat.SetValue("ZUONR", P_VIASPAGO[i].ZUONR);
                            GralDat.SetValue("HKONT", P_VIASPAGO[i].HKONT);
                            GralDat.SetValue("PRCTR", P_VIASPAGO[i].PRCTR);
                            GralDat.SetValue("ZNOP", P_VIASPAGO[i].ZNOP);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message + ex.StackTrace);
                    }
                    BapiGetUser.SetValue("VIAS_PAGO", GralDat);

                    IRfcTable GralDat2 = BapiGetUser.GetTable("DOCUMENTOS");
                    try
                    {
                        for (var i = 0; i < P_DOCSAPAGAR.Count; i++)
                        {
                            GralDat2.Append();
                            GralDat2.SetValue("MANDT", "");
                            GralDat2.SetValue("LAND", P_PAIS);
                            GralDat2.SetValue("ID_COMPROBANTE", "");
                            GralDat2.SetValue("POSICION", "");
                            GralDat2.SetValue("CLIENTE", P_DOCSAPAGAR[i].RUTCLI);
                            GralDat2.SetValue("TIPO_DOCUMENTO", P_DOCSAPAGAR[i].CLASE_DOC);
                            GralDat2.SetValue("SOCIEDAD", P_DOCSAPAGAR[i].SOCIEDAD);
                            GralDat2.SetValue("NRO_DOCUMENTO", P_DOCSAPAGAR[i].NDOCTO);
                            GralDat2.SetValue("NRO_REFERENCIA", P_DOCSAPAGAR[i].NREF);
                            GralDat2.SetValue("CAJERO_RESP", P_CAJERO);
                            GralDat2.SetValue("CAJERO_GEN", "");
                            GralDat2.SetValue("ID_CAJA", P_CAJA);
                            GralDat2.SetValue("NRO_COMPENSACION", "");
                            GralDat2.SetValue("TEXTO_CABECERA", "");
                            GralDat2.SetValue("NULO", "");
                            GralDat2.SetValue("USR_ANULADOR", "");
                            GralDat2.SetValue("NRO_ANULACION", "");
                            GralDat2.SetValue("APROBADOR_ANULA", "");
                            GralDat2.SetValue("TXT_ANULACION", "");
                            GralDat2.SetValue("EXCEPCION", "");
                            GralDat2.SetValue("FECHA_DOC", Convert.ToDateTime(P_DOCSAPAGAR[i].FECHA_DOC));
                            GralDat2.SetValue("FECHA_VENC_DOC", Convert.ToDateTime(P_DOCSAPAGAR[i].FECVENCI));
                            GralDat2.SetValue("NUM_CUOTA", "");
                            GralDat2.SetValue("MONTO_DOC", P_DOCSAPAGAR[i].MONTO.Trim());
                            GralDat2.SetValue("MONTO_DIFERENCIA", 0);
                            GralDat2.SetValue("TEXTO_EXCEPCION", "");
                            GralDat2.SetValue("PARCIAL", "");
                            GralDat2.SetValue("APROBADOR_EX", "");
                            GralDat2.SetValue("MONEDA", P_DOCSAPAGAR[i].MONEDA.Trim());
                            GralDat2.SetValue("CLASE_CUENTA", "D");
                            GralDat2.SetValue("CLASE_DOC", P_DOCSAPAGAR[i].CLASE_DOC);
                            GralDat2.SetValue("NUM_CANCELACION", "");
                            GralDat2.SetValue("CME", P_DOCSAPAGAR[i].CME);
                            GralDat2.SetValue("NOTA_VENTA", "");
                            GralDat2.SetValue("CEBE", P_DOCSAPAGAR[i].CEBE);
                            GralDat2.SetValue("ACC", P_DOCSAPAGAR[i].ACC);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message + ex.StackTrace);
                    }
                    BapiGetUser.SetValue("DOCUMENTOS", GralDat2);

                    BapiGetUser.Invoke(SapRfcDestination);

                    //LLenamos los datos que retorna la estructura de la RFC
                    //pagomessage = BapiGetUser.GetString("E_MSJ");
                    //id_error = BapiGetUser.GetInt("E_ID_MSJ");
                    //message = BapiGetUser.GetString("E_AUGBL");

                    lt_PAGO_DOCS = BapiGetUser.GetTable("RETURN");
                    for (int i = 0; i < lt_PAGO_DOCS.Count(); i++)
                    {
                        lt_PAGO_DOCS.CurrentIndex = i;
                        retorno = new ESTATUS();
                        if (lt_PAGO_DOCS.GetString("TYPE") == "S")
                        {
                            message = message + " - " + lt_PAGO_DOCS.GetString("MESSAGE") + "\n";
                        }
                        if (lt_PAGO_DOCS.GetString("TYPE") == "E")
                        {
                            pagomessage = pagomessage + " - " + lt_PAGO_DOCS.GetString("MESSAGE") + "\n";
                        }
                        retorno.TYPE       = lt_PAGO_DOCS.GetString("TYPE");
                        retorno.ID         = lt_PAGO_DOCS.GetString("ID");
                        retorno.NUMBER     = lt_PAGO_DOCS.GetString("NUMBER");
                        retorno.MESSAGE    = lt_PAGO_DOCS.GetString("MESSAGE");
                        retorno.LOG_NO     = lt_PAGO_DOCS.GetString("LOG_NO");
                        retorno.LOG_MSG_NO = lt_PAGO_DOCS.GetString("LOG_MSG_NO");
                        retorno.MESSAGE_V1 = lt_PAGO_DOCS.GetString("MESSAGE_V1");
                        retorno.MESSAGE_V2 = lt_PAGO_DOCS.GetString("MESSAGE_V2");
                        retorno.MESSAGE_V3 = lt_PAGO_DOCS.GetString("MESSAGE_V3");
                        if (lt_PAGO_DOCS.GetString("MESSAGE_V4") != "")
                        {
                            comprobante = lt_PAGO_DOCS.GetString("MESSAGE_V4");
                        }
                        retorno.MESSAGE_V4 = lt_PAGO_DOCS.GetString("MESSAGE_V4");
                        retorno.PARAMETER  = lt_PAGO_DOCS.GetString("PARAMETER");
                        retorno.ROW        = lt_PAGO_DOCS.GetString("ROW");
                        retorno.FIELD      = lt_PAGO_DOCS.GetString("FIELD");
                        retorno.SYSTEM     = lt_PAGO_DOCS.GetString("SYSTEM");
                        T_Retorno.Add(retorno);
                    }
                }
                GC.Collect();
            }
            catch (Exception ex)
            {
                Console.WriteLine("{0} Exception caught.", ex);
                System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
예제 #5
0
        public List <Solicitudes> llenaCliente(List <Solicitudes> sol, string em, string tp) //Trae el cliente consultado
        {
            if (conectar())
            {
                RfcRepository repo = oDestino.Repository;
                IRfcFunction  bapi = repo.CreateFunction("ZFWF_AP_028");//Módulo de función

                IRfcTable knvp = bapi.GetTable("IT_KNVP");

                for (int i = 0; i < sol.Count; i++)
                {
                    knvp.Append();
                    knvp.SetValue("KUNNR", sol[i].kunnr);
                    knvp.SetValue("VKORG", sol[i].vkorg);
                    knvp.SetValue("VTWEG", sol[i].vtweg);
                    knvp.SetValue("SPART", sol[i].spart);
                    knvp.SetValue("PERNR", em);
                }
                bapi.SetValue("TIPO", tp);

                bapi.Invoke(oDestino);

                IRfcTable          tabla = bapi.GetTable("IT_KNAVV");
                List <Solicitudes> ss    = new List <Solicitudes>();
                for (int i = 0; i < tabla.Count; i++)
                {
                    tabla.CurrentIndex = i;
                    foreach (Solicitudes s in sol)
                    {
                        string kunnr = "";
                        try
                        {
                            kunnr = int.Parse(s.kunnr) + "";
                            int len = 10 - kunnr.Length;
                            kunnr = "";
                            do
                            {
                                kunnr += "0";
                                len--;
                            } while (len > 0);
                            kunnr += s.kunnr;
                        }
                        catch
                        {
                            kunnr = s.kunnr;
                        }
                        if (kunnr.Equals(tabla.GetString("KUNNR")) &
                            s.vkorg.Equals(tabla.GetString("VKORG")) &
                            s.vtweg.Equals(tabla.GetString("VTWEG")) &
                            s.spart.Equals(tabla.GetString("SPART")))
                        {
                            s.name1 = tabla.GetString("NAME1");
                            s.pltyp = tabla.GetString("PLTYP");
                        }
                    }
                }

                return(sol);
            }
            else
            {
                return(null);
            }
        }
예제 #6
0
        private List <OutStockDetails_Model> CreateMaterialRequestByProductDetails(ref OutStock_Model OutStockModel, IRfcTable rtb)
        {
            List <OutStockDetails_Model> lstPrdReturnDetails = null;

            if (rtb != null)
            {
                if (rtb.RowCount > 0)
                {
                    lstPrdReturnDetails = new List <OutStockDetails_Model>();
                }
                foreach (var itemRtb in rtb)
                {
                    OutStockModel.VoucherNo = itemRtb.GetString("AUFNR").TrimStart('0');
                    OutStockModel.Plant     = itemRtb.GetString("WERKS");
                    OutStockModel.PlantName = itemRtb.GetString("NAME1");
                    OutStockModel.MoveType  = itemRtb.GetString("BWART");

                    OutStockDetails_Model item = new OutStockDetails_Model();
                    item.VoucherNo     = itemRtb.GetString("AUFNR").TrimStart('0');
                    item.RowNo         = string.Empty;
                    item.MaterialNo    = itemRtb.GetString("MATNR");
                    item.MaterialDesc  = itemRtb.GetString("MAKTX");
                    item.Unit          = itemRtb.GetString("MEINS");
                    item.Plant         = itemRtb.GetString("WERKS");
                    item.PlantName     = itemRtb.GetString("NAME1");
                    item.StorageLoc    = itemRtb.GetString("LGORT");
                    item.OutStockQty   = itemRtb.GetInt("ZBDMNG");
                    item.ProRecoil     = itemRtb.GetString("RGEKZ");
                    item.ProDel        = itemRtb.GetString("XLOEK");
                    item.ProVirtual    = itemRtb.GetString("DUMPS");
                    item.ReserveNumber = itemRtb.GetString("RSNUM");
                    item.ReserveRowNo  = itemRtb.GetString("RSPOS");
                    lstPrdReturnDetails.Add(item);
                }
            }
            return(null);
        }
        private void createBtn_Click(object sender, EventArgs e)
        {
            try
            {
                RfcRepository rfcRepository = rfcDestination.Repository;
                var           create        = rfcRepository.CreateFunction("BAPI_COSTCENTERGROUP_CREATE");
                create.Invoke(rfcDestination);


                String contrArea = createGridView.Rows[0].Cells[0].Value.ToString();


                var hierarchyTable = create.GetTable("HIERARCHYNODES");
                hierarchyTable.Append();

                String groupName = createGridView.Rows[0].Cells[1].Value.ToString();
                String hierLevel = "0";
                String valcount  = createGridView.Rows[0].Cells[2].Value.ToString();
                String descript  = createGridView.Rows[0].Cells[3].Value.ToString();

                hierarchyTable.SetValue("GROUPNAME", groupName);
                hierarchyTable.SetValue("HIERLEVEL", hierLevel);
                hierarchyTable.SetValue("VALCOUNT", valcount);
                hierarchyTable.SetValue("DESCRIPT", descript);


                IRfcTable hierarchyValuesTable = create.GetTable("HIERARCHYVALUES");
                //Ohne Append können die Values nicht gesetzt werden
                hierarchyValuesTable.Append();
                for (int i = 0; i + 1 < valueDataGrid.RowCount; i++)
                {
                    hierarchyValuesTable.Insert();
                    hierarchyValuesTable.CurrentIndex = hierarchyValuesTable.Count - 1;

                    hierarchyValuesTable[i].SetValue("VALFROM", valueDataGrid.Rows[i].Cells[0].Value.ToString());
                    hierarchyValuesTable[i].SetValue("VALTO", valueDataGrid.Rows[i].Cells[1].Value.ToString());
                }

                for (int i = 0; i + 1 < valueDataGrid.RowCount; i++)
                {
                    Console.Out.WriteLine(hierarchyValuesTable[i].GetString("VALFROM"));
                }


                create.SetValue("HIERARCHYNODES", hierarchyTable);
                create.SetValue("HIERARCHYVALUES", hierarchyValuesTable);
                create.SetValue("CONTROLLINGAREAIMP", contrArea);
                create.Invoke(rfcDestination);
                this.Close();
            }

            /*catch (RfcCommunicationException ex)
             * {
             *  Console.Out.WriteLine(ex.Message);
             * }
             * catch (RfcLogonException ex)
             * {
             *  Console.Out.WriteLine(ex.Message);
             * }
             * catch (RfcAbapRuntimeException ex)
             * {
             *  Console.Out.WriteLine(ex.Message);
             * }*/
            catch (Exception ex)
            {
                Console.Out.WriteLine(ex.Message);
                Console.Out.WriteLine(ex.StackTrace);
            }
        }
예제 #8
0
        /// <summary>
        /// Transforma a Meters el resultado de la tabla
        /// </summary>
        /// <param name="returnTable"></param>
        /// <returns></returns>
        private static IList<Meter> transformResultDataToMeterList(IRfcTable returnTable)
        {
            IList<Meter> result = new List<Meter>();
            foreach (IRfcStructure row in returnTable)
            {
                result = result.Concat(getRowMeterList(row)).ToList();
            }

            return result;
        }
 public IRfcTableRPADataReader(IRfcTable rfcTable)
 {
     IRfcTable = rfcTable;
     enumer    = IRfcTable.GetEnumerator();
 }
예제 #10
0
        public void emitirnotasdecredito(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE
                                         , string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_ID_CAJA, string P_MONEDA, string P_PAIS
                                         , List <T_DOCUMENTOS> P_DOCSAPAGAR, string P_CHKTRIB)
        {
            try
            {
                RETURN2 retorno;

                T_DOCUMENTOS docs;

                //DETALLE_REND detallerend;
                T_Retorno.Clear();
                documentos.Clear();
                errormessage = "";
                message      = "";
                IdCaja       = "";
                Efectivo     = "0";

                IRfcTable ls_RETORNO;
                IRfcTable lt_DOCS;

                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();

                //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_REC_Y_FAC_NC");

                    BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA);
                    BapiGetUser.SetValue("PAY_CURRENCY", P_MONEDA);
                    BapiGetUser.SetValue("LAND", P_PAIS);
                    IRfcTable GralDat2 = BapiGetUser.GetTable("DOCUMENTOS");
                    try
                    {
                        for (var i = 0; i < P_DOCSAPAGAR.Count; i++)
                        {
                            GralDat2.Append();
                            GralDat2.SetValue("NDOCTO", P_DOCSAPAGAR[i].NDOCTO);
                            GralDat2.SetValue("MONTO", P_DOCSAPAGAR[i].MONTO);
                            GralDat2.SetValue("MONTOF", P_DOCSAPAGAR[i].MONTOF);
                            GralDat2.SetValue("MONEDA", P_DOCSAPAGAR[i].MONEDA);
                            GralDat2.SetValue("LAND", P_DOCSAPAGAR[i].LAND);
                            GralDat2.SetValue("FECVENCI", P_DOCSAPAGAR[i].FECVENCI);
                            GralDat2.SetValue("CONTROL_CREDITO", P_DOCSAPAGAR[i].CONTROL_CREDITO);
                            GralDat2.SetValue("CEBE", P_DOCSAPAGAR[i].CEBE);
                            GralDat2.SetValue("COND_PAGO", P_DOCSAPAGAR[i].COND_PAGO);
                            GralDat2.SetValue("RUTCLI", P_DOCSAPAGAR[i].RUTCLI);
                            GralDat2.SetValue("NOMCLI", P_DOCSAPAGAR[i].NOMCLI);
                            GralDat2.SetValue("ESTADO", P_DOCSAPAGAR[i].ESTADO);
                            GralDat2.SetValue("ICONO", P_CHKTRIB);
                            GralDat2.SetValue("DIAS_ATRASO", P_DOCSAPAGAR[i].DIAS_ATRASO);
                            string MontoAux = "";
                            MontoAux = P_DOCSAPAGAR[i].MONTO_ABONADO;
                            MontoAux = MontoAux.Replace(",", "");
                            MontoAux = MontoAux.Replace(".", "");
                            GralDat2.SetValue("MONTO_ABONADO", MontoAux);
                            MontoAux = P_DOCSAPAGAR[i].MONTOF_ABON;
                            MontoAux = MontoAux.Replace(",", "");
                            MontoAux = MontoAux.Replace(".", "");
                            GralDat2.SetValue("MONTOF_ABON", MontoAux);
                            MontoAux = P_DOCSAPAGAR[i].MONTO_PAGAR;
                            MontoAux = MontoAux.Replace(",", "");
                            MontoAux = MontoAux.Replace(".", "");
                            GralDat2.SetValue("MONTO_PAGAR", MontoAux);
                            MontoAux = P_DOCSAPAGAR[i].MONTOF_PAGAR;
                            MontoAux = MontoAux.Replace(",", "");
                            MontoAux = MontoAux.Replace(".", "");
                            GralDat2.SetValue("MONTOF_PAGAR", MontoAux);
                            GralDat2.SetValue("NREF", P_DOCSAPAGAR[i].NREF);
                            GralDat2.SetValue("FECHA_DOC", P_DOCSAPAGAR[i].FECHA_DOC);
                            GralDat2.SetValue("COD_CLIENTE", P_DOCSAPAGAR[i].COD_CLIENTE);
                            GralDat2.SetValue("SOCIEDAD", P_DOCSAPAGAR[i].SOCIEDAD);
                            GralDat2.SetValue("CLASE_DOC", P_DOCSAPAGAR[i].CLASE_DOC);
                            GralDat2.SetValue("CLASE_CUENTA", P_DOCSAPAGAR[i].CLASE_CUENTA);
                            GralDat2.SetValue("CME", P_DOCSAPAGAR[i].CME);
                            GralDat2.SetValue("ACC", P_DOCSAPAGAR[i].ACC);
                            GralDat2.SetValue("FACT_SD_ORIGEN", P_DOCSAPAGAR[i].FACT_SD_ORIGEN);
                            GralDat2.SetValue("FACT_ELECT", P_DOCSAPAGAR[i].FACT_ELECT);
                            GralDat2.SetValue("ID_COMPROBANTE", P_DOCSAPAGAR[i].ID_COMPROBANTE);
                            GralDat2.SetValue("ID_CAJA", P_DOCSAPAGAR[i].ID_CAJA);
                            GralDat2.SetValue("LAND", P_DOCSAPAGAR[i].LAND);
                            GralDat2.SetValue("BAPI", P_DOCSAPAGAR[i].BAPI);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message + ex.StackTrace);
                        //System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                    BapiGetUser.SetValue("DOCUMENTOS", GralDat2);


                    BapiGetUser.Invoke(SapRfcDestination);
                    //BapiGetUser.SetValue("I_VBELN",P_NUMDOCSD);
                    //IRfcTable GralDat = BapiGetUser.GetTable("VIAS_PAGO");
                    lt_DOCS = BapiGetUser.GetTable("DOCUMENTOS");

                    if (lt_DOCS.Count > 0)
                    {
                        //LLenamos la tabla de salida lt_DatGen
                        for (int i = 0; i < lt_DOCS.RowCount; i++)
                        {
                            try
                            {
                                lt_DOCS.CurrentIndex = i;
                                docs = new T_DOCUMENTOS();

                                docs.NDOCTO = lt_DOCS[i].GetString("NDOCTO");
                                string Monto  = "";
                                int    indice = 0;
                                //*******
                                if (lt_DOCS[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_DOCS[i].GetString("MONTOF").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux = 0;
                                    if ((Valor == "00") | (Valor == "0"))
                                    {
                                        ValorAux = Convert.ToDecimal(Valor);
                                    }
                                    else
                                    {
                                        ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2));
                                    }
                                    string Cualquiernombre = string.Format("{0:0,0}", ValorAux);
                                    docs.MONTOF = Cualquiernombre;
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_DOCS[i].GetString("MONTOF"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    docs.MONTOF = string.Format("{0:0,0.##}", ValorAux);
                                }
                                //if (lt_DOCS[i].GetString("MONTOF") == "")
                                //{
                                //    indice = lt_DOCS[i].GetString("MONTO").IndexOf(',');
                                //    Monto = lt_DOCS[i].GetString("MONTO").Substring(0, indice - 1);
                                //    docs.MONTOF = Monto;
                                //}
                                //else
                                //{
                                //    docs.MONTOF = lt_DOCS[i].GetString("MONTOF");
                                //}
                                if (lt_DOCS[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_DOCS[i].GetString("MONTO").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux = Convert.ToDecimal(Valor);
                                    if ((Valor == "00") | (Valor == "0"))
                                    {
                                        ValorAux = Convert.ToDecimal(Valor);
                                    }
                                    else
                                    {
                                        ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2));
                                    }
                                    docs.MONTO = string.Format("{0:0,0}", ValorAux);
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_DOCS[i].GetString("MONTO"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    docs.MONTO = string.Format("{0:0,0.##}", ValorAux);
                                }
                                //if (lt_DOCS[i].GetString("MONTO") == "")
                                //{
                                //    indice = lt_DOCS[i].GetString("MONTO").IndexOf(',');
                                //    Monto = lt_DOCS[i].GetString("MONTO").Substring(0, indice - 1);
                                //    docs.MONTO = Monto;
                                //}
                                //else
                                //{
                                //    docs.MONTO = lt_DOCS[i].GetString("MONTO");
                                //}

                                docs.MONEDA          = lt_DOCS[i].GetString("MONEDA");
                                docs.FECVENCI        = lt_DOCS[i].GetString("FECVENCI");
                                docs.CONTROL_CREDITO = lt_DOCS[i].GetString("CONTROL_CREDITO");
                                docs.CEBE            = lt_DOCS[i].GetString("CEBE");
                                docs.COND_PAGO       = lt_DOCS[i].GetString("COND_PAGO");
                                docs.RUTCLI          = lt_DOCS[i].GetString("RUTCLI");
                                docs.NOMCLI          = lt_DOCS[i].GetString("NOMCLI");
                                docs.ESTADO          = lt_DOCS[i].GetString("ESTADO");
                                docs.ICONO           = lt_DOCS[i].GetString("ICONO");
                                docs.DIAS_ATRASO     = lt_DOCS[i].GetString("DIAS_ATRASO");
                                if (lt_DOCS[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_DOCS[i].GetString("MONTOF_ABON").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux;
                                    if ((Valor == "00") | (Valor == "0"))
                                    {
                                        ValorAux = Convert.ToDecimal(Valor);
                                    }
                                    else
                                    {
                                        ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2));
                                    }
                                    docs.MONTOF_ABON = string.Format("{0:0,0}", ValorAux);
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_DOCS[i].GetString("MONTOF_ABON"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    docs.MONTOF_ABON = string.Format("{0:0,0.##}", ValorAux);
                                }
                                //if (lt_DOCS[i].GetString("MONTOF_ABON") == "")
                                //{
                                //    indice = lt_DOCS[i].GetString("MONTO_ABONADO").IndexOf(',');
                                //    Monto = lt_DOCS[i].GetString("MONTO_ABONADO").Substring(0, indice - 1);
                                //    docs.MONTOF = Monto;
                                //}
                                //else
                                //{
                                //    docs.MONTOF_ABON = lt_DOCS[i].GetString("MONTOF_ABON");
                                //}
                                if (lt_DOCS[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_DOCS[i].GetString("MONTOF_PAGAR").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux = Convert.ToDecimal(Valor);
                                    if ((Valor == "00") | (Valor == "0"))
                                    {
                                        ValorAux = Convert.ToDecimal(Valor);
                                    }
                                    else
                                    {
                                        ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2));
                                    }
                                    docs.MONTOF_PAGAR = string.Format("{0:0,0}", ValorAux);
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_DOCS[i].GetString("MONTOF_PAGAR"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    docs.MONTOF_PAGAR = string.Format("{0:0,0.##}", ValorAux);
                                }
                                //if (lt_DOCS[i].GetString("MONTOF_PAGAR") == "")
                                //{
                                //    indice = lt_DOCS[i].GetString("MONTO_PAGAR").IndexOf(',');
                                //    Monto = lt_DOCS[i].GetString("MONTO_PAGAR").Substring(0, indice - 1);
                                //    docs.MONTOF = Monto;
                                //}
                                //else
                                //{
                                //    docs.MONTOF_PAGAR = lt_DOCS[i].GetString("MONTOF_PAGAR");
                                //}
                                docs.NREF           = lt_DOCS[i].GetString("NREF");
                                docs.FECHA_DOC      = lt_DOCS[i].GetString("FECHA_DOC");
                                docs.COD_CLIENTE    = lt_DOCS[i].GetString("COD_CLIENTE");
                                docs.SOCIEDAD       = lt_DOCS[i].GetString("SOCIEDAD");
                                docs.CLASE_DOC      = lt_DOCS[i].GetString("CLASE_DOC");
                                docs.CLASE_CUENTA   = lt_DOCS[i].GetString("CLASE_CUENTA");
                                docs.CME            = lt_DOCS[i].GetString("CME");
                                docs.ACC            = lt_DOCS[i].GetString("ACC");
                                docs.FACT_SD_ORIGEN = lt_DOCS[i].GetString("FACT_SD_ORIGEN");
                                docs.FACT_ELECT     = lt_DOCS[i].GetString("FACT_ELECT");
                                docs.ID_COMPROBANTE = lt_DOCS[i].GetString("ID_COMPROBANTE");
                                docs.ID_CAJA        = lt_DOCS[i].GetString("ID_CAJA");
                                docs.LAND           = lt_DOCS[i].GetString("LAND");
                                documentos.Add(docs);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message + ex.StackTrace);
                                System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                            }
                        }
                    }
                    else
                    {
                        System.Windows.Forms.MessageBox.Show("No existe(n) registro(s)");
                    }

                    ls_RETORNO = BapiGetUser.GetTable("RETURN");
                    try
                    {
                        for (int i = 0; i < ls_RETORNO.Count(); i++)
                        {
                            ls_RETORNO.CurrentIndex = i;
                            retorno = new RETURN2();
                            if (ls_RETORNO.GetString("TYPE") == "S")
                            {
                                message    = message + "-" + ls_RETORNO.GetString("MESSAGE") + ":" + ls_RETORNO.GetString("MESSAGE_V1").Trim() + "\n";
                                NumComprob = ls_RETORNO.GetString("MESSAGE_V4").Trim();
                            }
                            if (ls_RETORNO.GetString("TYPE") == "E")
                            {
                                errormessage = errormessage + " - " + ls_RETORNO.GetString("MESSAGE") + "\n";
                            }
                            retorno.TYPE       = ls_RETORNO.GetString("TYPE");
                            retorno.ID         = ls_RETORNO.GetString("ID");
                            retorno.NUMBER     = ls_RETORNO.GetString("NUMBER");
                            retorno.MESSAGE    = ls_RETORNO.GetString("MESSAGE");
                            retorno.LOG_NO     = ls_RETORNO.GetString("LOG_NO");
                            retorno.LOG_MSG_NO = ls_RETORNO.GetString("LOG_MSG_NO");
                            retorno.MESSAGE_V1 = ls_RETORNO.GetString("MESSAGE_V1");
                            retorno.MESSAGE_V2 = ls_RETORNO.GetString("MESSAGE_V2");
                            retorno.MESSAGE_V3 = ls_RETORNO.GetString("MESSAGE_V3");
                            if (ls_RETORNO.GetString("MESSAGE_V4") != "")
                            {
                                // comprobante = ls_RETORNO.GetString("MESSAGE_V4");
                            }
                            retorno.MESSAGE_V4 = ls_RETORNO.GetString("MESSAGE_V4");
                            retorno.PARAMETER  = ls_RETORNO.GetString("PARAMETER");
                            retorno.ROW        = ls_RETORNO.GetString("ROW");
                            retorno.FIELD      = ls_RETORNO.GetString("FIELD");
                            retorno.SYSTEM     = ls_RETORNO.GetString("SYSTEM");
                            T_Retorno.Add(retorno);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                }
                else
                {
                    errormessage = retval;
                    MessageBox.Show("No se pudo conectar a la RFC");
                }
                GC.Collect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message, ex.StackTrace);
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
 private static void WriteRowProperties(IRfcTable table, JsonWriter writer)
 {
     for (int columnNumber = 0; columnNumber < table.ElementCount; columnNumber++)
     {
         var name = table.GetElementMetadata(columnNumber).Name;
         var value = table.GetString(columnNumber);
         writer.WritePropertyName(name);
         writer.WriteValue(value);
     }
 }
 private static void WriteRowObject(IRfcTable table, JsonWriter writer)
 {
     writer.WriteStartObject();
     WriteRowProperties(table, writer);
     writer.WriteEndObject();
 }
예제 #13
0
        /// <summary>
        /// Populates a DataTable with the values
        /// from the given RfcTable
        /// </summary>
        /// <param name="rfcTable">Source table</param>
        /// <param name="dataTable">Destination table</param>
        private void PopulateDataTable(IRfcTable rfcTable, DataTable dataTable)
        {
            for (var i = 0; i < rfcTable.RowCount; i++)
            {
                rfcTable.CurrentIndex = i;

                var row = dataTable.NewRow();

                foreach(DataColumn column in dataTable.Columns)
                {
                    try
                    {
                        SetDataColumnValueFromRfcColumn(rfcTable.CurrentRow[column.ColumnName], row, column);
                    }
                    catch(Exception ex)
                    {
                        throw new NSAPConnectorException(
                            string.Format("An error occurred when trying to add value from column '{0}' from table '{1}'. For more details check inner exception.", column.ColumnName, dataTable.TableName), ex);
                    }
                }

                dataTable.Rows.Add(row);
            }
        }
예제 #14
0
        /// <summary>
        /// Creates a DataTable which has the same structure whith
        /// the given RfcTable.
        /// </summary>
        /// <param name="tableToConvert">RfcTable to clone.</param>
        /// <param name="tableName">Name of the DataTable to be created.</param>
        /// <returns>DataTable instance.</returns>
        private DataTable ConvertRfcTableToDataTable(IRfcTable tableToConvert, string tableName)
        {
            var columnsMetadata = tableToConvert.Metadata.LineType;
            var dataTable = new DataTable(tableName);

            for (var i = 0; i < columnsMetadata.FieldCount; i++)
            {
                dataTable.Columns
                    .Add(columnsMetadata[i].Name, GetCorrespondingDotNetType(columnsMetadata[i].DataType.ToString(), columnsMetadata[i].NucLength));
            }

            return dataTable;
        }
예제 #15
0
        public static List<CScreenField> getScreenFieldAsList(IRfcTable iScreenField)
        {
            List<CScreenField> _ScreenField_LIST = new List<CScreenField>();

            IRfcTable rfc_ScreenField = iScreenField;

            for (int i = 0; i < rfc_ScreenField.RowCount; i++)
            {
                var _ScreenField = new CScreenField();
                _ScreenField.name = rfc_ScreenField[i].GetString(C_NAME); // 屏幕元素的名称
                _ScreenField.dynnr = rfc_ScreenField[i].GetString(C_DYNNR); // 屏幕号码
                _ScreenField.line = rfc_ScreenField[i].GetDecimal(C_LINE); // 出现字段的屏幕上的行
                _ScreenField.coln = rfc_ScreenField[i].GetDecimal(C_COLN); // 在屏幕上显示字段的列
                _ScreenField.leng = rfc_ScreenField[i].GetDecimal(C_LENG); // 定义的屏幕字段长度
                _ScreenField.vleng = rfc_ScreenField[i].GetDecimal(C_VLENG); // 屏幕中可见的(定为可见的)字段长度
                _ScreenField.high = rfc_ScreenField[i].GetDecimal(C_HIGH); // 屏幕中元素的高度
                _ScreenField.type = rfc_ScreenField[i].GetString(C_TYPE); // 字段格式(ABAP 词典数据类型)
                _ScreenField.fein = rfc_ScreenField[i].GetString(C_FEIN); // 此字段的期望输入
                _ScreenField.fout = rfc_ScreenField[i].GetString(C_FOUT); // 此字段的期望输出
                _ScreenField.scroll = rfc_ScreenField[i].GetString(C_SCROLL); // 可滚动的输入/输出字段
                _ScreenField.dict = rfc_ScreenField[i].GetString(C_DICT); // ABAP 字典中的字段
                _ScreenField.dmod = rfc_ScreenField[i].GetString(C_DMOD); // 修改 ABAP 字典的字段
                _ScreenField.grp1 = rfc_ScreenField[i].GetString(C_GRP1); // 修改组 1
                _ScreenField.grp2 = rfc_ScreenField[i].GetString(C_GRP2); // 修改组 2
                _ScreenField.grp3 = rfc_ScreenField[i].GetString(C_GRP3); //   修改组3
                _ScreenField.grp4 = rfc_ScreenField[i].GetString(C_GRP4); //   修改组4
                _ScreenField.loop = rfc_ScreenField[i].GetDecimal(C_LOOP); // 循环计数
                _ScreenField.fobl = rfc_ScreenField[i].GetString(C_FOBL); // 字段中的条目
                _ScreenField.fstr = rfc_ScreenField[i].GetString(C_FSTR); // * 条目
                _ScreenField.fnrs = rfc_ScreenField[i].GetString(C_FNRS); // 未重置
                _ScreenField.fgks = rfc_ScreenField[i].GetString(C_FGKS); // 大/小写条目
                _ScreenField.ffix = rfc_ScreenField[i].GetString(C_FFIX); // 固定,带下划线的字符模板
                _ScreenField.fosb = rfc_ScreenField[i].GetString(C_FOSB); // 不用模板在 CHAR 字段中输入所有字符
                _ScreenField.ffky = rfc_ScreenField[i].GetString(C_FFKY); // 字典的外键检查为活动状态
                _ScreenField.fspa = rfc_ScreenField[i].GetString(C_FSPA); // SET 参数
                _ScreenField.fgpa = rfc_ScreenField[i].GetString(C_FGPA); // GET 参数
                _ScreenField.paid = rfc_ScreenField[i].GetString(C_PAID); // 参数ID SAP内存
                _ScreenField.ucnv = rfc_ScreenField[i].GetString(C_UCNV); // 转换出口
                _ScreenField.hell = rfc_ScreenField[i].GetString(C_HELL); // 亮度显示
                _ScreenField.unsi = rfc_ScreenField[i].GetString(C_UNSI); // 不可见显示
                _ScreenField.invr = rfc_ScreenField[i].GetString(C_INVR); // 显示反转视频
                _ScreenField.blin = rfc_ScreenField[i].GetString(C_BLIN); // 闪烁
                _ScreenField.ulin = rfc_ScreenField[i].GetString(C_ULIN); // 突出显示
                _ScreenField.colr = rfc_ScreenField[i].GetString(C_COLR); // 显示颜色1...7
                _ScreenField.fjus = rfc_ScreenField[i].GetString(C_FJUS); // 右对齐显示
                _ScreenField.fill = rfc_ScreenField[i].GetString(C_FILL); // 显示前导零
                _ScreenField.labelleft = rfc_ScreenField[i].GetString(C_LABELLEFT); // 作为左侧标签
                _ScreenField.labelright = rfc_ScreenField[i].GetString(C_LABELRIGHT); // 作为右侧标签
                _ScreenField.dblclick = rfc_ScreenField[i].GetString(C_DBLCLICK); // 响应双击
                _ScreenField.ltr = rfc_ScreenField[i].GetString(C_LTR); // 基本写方向已定义为 LTR(从左至右)
                _ScreenField.bidictrl = rfc_ScreenField[i].GetString(C_BIDICTRL); // ABAP 字典:不过滤双向格式字符
                _ScreenField.mtch = rfc_ScreenField[i].GetString(C_MTCH); // 搜索帮助
                _ScreenField.waer = rfc_ScreenField[i].GetString(C_WAER); // 参考字段
                _ScreenField.fcod = rfc_ScreenField[i].GetString(C_FCOD); // 用于按钮的功能码
                _ScreenField.ptype = rfc_ScreenField[i].GetString(C_PTYPE); // 按钮的功能码类型
                _ScreenField.ctmenuprog = rfc_ScreenField[i].GetString(C_CTMENUPROG); // 上下文菜单:程序名称
                _ScreenField.ctmenustat = rfc_ScreenField[i].GetString(C_CTMENUSTAT); // 上下文菜单:状态/菜单名
                _ScreenField.ctmenuonct = rfc_ScreenField[i].GetString(C_CTMENUONCT); // 上下文菜单:动态回调 ON_CTMENU_...
                _ScreenField.ctmenust = rfc_ScreenField[i].GetString(C_CTMENUST); // 上下文菜单:静态
                _ScreenField.ctmenudy = rfc_ScreenField[i].GetString(C_CTMENUDY); // 上下文菜单:动态 (ON_CTMENU_...)
                _ScreenField.ccname = rfc_ScreenField[i].GetString(C_CCNAME); // Control Composite:名称
                _ScreenField.ccdleft = rfc_ScreenField[i].GetString(C_CCDLEFT); // Control Composite:左停靠
                _ScreenField.ccdright = rfc_ScreenField[i].GetString(C_CCDRIGHT); // Control Composite:右停靠
                _ScreenField.ccdtop = rfc_ScreenField[i].GetString(C_CCDTOP); // Control Composite:上停靠
                _ScreenField.ccdbottom = rfc_ScreenField[i].GetString(C_CCDBOTTOM); // Control Composite:下停靠
                _ScreenField.ccdlen_l = rfc_ScreenField[i].GetInt(C_CCDLEN_L); // Control Composite:停靠控件的宽度
                _ScreenField.ccdlen_r = rfc_ScreenField[i].GetInt(C_CCDLEN_R); // Control Composite:停靠控件的宽度
                _ScreenField.ccdhig_t = rfc_ScreenField[i].GetInt(C_CCDHIG_T); // Control Composite:停靠控件的高度
                _ScreenField.ccdhig_b = rfc_ScreenField[i].GetInt(C_CCDHIG_B); // Control Composite:停靠控件的高度
                _ScreenField.ltyp = rfc_ScreenField[i].GetString(C_LTYP); // 循环:循环类型(固定的或可变的)
                _ScreenField.gtyp = rfc_ScreenField[i].GetString(C_GTYP); // 屏幕元素类型
                _ScreenField.fixf = rfc_ScreenField[i].GetString(C_FIXF); // 以固定字体代替比例字体
                _ScreenField.no3d = rfc_ScreenField[i].GetString(C_NO3D); // 输入/输出字段的二维显示
                _ScreenField.oout = rfc_ScreenField[i].GetString(C_OOUT); // 纯输出字段
                _ScreenField.win1 = rfc_ScreenField[i].GetString(C_WIN1); // 图形屏幕绘制器:全屏编辑器
                _ScreenField.win2 = rfc_ScreenField[i].GetString(C_WIN2); // 图形屏幕绘制器:字段属性
                _ScreenField.win3 = rfc_ScreenField[i].GetString(C_WIN3); // 图形屏幕绘制器:ABAP/4 字典/程序字段
                _ScreenField.stxt = rfc_ScreenField[i].GetString(C_STXT); // 屏幕元素的文本/模板
                _ScreenField.cmbtast = rfc_ScreenField[i].GetString(C_CMBTAST); // 可能条目按钮和可能条目的修改
                _ScreenField.cmbfoc = rfc_ScreenField[i].GetString(C_CMBFOC); // 可能条目的有效性
                _ScreenField.dropfrom = rfc_ScreenField[i].GetString(C_DROPFROM); // 输入帮助: 原始值
                _ScreenField.dropdown = rfc_ScreenField[i].GetString(C_DROPDOWN); // 下拉
                _ScreenField.fetchfld = rfc_ScreenField[i].GetString(C_FETCHFLD); // 取得表字段或程序字段 (一般)
                _ScreenField.rfcdest = rfc_ScreenField[i].GetString(C_RFCDEST); // 参考系统(RFC 目标)
                _ScreenField.schab = rfc_ScreenField[i].GetString(C_SCHAB); // 预选字典或程序字段的输入/输出字段
                _ScreenField.schlk = rfc_ScreenField[i].GetString(C_SCHLK); // 为词典字段预选短字段标签
                _ScreenField.schlm = rfc_ScreenField[i].GetString(C_SCHLM); // 为词典字段预选中字段标签
                _ScreenField.schll = rfc_ScreenField[i].GetString(C_SCHLL); // 为词典字段预选长字段标签
                _ScreenField.ueber = rfc_ScreenField[i].GetString(C_UEBER); // 为词典字段预选标题
                _ScreenField.schlno = rfc_ScreenField[i].GetString(C_SCHLNO); // 预选带有短文本 (无字段标签) 的词典字段
                _ScreenField.schabno = rfc_ScreenField[i].GetString(C_SCHABNO); // 词典或程序字段 I/O 模板无预选
                _ScreenField.textmod = rfc_ScreenField[i].GetString(C_TEXTMOD); // 预选:使用修正的词典文本
                _ScreenField.textorig = rfc_ScreenField[i].GetString(C_TEXTORIG); // 预选:像在词典中一样使用原始文本
                _ScreenField.dezusatz = rfc_ScreenField[i].GetString(C_DEZUSATZ); // 数据元素增补
                _ScreenField.tltrennhor = rfc_ScreenField[i].GetString(C_TLTRENNHOR); // 表控件:带水平分隔符
                _ScreenField.tltrennver = rfc_ScreenField[i].GetString(C_TLTRENNVER); // 表控件:带垂直分隔符
                _ScreenField.tlscrollh = rfc_ScreenField[i].GetString(C_TLSCROLLH); // 控件:水平滚动
                _ScreenField.tlscrollv = rfc_ScreenField[i].GetString(C_TLSCROLLV); // 控件:垂直滚动
                _ScreenField.tlscroll = rfc_ScreenField[i].GetString(C_TLSCROLL); // 控件:可滚动
                _ScreenField.tlselectzn = rfc_ScreenField[i].GetString(C_TLSELECTZN); // 表控制:无行选择
                _ScreenField.tlselectzs = rfc_ScreenField[i].GetString(C_TLSELECTZS); // 表控制:单行选择
                _ScreenField.tlselectzm = rfc_ScreenField[i].GetString(C_TLSELECTZM); // 表控制:多行选择
                _ScreenField.tlselectsn = rfc_ScreenField[i].GetString(C_TLSELECTSN); // 表控制:无列选择
                _ScreenField.tlselectss = rfc_ScreenField[i].GetString(C_TLSELECTSS); // 表控制:单列选择
                _ScreenField.tlselectsm = rfc_ScreenField[i].GetString(C_TLSELECTSM); // 表控制:多列选择
                _ScreenField.tlshowonly = rfc_ScreenField[i].GetString(C_TLSHOWONLY); // 表控件:仅显示
                _ScreenField.tlvarv = rfc_ScreenField[i].GetString(C_TLVARV); // 控制:垂直调整
                _ScreenField.tlvarvmin = rfc_ScreenField[i].GetDecimal(C_TLVARVMIN); // 控制:垂直调整中最少的行数
                _ScreenField.tlvarh = rfc_ScreenField[i].GetString(C_TLVARH); // 控制:水平调整
                _ScreenField.tlvarhmin = rfc_ScreenField[i].GetDecimal(C_TLVARHMIN); // 控制:水平调整中最少的列数
                _ScreenField.tlmark = rfc_ScreenField[i].GetString(C_TLMARK); // 表控制:选择列
                _ScreenField.tltitel = rfc_ScreenField[i].GetString(C_TLTITEL); // 表控制:带标题行
                _ScreenField.tlueber = rfc_ScreenField[i].GetString(C_TLUEBER); // 表控制:带列头
                _ScreenField.tlerfa = rfc_ScreenField[i].GetString(C_TLERFA); // 表控制:项表
                _ScreenField.tlausw = rfc_ScreenField[i].GetString(C_TLAUSW); // 表控制:选定行
                _ScreenField.tlconf = rfc_ScreenField[i].GetString(C_TLCONF); // 表控制:可配置性
                _ScreenField.tltext = rfc_ScreenField[i].GetString(C_TLTEXT); // 表控制:字段文本
                _ScreenField.tlentry = rfc_ScreenField[i].GetString(C_TLENTRY); // 表控制:项/模板字段
                _ScreenField.tlradiob = rfc_ScreenField[i].GetString(C_TLRADIOB); // 表控制:单选按钮
                _ScreenField.tlcheckb = rfc_ScreenField[i].GetString(C_TLCHECKB); // 表控制:复选框
                _ScreenField.tlpushb = rfc_ScreenField[i].GetString(C_TLPUSHB); // 表控制:按钮
                _ScreenField.tlnametyp = rfc_ScreenField[i].GetString(C_TLNAMETYP); //   Multi--目的文本通用
                _ScreenField.tlnamefld = rfc_ScreenField[i].GetString(C_TLNAMEFLD); // 屏幕元素的名称
                _ScreenField.tlnameueb = rfc_ScreenField[i].GetString(C_TLNAMEUEB); // 屏幕元素的名称
                _ScreenField.tlnamesel = rfc_ScreenField[i].GetString(C_TLNAMESEL); // 屏幕元素的名称
                _ScreenField.tlnametit = rfc_ScreenField[i].GetString(C_TLNAMETIT); // 屏幕元素的名称
                _ScreenField.tlfeldfix = rfc_ScreenField[i].GetString(C_TLFELDFIX); // 固定字段
                _ScreenField.tlfixanz = rfc_ScreenField[i].GetInt(C_TLFIXANZ); // 表控件:固定主导列数目
                _ScreenField.tlfeldnr = rfc_ScreenField[i].GetInt(C_TLFELDNR); // 列号
                _ScreenField.tlfeldnr00 = rfc_ScreenField[i].GetInt(C_TLFELDNR00); // 列号
                _ScreenField.tlfeldspbr = rfc_ScreenField[i].GetInt(C_TLFELDSPBR); // 列宽
                _ScreenField.spcell1 = rfc_ScreenField[i].GetString(C_SPCELL1); // 分割条单元格名称
                _ScreenField.spcell2 = rfc_ScreenField[i].GetString(C_SPCELL2); // 分割条单元格名称
                _ScreenField.spsplitthoriz = rfc_ScreenField[i].GetString(C_SPSPLITTHORIZ); // 分割条控件:分割方向垂直/水平
                _ScreenField.spsplittvert = rfc_ScreenField[i].GetString(C_SPSPLITTVERT); // 分割条控件:分割方向垂直/水平
                _ScreenField.spsash = rfc_ScreenField[i].GetInt(C_SPSASH); // 分割条控件:框格
                _ScreenField.outputstyle = rfc_ScreenField[i].GetInt(C_OUTPUTSTYLE); // 十进制浮点:输出样式
                _ScreenField.sign = rfc_ScreenField[i].GetString(C_SIGN); // 带 +/- 符号
                _ScreenField.noinputhistory = rfc_ScreenField[i].GetString(C_NOINPUTHISTORY); // 无 GUI 输入历史记录
                _ScreenField.ampmenabled = rfc_ScreenField[i].GetString(C_AMPMENABLED); // AM/PM 启用时间格式
                _ScreenField.extend = rfc_ScreenField[i].GetString(C_EXTEND); // 屏幕对象的修改状态
                _ScreenField.hierarchy = rfc_ScreenField[i].GetString(C_HIERARCHY); // 屏幕字段间的层次关系
                _ScreenField.icon = rfc_ScreenField[i].GetString(C_ICON); // 图标标识(包括 @)
                _ScreenField.icon_n = rfc_ScreenField[i].GetString(C_ICON_N); // 图标:名称
                _ScreenField.icon_t = rfc_ScreenField[i].GetString(C_ICON_T); // 图标:描述
                _ScreenField.icon_l = rfc_ScreenField[i].GetString(C_ICON_L); // 图标长度
                _ScreenField.icon_q = rfc_ScreenField[i].GetString(C_ICON_Q); // 图标:快速信息文本
                _ScreenField.icon_b = rfc_ScreenField[i].GetString(C_ICON_B); // 图标:描述文本
                _ScreenField.icon_x = rfc_ScreenField[i].GetString(C_ICON_X); // 图标: 带图标的输出元素
                _ScreenField.fldp = rfc_ScreenField[i].GetString(C_FLDP); // 匹配码子键中的字段标识
                _ScreenField.fldn = rfc_ScreenField[i].GetString(C_FLDN); // 匹配码子关键字中的字段名
                _ScreenField.prog = rfc_ScreenField[i].GetString(C_PROG); // 修改:程序名称
                _ScreenField.dnum = rfc_ScreenField[i].GetString(C_DNUM); // 修改:屏幕编号
                _ScreenField.pbo_f = rfc_ScreenField[i].GetString(C_PBO_F); // 修改:PBO 开头
                _ScreenField.pbo_l = rfc_ScreenField[i].GetString(C_PBO_L); // 修改:PBO 结尾
                _ScreenField.pai_f = rfc_ScreenField[i].GetString(C_PAI_F); // 修改:PAI 开头
                _ScreenField.pai_l = rfc_ScreenField[i].GetString(C_PAI_L); // 修改:PAI 结尾
                _ScreenField.extext = rfc_ScreenField[i].GetString(C_EXTEXT); // 修改:文本字段
                _ScreenField.exentry = rfc_ScreenField[i].GetString(C_EXENTRY); // 修改:输入/输出字段
                _ScreenField.exradio = rfc_ScreenField[i].GetString(C_EXRADIO); // 修改: 单选按钮
                _ScreenField.excheck = rfc_ScreenField[i].GetString(C_EXCHECK); // 修改:复选框
                _ScreenField.expush = rfc_ScreenField[i].GetString(C_EXPUSH); // 修改: 按钮
                _ScreenField.exframe = rfc_ScreenField[i].GetString(C_EXFRAME); // 修改: 框
                _ScreenField.extabctrl = rfc_ScreenField[i].GetString(C_EXTABCTRL); // 修改:表控件
                _ScreenField.excustom = rfc_ScreenField[i].GetString(C_EXCUSTOM); // 修改: 定制控制
                _ScreenField.extstrctrl = rfc_ScreenField[i].GetString(C_EXTSTRCTRL); // 修改:标签条控件
                _ScreenField.exsubscr = rfc_ScreenField[i].GetString(C_EXSUBSCR); // 修改:子屏幕
                _ScreenField.exsplitter = rfc_ScreenField[i].GetString(C_EXSPLITTER); // 修改:拆分器控件
                _ScreenField.exshow = rfc_ScreenField[i].GetString(C_EXSHOW); // 修改:详细信息视图
                _ScreenField.msg_line1 = rfc_ScreenField[i].GetString(C_MSG_LINE1); // 对话框状态行
                _ScreenField.msg_line2 = rfc_ScreenField[i].GetString(C_MSG_LINE2); // 对话框状态行
                _ScreenField.propshow = rfc_ScreenField[i].GetString(C_PROPSHOW); // 属性包:转到属性列表
                _ScreenField.propname = rfc_ScreenField[i].GetString(C_PROPNAME); // 属性
                _ScreenField.propbool = rfc_ScreenField[i].GetString(C_PROPBOOL); // 属性包:布尔值
                _ScreenField.propstring = rfc_ScreenField[i].GetString(C_PROPSTRING); // 属性包:字符串值
                _ScreenField_LIST.Add(_ScreenField);

            }

            return _ScreenField_LIST;
        }
예제 #16
0
 //根据RFCTABLE,返回DT
 public static DataTable getScreenFieldAsDt(IRfcTable iScreenField, DataTable dt = null)
 {
     if (dt == null)
     {
         if (dtFields == null)
         {
             dtFields = buildDtSchma();
             dt = dtFields;
         }
         else
         {
             dt = dtFields;
         }
        // dt = buildDtSchma();
     }
     foreach (IRfcStructure row in iScreenField)
     {
         DataRow dr = dt.NewRow();
         dr[C_NAME] = row.GetValue(C_NAME) ?? DBNull.Value;//屏幕元素的名称
         dr[C_DYNNR] = row.GetValue(C_DYNNR) ?? DBNull.Value;//屏幕号码
         dr[C_LINE] = row.GetValue(C_LINE) ?? DBNull.Value;//出现字段的屏幕上的行
         dr[C_COLN] = row.GetValue(C_COLN) ?? DBNull.Value;//在屏幕上显示字段的列
         dr[C_LENG] = row.GetValue(C_LENG) ?? DBNull.Value;//定义的屏幕字段长度
         dr[C_VLENG] = row.GetValue(C_VLENG) ?? DBNull.Value;//屏幕中可见的(定为可见的)字段长度
         dr[C_HIGH] = row.GetValue(C_HIGH) ?? DBNull.Value;//屏幕中元素的高度
         dr[C_TYPE] = row.GetValue(C_TYPE) ?? DBNull.Value;//字段格式(ABAP 词典数据类型)
         dr[C_FEIN] = row.GetValue(C_FEIN) ?? DBNull.Value;//此字段的期望输入
         dr[C_FOUT] = row.GetValue(C_FOUT) ?? DBNull.Value;//此字段的期望输出
         dr[C_SCROLL] = row.GetValue(C_SCROLL) ?? DBNull.Value;//可滚动的输入/输出字段
         dr[C_DICT] = row.GetValue(C_DICT) ?? DBNull.Value;//ABAP 字典中的字段
         dr[C_DMOD] = row.GetValue(C_DMOD) ?? DBNull.Value;//修改 ABAP 字典的字段
         dr[C_GRP1] = row.GetValue(C_GRP1) ?? DBNull.Value;//修改组 1
         dr[C_GRP2] = row.GetValue(C_GRP2) ?? DBNull.Value;//修改组 2
         dr[C_GRP3] = row.GetValue(C_GRP3) ?? DBNull.Value;//  修改组3
         dr[C_GRP4] = row.GetValue(C_GRP4) ?? DBNull.Value;//  修改组4
         dr[C_LOOP] = row.GetValue(C_LOOP) ?? DBNull.Value;//循环计数
         dr[C_FOBL] = row.GetValue(C_FOBL) ?? DBNull.Value;//字段中的条目
         dr[C_FSTR] = row.GetValue(C_FSTR) ?? DBNull.Value;//* 条目
         dr[C_FNRS] = row.GetValue(C_FNRS) ?? DBNull.Value;//未重置
         dr[C_FGKS] = row.GetValue(C_FGKS) ?? DBNull.Value;//大/小写条目
         dr[C_FFIX] = row.GetValue(C_FFIX) ?? DBNull.Value;//固定,带下划线的字符模板
         dr[C_FOSB] = row.GetValue(C_FOSB) ?? DBNull.Value;//不用模板在 CHAR 字段中输入所有字符
         dr[C_FFKY] = row.GetValue(C_FFKY) ?? DBNull.Value;//字典的外键检查为活动状态
         dr[C_FSPA] = row.GetValue(C_FSPA) ?? DBNull.Value;//SET 参数
         dr[C_FGPA] = row.GetValue(C_FGPA) ?? DBNull.Value;//GET 参数
         dr[C_PAID] = row.GetValue(C_PAID) ?? DBNull.Value;//参数ID SAP内存
         dr[C_UCNV] = row.GetValue(C_UCNV) ?? DBNull.Value;//转换出口
         dr[C_HELL] = row.GetValue(C_HELL) ?? DBNull.Value;//亮度显示
         dr[C_UNSI] = row.GetValue(C_UNSI) ?? DBNull.Value;//不可见显示
         dr[C_INVR] = row.GetValue(C_INVR) ?? DBNull.Value;//显示反转视频
         dr[C_BLIN] = row.GetValue(C_BLIN) ?? DBNull.Value;//闪烁
         dr[C_ULIN] = row.GetValue(C_ULIN) ?? DBNull.Value;//突出显示
         dr[C_COLR] = row.GetValue(C_COLR) ?? DBNull.Value;//显示颜色1...7
         dr[C_FJUS] = row.GetValue(C_FJUS) ?? DBNull.Value;//右对齐显示
         dr[C_FILL] = row.GetValue(C_FILL) ?? DBNull.Value;//显示前导零
         dr[C_LABELLEFT] = row.GetValue(C_LABELLEFT) ?? DBNull.Value;//作为左侧标签
         dr[C_LABELRIGHT] = row.GetValue(C_LABELRIGHT) ?? DBNull.Value;//作为右侧标签
         dr[C_DBLCLICK] = row.GetValue(C_DBLCLICK) ?? DBNull.Value;//响应双击
         dr[C_LTR] = row.GetValue(C_LTR) ?? DBNull.Value;//基本写方向已定义为 LTR(从左至右)
         dr[C_BIDICTRL] = row.GetValue(C_BIDICTRL) ?? DBNull.Value;//ABAP 字典:不过滤双向格式字符
         dr[C_MTCH] = row.GetValue(C_MTCH) ?? DBNull.Value;//搜索帮助
         dr[C_WAER] = row.GetValue(C_WAER) ?? DBNull.Value;//参考字段
         dr[C_FCOD] = row.GetValue(C_FCOD) ?? DBNull.Value;//用于按钮的功能码
         dr[C_PTYPE] = row.GetValue(C_PTYPE) ?? DBNull.Value;//按钮的功能码类型
         dr[C_CTMENUPROG] = row.GetValue(C_CTMENUPROG) ?? DBNull.Value;//上下文菜单:程序名称
         dr[C_CTMENUSTAT] = row.GetValue(C_CTMENUSTAT) ?? DBNull.Value;//上下文菜单:状态/菜单名
         dr[C_CTMENUONCT] = row.GetValue(C_CTMENUONCT) ?? DBNull.Value;//上下文菜单:动态回调 ON_CTMENU_...
         dr[C_CTMENUST] = row.GetValue(C_CTMENUST) ?? DBNull.Value;//上下文菜单:静态
         dr[C_CTMENUDY] = row.GetValue(C_CTMENUDY) ?? DBNull.Value;//上下文菜单:动态 (ON_CTMENU_...)
         dr[C_CCNAME] = row.GetValue(C_CCNAME) ?? DBNull.Value;//Control Composite:名称
         dr[C_CCDLEFT] = row.GetValue(C_CCDLEFT) ?? DBNull.Value;//Control Composite:左停靠
         dr[C_CCDRIGHT] = row.GetValue(C_CCDRIGHT) ?? DBNull.Value;//Control Composite:右停靠
         dr[C_CCDTOP] = row.GetValue(C_CCDTOP) ?? DBNull.Value;//Control Composite:上停靠
         dr[C_CCDBOTTOM] = row.GetValue(C_CCDBOTTOM) ?? DBNull.Value;//Control Composite:下停靠
         dr[C_CCDLEN_L] = row.GetValue(C_CCDLEN_L) ?? DBNull.Value;//Control Composite:停靠控件的宽度
         dr[C_CCDLEN_R] = row.GetValue(C_CCDLEN_R) ?? DBNull.Value;//Control Composite:停靠控件的宽度
         dr[C_CCDHIG_T] = row.GetValue(C_CCDHIG_T) ?? DBNull.Value;//Control Composite:停靠控件的高度
         dr[C_CCDHIG_B] = row.GetValue(C_CCDHIG_B) ?? DBNull.Value;//Control Composite:停靠控件的高度
         dr[C_LTYP] = row.GetValue(C_LTYP) ?? DBNull.Value;//循环:循环类型(固定的或可变的)
         dr[C_GTYP] = row.GetValue(C_GTYP) ?? DBNull.Value;//屏幕元素类型
         dr[C_FIXF] = row.GetValue(C_FIXF) ?? DBNull.Value;//以固定字体代替比例字体
         dr[C_NO3D] = row.GetValue(C_NO3D) ?? DBNull.Value;//输入/输出字段的二维显示
         dr[C_OOUT] = row.GetValue(C_OOUT) ?? DBNull.Value;//纯输出字段
         dr[C_WIN1] = row.GetValue(C_WIN1) ?? DBNull.Value;//图形屏幕绘制器:全屏编辑器
         dr[C_WIN2] = row.GetValue(C_WIN2) ?? DBNull.Value;//图形屏幕绘制器:字段属性
         dr[C_WIN3] = row.GetValue(C_WIN3) ?? DBNull.Value;//图形屏幕绘制器:ABAP/4 字典/程序字段
         dr[C_STXT] = row.GetValue(C_STXT) ?? DBNull.Value;//屏幕元素的文本/模板
         dr[C_CMBTAST] = row.GetValue(C_CMBTAST) ?? DBNull.Value;//可能条目按钮和可能条目的修改
         dr[C_CMBFOC] = row.GetValue(C_CMBFOC) ?? DBNull.Value;//可能条目的有效性
         dr[C_DROPFROM] = row.GetValue(C_DROPFROM) ?? DBNull.Value;//输入帮助: 原始值
         dr[C_DROPDOWN] = row.GetValue(C_DROPDOWN) ?? DBNull.Value;//下拉
         dr[C_FETCHFLD] = row.GetValue(C_FETCHFLD) ?? DBNull.Value;//取得表字段或程序字段 (一般)
         dr[C_RFCDEST] = row.GetValue(C_RFCDEST) ?? DBNull.Value;//参考系统(RFC 目标)
         dr[C_SCHAB] = row.GetValue(C_SCHAB) ?? DBNull.Value;//预选字典或程序字段的输入/输出字段
         dr[C_SCHLK] = row.GetValue(C_SCHLK) ?? DBNull.Value;//为词典字段预选短字段标签
         dr[C_SCHLM] = row.GetValue(C_SCHLM) ?? DBNull.Value;//为词典字段预选中字段标签
         dr[C_SCHLL] = row.GetValue(C_SCHLL) ?? DBNull.Value;//为词典字段预选长字段标签
         dr[C_UEBER] = row.GetValue(C_UEBER) ?? DBNull.Value;//为词典字段预选标题
         dr[C_SCHLNO] = row.GetValue(C_SCHLNO) ?? DBNull.Value;//预选带有短文本 (无字段标签) 的词典字段
         dr[C_SCHABNO] = row.GetValue(C_SCHABNO) ?? DBNull.Value;//词典或程序字段 I/O 模板无预选
         dr[C_TEXTMOD] = row.GetValue(C_TEXTMOD) ?? DBNull.Value;//预选:使用修正的词典文本
         dr[C_TEXTORIG] = row.GetValue(C_TEXTORIG) ?? DBNull.Value;//预选:像在词典中一样使用原始文本
         dr[C_DEZUSATZ] = row.GetValue(C_DEZUSATZ) ?? DBNull.Value;//数据元素增补
         dr[C_TLTRENNHOR] = row.GetValue(C_TLTRENNHOR) ?? DBNull.Value;//表控件:带水平分隔符
         dr[C_TLTRENNVER] = row.GetValue(C_TLTRENNVER) ?? DBNull.Value;//表控件:带垂直分隔符
         dr[C_TLSCROLLH] = row.GetValue(C_TLSCROLLH) ?? DBNull.Value;//控件:水平滚动
         dr[C_TLSCROLLV] = row.GetValue(C_TLSCROLLV) ?? DBNull.Value;//控件:垂直滚动
         dr[C_TLSCROLL] = row.GetValue(C_TLSCROLL) ?? DBNull.Value;//控件:可滚动
         dr[C_TLSELECTZN] = row.GetValue(C_TLSELECTZN) ?? DBNull.Value;//表控制:无行选择
         dr[C_TLSELECTZS] = row.GetValue(C_TLSELECTZS) ?? DBNull.Value;//表控制:单行选择
         dr[C_TLSELECTZM] = row.GetValue(C_TLSELECTZM) ?? DBNull.Value;//表控制:多行选择
         dr[C_TLSELECTSN] = row.GetValue(C_TLSELECTSN) ?? DBNull.Value;//表控制:无列选择
         dr[C_TLSELECTSS] = row.GetValue(C_TLSELECTSS) ?? DBNull.Value;//表控制:单列选择
         dr[C_TLSELECTSM] = row.GetValue(C_TLSELECTSM) ?? DBNull.Value;//表控制:多列选择
         dr[C_TLSHOWONLY] = row.GetValue(C_TLSHOWONLY) ?? DBNull.Value;//表控件:仅显示
         dr[C_TLVARV] = row.GetValue(C_TLVARV) ?? DBNull.Value;//控制:垂直调整
         dr[C_TLVARVMIN] = row.GetValue(C_TLVARVMIN) ?? DBNull.Value;//控制:垂直调整中最少的行数
         dr[C_TLVARH] = row.GetValue(C_TLVARH) ?? DBNull.Value;//控制:水平调整
         dr[C_TLVARHMIN] = row.GetValue(C_TLVARHMIN) ?? DBNull.Value;//控制:水平调整中最少的列数
         dr[C_TLMARK] = row.GetValue(C_TLMARK) ?? DBNull.Value;//表控制:选择列
         dr[C_TLTITEL] = row.GetValue(C_TLTITEL) ?? DBNull.Value;//表控制:带标题行
         dr[C_TLUEBER] = row.GetValue(C_TLUEBER) ?? DBNull.Value;//表控制:带列头
         dr[C_TLERFA] = row.GetValue(C_TLERFA) ?? DBNull.Value;//表控制:项表
         dr[C_TLAUSW] = row.GetValue(C_TLAUSW) ?? DBNull.Value;//表控制:选定行
         dr[C_TLCONF] = row.GetValue(C_TLCONF) ?? DBNull.Value;//表控制:可配置性
         dr[C_TLTEXT] = row.GetValue(C_TLTEXT) ?? DBNull.Value;//表控制:字段文本
         dr[C_TLENTRY] = row.GetValue(C_TLENTRY) ?? DBNull.Value;//表控制:项/模板字段
         dr[C_TLRADIOB] = row.GetValue(C_TLRADIOB) ?? DBNull.Value;//表控制:单选按钮
         dr[C_TLCHECKB] = row.GetValue(C_TLCHECKB) ?? DBNull.Value;//表控制:复选框
         dr[C_TLPUSHB] = row.GetValue(C_TLPUSHB) ?? DBNull.Value;//表控制:按钮
         dr[C_TLNAMETYP] = row.GetValue(C_TLNAMETYP) ?? DBNull.Value;//  Multi--目的文本通用
         dr[C_TLNAMEFLD] = row.GetValue(C_TLNAMEFLD) ?? DBNull.Value;//屏幕元素的名称
         dr[C_TLNAMEUEB] = row.GetValue(C_TLNAMEUEB) ?? DBNull.Value;//屏幕元素的名称
         dr[C_TLNAMESEL] = row.GetValue(C_TLNAMESEL) ?? DBNull.Value;//屏幕元素的名称
         dr[C_TLNAMETIT] = row.GetValue(C_TLNAMETIT) ?? DBNull.Value;//屏幕元素的名称
         dr[C_TLFELDFIX] = row.GetValue(C_TLFELDFIX) ?? DBNull.Value;//固定字段
         dr[C_TLFIXANZ] = row.GetValue(C_TLFIXANZ) ?? DBNull.Value;//表控件:固定主导列数目
         dr[C_TLFELDNR] = row.GetValue(C_TLFELDNR) ?? DBNull.Value;//列号
         dr[C_TLFELDNR00] = row.GetValue(C_TLFELDNR00) ?? DBNull.Value;//列号
         dr[C_TLFELDSPBR] = row.GetValue(C_TLFELDSPBR) ?? DBNull.Value;//列宽
         dr[C_SPCELL1] = row.GetValue(C_SPCELL1) ?? DBNull.Value;//分割条单元格名称
         dr[C_SPCELL2] = row.GetValue(C_SPCELL2) ?? DBNull.Value;//分割条单元格名称
         dr[C_SPSPLITTHORIZ] = row.GetValue(C_SPSPLITTHORIZ) ?? DBNull.Value;//分割条控件:分割方向垂直/水平
         dr[C_SPSPLITTVERT] = row.GetValue(C_SPSPLITTVERT) ?? DBNull.Value;//分割条控件:分割方向垂直/水平
         dr[C_SPSASH] = row.GetValue(C_SPSASH) ?? DBNull.Value;//分割条控件:框格
         dr[C_OUTPUTSTYLE] = row.GetValue(C_OUTPUTSTYLE) ?? DBNull.Value;//十进制浮点:输出样式
         dr[C_SIGN] = row.GetValue(C_SIGN) ?? DBNull.Value;//带 +/- 符号
         dr[C_NOINPUTHISTORY] = row.GetValue(C_NOINPUTHISTORY) ?? DBNull.Value;//无 GUI 输入历史记录
         dr[C_AMPMENABLED] = row.GetValue(C_AMPMENABLED) ?? DBNull.Value;//AM/PM 启用时间格式
         dr[C_EXTEND] = row.GetValue(C_EXTEND) ?? DBNull.Value;//屏幕对象的修改状态
         dr[C_HIERARCHY] = row.GetValue(C_HIERARCHY) ?? DBNull.Value;//屏幕字段间的层次关系
         dr[C_ICON] = row.GetValue(C_ICON) ?? DBNull.Value;//图标标识(包括 @)
         dr[C_ICON_N] = row.GetValue(C_ICON_N) ?? DBNull.Value;//图标:名称
         dr[C_ICON_T] = row.GetValue(C_ICON_T) ?? DBNull.Value;//图标:描述
         dr[C_ICON_L] = row.GetValue(C_ICON_L) ?? DBNull.Value;//图标长度
         dr[C_ICON_Q] = row.GetValue(C_ICON_Q) ?? DBNull.Value;//图标:快速信息文本
         dr[C_ICON_B] = row.GetValue(C_ICON_B) ?? DBNull.Value;//图标:描述文本
         dr[C_ICON_X] = row.GetValue(C_ICON_X) ?? DBNull.Value;//图标: 带图标的输出元素
         dr[C_FLDP] = row.GetValue(C_FLDP) ?? DBNull.Value;//匹配码子键中的字段标识
         dr[C_FLDN] = row.GetValue(C_FLDN) ?? DBNull.Value;//匹配码子关键字中的字段名
         dr[C_PROG] = row.GetValue(C_PROG) ?? DBNull.Value;//修改:程序名称
         dr[C_DNUM] = row.GetValue(C_DNUM) ?? DBNull.Value;//修改:屏幕编号
         dr[C_PBO_F] = row.GetValue(C_PBO_F) ?? DBNull.Value;//修改:PBO 开头
         dr[C_PBO_L] = row.GetValue(C_PBO_L) ?? DBNull.Value;//修改:PBO 结尾
         dr[C_PAI_F] = row.GetValue(C_PAI_F) ?? DBNull.Value;//修改:PAI 开头
         dr[C_PAI_L] = row.GetValue(C_PAI_L) ?? DBNull.Value;//修改:PAI 结尾
         dr[C_EXTEXT] = row.GetValue(C_EXTEXT) ?? DBNull.Value;//修改:文本字段
         dr[C_EXENTRY] = row.GetValue(C_EXENTRY) ?? DBNull.Value;//修改:输入/输出字段
         dr[C_EXRADIO] = row.GetValue(C_EXRADIO) ?? DBNull.Value;//修改: 单选按钮
         dr[C_EXCHECK] = row.GetValue(C_EXCHECK) ?? DBNull.Value;//修改:复选框
         dr[C_EXPUSH] = row.GetValue(C_EXPUSH) ?? DBNull.Value;//修改: 按钮
         dr[C_EXFRAME] = row.GetValue(C_EXFRAME) ?? DBNull.Value;//修改: 框
         dr[C_EXTABCTRL] = row.GetValue(C_EXTABCTRL) ?? DBNull.Value;//修改:表控件
         dr[C_EXCUSTOM] = row.GetValue(C_EXCUSTOM) ?? DBNull.Value;//修改: 定制控制
         dr[C_EXTSTRCTRL] = row.GetValue(C_EXTSTRCTRL) ?? DBNull.Value;//修改:标签条控件
         dr[C_EXSUBSCR] = row.GetValue(C_EXSUBSCR) ?? DBNull.Value;//修改:子屏幕
         dr[C_EXSPLITTER] = row.GetValue(C_EXSPLITTER) ?? DBNull.Value;//修改:拆分器控件
         dr[C_EXSHOW] = row.GetValue(C_EXSHOW) ?? DBNull.Value;//修改:详细信息视图
         dr[C_MSG_LINE1] = row.GetValue(C_MSG_LINE1) ?? DBNull.Value;//对话框状态行
         dr[C_MSG_LINE2] = row.GetValue(C_MSG_LINE2) ?? DBNull.Value;//对话框状态行
         dr[C_PROPSHOW] = row.GetValue(C_PROPSHOW) ?? DBNull.Value;//属性包:转到属性列表
         dr[C_PROPNAME] = row.GetValue(C_PROPNAME) ?? DBNull.Value;//属性
         dr[C_PROPBOOL] = row.GetValue(C_PROPBOOL) ?? DBNull.Value;//属性包:布尔值
         dr[C_PROPSTRING] = row.GetValue(C_PROPSTRING) ?? DBNull.Value;//属性包:字符串值
         dt.Rows.Add(dr);
     }
     return dt;
 }
예제 #17
0
        public void arqueocaja(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER
                               , string P_SERVER, string P_IDIOMA, string P_ID_CAJA, string P_DATUMDESDE, string P_DATUMHASTA, string P_USUARIO
                               , string P_PAIS, string P_MONEDALOCAL, string P_ID_APERTURA, string P_ID_CIERRE, string P_IND_ARQUEO, string P_ID_ARQUEO_IN
                               , string P_MTO_APERTURA, List <DETALLE_ARQUEO> P_TOTALEFECTIVO)
        {
            try
            {
                ESTATUS        retorno;
                DETALLE_VP     detallevp;
                RESUMEN_VP     resumenvp;
                DETALLE_ARQUEO detallerend;
                T_Retorno.Clear();
                detalle_rend.Clear();
                detalle_viapago.Clear();
                resumen_viapago.Clear();
                errormessage = "";
                message      = "";
                diferencia   = "";
                id_arqueo    = "";

                IRfcTable ls_RETORNO;
                IRfcTable lt_DETALLE_VP;
                IRfcTable lt_RESUMEN_VP;
                IRfcTable lt_DETALLE_REND;

                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();
                //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_ARQUEO_CAJA_2");

                    BapiGetUser.SetValue("LAND", P_PAIS);
                    BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA);
                    BapiGetUser.SetValue("USUARIO", P_USUARIO);
                    BapiGetUser.SetValue("ID_APERTURA", P_ID_APERTURA);   // Buscar en log de apertura
                    BapiGetUser.SetValue("MONEDA_LOCAL", P_MONEDALOCAL);  // Moneda
                    BapiGetUser.SetValue("ID_ARQUEO_IN", P_ID_ARQUEO_IN); // ""
                    BapiGetUser.SetValue("ID_CIERRE", P_ID_CIERRE);       // ""
                    BapiGetUser.SetValue("IND_ARQUEO", P_IND_ARQUEO);     //"A" Arqueo
                    BapiGetUser.SetValue("MTO_APERTURA", P_MTO_APERTURA); // Buscar en log de apertura

                    IRfcTable GralDat2 = BapiGetUser.GetTable("DETALLE_ARQUEO");
                    try
                    {
                        for (var i = 0; i < P_TOTALEFECTIVO.Count; i++)
                        {
                            GralDat2.Append();
                            GralDat2.SetValue("LAND", P_TOTALEFECTIVO[i].LAND);
                            GralDat2.SetValue("ID_CAJA", P_TOTALEFECTIVO[i].ID_CAJA);
                            GralDat2.SetValue("USUARIO", P_TOTALEFECTIVO[i].USUARIO);
                            GralDat2.SetValue("SOCIEDAD", P_TOTALEFECTIVO[i].SOCIEDAD);
                            GralDat2.SetValue("FECHA_REND", Convert.ToDateTime(P_TOTALEFECTIVO[i].FECHA_REND));
                            GralDat2.SetValue("HORA_REND", Convert.ToDateTime(P_TOTALEFECTIVO[i].HORA_REND));
                            GralDat2.SetValue("MONEDA", P_TOTALEFECTIVO[i].MONEDA);
                            GralDat2.SetValue("VIA_PAGO", P_TOTALEFECTIVO[i].VIA_PAGO);
                            GralDat2.SetValue("TIPO_MONEDA", P_TOTALEFECTIVO[i].TIPO_MONEDA);
                            GralDat2.SetValue("CANTIDAD_MON", P_TOTALEFECTIVO[i].CANTIDAD_MON);
                            GralDat2.SetValue("SUMA_MON_BILL", P_TOTALEFECTIVO[i].SUMA_MON_BILL);
                            GralDat2.SetValue("CANTIDAD_DOC", P_TOTALEFECTIVO[i].CANTIDAD_DOC);
                            GralDat2.SetValue("SUMA_DOCS", P_TOTALEFECTIVO[i].SUMA_DOCS);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message + ex.StackTrace);
                        //System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                    BapiGetUser.SetValue("DETALLE_ARQUEO", GralDat2);


                    BapiGetUser.Invoke(SapRfcDestination);

                    diferencia = BapiGetUser.GetString("DIFERENCIA");
                    if (diferencia.Contains(","))
                    {
                        diferencia = diferencia.Replace(",", "");
                        diferencia = diferencia.Substring(0, diferencia.Length - 2);
                    }
                    id_arqueo = BapiGetUser.GetString("ID_ARQUEO");


                    lt_DETALLE_VP = BapiGetUser.GetTable("DETALLE_VP"); //

                    try
                    {
                        for (int i = 0; i < lt_DETALLE_VP.Count(); i++)
                        {
                            lt_DETALLE_VP.CurrentIndex = i;
                            detallevp                  = new DETALLE_VP();
                            detallevp.SOCIEDAD         = lt_DETALLE_VP.GetString("SOCIEDAD");
                            detallevp.SOCIEDAD_TXT     = lt_DETALLE_VP.GetString("SOCIEDAD_TXT");
                            detallevp.ID_COMPROBANTE   = lt_DETALLE_VP.GetString("ID_COMPROBANTE");
                            detallevp.ID_DETALLE       = lt_DETALLE_VP.GetString("ID_DETALLE");
                            detallevp.VIA_PAGO         = lt_DETALLE_VP.GetString("VIA_PAGO");
                            detallevp.MONTO            = lt_DETALLE_VP.GetString("MONTO");
                            detallevp.MONEDA           = lt_DETALLE_VP.GetString("MONEDA");
                            detallevp.BANCO            = lt_DETALLE_VP.GetString("BANCO");
                            detallevp.BANCO_TXT        = lt_DETALLE_VP.GetString("BANCO_TXT");
                            detallevp.EMISOR           = lt_DETALLE_VP.GetString("EMISOR");
                            detallevp.NUM_CHEQUE       = lt_DETALLE_VP.GetString("NUM_CHEQUE");
                            detallevp.COD_AUTORIZACION = lt_DETALLE_VP.GetString("COD_AUTORIZACION");
                            detallevp.CLIENTE          = lt_DETALLE_VP.GetString("CLIENTE");
                            detallevp.NRO_DOCUMENTO    = lt_DETALLE_VP.GetString("NRO_DOCUMENTO");
                            detallevp.NUM_CUOTAS       = lt_DETALLE_VP.GetString("NUM_CUOTAS");
                            detallevp.FECHA_VENC       = lt_DETALLE_VP.GetString("FECHA_VENC");
                            detallevp.FECHA_EMISION    = lt_DETALLE_VP.GetString("FECHA_EMISION");
                            detallevp.NOTA_VENTA       = lt_DETALLE_VP.GetString("NOTA_VENTA");
                            detallevp.TEXTO_POSICION   = lt_DETALLE_VP.GetString("TEXTO_POSICION");
                            detallevp.NULO             = lt_DETALLE_VP.GetString("NULO");
                            detallevp.NRO_REFERENCIA   = lt_DETALLE_VP.GetString("NRO_REFERENCIA");
                            detallevp.TIPO_DOCUMENTO   = lt_DETALLE_VP.GetString("TIPO_DOCUMENTO");
                            detalle_viapago.Add(detallevp);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    lt_RESUMEN_VP = BapiGetUser.GetTable("RESUMEN_VP"); //Resumen de Vias de Pago
                    try
                    {
                        for (int i = 0; i < lt_RESUMEN_VP.Count(); i++)
                        {
                            lt_RESUMEN_VP.CurrentIndex = i;
                            resumenvp              = new RESUMEN_VP();
                            resumenvp.LAND         = lt_RESUMEN_VP.GetString("LAND");
                            resumenvp.ID_CAJA      = lt_RESUMEN_VP.GetString("ID_CAJA");
                            resumenvp.SOCIEDAD     = lt_RESUMEN_VP.GetString("SOCIEDAD");
                            resumenvp.SOCIEDAD_TXT = lt_RESUMEN_VP.GetString("SOCIEDAD_TXT");
                            resumenvp.VIA_PAGO     = lt_RESUMEN_VP.GetString("VIA_PAGO");
                            resumenvp.TEXT1        = lt_RESUMEN_VP.GetString("TEXT1");
                            resumenvp.MONEDA       = lt_RESUMEN_VP.GetString("MONEDA");
                            resumenvp.MONTO        = lt_RESUMEN_VP.GetString("MONTO");
                            resumenvp.CANT_DOCS    = lt_RESUMEN_VP.GetString("CANT_DOCS");
                            resumen_viapago.Add(resumenvp);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    lt_DETALLE_REND = BapiGetUser.GetTable("DETALLE_ARQUEO"); //Detalle de efectivo
                    try
                    {
                        for (int i = 0; i < lt_DETALLE_REND.Count(); i++)
                        {
                            lt_DETALLE_REND.CurrentIndex = i;
                            detallerend               = new DETALLE_ARQUEO();
                            detallerend.LAND          = lt_DETALLE_REND.GetString("LAND");
                            detallerend.ID_CAJA       = lt_DETALLE_REND.GetString("ID_CAJA");
                            detallerend.USUARIO       = lt_DETALLE_REND.GetString("USUARIO");
                            detallerend.SOCIEDAD      = lt_DETALLE_REND.GetString("SOCIEDAD");
                            detallerend.FECHA_REND    = lt_DETALLE_REND.GetString("FECHA_REND");
                            detallerend.HORA_REND     = lt_DETALLE_REND.GetString("HORA_REND");
                            detallerend.MONEDA        = lt_DETALLE_REND.GetString("MONEDA");
                            detallerend.VIA_PAGO      = lt_DETALLE_REND.GetString("VIA_PAGO");      //Efectivo
                            detallerend.TIPO_MONEDA   = lt_DETALLE_REND.GetString("TIPO_MONEDA");   //Denominacion
                            detallerend.CANTIDAD_MON  = lt_DETALLE_REND.GetString("CANTIDAD_MON");  //Cuantos??
                            detallerend.SUMA_MON_BILL = lt_DETALLE_REND.GetString("SUMA_MON_BILL"); //Cantidd*denominacion
                            detallerend.CANTIDAD_DOC  = lt_DETALLE_REND.GetString("CANTIDAD_DOC");  //""
                            detallerend.SUMA_DOCS     = lt_DETALLE_REND.GetString("SUMA_DOCS");     //""
                            detalle_rend.Add(detallerend);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    ls_RETORNO = BapiGetUser.GetTable("RETORNO");
                    try
                    {
                        for (int i = 0; i < ls_RETORNO.Count(); i++)
                        {
                            ls_RETORNO.CurrentIndex = i;
                            retorno = new ESTATUS();
                            if (ls_RETORNO.GetString("TYPE") == "S")
                            {
                                message = message + " - " + ls_RETORNO.GetString("MESSAGE");
                                if (id_arqueo == "")
                                {
                                    id_arqueo = ls_RETORNO.GetString("MESSAGE_V1");
                                }
                            }
                            if (ls_RETORNO.GetString("TYPE") == "E")
                            {
                                errormessage = errormessage + " - " + ls_RETORNO.GetString("MESSAGE");
                            }
                            retorno.TYPE       = ls_RETORNO.GetString("TYPE");
                            retorno.ID         = ls_RETORNO.GetString("ID");
                            retorno.NUMBER     = ls_RETORNO.GetString("NUMBER");
                            retorno.MESSAGE    = ls_RETORNO.GetString("MESSAGE");
                            retorno.LOG_NO     = ls_RETORNO.GetString("LOG_NO");
                            retorno.LOG_MSG_NO = ls_RETORNO.GetString("LOG_MSG_NO");
                            retorno.MESSAGE_V1 = ls_RETORNO.GetString("MESSAGE_V1");
                            retorno.MESSAGE_V2 = ls_RETORNO.GetString("MESSAGE_V2");
                            retorno.MESSAGE_V3 = ls_RETORNO.GetString("MESSAGE_V3");
                            if (ls_RETORNO.GetString("MESSAGE_V4") != "")
                            {
                            }
                            retorno.MESSAGE_V4 = ls_RETORNO.GetString("MESSAGE_V4");
                            retorno.PARAMETER  = ls_RETORNO.GetString("PARAMETER");
                            retorno.ROW        = ls_RETORNO.GetString("ROW");
                            retorno.FIELD      = ls_RETORNO.GetString("FIELD");
                            retorno.SYSTEM     = ls_RETORNO.GetString("SYSTEM");
                            T_Retorno.Add(retorno);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                }
                else
                {
                    errormessage = retval;
                    MessageBox.Show("No se pudo conectar a la RFC");
                }
                GC.Collect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message, ex.StackTrace);
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
예제 #18
0
        private static void processSingleIdoc(IRfcStructure tControl, IRfcTable datarows)
        {
            Idoc idoc = new Idoc
            {
                TABNAM = tControl["TABNAM"].GetValue().ToString().Trim(),
                MANDT = tControl["MANDT"].GetValue().ToString().Trim(),
                DOCNUM = tControl["DOCNUM"].GetValue().ToString().Trim(),
                DOCREL = tControl["DOCREL"].GetValue().ToString().Trim(),
                STATUS = tControl["STATUS"].GetValue().ToString().Trim(),
                DIRECT = tControl["DIRECT"].GetValue().ToString().Trim(),
                OUTMOD = tControl["OUTMOD"].GetValue().ToString().Trim(),
                EXPRSS = tControl["EXPRSS"].ToString().Trim(),
                IDOCTYP = tControl["IDOCTYP"].GetValue().ToString().Trim(),
                CIMTYP = tControl["CIMTYP"].GetValue().ToString().Trim(),
                MESTYP = tControl["MESTYP"].GetValue().ToString().Trim(),
                MESCOD = tControl["MESCOD"].GetValue().ToString().Trim(),
                MESFCT = tControl["MESFCT"].GetValue().ToString().Trim(),
                STD = tControl["STD"].GetValue().ToString().Trim(),
                STDVRS = tControl["STDVRS"].GetValue().ToString().Trim(),
                STDMES = tControl["STDMES"].GetValue().ToString().Trim(),
                SNDPOR = tControl["SNDPOR"].GetValue().ToString().Trim(),
                SNDPRT = tControl["SNDPRT"].GetValue().ToString().Trim(),
                SNDPFC = tControl["SNDPFC"].GetValue().ToString().Trim(),
                SNDPRN = tControl["SNDPRN"].GetValue().ToString().Trim(),
                SNDSAD = tControl["SNDSAD"].GetValue().ToString().Trim(),
                SNDLAD = tControl["SNDLAD"].GetValue().ToString().Trim(),
                RCVPOR = tControl["RCVPOR"].GetValue().ToString().Trim(),
                RCVPRT = tControl["RCVPRT"].GetValue().ToString().Trim(),
                RCVPFC = tControl["RCVPFC"].GetValue().ToString().Trim(),
                RCVPRN = tControl["RCVPRN"].GetValue().ToString().Trim(),
                RCVSAD = tControl["RCVSAD"].GetValue().ToString().Trim(),
                RCVLAD = tControl["RCVLAD"].GetValue().ToString().Trim(),
                CREDAT = tControl["CREDAT"].GetValue().ToString().Trim(),
                CRETIM = tControl["CRETIM"].GetValue().ToString().Trim(),
                REFINT = tControl["REFINT"].GetValue().ToString().Trim(),
                REFGRP = tControl["REFGRP"].GetValue().ToString().Trim(),
                REFMES = tControl["REFMES"].GetValue().ToString().Trim(),
                ARCKEY = tControl["ARCKEY"].GetValue().ToString().Trim(),
                SERIAL = tControl["SERIAL"].GetValue().ToString().Trim()
            };

            Hashtable hashtable = new Hashtable();
            for (int i = 0; i < datarows.RowCount; i++)
            {
                IRfcStructure structure = datarows[i];
                if (structure["DOCNUM"].GetValue().ToString().Trim().Equals(tControl["DOCNUM"].GetValue().ToString().Trim()))
                {
                    IdocSegment newSegment = new IdocSegment();
                    if (structure["PSGNUM"].GetValue().ToString() == "000000")
                    {
                        idoc.Segments.Add(newSegment);
                    }
                    else
                    {
                        IdocSegment segment2 = (IdocSegment)hashtable[structure["PSGNUM"].GetValue().ToString()];
                        if (segment2 != null)
                        {
                            segment2.ChildSegments.Add(newSegment);
                        }
                        else
                        {
                            idoc.Segments.Add(newSegment);
                        }
                    }
                    newSegment.SegmentName = structure["SEGNAM"].GetValue().ToString();
                    string content = structure["SDATA"].GetValue().ToString();
                    newSegment.WriteDataBuffer(content, 0, 0x3e8);
                    if (!hashtable.ContainsKey(structure["SEGNUM"].GetValue().ToString()))
                    {
                        hashtable.Add(structure["SEGNUM"].GetValue().ToString(), newSegment);
                    }
                }
            }

               // IdocMeta idocMeta = new IdocMeta(ConfigFileTool.SAPGlobalSettings.GetDefaultSapCient(), idoc);
               // idocMeta.getIdocTypeDefinition();
               // idocMeta.deCompileIdoc();

            idoc.SavePlainData(@"d:/test.txt");

            //idocsegment e1maram = idoc.segments["E2MARAM006", 0];

            //// loop through segments and find the right ones
            //for (int i = 0; i < e1maram.childsegments.count; i++)
            //    if (e1maram.childsegments[i].segmentname == "e2maktm001")
            //        console.writeline("materialtext found: " +
            //            e1maram.childsegments[i].readdatabuffer(4, 40));
        }
예제 #19
0
        //public List<TableField> getFields()
        //{
        //    var list = new List<TableField>();

        //    for (int i = 0; i < FIELDS.RowCount; i++)
        //    {
        //        var field = new TableField();
        //        field.FieldText =  FIELDS[i].GetString("FIELDTEXT");
        //        field.FieldName = FIELDS[i].GetString("FIELDNAME");
        //        field.Length =  FIELDS[i].GetInt("LENGTH");
        //        field.Offset = FIELDS[i].GetInt("OFFSET");
        //        field.Type = FIELDS[i].GetString("TYPE");
        //    }

        //    return list;

        //}
        public void Excute()
        {
            try
            {
                if (String.IsNullOrEmpty(this.TableName))
                {
                    throw new SAPException("表名为空!!");
                }
                RfcDATA   = null;
                RfcFIELDS = null;

                //string _funame = "Z_SAPINT_READ_TABLE";

                this._function.SetValue("QUERY_TABLE", this.TableName);
                this._function.SetValue("ROWCOUNT", this.RowCount);
                this._function.SetValue("DELIMITER", this.Delimiter);

                if (conditions != null)
                {
                    if (conditions.Count > 0)
                    {
                        IRfcTable rfcOptions = this._function.GetTable("OPTIONS");
                        foreach (var item in conditions)
                        {
                            rfcOptions.Append();
                            rfcOptions.SetValue("TEXT", item);
                        }
                    }
                }

                if (this._fieldsIn != null)
                {
                    if (_fieldsIn.Count > 0)
                    {
                        IRfcTable rfcfields = this._function.GetTable("FIELDS");
                        foreach (var item in _fieldsIn)
                        {
                            rfcfields.Append();
                            rfcfields.SetValue("FIELDNAME", item.FieldName);
                        }
                    }
                }

                this._function.Invoke(this._destination);

                RfcDATA   = this._function.GetTable("DATA");
                RfcFIELDS = this._function.GetTable("FIELDS");

                //输出到界面或需要进一步的处理
                if (this.Operation != OperationType.direct)
                {
                    this.Result = new List <String>();
                    for (int i = 0; i < RfcDATA.RowCount; i++)
                    {
                        this.Result.Add(RfcDATA[i].GetString(0));
                    }

                    this._fieldsOut = new List <CopyTableField>();
                    for (int i = 0; i < RfcFIELDS.RowCount; i++)
                    {
                        var field = new CopyTableField();
                        field.FieldText = RfcFIELDS[i].GetString("FIELDTEXT");
                        field.FieldName = RfcFIELDS[i].GetString("FIELDNAME");
                        field.Length    = RfcFIELDS[i].GetInt("LENGTH");
                        field.Offset    = RfcFIELDS[i].GetInt("OFFSET");
                        field.Type      = RfcFIELDS[i].GetString("TYPE");
                        _fieldsOut.Add(field);
                    }
                    //Result = SAPFunction.RfcTableToDataTable(DATA);
                }
                if (eventReadTableDone != null)
                {
                    this.Message = string.Format("表{0},一共{1}行,读取完成!!", this.TableName, RfcDATA.RowCount.ToString());
                    eventReadTableDone(this, this._fieldsOut, this.Result);
                }
            }
            catch (RfcAbapException abapEx)
            {
                throw new SAPException(abapEx.Key + abapEx.Message);
            }
            catch (RfcBaseException rfcbase)
            {
                throw new SAPException(rfcbase.Message);
            }
            catch (Exception ex)
            {
                throw new SAPException(ex.Message);
            }
        }
예제 #20
0
 private void AddWhereLine(IRfcTable toptions, string whereline)
 {
     //  toptions.AddRow()["TEXT"] = whereline;
     // IRfcStructure row = toptions.Metadata.LineType.CreateStructure();
     toptions.Append();
     toptions.CurrentRow.SetValue("TEXT", whereline);
 }
예제 #21
0
        /// <summary>
        ///
        /// </summary>
        public void CallRFC()
        {
            int i = 0;

            if (!CallRFCShowFrom)
            {
                foreach (DataRow dr in RFCMDT.Rows)
                {
                    if (dr["TYPE"].ToString() != "TABLE" && dr["VALUE"].ToString() != "")
                    {
                        if (dr["TYPE"].ToString() == "DATE")
                        {
                            Fun.SetValue(dr["NAME"].ToString(), DateTime.Parse(dr["VALUE"].ToString()));
                            //Fun.SetValue(dr["NAME"].ToString(), dr["VALUE"].ToString());
                        }
                        else
                        {
                            Fun.SetValue(dr["NAME"].ToString(), dr["VALUE"].ToString());
                        }
                    }
                    else
                    {
                        if (dr["TYPE"].ToString() == "TABLE")
                        {
                            IRfcTable _RFCTable = Fun.Metadata[dr["NAME"].ToString()].ValueMetadataAsTableMetadata.CreateTable();
                            DataTable dt        = _Tables[dr["NAME"].ToString()];
                            foreach (DataRow tdr in dt.Rows)
                            {
                                _RFCTable.Append();
                                foreach (DataColumn tdc in dt.Columns)
                                {
                                    if (_RFCTable.Metadata.LineType[tdc.ColumnName].ToString() == "DATE")
                                    {
                                        _RFCTable.SetValue(tdc.ColumnName, DateTime.Parse(tdr[tdc.ColumnName].ToString()));
                                    }
                                    else
                                    {
                                        try
                                        {
                                            _RFCTable.SetValue(tdc.ColumnName, tdr[tdc.ColumnName].ToString());
                                        }
                                        catch
                                        { }
                                    }
                                }
                            }
                            Fun.SetValue(dr["NAME"].ToString(), _RFCTable);
                        }
                    }
                }
                Fun.Invoke(RfcDest);
                foreach (DataRow dr in RFCMDT.Rows)
                {
                    if (dr["TYPE"].ToString() == "TABLE")
                    {
                        //dr["VALUE"] = Fun[dr["NAME"].ToString()].ToString();
                        dr["VALUE"] = Fun[dr["NAME"].ToString()].ToString();
                        IRfcTable t  = Fun[dr["NAME"].ToString()].GetTable();
                        DataTable dt = ChangeRfcTableToDataTable(t, dr["NAME"].ToString(), "");
                        //t.Metadata.
                        ReturnDatatableByName.Add(dr["NAME"].ToString(), dt);
                        ReturnDatatableByIndex.Add(i, dt);
                        i = i + 1;
                    }
                    else
                    {
                        try
                        {
                            dr["VALUE"] = Fun[dr["NAME"].ToString()].GetString();
                        }
                        catch (Exception ee)
                        {
                            dr["VALUE"] = ee.Message;
                        }
                    }
                }
            }
            else
            {
            }
        }
예제 #22
0
        /// <summary>
        /// 根据IDOC的IDOC类型,到SAP系统里查找它对应的类型定义
        /// </summary>
        private void GetIdocTypeDefinition()
        {
            if (idoc == null)
            {
                throw new SAPException("IDOC是空值。");
            }
            if (idoc != null)
            {
                if (String.IsNullOrWhiteSpace(this.idocType))
                {
                    throw new SAPException("空白的IDOC类型");
                }
                RfcDestination destination = SAPDestination.GetDesByName(sysName);

                IRfcFunction function = destination.Repository.CreateFunction("IDOCTYPE_READ_COMPLETE");
                function.SetValue("PI_IDOCTYP", this.idocType);
                function.SetValue("PI_CIMTYP", this.cimType);
                function.Invoke(destination);
                IRfcTable rfctable_PT_FIELDS = function.GetTable("PT_FIELDS");

                EDI_IAPI12 _EDI_IAPI12;
                for (int i = 0; i < rfctable_PT_FIELDS.RowCount; i++)
                {
                    _EDI_IAPI12            = new EDI_IAPI12();
                    _EDI_IAPI12.SEGMENTTYP = rfctable_PT_FIELDS[i].GetString("SEGMENTTYP"); // 段类型(30 字符格式)
                    _EDI_IAPI12.FIELDNAME  = rfctable_PT_FIELDS[i].GetString("FIELDNAME");  // 字段名
                    _EDI_IAPI12.INTLEN     = rfctable_PT_FIELDS[i].GetInt("INTLEN");        // 以字节计的内部长度
                    _EDI_IAPI12.EXTLEN     = rfctable_PT_FIELDS[i].GetInt("EXTLEN");        // 输出长度
                    _EDI_IAPI12.FIELD_POS  = rfctable_PT_FIELDS[i].GetInt("FIELD_POS");     // 字段的位置号码
                    _EDI_IAPI12.BYTE_FIRST = rfctable_PT_FIELDS[i].GetInt("BYTE_FIRST");    // 第一个字节的位置
                    _EDI_IAPI12.BYTE_LAST  = rfctable_PT_FIELDS[i].GetInt("BYTE_LAST");     // 最后一个字节的位置
                    _EDI_IAPI12.ROLLNAME   = rfctable_PT_FIELDS[i].GetString("ROLLNAME");   // 数据元素 (语义域)
                    _EDI_IAPI12.DOMNAME    = rfctable_PT_FIELDS[i].GetString("DOMNAME");    // 定义域名
                    _EDI_IAPI12.DATATYPE   = rfctable_PT_FIELDS[i].GetString("DATATYPE");   // ABAP/4 字典: 屏幕绘制器的屏幕数据类型
                    _EDI_IAPI12.DESCRP     = rfctable_PT_FIELDS[i].GetString("DESCRP");     // 对象的简短说明
                    _EDI_IAPI12.ISOCODE    = rfctable_PT_FIELDS[i].GetString("ISOCODE");    // IDoc 开发:字段中的 ISO 代码标识
                    _EDI_IAPI12.VALUETAB   = rfctable_PT_FIELDS[i].GetString("VALUETAB");   // IDoc 段字段的值表
                    _FIELDS.Add(_EDI_IAPI12);
                }

                IRfcTable rfctable_PT_FVALUES = function.GetTable("PT_FVALUES");

                EDI_IAPI14 _EDI_IAPI14;
                for (int i = 0; i < rfctable_PT_FVALUES.RowCount; i++)
                {
                    _EDI_IAPI14            = new EDI_IAPI14();
                    _EDI_IAPI14.STRNAME    = rfctable_PT_FVALUES[i].GetString("STRNAME");    // 内部结构的名称
                    _EDI_IAPI14.FIELDNAME  = rfctable_PT_FVALUES[i].GetString("FIELDNAME");  // 字段名
                    _EDI_IAPI14.FLDVALUE_L = rfctable_PT_FVALUES[i].GetString("FLDVALUE_L"); // 下限值 / 单一值
                    _EDI_IAPI14.FLDVALUE_H = rfctable_PT_FVALUES[i].GetString("FLDVALUE_H"); // 上限值
                    _EDI_IAPI14.DESCRP     = rfctable_PT_FVALUES[i].GetString("DESCRP");     // 说明简要文字
                    _FVALUES.Add(_EDI_IAPI14);
                }

                IRfcTable rfctable_PT_MESSAGES = function.GetTable("PT_MESSAGES");

                EDI_IAPI17 _EDI_IAPI17;
                for (int i = 0; i < rfctable_PT_MESSAGES.RowCount; i++)
                {
                    _EDI_IAPI17          = new EDI_IAPI17();
                    _EDI_IAPI17.MESTYP   = rfctable_PT_MESSAGES[i].GetString("MESTYP");   // 消息类型
                    _EDI_IAPI17.DESCRP   = rfctable_PT_MESSAGES[i].GetString("DESCRP");   // 对象的简短说明
                    _EDI_IAPI17.IDOCTYP  = rfctable_PT_MESSAGES[i].GetString("IDOCTYP");  // 基本类型
                    _EDI_IAPI17.CIMTYP   = rfctable_PT_MESSAGES[i].GetString("CIMTYP");   // 扩展类型
                    _EDI_IAPI17.RELEASED = rfctable_PT_MESSAGES[i].GetString("RELEASED"); // 消息类型分配有效的版本
                    _MESSAGES.Add(_EDI_IAPI17);
                }

                IRfcTable rfctable_PT_SEGMENTS = function.GetTable("PT_SEGMENTS");

                EDI_IAPI11 _EDI_IAPI11;
                for (int i = 0; i < rfctable_PT_SEGMENTS.RowCount; i++)
                {
                    _EDI_IAPI11            = new EDI_IAPI11();
                    _EDI_IAPI11.NR         = rfctable_PT_SEGMENTS[i].GetInt("NR");            // IDoc 类型中段的序列号
                    _EDI_IAPI11.SEGMENTTYP = rfctable_PT_SEGMENTS[i].GetString("SEGMENTTYP"); // 段类型(30 字符格式)
                    _EDI_IAPI11.SEGMENTDEF = rfctable_PT_SEGMENTS[i].GetString("SEGMENTDEF"); // IDoc 开发:段定义
                    _EDI_IAPI11.QUALIFIER  = rfctable_PT_SEGMENTS[i].GetString("QUALIFIER");  // 标记:IDoc 中限定的段
                    _EDI_IAPI11.SEGLEN     = rfctable_PT_SEGMENTS[i].GetInt("SEGLEN");        // 一个字段的长度(位置的数目)
                    _EDI_IAPI11.PARSEG     = rfctable_PT_SEGMENTS[i].GetString("PARSEG");     // 段类型(30 字符格式)
                    _EDI_IAPI11.PARPNO     = rfctable_PT_SEGMENTS[i].GetInt("PARPNO");        // 父代段的序列号
                    _EDI_IAPI11.PARFLG     = rfctable_PT_SEGMENTS[i].GetString("PARFLG");     // 父段标记:段是段组的开始
                    _EDI_IAPI11.MUSTFL     = rfctable_PT_SEGMENTS[i].GetString("MUSTFL");     // 标记:强制条目
                    _EDI_IAPI11.OCCMIN     = rfctable_PT_SEGMENTS[i].GetInt("OCCMIN");        // 序列中段的最小数目
                    _EDI_IAPI11.OCCMAX     = rfctable_PT_SEGMENTS[i].GetDouble("OCCMAX");     // 序列中最大段数目
                    _EDI_IAPI11.HLEVEL     = rfctable_PT_SEGMENTS[i].GetInt("HLEVEL");        // IDoc 类型段的层次水平
                    _EDI_IAPI11.DESCRP     = rfctable_PT_SEGMENTS[i].GetString("DESCRP");     // 对象的简短说明
                    _EDI_IAPI11.GRP_MUSTFL = rfctable_PT_SEGMENTS[i].GetString("GRP_MUSTFL"); // 组标记:强制
                    _EDI_IAPI11.GRP_OCCMIN = rfctable_PT_SEGMENTS[i].GetInt("GRP_OCCMIN");    // 序列中最小组号
                    _EDI_IAPI11.GRP_OCCMAX = rfctable_PT_SEGMENTS[i].GetDouble("GRP_OCCMAX"); // 序列中最大组号
                    _EDI_IAPI11.REFSEGTYP  = rfctable_PT_SEGMENTS[i].GetString("REFSEGTYP");  // 段类型(30 字符格式)
                    _SEGMENTS.Add(_EDI_IAPI11);
                }
            }
        }
예제 #23
0
        /// <summary>
        /// Below function gets products information.
        /// </summary>
        /// <param name="Productname"></param>
        /// <param name="RegionID"></param>
        /// <param name="RegionName"></param>
        /// <param name="LanguageId"></param>
        /// <param name="LanguageName"></param>
        /// <param name="Materialno"></param>
        /// <param name="MaxHitcount"></param>
        /// <param name="ViewType"></param>
        /// <returns></returns>
        public List <SIISAPMSDSDTO> GetProductsInformation(string RegionID, string RegionName, string LanguageId, string LanguageName, string Productname, string Materialno, int MaxHitcount, string ViewType)
        {
            List <SIISAPMSDSDTO> objMDSDSList = new List <SIISAPMSDSDTO>();
            var rfcDestination = RfcDestinationManager.GetDestination("SIISAP");

            try
            {
                if (rfcDestination != null)
                {
                    var getGateEntryRfc = rfcDestination.Repository.CreateFunction("ZEHS_MSDS_PRTL_F4_LIST_OF_MSDS");
                    /// PRODUCT
                    RfcStructureMetadata metaData      = rfcDestination.Repository.GetStructureMetadata("ZEHS_GEN_PRODS");
                    IRfcStructure        structProduct = metaData.CreateStructure();
                    structProduct.SetValue("BRAND2", Productname);//, "ALKANOX® 240");
                    getGateEntryRfc.SetValue("I_PROD", structProduct);
                    /// REGION
                    RfcStructureMetadata metaDataCountry = rfcDestination.Repository.GetStructureMetadata("ZEHS_GEN_CNTRY");
                    IRfcStructure        structRegions   = metaDataCountry.CreateStructure();
                    structRegions.SetValue("LDEPID", RegionID);    // "SDS_US");
                    structRegions.SetValue("LDEPNAM", RegionName); // "");
                    getGateEntryRfc.SetValue("I_REGION", structRegions);
                    // LANGUAGE
                    RfcStructureMetadata metaDataLanguage = rfcDestination.Repository.GetStructureMetadata("ZEHS_GEN_LNGS");
                    IRfcStructure        strucLanguage    = metaDataLanguage.CreateStructure();
                    strucLanguage.SetValue("SPRAS", LanguageId);   // "E");
                    strucLanguage.SetValue("SPTXT", LanguageName); // "");
                    getGateEntryRfc.SetValue("I_LANGUAGE", strucLanguage);
                    /// MATERIAL NUMBER
                    getGateEntryRfc.SetValue("I_MATNR", Materialno);          // "*");
                    /// MAX HIT COUNT
                    getGateEntryRfc.SetValue("I_MAX_HIT_COUNT", MaxHitcount); // 300);
                    /// I VIEW TYPE
                    getGateEntryRfc.SetValue("I_VIEWTYPE", ViewType);         // "");
                    // RfcSessionManager.BeginContext(rfcDestination);
                    getGateEntryRfc.Invoke(rfcDestination);
                    /// get the table values
                    IRfcTable Report       = getGateEntryRfc.GetTable("E_REPORT_TAB");
                    IRfcTable ObjectReport = getGateEntryRfc.GetTable("E_REPORT_OBJECT_TAB");
                    //Getting exported values from SAP
                    var COUNT       = getGateEntryRfc.GetValue("E_COUNT");
                    var MaxHITCount = getGateEntryRfc.GetValue("E_FLG_MAX_HIT_REACHED");
                    var objRTFT     = getGateEntryRfc.GetValue("E_BRAND2").ToString().Substring(getGateEntryRfc.GetValue("E_BRAND2").ToString().LastIndexOf("=") + 1).Replace("}", "");

                    RfcSessionManager.EndContext(rfcDestination);
                    foreach (var row in Report)
                    {
                        objMDSDSList.Add(new SIISAPMSDSDTO
                        {
                            ID           = row[0].ToString().Substring(row[0].ToString().IndexOf("=") + 1),
                            RECN         = row[1].ToString().Substring(row[1].ToString().IndexOf("=") + 1),
                            LANGU        = row[2].ToString().Substring(row[2].ToString().IndexOf("=") + 1),
                            LANGUTXT     = row[3].ToString().Substring(row[3].ToString().IndexOf("=") + 1),
                            LanguageID   = row[4].ToString().Substring(row[4].ToString().IndexOf("=") + 1),
                            LanguageText = row[5].ToString().Substring(row[5].ToString().IndexOf("=") + 1),
                            Version      = row[6].ToString().Substring(row[6].ToString().IndexOf("=") + 1),
                            REPTYPE      = row[7].ToString().Substring(row[7].ToString().IndexOf("=") + 1),
                            REPTYPETEXT  = row[8].ToString().Substring(row[8].ToString().IndexOf("=") + 1),
                            RVLID        = row[9].ToString().Substring(row[9].ToString().IndexOf("=") + 1),
                            RVLIDTXT     = row[10].ToString().Substring(row[10].ToString().IndexOf("=") + 1),
                            STATUS       = row[11].ToString().Substring(row[11].ToString().IndexOf("=") + 1),
                            STATUSTXT    = row[12].ToString().Substring(row[12].ToString().IndexOf("=") + 1),
                            GENDAT       = row[13].ToString().Substring(row[13].ToString().IndexOf("=") + 1),
                            VALDAT       = row[14].ToString().Substring(row[14].ToString().IndexOf("=") + 1),
                            REMARK       = row[15].ToString().Substring(row[15].ToString().IndexOf("=") + 1),
                            PrdFileName  = objRTFT
                        });
                        var listinfo = objMDSDSList;
                    }

                    rfcDestination = null;
                }
            }
            catch (Exception ex)
            {
                RfcSessionManager.EndContext(rfcDestination);
                rfcDestination = null;
                FilePath       = ConfigurationManager.AppSettings["siteUrl"];
                WriteLog(FilePath, ex.Message);
            }

            return(objMDSDSList);
        }
예제 #24
0
 private void InitWhereClause(ref IRfcTable toptions)
 {
     toptions.Clear();
     if (this._WhereClause.Equals(""))
     {
         for (int i = 0; i < this.options.Count; i++)
         {
             toptions.Append();
             toptions.CurrentRow.SetValue("TEXT", this.options[i].ToString());
             //toptions.AddRow()["TEXT"] = this.options[i].ToString();
         }
     }
     else
     {
         for (int j = 0; j < this._WhereClause.Length; j += 0x48)
         {
             if ((this._WhereClause.Length - j) > 0x48)
             {
                 IRfcStructure structure2 = toptions.Metadata.LineType.CreateStructure();
                 bool flag = false;
                 for (int k = 0; k < 0x47; k++)
                 {
                     if (this._WhereClause.Substring((j + 0x47) - k, 1).Equals(" "))
                     {
                         structure2["TEXT"].SetValue(this._WhereClause.Substring(j, 0x48 - k));
                         toptions.Append(structure2);
                         j -= k;
                         flag = true;
                         k = 0x48;
                     }
                 }
                 if (!flag)
                 {
                     structure2["TEXT"].SetValue(this._WhereClause.Substring(j, 0x48));
                     toptions.Append(structure2);
                 }
             }
             else
             {
                 // toptions.AddRow()["TEXT"] = this._WhereClause.Substring(j);
                 toptions.Append();
                 toptions.CurrentRow["TEXT"].SetValue(this._WhereClause.Substring(j));
             }
         }
         string str = "";
         foreach (IRfcStructure structure4 in toptions.ToList())
         {
             str = str + structure4["TEXT"].ToString() + "\r\n";
         }
     }
     if (this._UsePrimaryKeyPackaging)
     {
         if (toptions.ToList().Count == 0)
         {
             this.AddWhereLine(toptions, "(");
         }
         else
         {
             this.AddWhereLine(toptions, "AND (");
         }
         for (int m = 0; m < this._PrimaryKeys.Count; m++)
         {
             string whereline = this._PrimaryKeys[m].FieldName + " >= '" + this._PrimaryKeys[m].LastKeyValue + "'";
             if (m == 0)
             {
                 whereline = "( " + whereline;
             }
             else
             {
                 whereline = "AND " + whereline;
             }
             if (m == (this._PrimaryKeys.Count - 1))
             {
                 whereline = whereline + " )";
             }
             this.AddWhereLine(toptions, whereline);
         }
         for (int n = 0; n < this._PrimaryKeys.Count; n++)
         {
             for (int num6 = n; num6 >= 0; num6--)
             {
                 string str3;
                 if (num6 == n)
                 {
                     str3 = "OR ( " + this._PrimaryKeys[num6].FieldName + " > '" + this._PrimaryKeys[num6].LastKeyValue + "'";
                 }
                 else
                 {
                     str3 = "AND " + this._PrimaryKeys[num6].FieldName + " >= '" + this._PrimaryKeys[num6].LastKeyValue + "'";
                 }
                 if (num6 == 0)
                 {
                     str3 = str3 + " )";
                 }
                 this.AddWhereLine(toptions, str3);
             }
         }
         //toptions.AddRow()["TEXT"] = ")";
         toptions.Append();
         toptions.CurrentRow.SetValue("TEXT", ")");
     }
     //if (!this.con.LogDir.Equals(""))
     //{
     //    this.con.Log("Building where: ");
     //    foreach (RFCStructure structure6 in toptions.Rows)
     //    {
     //        this.con.Log(structure6["TEXT"].ToString());
     //    }
     //}
 }
        private static List <Object> creaServicios(string valores, string id, int cont)
        {
            string[] item = valores.Split('|');
            ////ZEBAN_P_BE header = new ZEBAN_P_BE();
            ZEBAN_BE items = new ZEBAN_BE();
            Conexion con   = new Conexion();


            ////header.FK_USUARIO = user;
            ////header.STATUS = getStatus(user);
            ////header.F_APROBACION = DateTime.Now;

            ////int conf = ZEBAN_P_BLL.INSERT(header); //Insertar registro en SQL
            ////List<ZEBAN_P_BE> zeban_p = ZEBAN_P_BLL.GET();
            ////int b = zeban_p[(zeban_p.Count - 1)].BANFN;
            ////int banfn = b;

            ////items.BANFN = banfn;
            IRfcTable serv = con.check_servicio(id, "S");

            items.BNFPO       = "" + (cont * 10);
            items.DESCR       = item[0];
            items.DESCR       = serv.GetString("DESCR");
            items.F_ENTREGA   = DateTime.Parse(item[4]);
            items.MAT_GR      = item[2];
            serv.CurrentIndex = 0;
            //items.MEINS = serv.GetString("UM");
            items.MEINS = "SER";
            //items.MENGE = Decimal.Parse(item[3]);
            items.MENGE = 1;
            //items.PREIS = Decimal.Parse(item[1]);
            items.PUR_GR = ConfigurationManager.AppSettings["purchaseGroup"];
            items.TIPO   = "F";
            items.IMP    = "K";
            items.WERKS  = ConfigurationManager.AppSettings["werks"];
            items.WAERS  = item[5];

            ////List<ZEBAN_BE> Items = new List<ZEBAN_BE>();
            ////Items.Add(items);
            ////conf += ZEBAN_BLL.INSERT(Items); //Insertar registro en SQL

            List <ZEBAN_S_BE> servs = new List <ZEBAN_S_BE>();
            ZEBAN_S_BE        temp  = new ZEBAN_S_BE();

            //temp.BANFN = banfn;
            temp.BNFPO    = "" + (cont * 10);
            temp.SERIAL   = 1;
            temp.MEINS    = "SER";
            temp.SERVICIO = serv.GetString("SERVICIO");
            temp.TEXTO    = con.check_servDesc(temp.SERVICIO);
            temp.MENGE    = Decimal.Parse(item[3]);
            temp.PREIS    = Decimal.Parse(item[1]);
            temp.WAERS    = item[5];

            servs.Add(temp);
            //conf += ZEBAN_S_BLL.INSERT(servs); //Insertar registro en SQL

            List <ZEBAN_I_BE> imps = new List <ZEBAN_I_BE>();

            ZEBAN_I_BE tempi = new ZEBAN_I_BE();

            //tempi.BANFN = banfn;
            tempi.BNFPO      = "" + (cont * 10);
            tempi.SERIAL     = 1;
            tempi.LINE       = 1;
            tempi.GL_ACCOUNT = servs[0].GL_ACCOUNT;
            tempi.COSTCENTER = servs[0].COSTCENTER;
            imps.Add(tempi);
            //conf += ZEBAN_I_BLL.INSERT(imps); //Insertar registro en SQL

            //if (!comentario.Equals(""))
            //{
            //    ZEBAN_C_BE com = new ZEBAN_C_BE();
            //    com.BANFN = banfn;
            //    com.FK_USUARIO = user;
            //    com.TEXTO = comentario;

            //    conf += ZEBAN_C_BLL.INSERT(com);
            //}

            //return "B";
            List <Object> lista = new List <object>();

            lista.Add(items);
            lista.Add(tempi);
            lista.Add(temp);
            return(lista);
        }
 /// <summary>
 /// 把RFC表转换成DT格式
 /// </summary>
 /// <param name="rfcTable"></param>
 /// <returns></returns>
 private static DataTable _Convert_rfctable_to_dt(IRfcTable rfcTable)
 {
     if (dtDefinition == null)
     {
         dtDefinition = _BuildDataTable();
     }
     DataTable _dt = dtDefinition.Copy();
     _dt.Clear();
     foreach (IRfcStructure row in rfcTable)
     {
         DataRow dr = _dt.NewRow();
         dr["TABNAME"] = row.GetValue("TABNAME") ?? DBNull.Value;
         dr["FIELDNAME"] = row.GetValue("FIELDNAME") ?? DBNull.Value;
         dr["POSITION"] = row.GetValue("POSITION") ?? DBNull.Value;
         dr["OFFSET"] = row.GetValue("OFFSET") ?? DBNull.Value;
         dr["DOMNAME"] = row.GetValue("DOMNAME") ?? DBNull.Value;
         dr["ROLLNAME"] = row.GetValue("ROLLNAME") ?? DBNull.Value;
         dr["CHECKTABLE"] = row.GetValue("CHECKTABLE") ?? DBNull.Value;
         dr["LENG"] = row.GetValue("LENG") ?? DBNull.Value;
         dr["OUTPUTLEN"] = row.GetValue("OUTPUTLEN") ?? DBNull.Value;
         dr["DECIMALS"] = row.GetValue("DECIMALS") ?? DBNull.Value;
         dr["FIELDTEXT"] = row.GetValue("FIELDTEXT") ?? DBNull.Value;
         dr["REPTEXT"] = row.GetValue("REPTEXT") ?? DBNull.Value;
         dr["SCRTEXT_S"] = row.GetValue("SCRTEXT_S") ?? DBNull.Value;
         dr["SCRTEXT_M"] = row.GetValue("SCRTEXT_M") ?? DBNull.Value;
         dr["SCRTEXT_L"] = row.GetValue("SCRTEXT_L") ?? DBNull.Value;
         dr["INTTYPE"] = row.GetValue("INTTYPE") ?? DBNull.Value;
         dr["DATATYPE"] = row.GetValue("DATATYPE") ?? DBNull.Value;
         dr["REFTABLE"] = row.GetValue("REFTABLE") ?? DBNull.Value;
         dr["REFFIELD"] = row.GetValue("REFFIELD") ?? DBNull.Value;
         dr["KEYFLAG"] = row.GetValue("KEYFLAG") ?? DBNull.Value;
         // dr["DOTNETTYPE"] = RfcTypeConvertor.AbapInnerTypeToSystemType(dr["INTTYPE"].ToString()).ToString();
         // dr["DOTNETTYPE"] = dr["DOTNETTYPE"].ToString().Replace("System.", "");
         _dt.Rows.Add(dr);
     }
     return _dt;
 }
예제 #27
0
        public static string GetAllVendor(string P_DATE_from, string P_DATE_TO)
        {
            string result = "";

            try
            {
                IRfcTable IRetTable = null;
                List <Z_MM_QUBE_LIFNR> Z_MM_QUBE_LIFNR_List = new List <Z_MM_QUBE_LIFNR>();
                RfcConfigParameters    parms   = RFC.GetSettingParms();
                RfcDestination         rfcDest = RfcDestinationManager.GetDestination(parms);
                RfcRepository          rfcRep  = rfcDest.Repository;
                IRfcFunction           IReader = rfcRep.CreateFunction("Z_MM_QUBE_LIFNR");

                IReader.SetValue("P_DATE_from", P_DATE_from);
                IReader.SetValue("P_DATE_TO", P_DATE_TO);

                IReader.Invoke(rfcDest);
                IRetTable            = IReader.GetTable("ET_LFA1");
                Z_MM_QUBE_LIFNR_List = IRetTable.AsQueryable().Select(x => new Z_MM_QUBE_LIFNR
                {
                    LIFNR  = x.GetString("LIFNR") ?? "",
                    NAME1  = x.GetString("NAME1") ?? "",
                    ZZAUTH = x.GetString("ZZAUTH") ?? "",
                    LAND1  = x.GetString("LAND1") ?? "",
                    SORTL  = x.GetString("SORTL") ?? "",
                    ERDAT  = x.GetString("ERDAT") ?? "",
                    UDATE  = x.GetString("UDATE") ?? ""
                }
                                                                      ).ToList();

                using (var db = new CubeRFCEntities())
                {
                    var VendorsList = db.Vendor.AsEnumerable().Select(x => x.BatchNo).ToList();
                    int BatchNo     = VendorsList.Count == 0?1:VendorsList.Max() + 1;

                    foreach (var item in Z_MM_QUBE_LIFNR_List)
                    {
                        db.Vendor.Add(new Vendor()
                        {
                            LIFNR      = item.LIFNR,
                            NAME1      = item.NAME1,
                            ZZAUTH     = item.ZZAUTH,
                            LAND1      = item.LAND1,
                            SORTL      = item.SORTL,
                            ERDAT      = DateTime.Parse(item.ERDAT),
                            UDATE      = item.UDATE == "0000-00-00" ? DateTime.Parse("1900-01-01") : DateTime.Parse(item.UDATE),
                            CreateDate = DateTime.Now,
                            BatchNo    = BatchNo
                        });
                    }

                    db.SaveChanges();
                }
                result = JsonConvert.SerializeObject(Z_MM_QUBE_LIFNR_List);
            }
            catch (Exception e)
            {
                result = e.ToString();
                //發送通知信給開發者
                string strMailTitle = "系統發生錯誤";
                string str_mailbody = e.ToString();
                Mail.Send(strMailTitle, result);
            }

            return(result);
        }
예제 #28
0
파일: POToSAP.cs 프로젝트: windygu/.net-wms
        public SAPRfcReturn POReceiveToSAP(List <PO> poList)
        {
            NcoFunction ncoClient = new NcoFunction();

            try
            {
                //string name = "Q97";
                //string user = "******";
                //string passwd = "start567";
                //string client = "601";
                //string ashost = "218.30.179.199";
                //string sysnr = "00";
                ////string saprouter = "/H/218.30.179.199/S/3299/H/192.168.129.249";
                //string saprouter = "/H/192.168.129.252/S/3299/H/192.168.129.249";
                //string kunnr = "";
                //ncoClient.Connect(name, "", user, passwd, "ZH", client, sysnr, 2, 10, "", saprouter);
                string[] rfcArray = ConfigHelper.LoadRFCConfig(ConfigHelper.strDestinationName);
                ncoClient.Connect(rfcArray[0], "", rfcArray[3], rfcArray[4], "ZH", rfcArray[5], rfcArray[8], 2, 10, "", rfcArray[9]);
                //ncoClient.Connect();

                ncoClient.FunctionName = MES2SAPRfcFunctionName.PO;

                Dictionary <string, object> importParameters = new Dictionary <string, object>();
                //importParameters.Add("EBELN", po.PONO);
                //importParameters.Add("EBELP", po.POLine);
                //importParameters.Add("WERKS", po.FacCode);
                //importParameters.Add("ZNUMBER", po.SerialNO);
                //importParameters.Add("MATNR", po.MCode);
                //importParameters.Add("MENGE", po.Qty);
                //importParameters.Add("MEINS", po.Unit);
                //importParameters.Add("BWART", po.Status);
                //importParameters.Add("REDOC", po.SAPMaterialInvoice);
                //importParameters.Add("SGTXT", po.Operator);
                //importParameters.Add("XBLNR", po.VendorInvoice);
                //importParameters.Add("LGORT", po.StorageCode);
                //importParameters.Add("BKTXT", po.Remark);
                //importParameters.Add("DATUM", po.InvoiceDate);

                DataTable dtDetail = new DataTable();
                dtDetail.Columns.Add("SERIAL", typeof(string));
                dtDetail.Columns.Add("EBELN", typeof(string));
                dtDetail.Columns.Add("EBELP", typeof(int));
                dtDetail.Columns.Add("WERKS", typeof(string));
                dtDetail.Columns.Add("ZNUMBER", typeof(string));
                dtDetail.Columns.Add("MATNR", typeof(string));
                dtDetail.Columns.Add("MENGE", typeof(decimal));
                dtDetail.Columns.Add("MEINS", typeof(string));
                dtDetail.Columns.Add("BWART", typeof(string));
                dtDetail.Columns.Add("REDOC", typeof(string));
                dtDetail.Columns.Add("SGTXT", typeof(string));
                dtDetail.Columns.Add("XBLNR", typeof(string));
                dtDetail.Columns.Add("LGORT", typeof(string));
                dtDetail.Columns.Add("BKTXT", typeof(string));
                dtDetail.Columns.Add("DATUM", typeof(int));
                foreach (var po in poList)
                {
                    DataRow row = dtDetail.NewRow();
                    row["SERIAL"]  = po.ZNUMBER;
                    row["EBELN"]   = po.PONO;
                    row["EBELP"]   = po.POLine;
                    row["WERKS"]   = po.FacCode;
                    row["ZNUMBER"] = po.ZNUMBER;
                    row["MATNR"]   = po.MCode;
                    row["MENGE"]   = po.Qty;
                    row["MEINS"]   = po.Unit;
                    row["BWART"]   = po.Status;
                    row["REDOC"]   = po.SAPMaterialInvoice;
                    row["SGTXT"]   = po.Operator;
                    row["XBLNR"]   = po.SerialNO;
                    row["LGORT"]   = po.StorageCode;
                    row["BKTXT"]   = po.Remark;
                    row["DATUM"]   = po.InvoiceDate;
                    dtDetail.Rows.Add(row);
                }

                IRfcTable rfcTable = ncoClient.ConvertDataTabletoRFCTable(dtDetail, MES2SAPRfcInTableName.PO);

                importParameters.Add(MES2SAPRfcInTableName.PO, rfcTable);
                ncoClient.ImportParameters = importParameters;
                Dictionary <string, object> exportParameters = new Dictionary <string, object>();
                ncoClient.Execute(ref exportParameters);
                //ncoClient.DISConncet();
                object       parameter = null;
                SAPRfcReturn re        = new SAPRfcReturn();
                if (exportParameters != null)
                {
                    if (exportParameters.TryGetValue("ES_RESULT", out parameter))
                    {
                        IRfcStructure ROFStrcture = parameter as IRfcStructure;
                        re.Result           = ROFStrcture["RETUN"].GetValue().ToString();
                        re.MaterialDocument = ROFStrcture["MBLNR"].GetValue().ToString();
                        re.Message          = ROFStrcture["MESSG"].GetValue().ToString();
                    }
                }
                return(re);
            }
            catch (Exception ex)
            {
                //ncoClient.DISConncet();
                throw ex;
            }
        }
예제 #29
0
파일: BATCH.cs 프로젝트: radtek/QM
        public async Task BAPI_GOODSMVT_CREATE(IList <GOODSMVT_ITEM> dt)
        {
            try
            {
                RfcDestination dest       = GetDestination();
                RfcRepository  repository = dest.Repository;
                RfcSessionManager.BeginContext(dest);
                IRfcFunction func    = repository.CreateFunction("BAPI_GOODSMVT_CREATE");
                string       message = null;

                IRfcStructure rfcStructGMItem = null;
                IRfcTable     rfcTableGMItem  = func.GetTable("GOODSMVT_ITEM");

                IRfcStructure stru;
                IRfcTable     result;

                //set parm
                rfcStructGMItem = repository.GetStructureMetadata("BAPI2017_GM_ITEM_CREATE").CreateStructure();
                foreach (var item in dt)
                {
                    rfcStructGMItem.SetValue("MATERIAL", item.material);
                    rfcStructGMItem.SetValue("PLANT", item.plant);
                    rfcStructGMItem.SetValue("STGE_LOC", item.stge_loc);
                    rfcStructGMItem.SetValue("BATCH", item.batch);
                    rfcStructGMItem.SetValue("MOVE_TYPE", item.move_type);
                    rfcStructGMItem.SetValue("ENTRY_QNT", item.entry_qnt);
                    rfcStructGMItem.SetValue("COST_OBJ", item.cost_obj);
                    rfcStructGMItem.SetValue("ENTRY_UOM", item.entry_uom);
                }
                rfcTableGMItem.Insert(rfcStructGMItem);

                IRfcStructure rfcStructGMCode = null;
                rfcStructGMCode = func.GetStructure("GOODSMVT_CODE");

                if (dt.Count > 0)
                {
                    if (dt[0].move_type == "291")
                    {
                        rfcStructGMCode.SetValue("GM_CODE", "03");
                    }
                    else if (dt[0].move_type == "292")
                    {
                        rfcStructGMCode.SetValue("GM_CODE", "06");
                    }
                }

                IRfcStructure rfcStructGMHeader = null;
                rfcStructGMHeader = func.GetStructure("GOODSMVT_HEADER");
                rfcStructGMHeader.SetValue("PSTNG_DATE", "20191028");
                rfcStructGMHeader.SetValue("DOC_DATE", "20191028");



                //call function
                log.Debug("BAPI_GOODSMVT_CREATE => Start");
                func.Invoke(dest);
                log.Debug("BAPI_GOODSMVT_CREATE => Done");

                //log result
                result = func.GetTable("RETURN");

                for (int k = 0; k < result.RowCount; k++)
                {
                    stru    = result[k];
                    message = stru.GetValue("MESSAGE").ToString();
                    log.Debug(string.Format("MESSAGE:{0}", message));
                }

                if (result.RowCount == 0)
                {
                    string doc  = func.GetValue("MATERIALDOCUMENT").ToString();
                    string year = func.GetValue("MATDOCUMENTYEAR").ToString();

                    func = repository.CreateFunction("BAPI_TRANSACTION_COMMIT");
                    func.SetValue("WAIT", "X");
                    func.Invoke(dest);

                    stru = func.GetStructure("RETURN");
                    MessageBox.Show(doc);
                }
                else
                {
                    func = repository.CreateFunction("BAPI_TRANSACTION_ROLLBACK");
                    func.Invoke(dest);
                    MessageBox.Show(message);
                }

                RfcSessionManager.EndContext(dest);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #30
0
        protected override void DefWndProc(ref Message m)
        {
            switch (m.Msg)
            {
            case MESSAGE_CAPTURED_OK:
            {
                MemoryStream ms = new MemoryStream();
                BitmapFormat.GetBitmap(FPBuffer, mfpWidth, mfpHeight, ref ms);
                Bitmap bmp = new Bitmap(ms);
                this.picFPImg.Image = bmp;

                String strShow = zkfp2.BlobToBase64(CapTmp, cbCapTmp);


                if (IsRegister)
                {
                    int ret = zkfp.ZKFP_ERR_OK;
                    int fid = 0, score = 0;
                    ret = zkfp2.DBIdentify(mDBHandle, CapTmp, ref fid, ref score);
                    if (zkfp.ZKFP_ERR_OK == ret)
                    {
                        txtStatus.Text = "This finger was already register";
                        return;
                    }

                    if (RegisterCount > 0 && zkfp2.DBMatch(mDBHandle, CapTmp, RegTmps[RegisterCount - 1]) <= 0)
                    {
                        txtStatus.Text = "Please press the same finger 1 times for the enrollment.";
                        return;
                    }

                    Array.Copy(CapTmp, RegTmps[RegisterCount], cbCapTmp);
                    String strBase64 = zkfp2.BlobToBase64(CapTmp, cbCapTmp);


                    byte[] blob = zkfp2.Base64ToBlob(strBase64);
                    RegisterCount++;

                    Save_Database(strBase64);

                    if (RegisterCount >= REGISTER_FINGER_COUNT)
                    {
                        txtStatus.Text = "Enroll succesfully";

                        IsRegister = false;
                        cbRegTmp   = 1;
                        return;
                    }
                    else
                    {
                        txtStatus.Text = "You need to press the " + (REGISTER_FINGER_COUNT - RegisterCount) + " times fingerprint";
                    }
                }
                else
                {
                    if (cbRegTmp <= 0)
                    {
                        txtStatus.Text = "Please register your finger first!";
                        return;
                    }
                    if (bIdentify)
                    {
                        int ret = zkfp.ZKFP_ERR_OK;
                        int fid = 0, score = 0;
                        ret = zkfp2.DBIdentify(mDBHandle, CapTmp, ref fid, ref score);
                        if (zkfp.ZKFP_ERR_OK == ret)
                        {
                            txtStatus.Text = "Identify succesfully, fid= " + fid + ",score=" + score + "!";
                            return;
                        }
                        else
                        {
                            txtStatus.Text = "Identify failed, ret= " + ret;
                            return;
                        }
                    }
                    else
                    {
                        RfcConfigParameters parameters = new RfcConfigParameters();

                        parameters[RfcConfigParameters.Name]          = SAPFingerprint.Properties.Settings.Default.Name;
                        parameters[RfcConfigParameters.User]          = txtUser.Text;
                        parameters[RfcConfigParameters.Password]      = txtPass.Text;
                        parameters[RfcConfigParameters.Client]        = SAPFingerprint.Properties.Settings.Default.Client;
                        parameters[RfcConfigParameters.Language]      = SAPFingerprint.Properties.Settings.Default.Language;
                        parameters[RfcConfigParameters.AppServerHost] = SAPFingerprint.Properties.Settings.Default.AppServerHost;
                        parameters[RfcConfigParameters.SystemNumber]  = SAPFingerprint.Properties.Settings.Default.SystemNumber;
                        parameters[RfcConfigParameters.SAPRouter]     = SAPFingerprint.Properties.Settings.Default.SAPRouter;
                        parameters[RfcConfigParameters.SystemID]      = SAPFingerprint.Properties.Settings.Default.SystemID;

                        RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(parameters);
                        RfcSessionManager.BeginContext(SapRfcDestination);

                        SapRfcDestination.Ping();
                        IRfcFunction function = null;

                        try
                        {
                            function = SapRfcDestination.Repository.CreateFunction("ZFM_READ_WRITE_FINGERPRINT");
                            function.SetValue("IM_MODE", "V");

                            IRfcTable gt_table = function.GetTable("EX_FINGERPRINT");

                            function.Invoke(SapRfcDestination);

                            jj = 0;
                            foreach (IRfcStructure row in gt_table)
                            {
                                jj = jj + 1;
                                byte[] blob1 = Convert.FromBase64String(Convert.ToString(row.GetValue(0)));

                                String strBase64 = zkfp2.BlobToBase64(CapTmp, cbCapTmp);

                                byte[] blob2 = Convert.FromBase64String(strBase64.Trim());

                                int ret = zkfp2.DBMatch(mDBHandle, blob1, blob2);
                                if (ret > 0)
                                {
                                    txtStatus.Text = "Selamat Datang!";

                                    vald = ret;
                                    break;
                                }
                                else
                                {
                                    txtStatus.Text = "Maaf and tidak dikenali";
                                }
                                zkfp2.DBClear(mDBHandle);
                            }

                            if (vald > 0)
                            {
                                // function = SapRfcDestination.Repository.CreateFunction("ZFM_READ_WRITE_FINGERPRINT");
                                // function.SetValue("MODE", "V");
                                // function.SetValue("INDX", jj);
                                // function.Invoke(SapRfcDestination);
                            }
                        }
                        catch (Exception ex)
                        {
                            System.Windows.Forms.MessageBox.Show("Error: " + ex.Message);
                        }

                        RfcSessionManager.EndContext(SapRfcDestination);
                        SapRfcDestination = null;
                    }
                }
            }
            break;

            default:
                base.DefWndProc(ref m);
                break;
            }
        }
예제 #31
0
        public string InsertaSolicitudL(CabeceraL c, List <DetalleL> ds, List <Escala> es)
        {
            string folio = "";

            if (conectar())
            {
                RfcRepository repo = oDestino.Repository;
                IRfcFunction  bapi = repo.CreateFunction("ZFWF_AP_017");//Módulo de función

                IRfcStructure header = bapi.GetStructure("HEADER");
                header.SetValue("ID_SOLICITUD", c.folio);
                header.SetValue("TIPO", c.tipo);
                header.SetValue("FECHA", c.fecha);
                header.SetValue("HORA", c.hora);
                header.SetValue("USUARIO", c.usuario);
                header.SetValue("PERNR", c.pernr);
                header.SetValue("ESTATUS", c.estatus);
                //header.SetValue("VISTO", c.visto);
                header.SetValue("COMMENTS", c.comentario);
                header.SetValue("VKORG", c.vkorg);
                header.SetValue("VTWEG", c.vtweg);
                header.SetValue("SPART", c.spart);
                header.SetValue("KUNNR", c.kunnr);
                header.SetValue("PLTYP", c.pltyp);
                header.SetValue("PORCENTAJE", c.porcentaje);
                header.SetValue("MATNR", c.matnr);

                IRfcTable detail = bapi.GetTable("IT_DETALLE");

                foreach (DetalleL d in ds)
                {
                    d.pr_nvo = d.pr_nvo.Replace('$', ' ');
                    d.pr_nvo = d.pr_nvo.Trim();
                    d.pr_ant = d.pr_ant.Replace('$', ' ');
                    d.pr_ant = d.pr_ant.Trim();
                }
                foreach (DetalleL d in ds)
                {
                    detail.Append();
                    detail.SetValue("ID_SOLICITUD", d.folio);
                    detail.SetValue("POS", d.pos);
                    detail.SetValue("ESTATUS", d.estatus);
                    detail.SetValue("FECHA_INI", d.date);
                    detail.SetValue("FECHA_FIN", d.dateA);
                    detail.SetValue("MATNR", d.matnr);
                    detail.SetValue("MATKL", d.matkl);
                    detail.SetValue("EBELN", d.ebeln);
                    detail.SetValue("CHARG", d.lote);
                    detail.SetValue("PR_ANT", d.pr_ant);
                    detail.SetValue("MON_ANT", d.mon_ant);
                    detail.SetValue("PR_NVO", d.pr_nvo);
                    detail.SetValue("MON_NVO", d.mon_nvo);
                    //detail.SetValue("PORCENTAJE", d.porcentaje);
                    detail.SetValue("PORCENTAJE", "0.00");
                    detail.SetValue("KNUMH", d.knumh);
                    detail.SetValue("COMMENTS", d.comentario);
                    detail.SetValue("MEINS", d.meins);
                }

                IRfcTable escalas = bapi.GetTable("IT_ESCALAS");
                foreach (Escala e in es)
                {
                    escalas.Append();
                    escalas.SetValue("OBJECT", e.obj);
                    escalas.SetValue("POS", e.id);
                    escalas.SetValue("KLFN1", e.pos);
                    escalas.SetValue("KSTBM", e.cantidad);
                    escalas.SetValue("KBETR", e.importe);
                    escalas.SetValue("KONMS", e.meins);
                }

                bapi.Invoke(oDestino);

                folio = bapi.GetString("FOLIO");
            }
            return(folio);
        }
예제 #32
0
        public void viaspago(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_EXCEPCION, string P_CLASE_CUENTA, string P_HAS_CME, string P_LAND, string P_PROTESTO, List <ViasPago> P_CONDICIONES)
        {
            ObjDatosViasPago.Clear();
            ViasPagoTransaccion.Clear();
            errormessage = "";
            IRfcTable lt_VIAS_PAGOS;

            VIAS_PAGO VIAS_PAGOS_resp;

            //Conexion a SAP
            connectorSap.idioma    = P_IDIOMA;
            connectorSap.idSistema = P_IDSISTEMA;
            connectorSap.instancia = P_INSTANCIA;
            connectorSap.mandante  = P_MANDANTE;
            connectorSap.paswr     = P_PASSWORD;
            connectorSap.sapRouter = P_SAPROUTER;
            connectorSap.user      = P_UNAME;
            connectorSap.server    = P_SERVER;

            string retval = connectorSap.connectionsSAP();

            //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
            if (string.IsNullOrEmpty(retval))
            {
                RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_GET_MATRIZ_PAGO");
                BapiGetUser.SetValue("EXCEPCION", P_EXCEPCION);
                IRfcTable GralDat = BapiGetUser.GetTable("CONDICIONES");

                for (var i = 0; i < P_CONDICIONES.Count; i++)
                {
                    GralDat.Append();
                    GralDat.SetValue("ACC", P_CONDICIONES[i].Acc);
                    GralDat.SetValue("COND_PAGO", P_CONDICIONES[i].Cond_Pago);
                    GralDat.SetValue("CAJA", P_CONDICIONES[i].Caja);
                }
                BapiGetUser.SetValue("CONDICIONES", GralDat);
                BapiGetUser.SetValue("CLASE_CUENTA", P_CLASE_CUENTA);
                BapiGetUser.SetValue("HAS_CME", P_HAS_CME);
                BapiGetUser.SetValue("LAND", P_LAND);
                BapiGetUser.SetValue("PROT", P_PROTESTO);
                BapiGetUser.Invoke(SapRfcDestination);
                lt_VIAS_PAGOS = BapiGetUser.GetTable("VIAS_PAGO");
                if (lt_VIAS_PAGOS.Count > 0)
                {
                    //LLenamos la tabla de salida lt_DatGen
                    for (int i = 0; i < lt_VIAS_PAGOS.RowCount; i++)
                    {
                        lt_VIAS_PAGOS.CurrentIndex = i;
                        VIAS_PAGOS_resp            = new VIAS_PAGO();

                        VIAS_PAGOS_resp.VIA_PAGO    = lt_VIAS_PAGOS[i].GetString("VIA_PAGO");
                        VIAS_PAGOS_resp.DESCRIPCION = lt_VIAS_PAGOS[i].GetString("DESCRIPCION");
                        ObjDatosViasPago.Add(VIAS_PAGOS_resp);
                    }
                }
                else
                {
                }
                GC.Collect();
            }
            else
            {
                errormessage = retval;
                GC.Collect();
            }
        }
예제 #33
0
        public void pagosmasivos(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA
                                 , string P_LAND, string P_FECHA, string P_FILE, string P_ID_APERTURA, string P_ID_CAJA, string P_PAY_CURRENCY, List <PagosMasivosNuevo> ListaExc, List <VIAS_PAGO_MASIVO> viasPagoMasivos)
        {
            objReturn2.Clear();
            errormessage = "";
            message      = "";
            try
            {
                ESTATUS p_return;
                //Conexion a SAP
                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();
                //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_PAGO_MASIVO");
                    BapiGetUser.SetValue("LAND", P_LAND);
                    BapiGetUser.SetValue("FECHA", Convert.ToDateTime(P_FECHA.Substring(0, 10)));
                    BapiGetUser.SetValue("PAY_CURRENCY", P_PAY_CURRENCY);
                    BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA);
                    BapiGetUser.SetValue("ID_APERTURA", P_ID_APERTURA);

                    IRfcTable GralDat = BapiGetUser.GetTable("T_EXCEL");

                    for (var i = 0; i < ListaExc.Count; i++)
                    {
                        GralDat.Append();
                        GralDat.SetValue("ROW", ListaExc[i].ROW);
                        GralDat.SetValue("COL", ListaExc[i].COL);
                        GralDat.SetValue("VALUE", ListaExc[i].VALUE);
                    }
                    BapiGetUser.SetValue("T_EXCEL", GralDat);

                    IRfcTable DetalleViasPago = BapiGetUser.GetTable("VIAS_PAGO_MASIVO");

                    for (var i = 0; i < viasPagoMasivos.Count; i++)
                    {
                        DetalleViasPago.Append();
                        DetalleViasPago.SetValue("MANDT", viasPagoMasivos[i].MANDT);
                        DetalleViasPago.SetValue("LAND", viasPagoMasivos[i].LAND);
                        DetalleViasPago.SetValue("ID_COMPROBANTE", viasPagoMasivos[i].ID_COMPROBANTE);
                        DetalleViasPago.SetValue("ID_DETALLE", viasPagoMasivos[i].ID_DETALLE);
                        DetalleViasPago.SetValue("ID_CAJA", viasPagoMasivos[i].ID_CAJA);
                        DetalleViasPago.SetValue("VIA_PAGO", viasPagoMasivos[i].VIA_PAGO);
                        DetalleViasPago.SetValue("MONTO", viasPagoMasivos[i].MONTO);
                        DetalleViasPago.SetValue("MONEDA", viasPagoMasivos[i].MONEDA);
                        DetalleViasPago.SetValue("BANCO", viasPagoMasivos[i].BANCO);
                        DetalleViasPago.SetValue("EMISOR", viasPagoMasivos[i].EMISOR);
                        DetalleViasPago.SetValue("NUM_CHEQUE", viasPagoMasivos[i].NUM_CHEQUE);
                        DetalleViasPago.SetValue("COD_AUTORIZACION", viasPagoMasivos[i].COD_AUTORIZACION);
                        DetalleViasPago.SetValue("NUM_CUOTAS", viasPagoMasivos[i].NUM_CUOTAS);
                        DetalleViasPago.SetValue("FECHA_VENC", Convert.ToDateTime(viasPagoMasivos[i].FECHA_VENC));
                        DetalleViasPago.SetValue("TEXTO_POSICION", viasPagoMasivos[i].TEXTO_POSICION);
                        DetalleViasPago.SetValue("ANEXO", viasPagoMasivos[i].ANEXO);
                        DetalleViasPago.SetValue("SUCURSAL", viasPagoMasivos[i].SUCURSAL);
                        DetalleViasPago.SetValue("NUM_CUENTA", viasPagoMasivos[i].NUM_CUENTA);
                        DetalleViasPago.SetValue("NUM_TARJETA", viasPagoMasivos[i].NUM_TARJETA);
                        DetalleViasPago.SetValue("NUM_VALE_VISTA", viasPagoMasivos[i].NUM_VALE_VISTA);
                        DetalleViasPago.SetValue("PATENTE", viasPagoMasivos[i].PATENTE);
                        DetalleViasPago.SetValue("NUM_VENTA", viasPagoMasivos[i].NUM_VENTA);
                        DetalleViasPago.SetValue("PAGARE", viasPagoMasivos[i].PAGARE);
                        DetalleViasPago.SetValue("FECHA_EMISION", Convert.ToDateTime(viasPagoMasivos[i].FECHA_EMISION));
                        DetalleViasPago.SetValue("NOMBRE_GIRADOR", viasPagoMasivos[i].NOMBRE_GIRADOR);
                        DetalleViasPago.SetValue("CARTA_CURSE", viasPagoMasivos[i].CARTA_CURSE);
                        DetalleViasPago.SetValue("NUM_TRANSFER", viasPagoMasivos[i].NUM_TRANSFER);
                        DetalleViasPago.SetValue("NUM_DEPOSITO", viasPagoMasivos[i].NUM_DEPOSITO);
                        DetalleViasPago.SetValue("CTA_BANCO", viasPagoMasivos[i].CTA_BANCO);
                        DetalleViasPago.SetValue("IFINAN", viasPagoMasivos[i].IFINAN);
                        DetalleViasPago.SetValue("ZUONR", viasPagoMasivos[i].ZUONR);
                        DetalleViasPago.SetValue("CORRE", viasPagoMasivos[i].CORRE);
                        DetalleViasPago.SetValue("HKONT", viasPagoMasivos[i].HKONT);
                        DetalleViasPago.SetValue("PRCTR", viasPagoMasivos[i].PRCTR);
                        DetalleViasPago.SetValue("ZNOP", viasPagoMasivos[i].ZNOP);
                    }
                    BapiGetUser.SetValue("VIAS_PAGO_MASIVO", DetalleViasPago);


                    BapiGetUser.Invoke(SapRfcDestination);

                    IRfcTable retorno = BapiGetUser.GetTable("ESTATUS");

                    for (var i = 0; i < retorno.RowCount; i++)
                    {
                        retorno.CurrentIndex = i;

                        p_return = new ESTATUS();

                        p_return.TYPE = retorno[i].GetString("TYPE");
                        if (retorno.GetString("TYPE") == "S")
                        {
                            message = message + " - " + retorno[i].GetString("MESSAGE");
                        }
                        if (retorno.GetString("TYPE") == "E")
                        {
                            errormessage = errormessage + " - " + retorno[i].GetString("MESSAGE");
                        }
                        p_return.ID         = retorno[i].GetString("ID");
                        p_return.NUMBER     = retorno[i].GetString("NUMBER");
                        p_return.MESSAGE    = retorno[i].GetString("MESSAGE");
                        p_return.LOG_NO     = retorno[i].GetString("LOG_NO");
                        p_return.LOG_MSG_NO = retorno[i].GetString("LOG_MSG_NO");
                        p_return.MESSAGE_V1 = retorno[i].GetString("MESSAGE_V1");
                        p_return.MESSAGE_V2 = retorno[i].GetString("MESSAGE_V2");
                        p_return.MESSAGE_V3 = retorno[i].GetString("MESSAGE_V3");
                        if (retorno[i].GetString("MESSAGE_V4") != "")
                        {
                            comprobante = retorno[i].GetString("MESSAGE_V4");
                        }
                        //p_return.MESSAGE_V4 = retorno[i].GetString("MESSAGE_V4");
                        p_return.PARAMETER = retorno[i].GetString("PARAMETER");
                        p_return.ROW       = retorno[i].GetString("ROW");
                        p_return.FIELD     = retorno[i].GetString("FIELD");
                        p_return.SYSTEM    = retorno[i].GetString("SYSTEM");
                        objReturn2.Add(p_return);
                    }
                }
                GC.Collect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + ex.StackTrace);
                System.Windows.Forms.MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
예제 #34
0
        public void InvokeRFCFunctionZPSRFC04(WBSInfo wbsInfo)
        {
            IRfcFunction function = null;

            try
            {
                try
                {
                    function = _rfcDestination.Repository.CreateFunction("ZPSRFC04");


                    IRfcTable wbsTable = function.GetTable("LT_GSDATA");



                    for (int i = 0; i < wbsInfo.WbsFolders.Count(); i++)
                    {
                        for (int j = 0; j < wbsInfo.WbsFolders[i].TimeCosts.Count(); j++)
                        {
                            wbsTable.Insert();
                            wbsTable.CurrentRow.SetValue("PSPID", wbsInfo.ProjectUniqueID);                      //项目定义编码
                            wbsTable.CurrentRow.SetValue("ZPOSID", wbsInfo.WbsFolders[i].WBSUniqueNo);           //传入wbs的DS 阶段 ID
                            wbsTable.CurrentRow.SetValue("SYGID", wbsInfo.WbsFolders[i].TimeCosts[j].LoginName); //员工ID 00000002
                            wbsTable.CurrentRow.SetValue("MJAHR", wbsInfo.WbsFolders[i].TimeCosts[j].Yeart);     //年
                            wbsTable.CurrentRow.SetValue("SGSYF", wbsInfo.WbsFolders[i].TimeCosts[j].Montht);    //月
                            wbsTable.CurrentRow.SetValue("SJGSZ", wbsInfo.WbsFolders[i].TimeCosts[j].TotalTime);
                        }
                    }

                    function.SetValue("LT_GSDATA", wbsTable);


                    function.Invoke(_rfcDestination);
                }
                catch (Exception ex)
                {
                    //LogHelper.WriteLog("连接SAP远程服务器出错:" + ex.Message);
                    LogHelper.Error("连接SAP远程服务器出错:" + ex.Message, ex);
                }


                //获取调用SAP的ZPSRFC04返回值到DataTable
                IRfcTable myrfcTable = function.GetTable("LT_RETURN");//rfc server function 返回值table结构名称

                int liElement = 0;
                for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++)
                {
                    RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);
                    dtr.Columns.Add(metadata.Name);      //循环创建列
                }
                foreach (IRfcStructure dr in myrfcTable) //循环table结构表
                {
                    DataRow row = dtr.NewRow();          //创建新行
                    for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++)
                    {
                        RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);
                        row[metadata.Name] = dr.GetString(metadata.Name).Trim();
                    }
                    dtr.Rows.Add(row);
                }

                //输出调用返回日志
                for (int i = 0; i < dtr.Rows.Count; i++)
                {
                    LogHelper.WriteLog("SAP返回结果:消息类型:" + dtr.Rows[i]["TYPE"].ToString() + "\t消息文本" + dtr.Rows[i]["MESSAGE"].ToString());
                }
            }
            catch (Exception ex)
            {
                // LogHelper.WriteLog("调用SAP函数ZPSRFC04出错:" + ex.Message);
                LogHelper.Error("调用SAP函数ZPSRFC04出错:" + ex.Message, ex);
            }
        }
예제 #35
0
        public BapiReturn ChangeUser(User user, UserDetails userDetails)
        {
            IRfcFunction  fun;
            RfcRepository repository;

            try
            {
                repository = Dest.Repository;

                var address  = repository.GetStructureMetadata("BAPIADDR3").CreateStructure();
                var addressx = repository.GetStructureMetadata("BAPIADDR3X").CreateStructure();

                fun = repository.CreateFunction("BAPI_USER_CHANGE");

                fun.SetValue("USERNAME", user.UserName);

                address.SetValue("STREET", userDetails.Address.Street);
                address.SetValue("HOUSE_NO", userDetails.Address.Number);
                address.SetValue("POSTL_COD1", userDetails.Address.Postcode);
                address.SetValue("CITY", userDetails.Address.City);
                address.SetValue("FIRSTNAME", userDetails.Firstname);
                address.SetValue("LASTNAME", userDetails.Lastname);


                addressx.SetValue("STREET", "X");
                addressx.SetValue("HOUSE_NO", "X");
                addressx.SetValue("POSTL_COD1", "X");
                addressx.SetValue("CITY", "X");
                addressx.SetValue("FIRSTNAME", "X");
                addressx.SetValue("LASTNAME", "X");

                fun.SetValue("ADDRESS", address);
                fun.SetValue("ADDRESSX", addressx);


                fun.Invoke(Dest);
            }
            catch (RfcCommunicationException ex)
            {
                throw new SapCommunicationException("Keine Verbindung zum SAP-Server", ex);
            }

            IRfcTable returnTable = fun.GetTable("RETURN");

            var firstreturn = returnTable[0];

            var response = new BapiReturn(FromSapReturn(firstreturn.GetString("TYPE")), firstreturn.GetString("MESSAGE"));


            try {
                if (response.Type.Equals(BapiReturnType.Error))
                {
                    RollbackTransaction(repository);
                }
                else
                {
                    CommitTransaction(repository);
                }
            }
            catch (RfcCommunicationException ex)
            {
                throw new SapCommunicationException("Keine Verbindung zum SAP-Server", ex);
            }
            return(response);
        }
예제 #36
0
        /// <summary>
        /// 调用SAP提供的RFC函数ZPSRFC03传递项目信息和wbs信息给SAP
        /// </summary>
        /// <param name="project">项目信息</param>
        /// <param name="wbsInfo">wbs信息</param>
        public List <ReturnMessage> InvokeRFCFunctionZPSRFC03(Project project, WBSInfo wbsInfo)
        {
            IRfcFunction         function      = null;
            List <ReturnMessage> returnMessage = new List <ReturnMessage>();

            try
            {
                try
                {
                    function = _rfcDestination.Repository.CreateFunction("ZPSRFC03");
                    //  function.Invoke(_rfcDestination);
                    // IRfcStructure itb = function.GetStructure("ZSPS_003");
                    IRfcTable projectTable = function.GetTable("LT_XMDY");
                    projectTable.Insert();

                    //IRfcStructure struSAP = projectTable.Metadata.LineType.CreateStructure();
                    //struSAP.SetValue("POSID", project.ProjectUniqueID);//传入项目编码
                    //struSAP.SetValue("POST1", project.ProjectName);//传入项目名称
                    //struSAP.SetValue("PROFL", project.ProjectTypeID);//传入项目编码
                    //struSAP.SetValue("VERNR", project.ProjectManager);//传入项目经理
                    //struSAP.SetValue("PXMDH", project.ProjectCodeName);//传入项目代号
                    //struSAP.SetValue("PXMLX", project.ProjectType);//传入项目类型
                    //struSAP.SetValue("PWTBM", project.DelegateDepartment);//传入委托部门
                    //struSAP.SetValue("PCDBM", project.UnderTaskDepartment);//传入承担部门
                    //struSAP.SetValue("FZDDJ", project.ProjectComplexLevel);//传入项目复杂度等级
                    //struSAP.SetValue("PXYXJ", project.ProjectPriority);//传入项目优先级
                    //struSAP.SetValue("ESTAT", project.ProjectStatus);//传入项目状态
                    //projectTable.Append(struSAP);

                    //function.SetValue("LT_XMDY", projectTable);
                    //function.Invoke(_rfcDestination);

                    projectTable.CurrentRow.SetValue("POSID", project.ProjectUniqueID); //传入项目编码
                    //projectTable.CurrentRow.SetValue("POSID", "B1909007");//传入项目编码
                    projectTable.CurrentRow.SetValue("POST1", project.ProjectName);     //传入项目名称
                    projectTable.CurrentRow.SetValue("PROFL", project.ProjectTypeID);   //传入项目编码

                    //projectTable.CurrentRow.SetValue("VERNR", project.ProjectManager);//传入项目经理(20190926讨论后,决定不需要传项目经理)
                    //projectTable.CurrentRow.SetValue("VERNR", 00000002);//传入项目经理
                    projectTable.CurrentRow.SetValue("PXMDH", project.ProjectCodeName);     //传入项目代号
                    projectTable.CurrentRow.SetValue("PXMLX", project.ProjectType);         //传入项目类型
                    projectTable.CurrentRow.SetValue("PWTBM", project.DelegateDepartment);  //传入委托部门
                    //projectTable.CurrentRow.SetValue("PWTBM", "10000010");//传入委托部门
                    projectTable.CurrentRow.SetValue("PCDBM", project.UnderTaskDepartment); //传入承担部门
                    //projectTable.CurrentRow.SetValue("PCDBM", "10000010");//传入承担部门
                    projectTable.CurrentRow.SetValue("FZDDJ", project.ProjectComplexLevel); //传入项目复杂度等级
                    projectTable.CurrentRow.SetValue("PXYXJ", project.ProjectPriority);     //传入项目优先级
                    projectTable.CurrentRow.SetValue("ESTAT", project.ProjectStatus);       //传入项目状态

                    // function = _rfcDestination.Repository.CreateFunction("ZPSRFC03");
                    function.SetValue("LT_XMDY", projectTable);
                    // function.Invoke(_rfcDestination);

                    IRfcTable wbsTable = function.GetTable("LT_WBSD");

                    //for (int i = 0; i < wbsInfo.WbsFolders.Count(); i++)
                    //{

                    //    IRfcStructure struSAP2 = wbsTable.Metadata.LineType.CreateStructure();
                    //    struSAP2.SetValue("ZPOSID", wbsInfo.WbsFolders[i].WBSUniqueNo);//传入wbs的DS 阶段 ID
                    //    struSAP2.SetValue("POSIDNAME", wbsInfo.WbsFolders[i].WBSName);//传入wbs的DS 阶段名称
                    //    struSAP2.SetValue("PSPID", wbsInfo.ProjectUniqueID);
                    //    wbsTable.Append(struSAP2);
                    //}

                    for (int i = 0; i < wbsInfo.WbsFolders.Count(); i++)
                    {
                        wbsTable.Insert();
                        wbsTable.CurrentRow.SetValue("ZPOSID", wbsInfo.WbsFolders[i].WBSUniqueNo); //传入wbs的DS 阶段 ID
                        wbsTable.CurrentRow.SetValue("POSIDNAME", wbsInfo.WbsFolders[i].WBSName);  //传入wbs的DS 阶段名称
                        wbsTable.CurrentRow.SetValue("PSPID", wbsInfo.ProjectUniqueID);
                        //wbsTable.CurrentRow.SetValue("PSPID", "B1909007");
                    }


                    //  function = _rfcDestination.Repository.CreateFunction("ZPSRFC03");
                    function.SetValue("LT_WBSD", wbsTable);

                    // function.SetParameterActive(0, true);
                    function.Invoke(_rfcDestination);
                }
                catch (Exception ex)
                {
                    //LogHelper.WriteLog("连接SAP远程服务器出错:" + ex.Message);
                    LogHelper.Error("连接SAP远程服务器出错:" + ex.Message, ex);
                }
                // function.GetElementMetadata(2).ValueMetadataAsTableMetadata.LineType.Name.ElementAt.SetValue("POSID", project.ProjectUniqueID);//传入项目编码

                //function.SetValue("POSID", project.ProjectUniqueID);//传入项目编码
                //function.SetValue("POST1", project.ProjectName);//传入项目名称
                //function.SetValue("PROFL", project.ProjectTypeID);//传入项目编码
                //function.SetValue("VERNR", project.ProjectManager);//传入项目经理
                //function.SetValue("PXMDH", project.ProjectCodeName);//传入项目代号
                //function.SetValue("PXMLX", project.ProjectType);//传入项目类型
                //function.SetValue("PWTBM", project.DelegateDepartment);//传入委托部门
                //function.SetValue("PCDBM", project.UnderTaskDepartment);//传入承担部门
                //function.SetValue("FZDDJ", project.ProjectComplexLevel);//传入项目复杂度等级
                //function.SetValue("PXYXJ", project.ProjectPriority);//传入项目优先级
                //function.SetValue("ESTAT", project.ProjectStatus);//传入项目状态


                // var Nos = from c in wbsInfo.WbsFolders select c.WBSUniqueNo;
                // var Names = from n in wbsInfo.WbsFolders select n.WBSName;
                // string wbsUniqueNos = string.Join("、",Nos.ToArray());
                //string wbsNames = string.Join("、",Names.ToArray());

                //foreach (var item in wbsInfo.WbsFolders)
                //{
                //    function.SetValue("ZPOSID", item.WBSUniqueNo);//传入wbs的DS 阶段 ID
                //    function.SetValue("POSIDNAME", item.WBSName);//传入wbs的DS 阶段名称
                //}
                //function.SetValue("PSPID", wbsInfo.ProjectUniqueID);//传入项目编码

                //function.SetParameterActive(0,true);
                //function.Invoke(_rfcDestination);

                //获取调用SAP的ZPSRFC03返回值到DataTable
                IRfcTable myrfcTable = function.GetTable("LT_RETURN");//rfc server function 返回值table结构名称

                int liElement = 0;
                for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++)
                {
                    RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);
                    dtr.Columns.Add(metadata.Name);      //循环创建列
                }
                foreach (IRfcStructure dr in myrfcTable) //循环table结构表
                {
                    DataRow row = dtr.NewRow();          //创建新行
                    for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++)
                    {
                        RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);
                        row[metadata.Name] = dr.GetString(metadata.Name).Trim();
                    }
                    dtr.Rows.Add(row);
                }

                //输出调用返回日志
                for (int i = 0; i < dtr.Rows.Count; i++)
                {
                    returnMessage.Add(new ReturnMessage()
                    {
                        Type    = dtr.Rows[i]["TYPE"].ToString(),
                        Message = dtr.Rows[i]["MESSAGE"].ToString(),
                    });
                    LogHelper.WriteLog("SAP返回结果:消息类型:" + dtr.Rows[i]["TYPE"].ToString() + "\t消息文本" + dtr.Rows[i]["MESSAGE"].ToString());
                }
            }
            catch (Exception ex)
            {
                // LogHelper.WriteLog("调用SAP函数ZPSRFC03出错:" + ex.Message);
                LogHelper.Error("调用SAP函数ZPSRFC03出错:" + ex.Message, ex);
            }
            return(returnMessage);
        }
예제 #37
0
        private List <AM_SAP> getDivizionOrganization(Dictionary <string, string> openWith, string parentExternalCode, string organizationId)
        {
            try
            {
                RfcDestinationManager.RegisterDestinationConfiguration(new ZSMK_SAP_Config());
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine(e.Message);
            }
            RfcDestination destination = RfcDestinationManager.GetDestination("RFC_EAH");
            IRfcFunction   function    = null;
            string         strDate     = DateTime.Today.ToString("yyyyMMdd");

            IFormatProvider culture = new System.Globalization.CultureInfo("ru-RU", true);
            string          format  = "yyyy-MM-dd";
            List <AM_SAP>   list    = new List <AM_SAP>();
            string          prefix  = "";

            try
            {
                function = destination.Repository.CreateFunction("ZP_GET_OSP");
                foreach (KeyValuePair <string, string> kvp in openWith)
                {
                    function.SetValue(kvp.Key, kvp.Value);
                    if (kvp.Key == "IM_WERKS")
                    {
                        prefix = kvp.Value;
                    }
                }

                function.Invoke(destination);
            }
            catch (RfcBaseException e)
            {
                System.Diagnostics.Debug.WriteLine(e.ToString());
            }

            if (function != null)
            {
                //Get the function table parameter COMPANYCODE_LIST
                IRfcTable codes = function.GetTable("PIT_OBJECTS");
                if (codes.RowCount == 0)
                {
                    System.Diagnostics.Debug.WriteLine("Данные не выбраны");
                }
                else
                {
                    //Iterate over all rows in the table COMPANYCODE_LIST
                    DateTime dt = DateTime.MinValue;

                    for (int i = 0; i < codes.RowCount; i++)
                    {
                        codes.CurrentIndex = i;
                        AM_SAP amSap = new AM_SAP();

                        if (codes.GetString("OTYPE") == "P")
                        {
                            amSap.OBJID = "1111" + codes.GetString("OBJID").TrimStart('0');
                        }
                        else
                        {
                            amSap.OBJID = prefix + codes.GetString("OBJID");
                        }
                        amSap.SOBID = prefix + codes.GetString("SOBID");
                        amSap.OTYPE = codes.GetString("OTYPE");
                        amSap.PRIOX = codes.GetString("PRIOX");
                        amSap.PROZT = codes.GetDouble("PROZT");
                        dt          = DateTime.MinValue;
                        DateTime.TryParseExact(codes.GetString("SBEGDA"), format, culture, DateTimeStyles.AssumeLocal, out dt);
                        amSap.SBEGDA = dt;
                        amSap.SCLAS  = codes.GetString("SCLAS");
                        dt           = DateTime.MinValue;
                        DateTime.TryParseExact(codes.GetString("SENDDA"), format, culture, DateTimeStyles.AssumeLocal, out dt);
                        amSap.SENDDA  = dt;
                        amSap.SHORT   = codes.GetString("SHORT");
                        amSap.STEXT   = codes.GetString("STEXT");
                        amSap.LEV_HIE = codes.GetInt("LEV_HIE");

                        dt = DateTime.MinValue;
                        DateTime.TryParseExact(codes.GetString("BEGDA"), format, culture, DateTimeStyles.AssumeLocal, out dt);
                        amSap.BEGDA = dt;

                        dt = DateTime.MinValue;
                        DateTime.TryParseExact(codes.GetString("ENDDA"), format, culture, DateTimeStyles.AssumeLocal, out dt);
                        amSap.ENDDA     = dt;
                        amSap.BUKRS     = "";
                        amSap.PERNR     = codes.GetString("PERNR");
                        amSap.R_01      = codes.GetString("R_01");
                        amSap.R_02      = codes.GetString("R_02");
                        amSap.R_03      = codes.GetString("R_03");
                        amSap.R_04      = codes.GetString("R_04");
                        amSap.R_05      = codes.GetString("R_05");
                        amSap.R_06      = codes.GetString("R_06");
                        amSap.R_07      = codes.GetString("R_07");
                        amSap.GESCH     = codes.GetString("GESCH");
                        amSap.PERSK     = codes.GetString("PERSK");
                        amSap.PERSG     = codes.GetString("PERSG");
                        amSap.STRINF_ID = codes.GetString("STRINF_ID");
                        dt = DateTime.MinValue;
                        DateTime.TryParseExact(codes.GetString("DATP"), format, culture, DateTimeStyles.AssumeLocal, out dt);
                        amSap.DATP       = dt;
                        amSap.VERB       = codes.GetString("VERB");
                        amSap.SHOPNUMBER = prefix;
                        amSap.ISSHOP     = false;
                        if (amSap.SHORT == "EAH")
                        {
                            amSap.ISSHOP = true;
                            amSap.SOBID  = parentExternalCode;
                        }

                        dt = DateTime.MinValue;
                        DateTime.TryParseExact(codes.GetString("BEGDA_D"), format, culture, DateTimeStyles.AssumeLocal, out dt);
                        amSap.BEGDA_D = dt;
                        dt            = DateTime.MinValue;
                        DateTime.TryParseExact(codes.GetString("ENDDA_D"), format, culture, DateTimeStyles.AssumeLocal, out dt);
                        amSap.ENDDA_D  = dt;
                        amSap.MVZ      = DataGlobals.MVZ_EVRAZRUDA_DIVIZION;
                        amSap.MVZ_NAME = getMVZName(organizationId);
                        list.Add(amSap);
                    }
                }
            }
            return(list);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            string tipoF = Request.QueryString["Tipo"];
            string folio = Request.QueryString["Folio"];
            //string posi = Request.QueryString["Posi"];
            //string oper = Request.QueryString["Oper"];
            string   date = Request.QueryString["Date"];
            DateTime dia  = f.fechafromSAP(date);

            Conexion  con = new Conexion();
            catalogos c   = new catalogos();

            //if (!oper.Equals("N"))
            //{
            //    string href = "";
            //    string[] hh = Request.Url.AbsoluteUri.Split('/');

            //    for (int i = 0; i < hh.Length - 1; i++)
            //    {
            //        href += hh[i] + "/";
            //    }

            //}


            if (con.conectar())
            {
                if (tipoF.Equals("01"))
                {
                    IRfcTable          header = con.consultaCabecera(folio, "");
                    IRfcTable          detail = con.consultaDetalle(folio, "");
                    List <Solicitudes> ss     = new List <Solicitudes>();

                    if (header.Count > 0)
                    {
                        txtFolio.InnerHtml  = "La vigencia de la solicitud ";
                        txtFolio.InnerHtml += header.GetString("ID_SOLICITUD");
                        txtFolio.InnerHtml += " va a expirar";

                        txtPERNR.InnerText = header.GetString("PERNR") + " " + con.nombrePERNR(header.GetString("PERNR"));
                        txtDATE.InnerText  = f.fechaToOUT(f.fecha(header.GetString("FECHA")));
                        string comm = "";
                        comm += "<table border='0' style='border-width: 0px; border-style: None; width: 1150px; border-collapse: collapse;'><tbody>";
                        comm += "<tr><td class='cell12' style='width:1150px;'>Comentario</td></tr><tr><td style='text-align:left;font-size:12px;'>";
                        comm += header.GetString("COMMENTS");
                        comm += "</td></tr></tbody></table>";
                        txtCOMM.InnerHtml = comm;

                        for (int i = 0; i < detail.Count; i++)
                        {
                            detail.CurrentIndex = i;
                            Solicitudes s = new Solicitudes();
                            s.vkorg   = detail.GetString("VKORG");
                            s.vtweg   = detail.GetString("VTWEG");
                            s.spart   = detail.GetString("SPART");
                            s.kunnr   = detail.GetString("KUNNR");
                            s.pltyp   = detail.GetString("LP_ANT");
                            s.pltyp_n = detail.GetString("LP_NVO");
                            s.date    = f.fecha(detail.GetString("FECHA"));
                            if (!s.pltyp.Equals(""))
                            {
                                //s.pltyp_desc = c.getDescLP(s.pltyp);
                                s.pltyp_desc = con.getLP_Desc("", s.pltyp);
                            }
                            else
                            {
                                s.pltyp_desc = "Sin lista de precios";
                            }

                            if (!s.pltyp_n.Equals(""))
                            {
                                //s.pltyp_n_desc = c.getDescLP(s.pltyp_n);
                                s.pltyp_n_desc = con.getLP_Desc("", s.pltyp_n);
                            }
                            else
                            {
                                s.pltyp_n_desc = "Sin lista de precios";
                            }

                            s.name1 = c.getColumnaCliente(s.vkorg, s.vtweg, s.spart, s.kunnr, "NAME1");

                            ss.Add(s);
                        }
                        string tab = "";

                        tab  = "<table border='0' style='border-width: 0px; border-style: None; width: 1150px; border-collapse: collapse;'><tbody>";
                        tab += "<tr><td class='cell12'>Org. Compras</td><td class='cell12'>Canal Dist.</td><td class='cell12'>Sector</td><td class='cell12'>Cliente</td><td class='cell12'>Nombre</td><td class='cell12'>Lista anterior</td><td class='cell12'>Nueva Lista de precios</td><td class='cell12'>Vigencia</td></tr>";
                        foreach (Solicitudes s in ss)
                        {
                            string style = "";
                            if (s.error)
                            {
                                style = "background-color: red !important;";
                            }

                            tab += "<tr style='" + style + "'>";

                            if (s.error)
                            {
                                style = "white-text";
                            }
                            tab += "<td class='cell18 " + style + "'>" + s.vkorg + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.vtweg + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.spart + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.kunnr + "</td>";
                            tab += "<td class='cell17 " + style + "'>" + s.name1 + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.pltyp_desc + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.pltyp_n_desc + "</td>";
                            int com = s.date.CompareTo(dia);
                            if (!com.Equals(0))
                            {
                                tab += "<td class='cell18 " + style + "'>" + s.date.ToString("dd/MM/yyyy") + "</td>";
                            }
                            else
                            {
                                tab += "<td class='cell18 white-text' style='background-color: red !important;'>" + s.date.ToString("dd/MM/yyyy") + "</td>";
                            }

                            tab += "</tr>";
                        }
                        tab += "</tbody></table>";
                        lblTabla.InnerHtml = tab;
                    }
                    else
                    {
                        Response.Redirect("Default.aspx", false);
                    }
                }


                IRfcTable bitacora = con.getBitacora(tipoF, folio);
                string    tabla    = "";

                tabla  = "<table border='0' style='border-width: 0px; border-style: None; width: 1150px; border-collapse: collapse;'><tbody>";
                tabla += "<tr><td class='cell12'>Empleado</td><td class='cell12' style='width: 100px'>Evento</td><td class='cell12' style='width: 150px'>Fecha autorizar</td><td class='cell12' style='width: 150px'>Fecha Procesada</td><td class='cell12' style='width: 50px'>Status</td><td class='cell12'>Comentario</td></tr>";

                for (int i = 0; i < bitacora.Count; i++)
                {
                    bitacora.CurrentIndex = i;
                    tabla += "<tr><td class='cell17'>";
                    tabla += bitacora.GetString("ZUSRA") + " - " + bitacora.GetString("ZDUSA");
                    tabla += "</td>";
                    tabla += "<td class='cell18' style='width: 100px'>";
                    tabla += bitacora.GetString("ZDEEV");
                    tabla += "</td>";
                    tabla += "<td class='cell18' style='width: 150px'>";
                    tabla += bitacora.GetString("ZFEAL") + "[" + bitacora.GetString("ZHOAL") + "]";
                    tabla += "</td>";
                    tabla += "<td class='cell18' style='width: 150px'>";
                    tabla += bitacora.GetString("ZFEUM") + "[" + bitacora.GetString("ZHOUM") + "]";
                    tabla += "</td>";
                    tabla += "<td class='cell18' style='width: 50px'>";
                    tabla += bitacora.GetString("ZSWAR");
                    tabla += "</td>";
                    tabla += "<td class='cell18'>";
                    tabla += bitacora.GetString("ZCOME");
                    //tabla += "sad ads fas a s fasifu sa disad iasduasdiasud a sdaiud asi duiasdhasoidha soih sad sahdjashdiusahd sa ";
                    tabla += "</td>";
                    tabla += "</tr>";
                }

                lblBItacora.InnerHtml = tabla;
            }
        }
예제 #39
0
        /// <summary>
        /// 内部处理,根据IDOC类型与扩展类型,创建空的IDOC。
        /// </summary>
        /// <param name="IdocType">IDOC类型</param>
        /// <param name="Enhancement">IDOC扩展类型</param>
        /// <param name="CreateEmpty">如果是TRUE,将不会复制标准的IDOC段</param>
        /// <returns></returns>
        private Idoc InternalCreateIdoc(string IdocType, string Enhancement, bool CreateEmpty)
        {
            des      = SAPDestination.GetDesByName(m_sysName);
            IdocType = IdocType.ToUpper();
            IRfcFunction function = des.Repository.CreateFunction("IDOCTYPE_READ_COMPLETE");

            function["PI_IDOCTYP"].SetValue(IdocType);
            function["PI_CIMTYP"].SetValue(Enhancement);
            try
            {
                if (this.Logging)
                {
                    //   function.SaveToXML("IDOCTYPE_READ_COMPLETE_01_" + DateTime.Now.Ticks.ToString() + ".xml");
                    //   function.
                }
                function.Invoke(des);
                if (this.Logging)
                {
                    //   function.SaveToXML("IDOCTYPE_READ_COMPLETE_02_" + DateTime.Now.Ticks.ToString() + ".xml");
                }
            }
            catch (RfcAbapException exception)
            {
                if (!exception.Message.Trim().Equals("SEGMENT_UNKNOWN"))
                {
                    throw new Exception("Get IDoc failed: " + exception.ToString());
                }
                function["PI_RELEASE"].SetValue("    ");
                function.Invoke(des);
            }
            IRfcStructure structure = function.GetStructure("PE_HEADER");
            Idoc          idoc      = new Idoc(IdocType, Enhancement)
            {
                Connection  = this,
                MANDT       = this.des.Client,
                Description = structure["DESCRP"].ToString()
            };
            //IDOC类型的段定义
            IRfcTable table     = function.GetTable("PT_SEGMENTS");
            Hashtable hashtable = new Hashtable();

            for (int i = 0; i < table.RowCount; i++)
            {
                //一般来说,第一行都是主要的段定义。表示一个抬头定义。
                if (table[i]["PARPNO"].GetValue().ToString() == "0000")
                {
                    IdocSegment newSegment = new IdocSegment();
                    if (!CreateEmpty)
                    {
                        idoc.Segments.Add(newSegment);
                    }
                    newSegment.SegmentName = table[i]["SEGMENTTYP"].GetValue().ToString();
                    newSegment.SegmentType = table[i]["SEGMENTDEF"].GetValue().ToString();
                    newSegment.Description = table[i]["DESCRP"].GetValue().ToString();
                    int num2 = Convert.ToInt32(table[i]["GRP_OCCMAX"].GetValue().ToString().Substring(5, 5));
                    newSegment.MaxOccur = (num2 == 0) ? Convert.ToInt32(table[i]["OCCMAX"].GetValue().ToString().Substring(5, 5)) : num2;
                    if (newSegment.MaxOccur == 0)
                    {
                        newSegment.MaxOccur = 1;
                    }
                    string key = table[i]["NR"].GetValue().ToString();
                    hashtable.Add(key, newSegment);
                }
                else
                {
                    string      str2     = table[i]["PARPNO"].GetValue().ToString();
                    string      str3     = table[i]["NR"].GetValue().ToString();
                    IdocSegment segment2 = (IdocSegment)hashtable[str2];
                    if (segment2 == null)
                    {
                        throw new Exception("The idoc structure is not valid");
                    }
                    IdocSegment segment3 = new IdocSegment();
                    if (!CreateEmpty)
                    {
                        segment2.ChildSegments.Add(segment3);
                    }
                    segment3.SegmentName = table[i]["SEGMENTTYP"].GetValue().ToString();
                    segment3.SegmentType = table[i]["SEGMENTDEF"].GetValue().ToString();
                    segment3.Description = table[i]["DESCRP"].GetValue().ToString();
                    int num3 = Convert.ToInt32(table[i]["GRP_OCCMAX"].GetValue().ToString().Substring(5, 5));
                    segment3.MaxOccur = (num3 == 0) ? Convert.ToInt32(table[i]["OCCMAX"].GetValue().ToString().Substring(5, 5)) : num3;
                    if (segment3.MaxOccur == 0)
                    {
                        segment3.MaxOccur = 1;
                    }
                    hashtable.Add(str3, segment3);
                }
            }
            //查找段节点的结构定义。
            IRfcTable             table2     = function.GetTable("PT_FIELDS");
            IDictionaryEnumerator enumerator = hashtable.GetEnumerator();

            while (enumerator.MoveNext())
            {
                IdocSegment segment4 = (IdocSegment)enumerator.Value;
                for (int j = 0; j < table2.RowCount; j++)
                {
                    if (table2[j]["SEGMENTTYP"].GetValue().ToString().Trim() == segment4.SegmentName.Trim())
                    {
                        segment4.Fields.Add(table2[j]["FIELDNAME"].GetValue().ToString(), table2[j]["DESCRP"].GetValue().ToString(), Convert.ToInt32(table2[j]["EXTLEN"].GetValue().ToString()), Convert.ToInt32(table2[j]["BYTE_FIRST"].GetValue().ToString()) - 0x40, table2[j]["DATATYPE"].GetValue().ToString(), "");
                    }
                }
                idoc.StoreSegmentForFurtherUse(segment4.Clone());
            }
            return(idoc);
        }
예제 #40
0
        private DataTable ConvertRFCTabletoDataTable(IRfcTable table)
        {
            try
            {
                DataTable resultTable = new DataTable();

                for (int i = 0; i < table.Metadata.LineType.FieldCount; i++)
                {
                    resultTable.Columns.Add(table.Metadata.LineType[i].Name);
                }

                for (int i = 0; i < table.RowCount; i++)
                {
                    table.CurrentIndex = i;
                    DataRow row = resultTable.NewRow();

                    foreach (DataColumn item in resultTable.Columns)
                    {
                        //edited by kevin at 2011-09-23
                        #region 把RFCTable的值转换成DataSet的值
                        if (table.Metadata.LineType[item.ColumnName].DataType.ToString() == "BCD")   //BCD为值类型
                        {
                            row[item.ColumnName] = table.GetDecimal(item.ColumnName);
                        }
                        else
                        {
                            row[item.ColumnName] = table.GetObject(item.ColumnName);
                        }
                        #endregion
                    }
                    resultTable.Rows.Add(row);
                }
                return(resultTable);
            }
            catch (RfcCommunicationException e)
            {
                // network problem...
                //throw new Exception("network problem", e);
                throw new Exception(e.Message, e);
            }
            catch (RfcAbapRuntimeException e)
            {
                // serious problem on ABAP system side...
                //throw new Exception("serious problem on ABAP system side", e);
                throw new Exception(e.Message, e);
            }
            catch (RfcAbapBaseException e)
            {
                // The function module returned an ABAP exception, an ABAP message
                // or an ABAP class-based exception...
                //throw new Exception("The function module returned an ABAP exception, an ABAP message or an ABAP class-based exception...",e);
                throw new Exception(e.Message, e);
            }
            catch (RfcBaseException e)
            {
                throw e;
            }
            catch (Exception ex)
            {
                throw new Exception(message + ex.Message);
            }
        }
예제 #41
0
        /// <summary>
        /// 转换RFC函数读取过来的IDOC.
        /// </summary>
        /// <param name="tControl"></param>
        /// <param name="datarows"></param>
        /// <returns></returns>
        private Idoc processSingleIdoc(IRfcStructure tControl, IRfcTable datarows)
        {
            Idoc idoc = new Idoc
            {
                TABNAM = tControl["TABNAM"].GetValue().ToString().Trim(),
                MANDT = tControl["MANDT"].GetValue().ToString().Trim(),
                DOCNUM = tControl["DOCNUM"].GetValue().ToString().Trim(),
                DOCREL = tControl["DOCREL"].GetValue().ToString().Trim(),
                STATUS = tControl["STATUS"].GetValue().ToString().Trim(),
                DIRECT = tControl["DIRECT"].GetValue().ToString().Trim(),
                OUTMOD = tControl["OUTMOD"].GetValue().ToString().Trim(),
                EXPRSS = tControl["EXPRSS"].ToString().Trim(),
                IDOCTYP = tControl["IDOCTYP"].GetValue().ToString().Trim(),
                CIMTYP = tControl["CIMTYP"].GetValue().ToString().Trim(),
                MESTYP = tControl["MESTYP"].GetValue().ToString().Trim(),
                MESCOD = tControl["MESCOD"].GetValue().ToString().Trim(),
                MESFCT = tControl["MESFCT"].GetValue().ToString().Trim(),
                STD = tControl["STD"].GetValue().ToString().Trim(),
                STDVRS = tControl["STDVRS"].GetValue().ToString().Trim(),
                STDMES = tControl["STDMES"].GetValue().ToString().Trim(),
                SNDPOR = tControl["SNDPOR"].GetValue().ToString().Trim(),
                SNDPRT = tControl["SNDPRT"].GetValue().ToString().Trim(),
                SNDPFC = tControl["SNDPFC"].GetValue().ToString().Trim(),
                SNDPRN = tControl["SNDPRN"].GetValue().ToString().Trim(),
                SNDSAD = tControl["SNDSAD"].GetValue().ToString().Trim(),
                SNDLAD = tControl["SNDLAD"].GetValue().ToString().Trim(),
                RCVPOR = tControl["RCVPOR"].GetValue().ToString().Trim(),
                RCVPRT = tControl["RCVPRT"].GetValue().ToString().Trim(),
                RCVPFC = tControl["RCVPFC"].GetValue().ToString().Trim(),
                RCVPRN = tControl["RCVPRN"].GetValue().ToString().Trim(),
                RCVSAD = tControl["RCVSAD"].GetValue().ToString().Trim(),
                RCVLAD = tControl["RCVLAD"].GetValue().ToString().Trim(),
                CREDAT = tControl["CREDAT"].GetValue().ToString().Trim(),
                CRETIM = tControl["CRETIM"].GetValue().ToString().Trim(),
                REFINT = tControl["REFINT"].GetValue().ToString().Trim(),
                REFGRP = tControl["REFGRP"].GetValue().ToString().Trim(),
                REFMES = tControl["REFMES"].GetValue().ToString().Trim(),
                ARCKEY = tControl["ARCKEY"].GetValue().ToString().Trim(),
                SERIAL = tControl["SERIAL"].GetValue().ToString().Trim()
            };

            Hashtable hashtable = new Hashtable();
            for (int i = 0; i < datarows.RowCount; i++)
            {
                IRfcStructure structure = datarows[i];
                if (structure["DOCNUM"].GetValue().ToString().Trim().Equals(tControl["DOCNUM"].GetValue().ToString().Trim()))
                {
                    IdocSegment newSegment = new IdocSegment();
                    if (structure["PSGNUM"].GetValue().ToString() == "000000")
                    {
                        idoc.Segments.Add(newSegment);
                    }
                    else
                    {
                        IdocSegment segment2 = (IdocSegment)hashtable[structure["PSGNUM"].GetValue().ToString()];
                        if (segment2 != null)
                        {
                            segment2.ChildSegments.Add(newSegment);
                        }
                        else
                        {
                            idoc.Segments.Add(newSegment);
                        }
                    }
                    newSegment.SegmentName = structure["SEGNAM"].GetValue().ToString();
                    newSegment.SegmentNumber = structure["SEGNUM"].ToString();
                    segNameList.Add(newSegment.SegmentName);
                    string content = structure["SDATA"].GetValue().ToString();
                    newSegment.WriteDataBuffer(content, 0, 0x3e8);
                    if (!hashtable.ContainsKey(structure["SEGNUM"].GetValue().ToString()))
                    {
                        hashtable.Add(structure["SEGNUM"].GetValue().ToString(), newSegment);
                    }
                }
            }
            return idoc;
        }
예제 #42
0
        private List <OutStockDetails_Model> CreateMaterialRequestByProductDetails(ref OutStock_Model OutStockModel, IRfcTable rtb)
        {
            List <OutStockDetails_Model> lstPrdReturnDetails = null;

            if (rtb != null)
            {
                if (rtb.RowCount > 0)
                {
                    lstPrdReturnDetails = new List <OutStockDetails_Model>();
                }
                foreach (var itemRtb in rtb)
                {
                    OutStockModel.Plant     = itemRtb.GetString("WERKS");
                    OutStockModel.PlantName = itemRtb.GetString("WNAME");
                    OutStockModel.MoveType  = string.Empty;

                    OutStockDetails_Model item = new OutStockDetails_Model();
                    item.VoucherNo         = itemRtb.GetString("EBELN");
                    item.RowNo             = itemRtb.GetString("EBELP");
                    item.MaterialNo        = itemRtb.GetString("MATNR");
                    item.MaterialDesc      = itemRtb.GetString("MAKTX");
                    item.Unit              = itemRtb.GetString("MEINS");
                    item.Plant             = itemRtb.GetString("WERKS");
                    item.PlantName         = itemRtb.GetString("WNAME");
                    item.StorageLoc        = itemRtb.GetString("LGORT");
                    item.OutStockQty       = itemRtb.GetInt("BDMNG");
                    item.OldOutStockQtySAP = itemRtb.GetInt("YFSL");
                    item.WaitOutStockQty   = itemRtb.GetInt("KFSL");
                    item.RemainStockQtySAP = itemRtb.GetInt("YLKC");
                    lstPrdReturnDetails.Add(item);
                }
            }
            return(null);
        }
예제 #43
0
        //把RFCTABLE 转换成DataTable.
        public static DataTable RfcTableToDataTable(IRfcTable rfcTable)
        {
            DataTable dtRet = new DataTable();
            for (int liElement = 0; liElement < rfcTable.ElementCount; liElement++)
            {

                RfcElementMetadata rfcEMD = rfcTable.GetElementMetadata(liElement);
                //Console.WriteLine("Name:" + rfcEMD.Name);
                //Console.WriteLine("DatType:" + rfcEMD.DataType);
                dtRet.Columns.Add(rfcEMD.Name, RfcTypeConvertor.RfcTypeToSystemType(rfcEMD.DataType));
            }
            foreach (IRfcStructure row in rfcTable)
            {
                DataRow dr = dtRet.NewRow();
                for (int liElement = 0; liElement < rfcTable.ElementCount; liElement++)
                {
                    RfcElementMetadata rfcEMD = rfcTable.GetElementMetadata(liElement);
                    //Console.WriteLine("Name:" + rfcEMD.Name);
                    //Console.WriteLine("DatType:" + rfcEMD.DataType);
                    //Console.WriteLine("Object:" + row.GetValue(liElement));
                    Object o = Converts.RfcToDoNetValue(row.GetValue(liElement), rfcEMD.DataType);
                    if (String.IsNullOrWhiteSpace(o.ToString()))
                    {
                        o = "";
                    }
                    //Console.WriteLine("ConvertedValue:  " + o);
                    //Console.WriteLine("");
                    dr[rfcEMD.Name] = o;
                }
                dtRet.Rows.Add(dr);
            }
            return dtRet;
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            string tipoF = Request.QueryString["Tipo"];
            string folio = Request.QueryString["Folio"];
            string posi  = Request.QueryString["Posi"];
            string oper  = Request.QueryString["Oper"];

            Conexion  con = new Conexion();
            catalogos c   = new catalogos();

            string links = "";

            if (!oper.Equals("N"))
            {
                string   href = "";
                string[] hh   = Request.Url.AbsoluteUri.Split('/');

                for (int i = 0; i < hh.Length - 1; i++)
                {
                    href += hh[i] + "/";
                }

                links += "<a target='-blank' href='" + href + "Procesa.aspx";
                links += "?Tipo=" + tipoF + "&Folio=" + folio + "&Oper=A&Posi=" + posi;
                links += "'>Autorizar</a>&nbsp;|&nbsp;<a target='-blank' href='" + href + "Procesa.aspx";
                links += "?Tipo=" + tipoF + "&Folio=" + folio + "&Oper=R&Posi=" + posi;
                links += "'>Rechazar</a>&nbsp;&nbsp;";
            }

            lblLinks.InnerHtml = links;
            //lblLinks.InnerHtml = "<a href='Default.aspx'>Autorizar</a>&nbsp;|&nbsp;<a href='Default.aspx'>Rechazar</a>&nbsp;&nbsp;";

            if (con.conectar())
            {
                if (tipoF.Equals("01"))
                {
                    IRfcTable          header = con.consultaCabecera(folio, "");
                    IRfcTable          detail = con.consultaDetalle(folio, "");
                    List <Solicitudes> ss     = new List <Solicitudes>();

                    if (header.Count > 0)
                    {
                        string stat = con.estatusSol(tipoF, folio);
                        if (stat.Equals("Pendiente"))
                        {
                            txtFolio.InnerHtml = "Autorización de Solicitud: ";
                        }
                        if (stat.Equals("Aprobada"))
                        {
                            txtFolio.InnerHtml = "Solicitud Aprobada: ";
                        }
                        if (stat.Equals("Rechazada"))
                        {
                            txtFolio.InnerHtml = "Solicitud Rechazada: ";
                        }
                        txtFolio.InnerHtml += header.GetString("ID_SOLICITUD");
                        txtPERNR.InnerText  = header.GetString("PERNR") + " " + con.nombrePERNR(header.GetString("PERNR"));
                        txtDATE.InnerText   = f.fechaToOUT(f.fecha(header.GetString("FECHA")));
                        string comm = "";
                        comm += "<table border='0' style='border-width: 0px; border-style: None; width: 1150px; border-collapse: collapse;'><tbody>";
                        comm += "<tr><td class='cell12' style='width:1150px;'>Comentario</td></tr><tr><td style='text-align:left;font-size:12px;'>";
                        comm += header.GetString("COMMENTS");
                        comm += "</td></tr></tbody></table>";
                        txtCOMM.InnerHtml = comm;

                        for (int i = 0; i < detail.Count; i++)
                        {
                            detail.CurrentIndex = i;
                            Solicitudes s = new Solicitudes();
                            s.vkorg   = detail.GetString("VKORG");
                            s.vtweg   = detail.GetString("VTWEG");
                            s.spart   = detail.GetString("SPART");
                            s.kunnr   = detail.GetString("KUNNR");
                            s.pltyp   = detail.GetString("LP_ANT");
                            s.pltyp_n = detail.GetString("LP_NVO");
                            s.date    = f.fecha(detail.GetString("FECHA"));
                            if (!s.pltyp.Equals(""))
                            {
                                //s.pltyp_desc = c.getDescLP(s.pltyp);
                                s.pltyp_desc = con.getLP_Desc("", s.pltyp);
                            }
                            else
                            {
                                s.pltyp_desc = "Sin lista de precios";
                            }

                            if (!s.pltyp_n.Equals(""))
                            {
                                //s.pltyp_n_desc = c.getDescLP(s.pltyp_n);
                                s.pltyp_n_desc = con.getLP_Desc("", s.pltyp_n);
                            }
                            else
                            {
                                s.pltyp_n_desc = "Sin lista de precios";
                            }

                            s.name1 = c.getColumnaCliente(s.vkorg, s.vtweg, s.spart, s.kunnr, "NAME1");

                            ss.Add(s);
                        }
                        string tab = "";

                        tab  = "<table border='0' style='border-width: 0px; border-style: None; width: 1150px; border-collapse: collapse;'><tbody>";
                        tab += "<tr><td class='cell12'>Org. Compras</td><td class='cell12'>Canal Dist.</td><td class='cell12'>Sector</td><td class='cell12'>Cliente</td><td class='cell12'>Nombre</td><td class='cell12'>Lista anterior</td><td class='cell12'>Nueva Lista de precios</td><td class='cell12'>Vigencia</td></tr>";
                        foreach (Solicitudes s in ss)
                        {
                            string style = "";
                            if (s.error)
                            {
                                style = "background-color: red !important;";
                            }

                            tab += "<tr style='" + style + "'>";

                            if (s.error)
                            {
                                style = "white-text";
                            }
                            tab += "<td class='cell18 " + style + "'>" + s.vkorg + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.vtweg + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.spart + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.kunnr + "</td>";
                            tab += "<td class='cell17 " + style + "'>" + s.name1 + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.pltyp_desc + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.pltyp_n_desc + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.date.ToString("dd/MM/yyyy") + "</td>";


                            tab += "</tr>";
                        }
                        tab += "</tbody></table>";
                        lblTabla.InnerHtml = tab;
                    }
                    else
                    {
                        Response.Redirect("Default.aspx", false);
                    }
                }
                else if (tipoF.Equals("02"))
                {
                    IRfcTable           header = con.consultaCabeceraL(folio, "");
                    IRfcTable           detail = con.consultaDetalleL(folio, "");
                    List <SolicitudesL> ss     = new List <SolicitudesL>();

                    if (header.Count > 0)
                    {
                        //txtFolio.InnerText = header.GetString("ID_SOLICITUD");
                        //txtPERNR.InnerText = header.GetString("PERNR") + " " + con.nombrePERNR(header.GetString("PERNR"));
                        //txtDATE.InnerText = f.fechaToOUT(f.fecha(header.GetString("FECHA")));
                        //txtCOMM.InnerText = header.GetString("COMMENTS");
                        string stat = con.estatusSol(tipoF, folio);
                        if (stat.Equals("Pendiente"))
                        {
                            txtFolio.InnerHtml = "Autorización de Solicitud: ";
                        }
                        if (stat.Equals("Aprobada"))
                        {
                            txtFolio.InnerHtml = "Solicitud Aprobada: ";
                        }
                        if (stat.Equals("Rechazada"))
                        {
                            txtFolio.InnerHtml = "Solicitud Rechazada: ";
                        }
                        txtFolio.InnerHtml += header.GetString("ID_SOLICITUD");
                        txtPERNR.InnerText  = header.GetString("PERNR") + " " + con.nombrePERNR(header.GetString("PERNR"));
                        txtDATE.InnerText   = f.fechaToOUT(f.fecha(header.GetString("FECHA")));
                        string comm = "";
                        comm += "<table border='0' style='border-width: 0px; border-style: None; width: 1150px; border-collapse: collapse;'><tbody>";
                        comm += "<tr><td class='cell12' style='width:1150px;'>Comentario</td></tr><tr><td style='text-align:left;font-size:12px;'>";
                        comm += header.GetString("COMMENTS");
                        comm += "</td></tr></tbody></table>";
                        txtCOMM.InnerHtml = comm;


                        string vkorg = header.GetString("VKORG");
                        string vtweg = header.GetString("VTWEG");
                        string spart = header.GetString("SPART");
                        string kunnr = header.GetString("KUNNR");
                        string pltyp = header.GetString("PLTYP");
                        string matnr = header.GetString("MATNR");

                        string cabecera = "<table style='position: relative; left: 50%; margin-left: -200px'>";
                        //cabecera += "<tr>";
                        if (!vkorg.Equals(""))
                        {
                            cabecera += "<tr><td class='cell03'>Org. Compras</td>";
                            cabecera += "<td class='cell05'>" + vkorg + " " + con.ListaVKORG(vkorg, "").GetString("VTEXT") + "</td></tr>";
                        }
                        if (!vtweg.Equals(""))
                        {
                            cabecera += "<tr><td class='cell03'>Canal Distribución</td>";
                            cabecera += "<td class='cell05'>" + vtweg + " " + con.ListaVTWEG(vtweg, "", "").GetString("VTEXT") + "</td></tr>";
                        }
                        if (!spart.Equals(""))
                        {
                            cabecera += "<tr><td class='cell03'>Sector</td>";
                            cabecera += "<td class='cell05'>" + spart + " " + con.ListaSPART(spart, "", "", "", "").GetString("VTEXT") + "</td></tr>";
                        }
                        if (!kunnr.Equals(""))
                        {
                            cabecera += "<tr><td class='cell03'>Cliente</td>";
                            cabecera += "<td class='cell05'>" + kunnr + " " + con.getCliente(vkorg, vtweg, spart, kunnr).GetString("NAME1") + "</td></tr>";
                        }
                        if (!pltyp.Equals(""))
                        {
                            cabecera += "<tr><td class='cell03'>Lista de precios</td>";
                            cabecera += "<td class='cell05'>" + con.getLP_Desc("", pltyp) + "</td></tr>";
                        }
                        if (!matnr.Equals(""))
                        {
                            cabecera += "<tr><td class='cell03'>Material</td>";
                            cabecera += "<td class='cell05'>" + matnr + " " + con.columnaMatnr(matnr, "MAKTG", "X") + "</td></tr>";
                        }

                        cabecera += "<tr><td class='cell03'>Porcentaje</td>";
                        cabecera += "<td class='cell05'>" + header.GetString("PORCENTAJE") + " %" + "</td></tr>";
                        cabecera += "</table>";

                        lblFolio.InnerHtml = cabecera;


                        string tipo   = header.GetString("TIPO");
                        string obj    = "";
                        string titulo = "";
                        if (tipo.Substring(1, 1).Equals("M"))
                        {
                            obj    = "MATNR";
                            titulo = "Material";
                        }
                        else if (tipo.Substring(1, 1).Equals("G"))
                        {
                            obj    = "MATKL";
                            titulo = "Grupo de artículos";
                        }
                        else if (tipo.Substring(1, 1).Equals("P"))
                        {
                            obj    = "EBELN";
                            titulo = "Pedido de cliente";
                        }
                        else if (tipo.Substring(1, 1).Equals("L"))
                        {
                            obj    = "CHARG";
                            titulo = "Lote";
                        }

                        for (int i = 0; i < detail.Count; i++)
                        {
                            detail.CurrentIndex = i;
                            SolicitudesL s = new SolicitudesL();
                            s.obj = detail.GetString(obj);
                            //s.desc = detail.GetString("VTWEG");
                            s.desc2     = detail.GetString("MEINS");
                            s.importe   = detail.GetString("PR_ANT");
                            s.moneda    = detail.GetString("MON_ANT");
                            s.importe_n = detail.GetString("PR_NVO");
                            s.moneda_n  = detail.GetString("MON_NVO");
                            s.fecha_a   = f.fecha(detail.GetString("FECHA_INI"));
                            s.fecha_b   = f.fecha(detail.GetString("FECHA_FIN"));

                            s.escala = detail.GetString("ESCALA");

                            //if (tipo.Substring(1, 1).Equals("M"))
                            //{
                            //    s.desc = con.columnaMatnr(s.obj, "MAKTG");
                            //    s.desc2 = con.columnaMatnr(s.obj, "MEINS");
                            //}
                            //else if (tipo.Substring(1, 1).Equals("G"))
                            //{
                            //    s.desc = con.columnaMatkl(s.obj, "WGBEZ");
                            //}

                            ss.Add(s);
                        }

                        ss = obtenerDatos(ss, tipo.Substring(1, 1));
                        string tab = "";

                        tab  = "<table border='0' style='border-width: 0px; border-style: None; width: 1150px; border-collapse: collapse;'><tbody>";
                        tab += "<tr>";
                        tab += "<td class='cell10'>" + titulo + "</td>";
                        if (!tipo.Substring(1, 1).Equals("P") & !tipo.Substring(1, 1).Equals("L"))
                        {
                            tab += "<td class='cell11'>Denominación</td>";
                        }
                        //if (tipo.Substring(1, 1).Equals("M"))
                        tab += "<td class='cell12'>Unidad</td>";
                        tab += "<td class='cell12'>Precio Anterior</td>";
                        tab += "<td class='cell12'>Moneda</td>";
                        tab += "<td class='cell12'>Precio nuevo</td>";
                        tab += "<td class='cell12'>Moneda</td>";
                        tab += "<td class='cell12'>Válido de</td>";
                        tab += "<td class='cell12'>Válido a</td>";
                        tab += "<td class='cell12'>E</td>";
                        tab += "</tr>";
                        foreach (SolicitudesL s in ss)
                        {
                            string style = "";
                            if (s.error)
                            {
                                style = "background-color: red !important;";
                            }

                            tab += "<tr style='" + style + "'>";

                            if (s.error)
                            {
                                style = "white-text";
                            }
                            tab += "<td class='cell16 " + style + "'>" + s.obj + "</td>";
                            if (!tipo.Substring(1, 1).Equals("P") & !tipo.Substring(1, 1).Equals("L"))
                            {
                                tab += "<td class='cell17 " + style + "'>" + s.desc + "</td>";
                            }
                            //if (tipo.Substring(1, 1).Equals("M"))
                            tab += "<td class='cell18 " + style + "'>" + s.desc2 + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.importe + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.moneda + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.importe_n + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.moneda_n + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.fecha_a.ToString("dd/MM/yyyy") + "</td>";
                            tab += "<td class='cell18 " + style + "'>" + s.fecha_b.ToString("dd/MM/yyyy") + "</td>";

                            string   href = "";
                            string[] hh   = Request.Url.AbsoluteUri.Split('/');

                            for (int i = 0; i < hh.Length - 1; i++)
                            {
                                href += hh[i] + "/";
                            }

                            if (s.escala.Equals("X"))
                            {
                                tab += "<td><a style='color:black;font-size:12px' target ='-blank' href ='" + href + "Procesa.aspx?Tipo=" + tipoF + "&Folio=" + folio + "&Oper=N&Posi=" + posi + "'>Ver Escalas</a></td>";
                            }
                            else
                            {
                                tab += "<td></td>";
                            }


                            tab += "</tr>";
                        }
                        tab += "</tbody></table>";
                        lblTabla.InnerHtml = tab;
                    }
                }

                IRfcTable bitacora = con.getBitacora(tipoF, folio);
                string    tabla    = "";

                tabla  = "<table border='0' style='border-width: 0px; border-style: None; width: 1150px; border-collapse: collapse;'><tbody>";
                tabla += "<tr><td class='cell12'>Empleado</td><td class='cell12' style='width: 100px'>Evento</td><td class='cell12' style='width: 150px'>Fecha autorizar</td><td class='cell12' style='width: 150px'>Fecha Procesada</td><td class='cell12' style='width: 50px'>Status</td><td class='cell12'>Comentario</td></tr>";

                for (int i = 0; i < bitacora.Count; i++)
                {
                    bitacora.CurrentIndex = i;
                    tabla += "<tr><td class='cell17'>";
                    tabla += bitacora.GetString("ZUSRA") + " - " + bitacora.GetString("ZDUSA");
                    tabla += "</td>";
                    tabla += "<td class='cell18' style='width: 100px'>";
                    tabla += bitacora.GetString("ZDEEV");
                    tabla += "</td>";
                    tabla += "<td class='cell18' style='width: 150px'>";
                    tabla += bitacora.GetString("ZFEAL") + "[" + bitacora.GetString("ZHOAL") + "]";
                    tabla += "</td>";
                    tabla += "<td class='cell18' style='width: 150px'>";
                    tabla += bitacora.GetString("ZFEUM") + "[" + bitacora.GetString("ZHOUM") + "]";
                    tabla += "</td>";
                    tabla += "<td class='cell18' style='width: 50px'>";
                    tabla += bitacora.GetString("ZSWAR");
                    tabla += "</td>";
                    tabla += "<td class='cell18'>";
                    tabla += bitacora.GetString("ZCOME");
                    //tabla += "sad ads fas a s fasifu sa disad iasduasdiasud a sdaiud asi duiasdhasoidha soih sad sahdjashdiusahd sa ";
                    tabla += "</td>";
                    tabla += "</tr>";
                }

                lblBItacora.InnerHtml = tabla;
            }
        }
예제 #45
0
 public override string GetName(int ordinal)
 {
     return(IRfcTable.GetElementMetadata(ordinal).Name);
 }
        public void ReadTable()
        {
            _readTable = new FunctionReadTable();
            _readTable.eventReadTableDone += new delegateReadTableDone(functionReadTable_eventReadTableDone);
            _readTable.RowCount = this.RowCount;
            _readTable.Delimiter = this.Delimiter;
            _readTable.conditions = this.Conditions;
            _readTable.SapClient = this.SourceSystemName;
            _readTable.TableName = this.SourceTableName;

            _readTable.setFields(this.Fields);

            if (this.readOperation == OperationType.direct)
            {
                _readTable.Operation = OperationType.direct;
                _readTable.Excute();

                this.DATA = _readTable.RfcDATA;
                this.FIELDS = _readTable.RfcFIELDS;
            }
            else
            {

                //this.Fields = _readTable.getFields();
                _readTable.Operation = OperationType.read;//读取到界面
                _readTable.Excute();
                this.ExchangeData = _readTable.Result;
                this.Fields = _readTable.getFields();

            }

            //this.ReadTable(SourceSystemName, SourceTableName);
        }
예제 #47
0
        /// <summary>
        /// 转换RFC函数读取过来的IDOC.
        /// </summary>
        /// <param name="tControl"></param>
        /// <param name="datarows"></param>
        /// <returns></returns>
        private Idoc processSingleIdoc(IRfcStructure tControl, IRfcTable datarows)
        {
            Idoc idoc = new Idoc
            {
                TABNAM  = tControl["TABNAM"].GetValue().ToString().Trim(),
                MANDT   = tControl["MANDT"].GetValue().ToString().Trim(),
                DOCNUM  = tControl["DOCNUM"].GetValue().ToString().Trim(),
                DOCREL  = tControl["DOCREL"].GetValue().ToString().Trim(),
                STATUS  = tControl["STATUS"].GetValue().ToString().Trim(),
                DIRECT  = tControl["DIRECT"].GetValue().ToString().Trim(),
                OUTMOD  = tControl["OUTMOD"].GetValue().ToString().Trim(),
                EXPRSS  = tControl["EXPRSS"].ToString().Trim(),
                IDOCTYP = tControl["IDOCTYP"].GetValue().ToString().Trim(),
                CIMTYP  = tControl["CIMTYP"].GetValue().ToString().Trim(),
                MESTYP  = tControl["MESTYP"].GetValue().ToString().Trim(),
                MESCOD  = tControl["MESCOD"].GetValue().ToString().Trim(),
                MESFCT  = tControl["MESFCT"].GetValue().ToString().Trim(),
                STD     = tControl["STD"].GetValue().ToString().Trim(),
                STDVRS  = tControl["STDVRS"].GetValue().ToString().Trim(),
                STDMES  = tControl["STDMES"].GetValue().ToString().Trim(),
                SNDPOR  = tControl["SNDPOR"].GetValue().ToString().Trim(),
                SNDPRT  = tControl["SNDPRT"].GetValue().ToString().Trim(),
                SNDPFC  = tControl["SNDPFC"].GetValue().ToString().Trim(),
                SNDPRN  = tControl["SNDPRN"].GetValue().ToString().Trim(),
                SNDSAD  = tControl["SNDSAD"].GetValue().ToString().Trim(),
                SNDLAD  = tControl["SNDLAD"].GetValue().ToString().Trim(),
                RCVPOR  = tControl["RCVPOR"].GetValue().ToString().Trim(),
                RCVPRT  = tControl["RCVPRT"].GetValue().ToString().Trim(),
                RCVPFC  = tControl["RCVPFC"].GetValue().ToString().Trim(),
                RCVPRN  = tControl["RCVPRN"].GetValue().ToString().Trim(),
                RCVSAD  = tControl["RCVSAD"].GetValue().ToString().Trim(),
                RCVLAD  = tControl["RCVLAD"].GetValue().ToString().Trim(),
                CREDAT  = tControl["CREDAT"].GetValue().ToString().Trim(),
                CRETIM  = tControl["CRETIM"].GetValue().ToString().Trim(),
                REFINT  = tControl["REFINT"].GetValue().ToString().Trim(),
                REFGRP  = tControl["REFGRP"].GetValue().ToString().Trim(),
                REFMES  = tControl["REFMES"].GetValue().ToString().Trim(),
                ARCKEY  = tControl["ARCKEY"].GetValue().ToString().Trim(),
                SERIAL  = tControl["SERIAL"].GetValue().ToString().Trim()
            };

            Hashtable hashtable = new Hashtable();

            for (int i = 0; i < datarows.RowCount; i++)
            {
                IRfcStructure structure = datarows[i];
                if (structure["DOCNUM"].GetValue().ToString().Trim().Equals(tControl["DOCNUM"].GetValue().ToString().Trim()))
                {
                    IdocSegment newSegment = new IdocSegment();
                    if (structure["PSGNUM"].GetValue().ToString() == "000000")
                    {
                        idoc.Segments.Add(newSegment);
                    }
                    else
                    {
                        IdocSegment segment2 = (IdocSegment)hashtable[structure["PSGNUM"].GetValue().ToString()];
                        if (segment2 != null)
                        {
                            segment2.ChildSegments.Add(newSegment);
                        }
                        else
                        {
                            idoc.Segments.Add(newSegment);
                        }
                    }
                    newSegment.SegmentName   = structure["SEGNAM"].GetValue().ToString();
                    newSegment.SegmentNumber = structure["SEGNUM"].ToString();
                    segNameList.Add(newSegment.SegmentName);
                    string content = structure["SDATA"].GetValue().ToString();
                    newSegment.WriteDataBuffer(content, 0, 0x3e8);
                    if (!hashtable.ContainsKey(structure["SEGNUM"].GetValue().ToString()))
                    {
                        hashtable.Add(structure["SEGNUM"].GetValue().ToString(), newSegment);
                    }
                }
            }
            return(idoc);
        }
예제 #48
0
 private void WriteSegmentToTable(string ParentNr, IRfcTable tData, IdocSegment SegToWrite, int HLevel)
 {
     tData.Append();
     IRfcStructure structure = tData.CurrentRow;
     //RFCStructure structure = tData.AddRow();
     string parentNr = tData.RowCount.ToString();
     string str2 = SegToWrite.ReadDataBuffer(0, 0x3e8);
     structure["SEGNAM"].SetValue(SegToWrite.SegmentName);
     structure["MANDT"].SetValue(this.MANDT);
     structure["DOCNUM"].SetValue(this.DOCNUM);
     structure["SEGNUM"].SetValue(parentNr.PadLeft(6, "0".ToCharArray()[0]));
     structure["PSGNUM"].SetValue(ParentNr.PadLeft(6, "0".ToCharArray()[0]));
     if ((HLevel == 1) && (SegToWrite.MaxOccur > 1))
     {
         HLevel++;
     }
     if (this._SkipHLevel)
     {
         structure["HLEVEL"].SetValue("  ");
     }
     else
     {
         structure["HLEVEL"].SetValue(Convert.ToString(HLevel).PadLeft(2, "0".ToCharArray()[0]));
     }
     structure["SDATA"].SetValue(str2);
     if (SegToWrite.HasChildren)
     {
         for (int i = 0; i < SegToWrite.ChildSegments.Count; i++)
         {
             this.WriteSegmentToTable(parentNr, tData, SegToWrite.ChildSegments[i], HLevel + 1);
         }
     }
 }