//将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; }
internal SapDataReader(IRfcTable rfcTable) { if (rfcTable == null) { throw new ArgumentNullException("rfcTable"); } _rfcTable = rfcTable; RowCount = rfcTable.RowCount; ResetIndex(); }
/// <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; }
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); } }
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); } }
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); } }
/// <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(); }
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(); }
/// <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); } }
/// <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; }
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; }
//根据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; }
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); } }
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)); }
//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); } }
private void AddWhereLine(IRfcTable toptions, string whereline) { // toptions.AddRow()["TEXT"] = whereline; // IRfcStructure row = toptions.Metadata.LineType.CreateStructure(); toptions.Append(); toptions.CurrentRow.SetValue("TEXT", whereline); }
/// <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 { } }
/// <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); } } }
/// <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); }
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; }
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); }
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; } }
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; } }
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; } }
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); }
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(); } }
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); } }
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); } }
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); }
/// <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); }
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; } }
/// <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); }
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); } }
/// <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; }
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); }
//把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> | <a target='-blank' href='" + href + "Procesa.aspx"; links += "?Tipo=" + tipoF + "&Folio=" + folio + "&Oper=R&Posi=" + posi; links += "'>Rechazar</a> "; } lblLinks.InnerHtml = links; //lblLinks.InnerHtml = "<a href='Default.aspx'>Autorizar</a> | <a href='Default.aspx'>Rechazar</a> "; 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; } }
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); }
/// <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); }
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); } } }