public FunctionResult ExecuteInsert(string functionName, List<NTable> parameters, List<string> tableNames) { try { _function = _destination.Repository.CreateFunction(functionName); for (int i = 0; i < tableNames.Count; i++) { RfcStructureMetadata metaData = _destination.Repository.GetStructureMetadata(parameters[i].StructureName); IRfcTable tblInput = _function.GetTable(tableNames[i]); foreach (DataRow row in parameters[i].Parameters.Rows) { IRfcStructure structRow = metaData.CreateStructure(); foreach (DataColumn column in parameters[i].Parameters.Columns) { object obj = row[column]; structRow.SetValue(column.ToString(), obj); } tblInput.Append(structRow); } } RfcSessionManager.BeginContext(_destination); _function.Invoke(_destination); IRfcTable returnTable = _function.GetTable("NOTESRETURN"); return new FunctionResult { IsSuccess = true, Data = new List<object> { returnTable } }; } catch (Exception ex) { return new FunctionResult { IsSuccess = false, ErrorMessage = ex.ToString() }; } }
public static void IDOC_INBOUND(RfcServerContext context, IRfcFunction function) { IRfcTable control = function.GetTable("IDOC_CONTROL_REC_40"); IRfcTable data = function.GetTable("IDOC_DATA_REC_40"); DataTable dtIdocControlData = GetDataTableFromRfcTable(control); DataTable dtIdocData = GetDataTableFromRfcTable(data); for (int i = 0; i < control.RowCount; i++) { IRfcStructure tControl = control[i]; string client = ConfigFileTool.SAPGlobalSettings.GetDefaultSapCient(); string TableName = "T" + tControl["DOCNUM"].GetValue().ToString().Trim(); SapTable idoctable = new SapTable(client, TableName, "EDI_DD40"); DataTable dt = GetDataTableFromRfcTable(data); idoctable.SaveDataTable(dt); processSingleIdoc(tControl, data); } //DataTable dtcontrol = GetDataTableFromRfcTable(control); //foreach (DataRow row in dtcontrol.Rows) //{ // for (int k = 0; k < dtcontrol.Columns.Count; k++) // { // Console.WriteLine(row[k].ToString()); // } //} //DataTable dtdata = GetDataTableFromRfcTable(data); //foreach (DataRow row in dtdata.Rows) //{ // for (int k = 0; k < dtdata.Columns.Count; k++) // { // Console.WriteLine(row[k].ToString()); // } //} }
public Location LocationGetByCode(string locationCode, string warehouseCode) { Location location = null; //using (var db = new DbManager("HandHeldDB")) //{ // var reader = db.SetCommand(GetSql(43), // db.Parameter("@LocationCode", locationCode), // db.Parameter("@WarehouseCode", warehouseCode)) // .ExecuteReader(); // while (reader.Read()) // { // location = new Location { Code = (string)reader["LocationCode"], WarehouseCode = (string)reader["WarehouseCode"] }; // } //} //var conn = new DBCon.DBSQLDataContext(); //var locationli = conn.ProductLocations.Where(x => x.LocationCode == locationCode && x.WarehouseCode == warehouseCode).ToList(); //foreach (var item in locationli) //{ // location = new Location { Code = item.LocationCode, WarehouseCode = item.WarehouseCode }; //} if (location == null) { RfcDestination sapRfcDestination = SapHelper.Destination; RfcRepository sapRfcRepository = sapRfcDestination.Repository; char delimiter = ':'; RfcRepository repo = sapRfcRepository; string bapiName = "RFC_READ_TABLE"; IRfcFunction exportBapi = repo.CreateFunction(bapiName); exportBapi.SetValue("QUERY_TABLE", "ZLOCSTRC"); exportBapi.SetValue("DELIMITER", delimiter); exportBapi.SetValue("NO_DATA", ""); exportBapi.SetValue("ROWSKIPS", 0); exportBapi.SetValue("ROWCOUNT", 0); RfcStructureMetadata rfcDbOpt = repo.GetStructureMetadata("RFC_DB_OPT"); var opt = rfcDbOpt.CreateStructure(); //opt.SetValue("TEXT", @"(APRVFLAG = 'C') AND (USEFLAG = 'X')"); opt.SetValue("TEXT", string.Format(" (BINLOC = '{0}') ", locationCode)); var tableOptions = exportBapi.GetTable("OPTIONS"); tableOptions.Append(opt); var table = exportBapi.GetTable("FIELDS"); IRfcStructure articol; RfcStructureMetadata am = repo.GetStructureMetadata("RFC_DB_FLD"); articol = am.CreateStructure(); articol.SetValue("FIELDNAME", "BINLOC"); table.Append(articol); articol = am.CreateStructure(); articol.SetValue("FIELDNAME", "LGORT"); table.Append(articol); articol = am.CreateStructure(); articol.SetValue("FIELDNAME", "USEFLAG"); table.Append(articol); exportBapi.SetValue("FIELDS", table); exportBapi.SetValue("OPTIONS", tableOptions); exportBapi.Invoke(sapRfcDestination); IRfcTable detail2 = exportBapi.GetTable("DATA"); string[] value; foreach (var item in detail2) { value = item.GetString("WA").Replace(" ", "").Split(delimiter); if (((string)value.GetValue(0)).Length != 10) { continue; } if ((string)value.GetValue(2) != "X") { continue; } if (((string)value.GetValue(1)).ToUpper() != warehouseCode.ToUpper()) { continue; } location = new Location(); location.Code = (string)value.GetValue(0); location.WarehouseCode = (string)value.GetValue(1); //using (var db = new DbManager("HandHeldDB")) //{ // //insert new data // db.SetCommand(GetSql(88), // db.Parameter("@LocationCode", location.Code), // db.Parameter("@WarehouseCode", location.WarehouseCode), // db.Parameter("@isUse", location.IsUse) // ).ExecuteNonQuery(); //} break; } } return(location); //List<SAPProxyII.ZLOCSTRC> locations; //string key = string.Format(LOCATION_ALL_KEY, DateTime.Now.Date.Day); //string keyOld = string.Format(LOCATION_ALL_KEY, DateTime.Now.AddDays(-1).Day); //object obj1 = _cacheManager.Get(keyOld); //object obj2 = _cacheManager.Get(key); //if (obj1 != null) // _cacheManager.Remove(keyOld); //if (obj2 != null) // locations = (List<SAPProxyII.ZLOCSTRC>)obj2; //else //{ // using (var sapConnection = new SAP.Connector.SAPConnection(GlobalContext.SapDestination)) // { // using (var prx = new SAPProxyII.UWProxy()) // { // prx.Connection = sapConnection; // SAPProxyII.ZLOCSTRCTable Tables = new SAPProxyII.ZLOCSTRCTable(); // prx.Zdd_Handheld_Get_Zlockstrc(ref Tables); // locations = (List<SAPProxyII.ZLOCSTRC>)CollectionHelper.ConvertTo<SAPProxyII.ZLOCSTRC>(Tables.ToADODataTable()); // _cacheManager.Add(key, locations); // } // } //} //var location = locations.Find(p => p.Binloc == locationCode); //if (location != null) //{ // var locat = new Location(); // locat.Code = location.Binloc; // locat.LocationType = location.Loctype; // return locat; //} //else // return null; }
public string SAPData() { try { String username = (string)(Session["username"]); RfcConfigParameters rfc = new RfcConfigParameters();////Assign values in rfcconfigparameters rfc.Add(RfcConfigParameters.Name, ConfigurationManager.AppSettings["Name"].ToString()); rfc.Add(RfcConfigParameters.AppServerHost, ConfigurationManager.AppSettings["ServerHost"].ToString()); rfc.Add(RfcConfigParameters.Client, ConfigurationManager.AppSettings["Client"].ToString()); rfc.Add(RfcConfigParameters.User, ConfigurationManager.AppSettings["User"].ToString()); rfc.Add(RfcConfigParameters.Password, ConfigurationManager.AppSettings["Password"].ToString()); rfc.Add(RfcConfigParameters.SystemNumber, ConfigurationManager.AppSettings["SystemNumber"].ToString()); rfc.Add(RfcConfigParameters.Language, ConfigurationManager.AppSettings["Language"].ToString());; rfc.Add(RfcConfigParameters.PoolSize, ConfigurationManager.AppSettings["PoolSize"].ToString()); RfcDestination mydestination = RfcDestinationManager.GetDestination(rfc); RfcRepository myrepository = mydestination.Repository; IRfcFunction myfunction = myrepository.CreateFunction("ZSP_VEND_PO_DETAILS"); username = vendor_code.Value; myfunction.SetValue("I_LIFNR", username); String fd = Session["VendorPoDetailsF_date"].ToString(); String ed = Session["VendorPoDetailsT_date"].ToString(); myfunction.SetValue("I_FROM_AEDAT", fd); myfunction.SetValue("I_TO_AEDAT", ed); myfunction.Invoke(mydestination); IRfcTable messageTable = myfunction.GetTable("ITAB", true); int rowIndex = 0; foreach (IRfcStructure row in messageTable) { String LIFNR = row.GetString("LIFNR"); String EBELN = row.GetString("EBELN"); String BSART = row.GetString("BSART"); String WERKS = row.GetString("WERKS"); String AEDAT = row.GetString("AEDAT"); String EBELP = row.GetString("EBELP"); String MENGE = row.GetString("MENGE"); String MEINS = row.GetString("MEINS"); String NETWR = row.GetString("NETWR"); String DMBTR = row.GetString("DMBTR"); String DELIV_DATE = row.GetString("DELIV_DATE"); block2 += "<tr>"; block2 += "<td>" + LIFNR + "</td>"; block2 += "<td>" + EBELN + "</td>"; block2 += "<td>" + BSART + "</td>"; block2 += "<td>" + WERKS + "</td>"; block2 += "<td>" + AEDAT + "</td>"; block2 += "<td>" + EBELP + "</td>"; block2 += "<td>" + MENGE + "</td>"; block2 += "<td>" + MEINS + "</td>"; block2 += "<td>" + NETWR + "</td>"; block2 += "<td>" + DMBTR + "</td>"; block2 += "<td>" + DELIV_DATE + "</td>"; block2 += "</tr>"; rowIndex = rowIndex + 1; } return(block2); } catch (Exception ex) { } return(block2); }
// SD05 - Inteface de UM - Comunicação // Funcao - ZFXI_SD05C //[RfcServerFunction(Name = "ZGXI_SD05")] public static void StfcInterfaceUM(RfcServerContext context, IRfcFunction function) { // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Mandar salvar o Condicao de Pagamento UnidadeMedidaRepository unidadeMedidaRepository = new UnidadeMedidaRepository(); // Implementa repositorio antes do Foreach para evitar duplicações UnidadeMedida unidadeMedida = new UnidadeMedida(); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<UnidadeMedida> fromDB = unidadeMedidaRepository.ObterTodos(); foreach (UnidadeMedida dados in fromDB) { unidadeMedidaRepository.Excluir(dados); } } // ZTBSD063 IRfcTable it_unidadeMedida = function.GetTable("IT_UM"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO - BAPIRET2 RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); int v_cont = 0; foreach (IRfcStructure row in it_unidadeMedida) { unidadeMedida.descricao = row.GetString("MSEHL"); unidadeMedida.id_unidademedida = row.GetString("MSEHI"); // Pacote unidadeMedida.pacote = row.GetString("PACOTE"); unidadeMedida.dimensao = row.GetString("DIMID"); unidadeMedida.aprestecnica = row.GetString("MSEH3"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); unidadeMedida.data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao unidadeMedida.hora_criacao = row.GetString("ERZET"); //Console.WriteLine("CODIGO: " + unidadeMedida.id_unidademedida + " DESCRICAO: " + unidadeMedida.dimensao); try { v_cont = v_cont + 1; if (deletar == ' ') { IList<UnidadeMedida> fromDB = unidadeMedidaRepository.ObterTodosComCampo("id_material", unidadeMedida.id_unidademedida); foreach (UnidadeMedida dados in fromDB) { unidadeMedidaRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro e a descricao do material Console.Write("entrou no exception"); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir a Unidade de Medida: " + unidadeMedida.descricao + " - Id: " + unidadeMedida.id_unidademedida); retorno.Insert(linha_retorno); } unidadeMedidaRepository.Salvar(unidadeMedida); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso: " + v_cont); retornoSucesso.Insert(linha_retorno); }
public List <PEntidades.FV60XVerificar> exec_connSAP(string xprov, string xxblrn, string xbladti, string xbladtf) //public List<PEntidades.FV60> exec_connSAP(List<string> listaProveed, string xxblrn, string xbladti, string xbladtf) { PPersistencia.SAPConn psc = new PPersistencia.SAPConn(); List <ParamsCallSAP> list = new List <ParamsCallSAP>(); //tipo de parametro S-tring B-oolean Y-byte D-ecimal ParamsCallSAP pr = new ParamsCallSAP(); pr = new ParamsCallSAP(); pr.NameVar = "XBLNR"; pr.ValVar = xxblrn; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); pr.NameVar = "BLDATI"; pr.ValVar = xbladti; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); pr.NameVar = "BLDATF"; pr.ValVar = xbladtf; pr.TipVar = "S"; list.Add(pr); List <TablasCallSAP> listT = new List <TablasCallSAP>(); TablasCallSAP tr = new TablasCallSAP(); List <ParamsCallSAP> listTb = new List <ParamsCallSAP>(); pr = new ParamsCallSAP(); pr.NameVar = "LIFNR"; pr.ValVar = xprov; //"1000082"; "1000072" 1000037; algunos acreedores para FV60 - gonher pr.TipVar = "S"; listTb.Add(pr); tr.TablaVar = "PROVEEDOR_TB"; tr.CamposVar = listTb; listT.Add(tr); IRfcFunction resCon = psc.conSAP("Z_DFAC_FV60_LIST", list, listT); List <PEntidades.FV60XVerificar> listF = new List <PEntidades.FV60XVerificar>(); PEntidades.FV60XVerificar objFV60; IRfcTable tb = resCon.GetTable(0); if (tb.Count == 0) { msg = "No se encontraron resultados"; } for (int o = 0; o < tb.Count; o++) { tb.CurrentIndex = o; objFV60 = new PEntidades.FV60XVerificar(); objFV60.BUKRS = tb.CurrentRow.GetString("BUKRS"); objFV60.BELNR = tb.CurrentRow.GetString("BELNR"); objFV60.GJAHR = tb.CurrentRow.GetString("GJAHR"); objFV60.BLDAT = tb.CurrentRow.GetString("BLDAT"); objFV60.BUDAT = tb.CurrentRow.GetString("BUDAT"); objFV60.XBLNR = tb.CurrentRow.GetString("XBLNR"); objFV60.WAERS = tb.CurrentRow.GetString("WAERS"); objFV60.KURSF = decimal.Parse(tb.CurrentRow.GetString("KURSF")); objFV60.LIFNR = tb.CurrentRow.GetString("LIFNR"); objFV60.DMBTR = decimal.Parse(tb.CurrentRow.GetString("DMBTR")); objFV60.WRBTR = decimal.Parse(tb.CurrentRow.GetString("WRBTR")); objFV60.WMWST = decimal.Parse(tb.CurrentRow.GetString("WMWST")); objFV60.TIPOLINEA = tb.CurrentRow.GetString("TIPOLINEA"); objFV60.ZCOUNT = tb.CurrentRow.GetInt("ZCOUNT"); objFV60.INCIDENCIA = tb.CurrentRow.GetString("INCIDENCIA"); //objFV60.InsidenciaPersonal = tb.CurrentRow.GetString("InsidenciaPersonal"); //objFV60.DescripcionErrorSAP = tb.CurrentRow.GetString("DescripcionErrorSAP"); //objFV60.DescripcionErrorSAT = tb.CurrentRow.GetString("DescripcionErrorSAT"); if (tb.CurrentRow.GetString("MSG_VARIOS") == null) { objFV60.msgVarios = ""; } else { objFV60.msgVarios = tb.CurrentRow.GetString("MSG_VARIOS"); } objFV60.esPrimerCarga = false; listF.Add(objFV60); } return(listF); }
public String CriaOrdem(string TPO, string Equipamento, string centro_p, string desc_ordem, string dt_ini, string dt_fim, string desc_breve, string Operacao, string Complemento_ChavePM03, string Componente_L, string Componente_N) { IRfcFunction objRfc = repo.CreateFunction("ZRFC_FROTAWEB_CRIAORDEM"); /*CABEÇALHO*/ IRfcStructure objEstrutura = objRfc.GetStructure("I_CAB"); objEstrutura.SetValue("TP_ORDEM", TPO); objEstrutura.SetValue("EQUIPAMENTO", Equipamento); if (centro_p == "0301" || centro_p == "301") { centro_p = "B301"; } objEstrutura.SetValue("CENTRO_PLANEJAMENTO", centro_p); objEstrutura.SetValue("DESC_ORDEM", desc_ordem); objEstrutura.SetValue("DT_INICIO", dt_ini); objEstrutura.SetValue("DT_FIM", dt_fim); /* OPERAÇÃO */ /*LAY-OUT: * CASO A CHAVE SEJA PM01(SERVIÇOS INTERNO/PRÓPRIO), BASTA CHAMAR ESTE BLOCO, CASO SEJA PM03(SERVIÇOS DE TERCEIROS, DEVE-SE CHAMAR ESTE BLOCO E O BLOCO LOGO ABAIXO DE COMPLEMENTO EM CASO DE PM03) * COMO PODEM TER DIVERSAS OPERAÇÕES, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO: * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;) * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (]) * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(]) * OPERACAO;CENTRO_TRABALHO; CHAVE_CONTROLE;TEXTO_BREVE;TEXTO_DESC;CENTRO */ if (!String.IsNullOrEmpty(Operacao)) { string valor = Operacao; string[] linhas = Regex.Split(valor, "]"); string[] Colunas; string OPERACAO, CENTRO_TRABALHO, CHAVE_CONTROLE, TEXTO_BREVE, TEXTO_DESC, CENTRO; for (int i = 0; i <= linhas.Length - 1; i++) { Colunas = Regex.Split(linhas[i], ";"); OPERACAO = Colunas[0]; CENTRO_TRABALHO = Colunas[1]; CHAVE_CONTROLE = Colunas[2]; TEXTO_BREVE = Colunas[3]; TEXTO_DESC = Colunas[4]; CENTRO = Colunas[5]; IRfcTable objPM01 = objRfc.GetTable("T_PM01"); objPM01.Append(); objPM01.SetValue("OPERACAO", OPERACAO); objPM01.SetValue("CENTRO_TRABALHO", CENTRO_TRABALHO); objPM01.SetValue("CHAVE_CONTROLE", CHAVE_CONTROLE); objPM01.SetValue("TEXTO_BREVE", TEXTO_BREVE); objPM01.SetValue("TEXTO_DESC", TEXTO_DESC); objPM01.SetValue("CENTRO", CENTRO); } } /* COMPLEMENTO EM CASO DE CHAVE PM03 - SERVIÇO EXTERNO/TERCEIRO */ /*LAY-OUT: * CASO A CHAVE SEJA PM03(SERVIÇOS EXTERNOS/TERCEIRO) NO BLOCO ACIMA, É PRECISO CHAMAR ESTE BLOCO) * COMO PODEM TER DIVERSOS COMPLEMENTOS OPERAÇÕES DE OPERAÇÃO COM CHAVE PM03, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO: * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;) * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (]) * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(]) * OPERACAO; CENTRO_TRABALHO; CHAVE_CONTROLE; TEXTO_BREVE; TEXTO_DESC; CENTRO; GRUPO_MERCADORIAS; GRUPO_COMPRAS; REQUISITANTE; FORNECEDOR; ACOMPANHAMENTO; SERVICO; QUANTIDADE; UN_MEDIDA; RECEBEDOR; */ if (!String.IsNullOrEmpty(Complemento_ChavePM03)) { string valor = Complemento_ChavePM03; string[] linhas = Regex.Split(valor, "]"); string[] Colunas; string OPERACAO, CENTRO_TRABALHO, CHAVE_CONTROLE, TEXTO_BREVE, TEXTO_DESC, CENTRO, GRUPO_MERCADORIAS, GRUPO_COMPRAS, REQUISITANTE, FORNECEDOR, ACOMPANHAMENTO, SERVICO, QUANTIDADE, UN_MEDIDA, RECEBEDOR, ORG_COMPRAS; for (int i = 0; i <= linhas.Length - 1; i++) { Colunas = Regex.Split(linhas[i], ";"); OPERACAO = Colunas[0]; CENTRO_TRABALHO = Colunas[1]; CHAVE_CONTROLE = Colunas[2]; TEXTO_BREVE = Colunas[3]; TEXTO_DESC = Colunas[4]; CENTRO = Colunas[5]; GRUPO_MERCADORIAS = Colunas[6]; GRUPO_COMPRAS = Colunas[7]; REQUISITANTE = Colunas[8]; FORNECEDOR = Colunas[9]; ACOMPANHAMENTO = Colunas[10]; SERVICO = Colunas[11]; QUANTIDADE = Colunas[12]; UN_MEDIDA = Colunas[13]; RECEBEDOR = Colunas[14]; ORG_COMPRAS = Colunas[15]; IRfcTable objPM03 = objRfc.GetTable("T_PM03"); objPM03.Append(); objPM03.SetValue("OPERACAO", OPERACAO); objPM03.SetValue("CENTRO_TRABALHO", CENTRO_TRABALHO); objPM03.SetValue("CHAVE_CONTROLE", CHAVE_CONTROLE); objPM03.SetValue("TEXTO_BREVE", TEXTO_BREVE); objPM03.SetValue("TEXTO_DESC", TEXTO_DESC); objPM03.SetValue("CENTRO", CENTRO); objPM03.SetValue("GRUPO_MERCADORIAS", GRUPO_MERCADORIAS); objPM03.SetValue("GRUPO_COMPRAS", GRUPO_COMPRAS); objPM03.SetValue("REQUISITANTE", REQUISITANTE); objPM03.SetValue("FORNECEDOR", FORNECEDOR); objPM03.SetValue("ACOMPANHAMENTO", ACOMPANHAMENTO); objPM03.SetValue("SERVICO", SERVICO); objPM03.SetValue("QUANTIDADE", QUANTIDADE); objPM03.SetValue("UN_MEDIDA", UN_MEDIDA); objPM03.SetValue("RECEBEDOR", RECEBEDOR); objPM03.SetValue("Org_compras", ORG_COMPRAS); } } /*COMPONENTE L - PEÇAS PRÓPRIAS/ESTOQUE*/ /*COMPONENTES/PEÇAS DO ESTOQUE DA ORDEM DE MANUTENÇÃO*/ /*LAY-OUT: * COMO PODEM TER DIVERSAS PEÇAS, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO: * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;) * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (]) * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(]) * OPERACAO;TEXTO_DESC; UN_MEDIDA;COMPONENTE;QUANT_NECESSARIA;TP_ITEM;DEPOSITO;CENTRO]TEXTO_DESC; UN_MEDIDA;COMPONENTE;QUANT_NECESSARIA;TP_ITEM;DEPOSITO;CENTRO */ if (!String.IsNullOrEmpty(Componente_L)) { string valor = Componente_L; string[] linhas = Regex.Split(valor, "]"); string[] Colunas; string OPERACAO, TEXTO_DESC, UN_MEDIDA, COMPONENTE, QUANT_NECESSARIA, TP_ITEM, DEPOSITO, CENTRO; for (int i = 0; i <= linhas.Length - 1; i++) { Colunas = Regex.Split(linhas[i], ";"); OPERACAO = Colunas[0]; TEXTO_DESC = Colunas[1]; UN_MEDIDA = Colunas[2]; COMPONENTE = Colunas[3]; QUANT_NECESSARIA = Colunas[4]; TP_ITEM = Colunas[5]; DEPOSITO = Colunas[6]; CENTRO = Colunas[7]; IRfcTable objCompL = objRfc.GetTable("T_COMPL"); objCompL.Append(); objCompL.SetValue("OPERACAO", OPERACAO); objCompL.SetValue("TEXTO_DESC", TEXTO_DESC); objCompL.SetValue("UN_MEDIDA", UN_MEDIDA); objCompL.SetValue("COMPONENTE", COMPONENTE); objCompL.SetValue("QUANT_NECESSARIA", QUANT_NECESSARIA); objCompL.SetValue("TP_ITEM", TP_ITEM); objCompL.SetValue("DEPOSITO", DEPOSITO); objCompL.SetValue("CENTRO", CENTRO); } } /*COMPONENTE N - PEÇAS COMPRADAS/DÉBITO DIRETO*/ /*COMPONENTES/PEÇAS COMPRA DIRETA DA ORDEM DE MANUTENÇÃO*/ /*LAY-OUT: * COMO PODEM TER DIVERSAS PEÇAS, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO: * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;) * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (]) * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(]) * OPERACAO;OPERACAO, GRUPO_COMPRAS; REQUISITANTE; FORNECEDOR; ACOMPANHAMENTO; UN_MEDIDA; COMPONENTE; QUANT_NECESSARIA; TP_ITEM; DEPOSITO; CENTRO; RECEBEDOR; MAT_FORNECEDOR] */ if (!String.IsNullOrEmpty(Componente_N)) { string valor = Componente_N; string[] linhas = Regex.Split(valor, "]"); string[] Colunas; string OPERACAO, GRUPO_COMPRAS, REQUISITANTE, FORNECEDOR, ACOMPANHAMENTO, UN_MEDIDA, COMPONENTE, QUANT_NECESSARIA, TP_ITEM, DEPOSITO, CENTRO, RECEBEDOR, MAT_FORNECEDOR, ORG_COMPRAS, TEXTO_DESC; for (int i = 0; i <= linhas.Length - 1; i++) { Colunas = Regex.Split(linhas[i], ";"); OPERACAO = Colunas[0]; GRUPO_COMPRAS = Colunas[1]; REQUISITANTE = Colunas[2]; FORNECEDOR = Colunas[3]; ACOMPANHAMENTO = Colunas[4]; UN_MEDIDA = Colunas[5]; COMPONENTE = Colunas[6]; QUANT_NECESSARIA = Colunas[7]; TP_ITEM = Colunas[8]; DEPOSITO = Colunas[9]; CENTRO = Colunas[10]; RECEBEDOR = Colunas[11]; MAT_FORNECEDOR = Colunas[12]; ORG_COMPRAS = Colunas[13]; TEXTO_DESC = Colunas[14]; IRfcTable objCompN = objRfc.GetTable("T_COMPN"); objCompN.Append(); objCompN.SetValue("OPERACAO", OPERACAO); objCompN.SetValue("GRUPO_COMPRAS", GRUPO_COMPRAS); objCompN.SetValue("REQUISITANTE", REQUISITANTE); objCompN.SetValue("FORNECEDOR", FORNECEDOR); objCompN.SetValue("ACOMPANHAMENTO", ACOMPANHAMENTO); objCompN.SetValue("UN_MEDIDA", UN_MEDIDA); objCompN.SetValue("COMPONENTE", COMPONENTE); objCompN.SetValue("QUANT_NECESSARIA", QUANT_NECESSARIA); objCompN.SetValue("TP_ITEM", TP_ITEM); objCompN.SetValue("DEPOSITO", DEPOSITO); objCompN.SetValue("CENTRO", CENTRO); objCompN.SetValue("RECEBEDOR", RECEBEDOR); objCompN.SetValue("MAT_FORNECEDOR", MAT_FORNECEDOR); objCompN.SetValue("ORG_COMPRAS", ORG_COMPRAS); objCompN.SetValue("TEXTO_DESC", TEXTO_DESC); } } objRfc.Invoke(dest); IRfcTable tabelaSAP = objRfc.GetTable("T_RETURN_REQ"); return(tabelaSAP.ToString() + " / " + objRfc.GetTable("T_RETURN_BAPI").ToString()); }
public void anticiposopen(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_DOCUMENTO, string P_RUT, string P_SOCIEDAD, string P_LAND, string TipoBusqueda) { ObjDatosAnticipos.Clear(); Retorno.Clear(); protesto = ""; errormessage = ""; IRfcTable lt_t_documentos; IRfcStructure lt_retorno; // PART_ABIERTAS PART_ABIERTAS_resp; T_DOCUMENTOS ANTICIPOS_resp; ESTADO retorno_resp; //Conexion a SAP //connectorSap.idioma = "ES"; //connectorSap.idSistema = "INS"; //connectorSap.instancia = "00"; //connectorSap.mandante = "400"; //connectorSap.paswr = P_PASSWORD; //connectorSap.sapRouter = "/H/64.76.139.78/H/"; //connectorSap.user = P_UNAME; //connectorSap.server = "10.9.100.4"; //frm.txtIdSistema.Text = txtIdSistema.Text; //frm.txtInstancia.Text = txtInstancia.Text; //frm.txtMandante.Text = txtMandante.Text; //frm.txtSapRouter.Text = txtSapRouter.Text; //frm.txtServer.Text = txtServer.Text; //frm.txtIdioma.Text = txtIdioma.Text; 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_ANT"); BapiGetUser.SetValue("DOCUMENTO", P_DOCUMENTO); BapiGetUser.SetValue("LAND", P_LAND); BapiGetUser.SetValue("RUT", P_RUT); BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD); //BapiGetUser.SetValue("PROT", P_PROTESTO); BapiGetUser.Invoke(SapRfcDestination); protesto = BapiGetUser.GetString("PE_PROTESTADO"); lt_t_documentos = BapiGetUser.GetTable("T_DOCUMENTOS"); lt_retorno = BapiGetUser.GetStructure("SE_ESTATUS"); //lt_PART_ABIERTAS = BapiGetUser.GetTable("ZCLSP_TT_LISTA_DOCUMENTOS"); try { if (lt_t_documentos.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_t_documentos.RowCount; i++) { try { lt_t_documentos.CurrentIndex = i; ANTICIPOS_resp = new T_DOCUMENTOS(); ANTICIPOS_resp.NDOCTO = lt_t_documentos[i].GetString("NDOCTO"); string Monto = ""; int indice = 0; //******* if (lt_t_documentos[i].GetString("MONEDA") == "CLP") { string Valor = lt_t_documentos[i].GetString("MONTOF").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); string Cualquiernombre = string.Format("{0:0,0}", ValorAux); ANTICIPOS_resp.MONTOF = Cualquiernombre; } else { string moneda = Convert.ToString(lt_t_documentos[i].GetString("MONTOF")); decimal ValorAux = Convert.ToDecimal(moneda); ANTICIPOS_resp.MONTOF = string.Format("{0:0,0.##}", ValorAux); } //if (lt_t_documentos[i].GetString("MONTOF") == "") //{ // indice = lt_t_documentos[i].GetString("MONTO").IndexOf(','); // Monto = lt_t_documentos[i].GetString("MONTO").Substring(0, indice - 1); // ANTICIPOS_resp.MONTOF = Monto; //} //else //{ // ANTICIPOS_resp.MONTOF = lt_t_documentos[i].GetString("MONTOF"); //} ANTICIPOS_resp.MONEDA = lt_t_documentos[i].GetString("MONEDA"); if (lt_t_documentos[i].GetString("MONEDA") == "CLP") { string Valor = lt_t_documentos[i].GetString("MONTO").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); string Cualquiernombre = string.Format("{0:0,0}", ValorAux); ANTICIPOS_resp.MONTO = Cualquiernombre; } else { string moneda = Convert.ToString(lt_t_documentos[i].GetString("MONTO")); decimal ValorAux = Convert.ToDecimal(moneda); ANTICIPOS_resp.MONTO = string.Format("{0:0,0.##}", ValorAux); } //if (lt_t_documentos[i].GetString("MONTO") == "") //{ // indice = lt_t_documentos[i].GetString("MONTO").IndexOf(','); // Monto = lt_t_documentos[i].GetString("MONTO").Substring(0, indice - 1); // ANTICIPOS_resp.MONTO = Monto; //} //else //{ // ANTICIPOS_resp.MONTO = lt_t_documentos[i].GetString("MONTO"); //} ANTICIPOS_resp.MONEDA = lt_t_documentos[i].GetString("MONEDA"); ANTICIPOS_resp.FECVENCI = lt_t_documentos[i].GetString("FECVENCI"); ANTICIPOS_resp.CONTROL_CREDITO = lt_t_documentos[i].GetString("CONTROL_CREDITO"); ANTICIPOS_resp.CEBE = lt_t_documentos[i].GetString("CEBE"); ANTICIPOS_resp.COND_PAGO = lt_t_documentos[i].GetString("COND_PAGO"); ANTICIPOS_resp.RUTCLI = lt_t_documentos[i].GetString("RUTCLI"); ANTICIPOS_resp.NOMCLI = lt_t_documentos[i].GetString("NOMCLI"); ANTICIPOS_resp.ESTADO = lt_t_documentos[i].GetString("ESTADO"); ANTICIPOS_resp.ICONO = lt_t_documentos[i].GetString("ICONO"); ANTICIPOS_resp.DIAS_ATRASO = lt_t_documentos[i].GetString("DIAS_ATRASO"); //if (lt_t_documentos[i].GetString("MONTOF_ABON") == "") //{ // indice = lt_t_documentos[i].GetString("MONTO_ABONADO").IndexOf(','); // Monto = lt_t_documentos[i].GetString("MONTO_ABONADO").Substring(0, indice - 1); // ANTICIPOS_resp.MONTOF = Monto; //} //else //{ // ANTICIPOS_resp.MONTOF_ABON = lt_t_documentos[i].GetString("MONTOF_ABON"); //} if (lt_t_documentos[i].GetString("MONEDA") == "CLP") { string Valor = lt_t_documentos[i].GetString("MONTOF_ABON").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); string Cualquiernombre = string.Format("{0:0,0}", ValorAux); ANTICIPOS_resp.MONTOF_ABON = Cualquiernombre; } else { string moneda = Convert.ToString(lt_t_documentos[i].GetString("MONTOF_ABON")); decimal ValorAux = Convert.ToDecimal(moneda); ANTICIPOS_resp.MONTOF_ABON = string.Format("{0:0,0.##}", ValorAux); } //if (lt_t_documentos[i].GetString("MONTOF_PAGAR") == "") //{ // indice = lt_t_documentos[i].GetString("MONTO_PAGAR").IndexOf(','); // Monto = lt_t_documentos[i].GetString("MONTO_PAGAR").Substring(0, indice - 1); // ANTICIPOS_resp.MONTOF = Monto; //} //else //{ // ANTICIPOS_resp.MONTOF_PAGAR = lt_t_documentos[i].GetString("MONTOF_PAGAR"); //} if (lt_t_documentos[i].GetString("MONEDA") == "CLP") { string Valor = lt_t_documentos[i].GetString("MONTOF_PAGAR").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); string Cualquiernombre = string.Format("{0:0,0}", ValorAux); ANTICIPOS_resp.MONTOF_PAGAR = Cualquiernombre; } else { string moneda = Convert.ToString(lt_t_documentos[i].GetString("MONTOF_PAGAR")); decimal ValorAux = Convert.ToDecimal(moneda); ANTICIPOS_resp.MONTOF_PAGAR = string.Format("{0:0,0.##}", ValorAux); } ANTICIPOS_resp.NREF = lt_t_documentos[i].GetString("NREF"); ANTICIPOS_resp.FECHA_DOC = lt_t_documentos[i].GetString("FECHA_DOC"); ANTICIPOS_resp.COD_CLIENTE = lt_t_documentos[i].GetString("COD_CLIENTE"); ANTICIPOS_resp.SOCIEDAD = lt_t_documentos[i].GetString("SOCIEDAD"); ANTICIPOS_resp.CLASE_DOC = lt_t_documentos[i].GetString("CLASE_DOC"); ANTICIPOS_resp.CLASE_CUENTA = lt_t_documentos[i].GetString("CLASE_CUENTA"); ANTICIPOS_resp.CME = lt_t_documentos[i].GetString("CME"); ANTICIPOS_resp.ACC = lt_t_documentos[i].GetString("ACC"); ObjDatosAnticipos.Add(ANTICIPOS_resp); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } } else { MessageBox.Show("No existe(n) registro(s)"); } String Mensaje = ""; if (lt_retorno.Count > 0) { retorno_resp = new ESTADO(); for (int i = 0; i < lt_retorno.Count(); i++) { // lt_retorno.CurrentIndex = i; retorno_resp.TYPE = lt_retorno.GetString("TYPE"); retorno_resp.ID = lt_retorno.GetString("ID"); retorno_resp.NUMBER = lt_retorno.GetString("NUMBER"); retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE"); retorno_resp.LOG_NO = lt_retorno.GetString("LOG_NO"); retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO"); retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE"); retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1"); if (lt_retorno.GetString("TYPE") == "S") { Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1"); } retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2"); retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3"); retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4"); retorno_resp.PARAMETER = lt_retorno.GetString("PARAMETER"); retorno_resp.ROW = lt_retorno.GetString("ROW"); retorno_resp.FIELD = lt_retorno.GetString("FIELD"); retorno_resp.SYSTEM = lt_retorno.GetString("SYSTEM"); Retorno.Add(retorno_resp); } //System.Windows.MessageBox.Show(Mensaje); } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } else { errormessage = retval; } GC.Collect(); }
/// <summary> /// 取得商品(作品)主檔 /// </summary> /// <param name="P_DATE_from">異動日期起始,yyyyMMdd</param> /// <param name="P_DATE_TO">異動日期迄止,yyyyMMdd</param> /// <param name="P_DESC">作品名</param> /// <param name="P_YEAR">年代,傳入格式%yyyy%yyyy%,兩個年份間,及前後加百分比</param> /// <param name="P_NAME1">作者名名</param> /// <returns></returns> public static List <ET_MASTER> GetSap_Z_MM_ZHAW_CUBE1(string P_DATE_from, string P_DATE_TO, string P_DESC = "", string P_YEAR = "", string P_NAME1 = "") { IDestinationConfiguration ID = new MyBackendConfig(); IRfcTable IRetTable = null; bool bRegistered = false; List <ET_MASTER> ET_MASTERList = new List <ET_MASTER>(); try { RfcDestination rfcDest = null; try { rfcDest = RfcDestinationManager.GetDestination("PRD"); bRegistered = true; } catch (Exception ex) { if (ex.GetType().Name == "RfcInvalidStateException") { } } finally { if (rfcDest == null && bRegistered == false) { bRegistered = true; RfcDestinationManager.RegisterDestinationConfiguration(ID); rfcDest = RfcDestinationManager.GetDestination("PRD"); } } RfcRepository rfcRepo = rfcDest.Repository; IRfcFunction IReader = rfcRepo.CreateFunction("Z_MM_ZHAW_CUBE1"); IReader.SetValue("P_DATE_from", P_DATE_from); IReader.SetValue("P_DATE_TO", P_DATE_TO); IReader.SetValue("P_DESC", P_DESC); IReader.SetValue("P_YEAR", P_YEAR); IReader.SetValue("P_NAME1", P_NAME1); //每幾筆資料切成一個檔案 //IReader.SetValue("COUNT", "1000"); //執行查詢 IReader.Invoke(rfcDest); IRetTable = IReader.GetTable("ET_MASTER"); ET_MASTERList = IRetTable.AsEnumerable().Select(x => new ET_MASTER() { MATNR = x.GetString("MATNR") ?? "", ZZCT = x.GetString("ZZCT") ?? "", NAME1 = x.GetString("NAME1") ?? "", ZFPRESERVE_D = x.GetString("ZFPRESERVE_D") ?? "", ZZSE = x.GetString("ZZSE") ?? "", LOCATION = x.GetString("LOCATION") ?? "", STATUS = x.GetString("STATUS") ?? "", STPRS = x.GetString("STPRS") ?? "", NETPR = x.GetString("NETPR") ?? "", WAERS = x.GetString("WAERS") ?? "", ERDAT = x.GetString("ERDAT") ?? "", UDATE = x.GetString("UDATE") ?? "" }).ToList(); } catch (Exception ex) { throw ex; } finally { if (bRegistered) { RfcDestinationManager.UnregisterDestinationConfiguration(ID); } } return(ET_MASTERList); }
/// <summary> /// Get teh response from SAP and dynamically generate DataTables based on the responses metadata /// </summary> /// <param name="function"></param> /// <param name="meta"></param> /// <param name="rfc"></param> private void ProcessResults(SAPFunction function, RfcFunctionMetadata meta, IRfcFunction rfc) { foreach (var output in function.OutputParameters) { String paramName = output; String secondLevelStructure = string.Empty; int index = -1; string[] paramDetail = paramName.Split(':'); if (paramDetail.Length == 1) { index = meta.TryNameToIndex(paramName); } else if (paramDetail.Length == 2) { secondLevelStructure = paramDetail[0]; paramName = paramDetail[1]; index = meta.TryNameToIndex(secondLevelStructure); } if (index != -1) { RfcElementMetadata elementMeta = rfc.GetElementMetadata(index); RfcDataType type = elementMeta.DataType; String dataType = type.ToString(); if (dataType.Equals(SAPFunction.STRUCTURE)) { DataTable table = null; if (function.Results.Tables[secondLevelStructure] == null) { table = function.Results.Tables.Add(secondLevelStructure); IRfcStructure rfcStructure = rfc.GetStructure(secondLevelStructure); RfcStructureMetadata structureMetaData = rfcStructure.Metadata; for (int x = 0; x < rfcStructure.ElementCount; x++) { DataColumn dc = table.Columns.Add(structureMetaData[x].Name, typeof(String)); dc.DataType = ConvertDataType(type); } DataRow dr = table.NewRow(); foreach (var column in table.Columns) { dr[column.ToString()] = rfcStructure.GetValue(column.ToString()); } table.Rows.Add(dr); } } else if (dataType.Equals(SAPFunction.TABLE)) { DataTable table = null; if (function.Results.Tables[secondLevelStructure] == null) { table = function.Results.Tables.Add(secondLevelStructure); IRfcTable rfcTable = rfc.GetTable(secondLevelStructure); RfcTableMetadata tableMetaData = rfcTable.Metadata; for (int x = 0; x < tableMetaData.LineType.FieldCount; x++) { DataColumn dc = table.Columns.Add(tableMetaData.LineType[x].Name, typeof(String)); dc.DataType = ConvertDataType( type ); } foreach(var row in rfcTable) { DataRow dr = table.NewRow(); foreach(var column in table.Columns) { dr[column.ToString()] = row.GetValue(column.ToString()); } table.Rows.Add(dr); } } } else { DataTable table = null; if (function.Results.Tables["Root"] == null) { table = function.Results.Tables.Add("Root"); function.Results.Tables["Root"].NewRow(); } else { table = function.Results.Tables[paramName]; } table.Columns.Add(paramName); table.Rows[0][paramName] = rfc; } } } }
/// <summary> /// Notify SAP which output parameters are required i.e. SAP will only respond with the data that has been requested /// </summary> /// <param name="function"></param> /// <param name="meta"></param> /// <param name="rfc"></param> private void PrepareOutputParameters(SAPFunction function, RfcFunctionMetadata meta, IRfcFunction rfc) { foreach (var iout in function.OutputParameters) { String paramName = iout; String secondLevelStructure = string.Empty; int index = -1; string[] paramDetail = paramName.Split(':'); if (paramDetail.Length == 1) { index = meta.TryNameToIndex(paramName); } else if (paramDetail.Length == 2) { secondLevelStructure = paramDetail[0]; paramName = paramDetail[1]; index = meta.TryNameToIndex(secondLevelStructure); } if (index != -1) { RfcElementMetadata elementMeta = rfc.GetElementMetadata(index); RfcDataType type = elementMeta.DataType; String dataType = type.ToString(); function.DataType.Add(paramName + ":" + secondLevelStructure, ConvertDataType(type)); IRfcDataContainer container = null; if (dataType.Equals(SAPFunction.STRUCTURE)) { RfcStructureMetadata structureMeta = elementMeta.ValueMetadataAsStructureMetadata; container = rfc.GetStructure(secondLevelStructure); } else if (dataType.Equals(SAPFunction.TABLE)) { RfcTableMetadata tableMeta = elementMeta.ValueMetadataAsTableMetadata; container = rfc.GetTable(secondLevelStructure); if (tableMeta.Name.Equals(String.Empty)) { String lineType = tableMeta.LineType.ContainerType.ToString(); if (lineType.Equals("STRUCTURE")) { container = tableMeta.LineType.CreateStructure(); } } } else { rfc.GetString(secondLevelStructure); } } } }
/// <summary> /// Pass input parameters to SAP remote function call /// </summary> /// <param name="function"></param> /// <param name="meta"></param> /// <param name="rfc"></param> private void PrepareInputParameters( SAPFunction function, RfcFunctionMetadata meta, IRfcFunction rfc) { Dictionary<String,IRfcTable> _table = new Dictionary<String,IRfcTable>(); Dictionary<String,IRfcStructure> _structure = new Dictionary<String,IRfcStructure>(); foreach (var iin in function.InputParameters) { String paramName = iin.Key; String paramValue = iin.Value; String secondLevelStructure = string.Empty; int sapFieldIndex = -1; int tableRowIndex = -1; string[] paramDetail = paramName.Split(':'); if(paramDetail.Length == 1) { sapFieldIndex = meta.TryNameToIndex(paramName); } else if (paramDetail.Length == 2) { secondLevelStructure = paramDetail[0]; paramName = paramDetail[1]; if (secondLevelStructure.Contains('[') && secondLevelStructure.Contains(']')) { sapFieldIndex = meta.TryNameToIndex(secondLevelStructure.Split('[')[0]); string arrayIndex = secondLevelStructure.Split('[')[1].Split(']')[0]; Int32.TryParse(arrayIndex, out tableRowIndex); } else { sapFieldIndex = meta.TryNameToIndex(secondLevelStructure); } } if (sapFieldIndex != -1) { RfcElementMetadata elementMeta = rfc.GetElementMetadata(sapFieldIndex); RfcDataType type = elementMeta.DataType; String dataType = type.ToString(); function.DataType.Add(secondLevelStructure + ":" + paramName, ConvertDataType(type)); if (dataType.Equals(SAPFunction.STRUCTURE)) { IRfcStructure structure; if (!_structure.TryGetValue(secondLevelStructure, out structure)) { structure = rfc.GetStructure(secondLevelStructure); _structure.Add(secondLevelStructure, structure); } structure.SetValue(paramName, paramValue); function.Length.Add(paramName + ":" + secondLevelStructure, structure.GetElementMetadata(paramName).NucLength); } else if (dataType.Equals(SAPFunction.TABLE)) { if (secondLevelStructure.Contains('[') && secondLevelStructure.Contains(']')) { IRfcTable table; if (!_table.TryGetValue(secondLevelStructure.Split('[')[0], out table)) { table = rfc.GetTable(secondLevelStructure.Split('[')[0]); _table.Add(secondLevelStructure.Split('[')[0], table); } try { table.ElementAt(tableRowIndex); } catch (ArgumentOutOfRangeException) { table.Insert(1, tableRowIndex); } table.CurrentIndex = tableRowIndex; //rfc.Invoke(this.Destination); RfcElementMetadata em = table.GetElementMetadata(paramName); string s = String.Format("{0, " + table.GetElementMetadata(paramName).NucLength + "}", paramValue); table.SetValue(paramName, s.Trim()); function.Length.Add(paramName + ":" + secondLevelStructure, table.GetElementMetadata(paramName).NucLength); } } else { rfc.SetValue(paramName, paramValue); function.Length.Add(paramName, rfc.GetElementMetadata( paramName ).NucLength); } } } }
public FunctionResult ExecuteSelect(string functionName, List<NParameter> parameters, List<string> tableNames) { try { _function = _destination.Repository.CreateFunction(functionName); foreach (NParameter param in parameters) _function.SetValue(param.Name, param.Value); _function.Invoke(_destination); List<object> tables = tableNames.Select(table => _function.GetTable(table)).Cast<object>().ToList(); return new FunctionResult() { IsSuccess = true, Data = tables }; } catch (Exception ex) { return new FunctionResult { IsSuccess = false, ErrorMessage = ex.ToString() }; } }
// SD07 - Inteface de Incoterms - Comunicação // funcao - ZFXI_SD07C //[RfcServerFunction(Name = "ZFXI_SD07C")] public static void StfcInterfaceIncoterms(RfcServerContext context, IRfcFunction function) { // // INCOTERMS - PARTE 1 - CABECALHO // // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Implementa repositorio antes do Foreach para evitar duplicações IncotermsCabRepository incotermsCabRepository = new IncotermsCabRepository(); // Implementa repositorio antes do Foreach para evitar duplicações IncotermsCab incotermsCab = new IncotermsCab(); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<IncotermsCab> fromDB = incotermsCabRepository.ObterTodos(); foreach (IncotermsCab dados in fromDB) { incotermsCabRepository.Excluir(dados); } } // ZTBSD058 IRfcTable it_incotermCab = function.GetTable("IT_INCO1"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); int v_cont = 0; foreach (IRfcStructure row in it_incotermCab) { incotermsCab.CodigoIncotermCab = row.GetString("INCO1"); incotermsCab.Descricao = row.GetString("BEZEI"); // Pacote incotermsCab.Pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); incotermsCab.Data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao incotermsCab.Hora_criacao = row.GetString("ERZET"); try { v_cont = v_cont + 1; if (deletar == ' ') { IList<IncotermsCab> fromDB = incotermsCabRepository.ObterTodosComCampo("CodigoIncotermCab", incotermsCab.CodigoIncotermCab); foreach (IncotermsCab dados in fromDB) { incotermsCabRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir ao inserir a Incoterm Parte 1, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir a Incoterm Parte 1: " + incotermsCab.Descricao + " - Id: " + incotermsCab.CodigoIncotermCab); retorno.Insert(linha_retorno); } incotermsCabRepository.Salvar(incotermsCab); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso: " + v_cont); retornoSucesso.Insert(linha_retorno); // FIM INCOTERMS - PARTE 1 - CABECALHO // // INCOTERMS - PARTE 2 - LINHAS // // Implementa repositorio antes do Foreach para evitar duplicações IncotermsLinhaRepository incotermsLinhaRepository = new IncotermsLinhaRepository(); // Implementa repositorio antes do Foreach para evitar duplicações IncotermsLinhas incotermsLinhas = new IncotermsLinhas(); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_cliente_vendas IList<IncotermsLinhas> fromDB = incotermsLinhaRepository.ObterTodos(); foreach (IncotermsLinhas dados in fromDB) { incotermsLinhaRepository.Excluir(dados); } } // ZTBSD059 IRfcTable it_incotermLinhas = function.GetTable("IT_INCO2"); // Implementa Repositorio Rfc de resposta RfcRepository repLinhas = context.Repository; // RETORNO RfcStructureMetadata bapiret2Linha = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_inc_linha = bapiret2Linha.CreateStructure(); int v_cont_linha = 0; foreach (IRfcStructure row in it_incotermLinhas) { incotermsLinhas.CodigoIncotermCab = row.GetString("INCO1"); incotermsLinhas.IncotermLinha = row.GetString("INCO2"); // Pacote incotermsLinhas.Pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); incotermsLinhas.Data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao incotermsLinhas.Hora_criacao = row.GetString("ERZET"); try { v_cont_linha = v_cont_linha + 1; if (deletar == ' ') { IList<IncotermsLinhas> fromDB = incotermsLinhaRepository.PesquisaIncotermLinha("CodigoIncotermCab", incotermsLinhas.CodigoIncotermCab, "IncotermLinha", incotermsLinhas.IncotermLinha); foreach (IncotermsLinhas dados in fromDB) { incotermsLinhaRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir ao inserir a Incoterm Parte 2, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_inc_linha.SetValue("TYPE", "E"); linha_retorno_inc_linha.SetValue("MESSAGE", ex.Message); linha_retorno_inc_linha.SetValue("MESSAGE", "Erro ao inserir a Incoterm Parte 2: " + incotermsLinhas.IncotermLinha + " - Id: " + incotermsLinhas.CodigoIncotermCab); retorno.Insert(linha_retorno_inc_linha); } incotermsLinhaRepository.Salvar(incotermsLinhas); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucessoLinha = function.GetTable("IT_RETURN"); linha_retorno_inc_linha.SetValue("TYPE", "S"); linha_retorno_inc_linha.SetValue("MESSAGE", "Registros com Sucesso: " + v_cont_linha); retornoSucessoLinha.Insert(linha_retorno_inc_linha); // FIM INCOTERMS }
/// <summary> /// Invoca a la RFC para que prepare la tabla de retorno /// y luego la devuelve /// </summary> /// <param name="rfcDestination"></param> /// <param name="rfcFunction"></param> /// <returns></returns> private static IRfcTable getReturnTable(RfcDestination rfcDestination, IRfcFunction rfcFunction) { rfcFunction.Invoke(rfcDestination); return rfcFunction.GetTable(RFC_FUNCTION_RETURN_TABLE_NAME); }
internal void RefreshFieldsAndSelections() { if (this._UserGroup.Trim().Equals("") || this._Name.Trim().Equals("")) { throw new SAPException(Messages.PleasemakesurethatthefieldsUserGroupandNamearefilledcorrectly); } //RFCFunction function = RFCFunctionFactory.GenerateFunctionObjectForRSAQ_REMOTE_QUERY_FIELDLIST(this._con.IsUnicode); IRfcFunction function = _des.Repository.CreateFunction("RSAQ_REMOTE_QUERY_FIELDLIST"); //function.Connection = this._con; if (this._WorkArea == WorkSpace.StandardArea) { function.SetValue("WORKSPACE", " "); } else { function.SetValue("WORKSPACE", "X"); } function["QUERY"].SetValue(this._Name); function.SetValue("USERGROUP", this._UserGroup); //function.Exports["USERGROUP"].ParamValue = this._UserGroup; try { function.Invoke(_des); // function.Execute(); IRfcTable table = function.GetTable("FIELDS"); IRfcTable table2 = function.GetTable("SEL_FIELDS"); this._Fields.Clear(); this._SelectionParameters.Clear(); string str = ""; foreach (IRfcStructure structure in table.ToList()) { if (str == "") { str = structure["LID"].GetValue().ToString(); } if (str == structure["LID"].GetValue().ToString()) { QueryField newParameter = new QueryField(structure["NAME"].GetValue().ToString(), structure["TYPE"].GetValue().ToString(), Convert.ToInt32(structure["OLENG"].GetValue()), Convert.ToInt32(structure["DECIMALS"].GetValue()), ""); this._Fields.Add(newParameter); if ((!structure["CURRY"].GetValue().ToString().Trim().Equals("") && !structure["CURRY"].GetValue().ToString().Trim().Equals("W")) && !structure["CURRY"].GetValue().ToString().Trim().Equals("E")) { QueryField field2 = new QueryField(structure["NAME"].GetValue().ToString() + "-" + structure["LINE"].GetValue().ToString() + structure["POS"].GetValue().ToString(), "C", 10, 0, ""); this._Fields.Add(field2); } } } foreach (IRfcStructure structure2 in table2.ToList()) { if (!structure2["SPNAME"].GetValue().ToString().Substring(0, 1).Equals("%")) { string descriptionText = structure2["FTEXT"].GetValue().ToString(); if (descriptionText.StartsWith("D ")) { descriptionText = descriptionText.Substring(8); } QuerySelectionParameter parameter = new QuerySelectionParameter(structure2["SPNAME"].GetValue().ToString(), structure2["FNAME"].GetValue().ToString(), descriptionText, Convert.ToInt32(structure2["LENGTH"].GetValue()), structure2["OBLIGATORY"].GetValue().ToString().Equals("X"), structure2["NODISPLAY"].GetValue().ToString().Equals("X"), structure2["KIND"].GetValue().ToString().Equals("S") ? Kind.SelectOption : Kind.Parameter); this.SelectionParameters.Add(parameter); } } } catch (RfcAbapException ee) { throw new SAPException(ee.Key + ee.Message); } catch (Exception ee) { throw new SAPException(ee.Message); } }
public void ReipresionFiscal2(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_DOCUMENTO, string P_SOCIEDAD) { IRfcTable lt_DTE_SII; DTE_SII DTE_SII_resp; 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)) { try { RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig); RfcRepository SapRfcRepository = SapRfcDestination.Repository; IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_REIMPRESION"); BapiGetUser.SetValue("XBLNR", P_DOCUMENTO); BapiGetUser.SetValue("BUKRS", P_SOCIEDAD); BapiGetUser.Invoke(SapRfcDestination); lt_DTE_SII = BapiGetUser.GetTable("DTE_SII"); for (int i = 0; i < lt_DTE_SII.RowCount; i++) { lt_DTE_SII.CurrentIndex = i; DTE_SII_resp = new DTE_SII(); DTE_SII_resp.VBELN = lt_DTE_SII[i].GetString("VBELN"); DTE_SII_resp.BUKRS = lt_DTE_SII[i].GetString("BUKRS"); DTE_SII_resp.FECIMP = lt_DTE_SII[i].GetString("FECIMP"); DTE_SII_resp.FODOC = lt_DTE_SII[i].GetString("FODOC"); DTE_SII_resp.HORIM = lt_DTE_SII[i].GetString("HORIM"); DTE_SII_resp.KONDA = lt_DTE_SII[i].GetString("KONDA"); DTE_SII_resp.TDSII = lt_DTE_SII[i].GetString("TDSII"); DTE_SII_resp.URLSII = lt_DTE_SII[i].GetString("URLSII"); DTE_SII_resp.WAERS = lt_DTE_SII[i].GetString("WAERS"); DTE_SII_resp.XBLNR = lt_DTE_SII[i].GetString("XBLNR"); DTE_SII_resp.ZUONR = lt_DTE_SII[i].GetString("ZUONR"); reimprFiscal2.Add(DTE_SII_resp); } //url = BapiGetUser.GetString("URL"); //GC.Collect(); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } else { errormessage = retval; GC.Collect(); } }
public static void ZARFC_DEST_SHIP(RfcServerContext context, IRfcFunction function) { IRfcTable DATA = function.GetTable("DATA"); DataTable dt = GetDataTableFromRfcTable(DATA); }
public void docsanulacion(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_DOCUMENTO, string P_RUT, string P_SOCIEDAD, string P_LAND, string P_IDCAJA, string P_TP_DOC) { CabeceraDocs.Clear(); DetalleDocs.Clear(); Retorno.Clear(); IRfcTable lt_h_documentos; IRfcTable lt_d_documentos; IRfcTable lt_retorno; FormatoMonedas FM = new FormatoMonedas(); // PART_ABIERTAS PART_ABIERTAS_resp; CAB_COMP DOCS_CABECERA_resp; DET_COMP DOCS_DETALLES_resp; RETORNO retorno_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_BUSCA_COMP_ANULAR"); BapiGetUser.SetValue("ID_COMPROBANTE", P_DOCUMENTO); BapiGetUser.SetValue("RUT", P_RUT); BapiGetUser.SetValue("LAND", P_LAND); BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD); BapiGetUser.SetValue("ID_CAJA", P_IDCAJA); BapiGetUser.SetValue("TP_DOC", P_TP_DOC); BapiGetUser.Invoke(SapRfcDestination); lt_h_documentos = BapiGetUser.GetTable("CAB_COMP"); lt_d_documentos = BapiGetUser.GetTable("DET_COMP"); lt_retorno = BapiGetUser.GetTable("RETORNO"); if (lt_h_documentos.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_h_documentos.RowCount; i++) { try { lt_h_documentos.CurrentIndex = i; DOCS_CABECERA_resp = new CAB_COMP(); DOCS_CABECERA_resp.LAND = P_LAND; DOCS_CABECERA_resp.ID_CAJA = P_IDCAJA; DOCS_CABECERA_resp.ID_COMPROBANTE = lt_h_documentos[i].GetString("ID_COMPROBANTE"); DOCS_CABECERA_resp.TIPO_DOCUMENTO = lt_h_documentos[i].GetString("TIPO_DOCUMENTO"); DOCS_CABECERA_resp.DESCRIPCION = lt_h_documentos[i].GetString("DESCRIPCION"); DOCS_CABECERA_resp.NRO_REFERENCIA = lt_h_documentos[i].GetString("NRO_REFERENCIA"); DOCS_CABECERA_resp.FECHA_COMP = lt_h_documentos[i].GetString("FECHA_COMP"); DOCS_CABECERA_resp.FECHA_VENC_DOC = lt_h_documentos[i].GetString("FECHA_VENC_DOC"); if (lt_h_documentos[i].GetString("MONEDA") == "CLP") { DOCS_CABECERA_resp.MONTO_DOC = FM.FormatoMonedaChilena(lt_h_documentos[i].GetString("MONTO_DOC").Trim(), "2"); } else { //string moneda = Convert.ToString(lt_h_documentos[i].GetString("MONTO_DOC")); //decimal ValorAux = Convert.ToDecimal(moneda); DOCS_CABECERA_resp.MONTO_DOC = FM.FormatoMonedaExtranjera(lt_h_documentos[i].GetString("MONTO_DOC").Trim()); } //DOCS_CABECERA_resp.MONTO_DOC = lt_h_documentos[i].GetString("MONTO_DOC"); DOCS_CABECERA_resp.TEXTO_EXCEPCION = lt_h_documentos[i].GetString("TEXTO_EXCEPCION"); DOCS_CABECERA_resp.CLIENTE = lt_h_documentos[i].GetString("CLIENTE"); DOCS_CABECERA_resp.MONEDA = lt_h_documentos[i].GetString("MONEDA"); DOCS_CABECERA_resp.CLASE_DOC = lt_h_documentos[i].GetString("CLASE_DOC"); DOCS_CABECERA_resp.TXT_CLASE_DOC = lt_h_documentos[i].GetString("TXT_CLASE_DOC"); DOCS_CABECERA_resp.NUM_CANCELACION = lt_h_documentos[i].GetString("NUM_CANCELACION"); DOCS_CABECERA_resp.AUT_JEF = lt_h_documentos[i].GetString("AUT_JEF"); CabeceraDocs.Add(DOCS_CABECERA_resp); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } } else { System.Windows.MessageBox.Show("No existe(n) registro(s)"); } if (lt_d_documentos.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_d_documentos.RowCount; i++) { try { lt_d_documentos.CurrentIndex = i; DOCS_DETALLES_resp = new DET_COMP(); DOCS_DETALLES_resp.ID_COMPROBANTE = lt_d_documentos[i].GetString("ID_COMPROBANTE"); DOCS_DETALLES_resp.ID_DETALLE = lt_d_documentos[i].GetString("ID_DETALLE"); DOCS_DETALLES_resp.VIA_PAGO = lt_d_documentos[i].GetString("VIA_PAGO"); DOCS_DETALLES_resp.DESCRIP_VP = lt_d_documentos[i].GetString("DESCRIP_VP"); DOCS_DETALLES_resp.NUM_CHEQUE = lt_d_documentos[i].GetString("NUM_CHEQUE"); DOCS_DETALLES_resp.FECHA_VENC = lt_d_documentos[i].GetString("FECHA_VENC"); if (lt_d_documentos[i].GetString("MONEDA") == "CLP") { DOCS_DETALLES_resp.MONTO = FM.FormatoMonedaChilena(lt_d_documentos[i].GetString("MONTO").Trim(), "1"); } else { DOCS_DETALLES_resp.MONTO = FM.FormatoMonedaExtranjera(lt_d_documentos[i].GetString("MONTO").Trim()); } //DOCS_DETALLES_resp.MONTO = lt_d_documentos[i].GetString("MONTO"); DOCS_DETALLES_resp.MONEDA = lt_d_documentos[i].GetString("MONEDA"); DOCS_DETALLES_resp.NUM_CUOTAS = lt_d_documentos[i].GetString("NUM_CUOTAS"); DOCS_DETALLES_resp.EMISOR = lt_d_documentos[i].GetString("EMISOR"); DetalleDocs.Add(DOCS_DETALLES_resp); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } } String Mensaje = ""; if (lt_retorno.Count > 0) { for (int i = 0; i < lt_retorno.Count(); i++) { lt_retorno.CurrentIndex = i; retorno_resp = new RETORNO(); retorno_resp.TYPE = lt_retorno.GetString("TYPE"); retorno_resp.ID = lt_retorno.GetString("ID"); retorno_resp.NUMBER = lt_retorno.GetString("NUMBER"); retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE"); retorno_resp.LOG_NO = lt_retorno.GetString("LOG_NO"); retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO"); retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE"); retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1"); Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1"); retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2"); retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3"); retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4"); retorno_resp.PARAMETER = lt_retorno.GetString("PARAMETER"); retorno_resp.ROW = lt_retorno.GetString("ROW"); retorno_resp.FIELD = lt_retorno.GetString("FIELD"); retorno_resp.SYSTEM = lt_retorno.GetString("SYSTEM"); Retorno.Add(retorno_resp); } System.Windows.MessageBox.Show(Mensaje); } //else //{ // System.Windows.MessageBox.Show("No existe(n) registro(s)"); //} } else { errormessage = retval; } GC.Collect(); }
public static void ZRFC_SRM_PO_DATA(RfcServerContext context, IRfcFunction function) { String im = function.GetString("IM_PO"); IRfcTable ITAB_PO = function.GetTable("ITAB_PO"); DataTable dt = GetDataTableFromRfcTable(ITAB_PO); }
public void StfcConnection(RfcServerContext context, IRfcFunction function) { IRfcTable IdocControlRec40; IRfcStructure structureIdocControlRec40; IRfcTable IdocDataRec40; IRfcStructure structureIdocDataRec40; string field = string.Empty; try { IdocControlRec40 = function.GetTable("IDOC_CONTROL_REC_40"); for (int i = 0; i < IdocControlRec40.RowCount; i++) { IdocControlRec40.CurrentIndex = i; structureIdocControlRec40 = IdocControlRec40.Metadata.LineType.CreateStructure(); for (int j = 0; j < structureIdocControlRec40.ElementCount; j++) { switch (structureIdocControlRec40[j].Metadata.DataType) { case RfcDataType.DATE: string dateField = IdocControlRec40.GetValue(structureIdocControlRec40[j].Metadata.Name).ToString().PadRight(structureIdocControlRec40[j].Metadata.NucLength, ' '); dateField = dateField.Replace("-", ""); field = field + dateField; break; case RfcDataType.TIME: string timeField = IdocControlRec40.GetValue(structureIdocControlRec40[j].Metadata.Name).ToString().PadRight(structureIdocControlRec40[j].Metadata.NucLength, ' '); timeField = timeField.Replace(":", ""); field = field + timeField; break; default: field = field + IdocControlRec40.GetValue(structureIdocControlRec40[j].Metadata.Name).ToString().PadRight(structureIdocControlRec40[j].Metadata.NucLength, ' '); break; } } field += "\r\n"; } //field = ; IdocDataRec40 = function.GetTable("IDOC_DATA_REC_40"); for (int i = 0; i < IdocDataRec40.RowCount; i++) { IdocDataRec40.CurrentIndex = i; structureIdocDataRec40 = IdocDataRec40.Metadata.LineType.CreateStructure(); for (int j = 0; j < structureIdocDataRec40.ElementCount; j++) { Type dataType = structureIdocDataRec40[j].GetType(); field = field + IdocDataRec40.GetValue(structureIdocDataRec40[j].Metadata.Name).ToString().PadRight(structureIdocDataRec40[j].Metadata.NucLength, ' '); } field += "\r\n"; //Console.WriteLine(field); } File.WriteAllText(@"c:\testIDocBytes.txt", field); } catch (Exception e) { } }
//类型赋值 private List<CParams> Get_Params_list(IRfcFunction pFunction) { List<CParams> _Params_list = new List<CParams>(); IRfcTable rfctable_Params = pFunction.GetTable("Params"); // C${rfctable.Name} _C${rfctable.Name}; for (int i = 0; i < rfctable_Params.RowCount; i++) { var _Params = new CParams(); _Params.paramclass = rfctable_Params[i].GetString("PARAMCLASS"); // 参数类型 _Params.parameter = rfctable_Params[i].GetString("PARAMETER"); // 参数名称 _Params.tabname = rfctable_Params[i].GetString("TABNAME"); // 表名 _Params.fieldname = rfctable_Params[i].GetString("FIELDNAME"); // 字段名 _Params.exid = rfctable_Params[i].GetString("EXID"); // Typ _Params.position = rfctable_Params[i].GetInt("POSITION"); // _Params.offset = rfctable_Params[i].GetInt("OFFSET"); // _Params.intlength = rfctable_Params[i].GetInt("INTLENGTH"); // _Params.decimals = rfctable_Params[i].GetInt("DECIMALS"); // _Params.defaultv = rfctable_Params[i].GetString("DEFAULT"); // 输入参数的缺省值 _Params.paramtext = rfctable_Params[i].GetString("PARAMTEXT"); // 短文本 _Params.optional = rfctable_Params[i].GetString("OPTIONAL"); // 可选参数 _Params_list.Add(_Params); } return _Params_list; }
//MGV - funcion llamando SAPConn public List <PEntidades.PAbiertasYPago> getfacturasAbiertasConn(string fecha1, string fecha2, List <string[]> listaDiferentesInstancias) { List <PEntidades.PAbiertasYPago> list = new List <PEntidades.PAbiertasYPago>(); PEntidades.SrvSAPUProv.Z_UPARTIDAS_ABIERTAS abiertas = new PEntidades.SrvSAPUProv.Z_UPARTIDAS_ABIERTAS(); PEntidades.SrvSAPUProv.ZWS_UPROVEEDORESClient srv; status = new string[listaDiferentesInstancias.Count]; for (int j = 0; j < listaDiferentesInstancias.Count; j++) // listaDiferentesInstancias contiene idInstacia, endpoint, y las sociedades separadas por "," ; { try { srv = new PPersistencia.WebServices().getZWS_UPROVEEDORESInstanceNew( listaDiferentesInstancias[j][1].ToString().Trim(), listaDiferentesInstancias[j][4].Split(new Char[] { ',' }) ); srv.Open(); srv.InnerChannel.OperationTimeout = new TimeSpan(0, 10, 0); //PEntidades.SrvSAPUProv.ZEPLANT_PROV[] objetoSoc; //PEntidades.SrvSAPUProv.ZELIFNR_PROV[] objLifnr; //string[] splitSoc = listaDiferentesInstancias[j][2].Split(new Char[] { ',' }); //string[] splitLifnr = listaDiferentesInstancias[j][3].Split(new Char[] { ',' }); //abiertas.PROVEEDOR = PEntidades.Utiles.objetoLifnr(splitLifnr); //abiertas.SOCIEDAD = PEntidades.Utiles.objetoSociedad(splitSoc); PPersistencia.SAPConn psc = new PPersistencia.SAPConn(); //cambio llamado hacia SAP List <ParamsCallSAP> listPA = new List <ParamsCallSAP>(); ParamsCallSAP pr = new ParamsCallSAP(); pr = new ParamsCallSAP(); //abiertas.DATE1 = Gen.Util.CS.Gen.convertirFecha_SAP(fecha1); pr.NameVar = "DATE1"; pr.ValVar = Gen.Util.CS.Gen.convertirFecha_SAP(fecha1); pr.TipVar = "S"; listPA.Add(pr); pr = new ParamsCallSAP(); // abiertas.DATE2 = Gen.Util.CS.Gen.convertirFecha_SAP(fecha2); pr.NameVar = "DATE2"; pr.ValVar = Gen.Util.CS.Gen.convertirFecha_SAP(fecha2); pr.TipVar = "S"; listPA.Add(pr); List <TablasCallSAP> listT = new List <TablasCallSAP>(); TablasCallSAP tr = new TablasCallSAP(); List <ParamsCallSAP> listTb = new List <ParamsCallSAP>(); string[] splitLifnr = listaDiferentesInstancias[j][3].Split(new Char[] { ',' }); for (int i = 1; i <= splitLifnr.Length; i++) { pr = new ParamsCallSAP(); pr.NameVar = "LIFNR"; pr.ValVar = splitLifnr[i - 1].ToString().Trim(); pr.TipVar = "S"; listTb.Add(pr); } tr.TablaVar = "PROVEEDOR_TB"; tr.CamposVar = listTb; listT.Add(tr); string[] splitSoc = listaDiferentesInstancias[j][2].Split(new Char[] { ',' }); List <TablasCallSAP> listTC = new List <TablasCallSAP>(); TablasCallSAP trC = new TablasCallSAP(); List <ParamsCallSAP> listTc = new List <ParamsCallSAP>(); for (int i = 1; i <= splitSoc.Length; i++) { pr = new ParamsCallSAP(); pr.NameVar = "WERKS"; pr.ValVar = splitSoc[i - 1].ToString().Trim(); pr.TipVar = "S"; listTc.Add(pr); } trC.TablaVar = "SOCIEDAD_TB"; trC.CamposVar = listTc; listT.Add(trC); IRfcFunction rescon = psc.conSAP("Z_DPARTIDAS_ABIERTAS", listPA, listT); //var resultado = srv.Z_UPARTIDAS_ABIERTAS(abiertas); //int cantidad = resultado.PARTIDAS_ABIERTAS.Length; PEntidades.PAbiertasYPago objPabYPag; IRfcTable tb = rescon.GetTable(0); for (int o = 0; o < tb.Count; o++) { tb.CurrentIndex = o; objPabYPag = new PEntidades.PAbiertasYPago(); float DMSHB = float.Parse(tb.CurrentRow.GetString("DMSHB")); objPabYPag.IDINSTANCIA = int.Parse(listaDiferentesInstancias[j][0]); objPabYPag.ZUONR1 = tb.CurrentRow.GetString("ZUONR"); objPabYPag.BELNR1 = tb.CurrentRow.GetString("BELNR"); objPabYPag.BLART1 = tb.CurrentRow.GetString("BLART"); objPabYPag.BLDAT1 = tb.CurrentRow.GetString("BLDAT"); objPabYPag.DMSHB1 = DMSHB; objPabYPag.HWAER1 = tb.CurrentRow.GetString("HWAER"); objPabYPag.XBLNR = tb.CurrentRow.GetString("XBLNR"); objPabYPag.NAME1 = tb.CurrentRow.GetString("NAME1"); objPabYPag.EBELN = tb.CurrentRow.GetString("EBELN"); objPabYPag.F_BASE = tb.CurrentRow.GetString("F_BASE"); objPabYPag.F_VENCIM = tb.CurrentRow.GetString("F_VENCIM"); list.Add(objPabYPag); } srv.Close(); } catch (Exception e) { status[j] = "Error al cargar datos, reintente o vuelva a intentarlo más tarde."; } } return(list); }
// SD07 - Inteface de Incoterms - Comunicação // funcao - ZFXI_SD07C //[RfcServerFunction(Name = "ZFXI_SD07C")] public static void StfcInterfaceIncoterms(RfcServerContext context, IRfcFunction function) { // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Implementa repositorio antes do Foreach para evitar duplicações IncotermsCabRepository incotermsCabRepository = new IncotermsCabRepository(); IncotermsCab incotermsCab = new IncotermsCab(); IncotermsLinhaRepository incotermsLinhaRepository = new IncotermsLinhaRepository(); IncotermsLinhas incotermsLinhas = new IncotermsLinhas(); // ZTBSD058 IRfcTable it_incotermCab = function.GetTable("IT_INCO1"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); // ZTBSD059 IRfcTable it_incotermLinhas = function.GetTable("IT_INCO2"); // Implementa Repositorio Rfc de resposta RfcRepository repLinhas = context.Repository; // RETORNO RfcStructureMetadata bapiret2Linha = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_inc_linha = bapiret2Linha.CreateStructure(); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { IList<IncotermsCab> fromDB = incotermsCabRepository.ObterTodos(); IList<IncotermsLinhas> fromDBlinha = incotermsLinhaRepository.ObterTodos(); int count = 0; foreach (IncotermsCab dados in fromDB) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_incotermCab) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; incotermsCabRepository.Alterar(dados); } count = 0; foreach (IncotermsLinhas dados in fromDBlinha) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_incotermLinhas) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; incotermsLinhaRepository.Alterar(dados); } } // // INCOTERMS - PARTE 1 - CABECALHO // int v_cont = 0; foreach (IRfcStructure row in it_incotermCab) { incotermsCab.CodigoIncotermCab = row.GetString("INCO1"); incotermsCab.Descricao = row.GetString("BEZEI"); incotermsCab.Pacote = row.GetString("PACOTE"); incotermsCab.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); incotermsCab.Hora_criacao = row.GetString("ERZET"); //incotermsCab.Eliminacao = row.GetString("LOEVM"); row.GetString("LOEVM"); Falta acrescentar esse campo no ABAP // Obtem todas as Incoterms parte 2 do Codigo da Incoterm Parte 1 IList<IncotermsLinhas> fromLinha = incotermsLinhaRepository.ObterRegistrosUmCampo("CodigoIncotermCab", incotermsCab.CodigoIncotermCab); // Atualiza para Eliminado todas as condicoes do cliente foreach (IncotermsLinhas dados in fromLinha) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); dados.Eliminacao = "X"; incotermsLinhaRepository.Alterar(dados); } v_cont = v_cont + 1; try { IList<IncotermsCab> fromDB = incotermsCabRepository.ObterRegistrosUmCampo("CodigoIncotermCab", incotermsCab.CodigoIncotermCab); if (fromDB.Count == 0) { incotermsCabRepository.Salvar(incotermsCab); } else { foreach (IncotermsCab dados in fromDB) { incotermsCab.pro_id_incotermCab = dados.pro_id_incotermCab; } incotermsCabRepository.Alterar(incotermsCab); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir ao inserir a Incoterm Parte 1, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir a Incoterm Parte 1: " + incotermsCab.Descricao + " - Id: " + incotermsCab.CodigoIncotermCab); retorno.Insert(linha_retorno); } } IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso Incoterm - Parte 1: " + v_cont); retornoSucesso.Insert(linha_retorno); // FIM INCOTERMS - PARTE 1 - CABECALHO // // INCOTERMS - PARTE 2 - LINHAS // int v_cont_linha = 0; foreach (IRfcStructure row in it_incotermLinhas) { incotermsLinhas.CodigoIncotermCab = row.GetString("INCO1"); incotermsLinhas.IncotermLinha = row.GetString("INCO2"); incotermsLinhas.Pacote = row.GetString("PACOTE"); incotermsLinhas.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); incotermsLinhas.Hora_criacao = row.GetString("ERZET"); String v_parc_redesp_cif = row.GetString("PARC_REDESP_CIF"); String v_parc_redesp_fob = row.GetString("PARC_REDESP_FOB"); if (v_parc_redesp_cif != "") { incotermsLinhas.parc_redesp_cif = Convert.ToBoolean(1); } if (v_parc_redesp_fob != "") { incotermsLinhas.parc_redesp_fob = Convert.ToBoolean(1); } v_cont_linha = v_cont_linha + 1; try { IList<IncotermsLinhas> fromDB = incotermsLinhaRepository.PesquisaIncotermLinha("CodigoIncotermCab", incotermsLinhas.CodigoIncotermCab, "IncotermLinha", incotermsLinhas.IncotermLinha); if (fromDB.Count == 0) { incotermsLinhaRepository.Salvar(incotermsLinhas); } else { foreach (IncotermsLinhas dados in fromDB) { incotermsLinhas.pro_id_incotermLinha = dados.pro_id_incotermLinha; } incotermsLinhaRepository.Alterar(incotermsLinhas); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir ao inserir a Incoterm Parte 2, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_inc_linha.SetValue("TYPE", "E"); linha_retorno_inc_linha.SetValue("MESSAGE", ex.Message); linha_retorno_inc_linha.SetValue("MESSAGE", "Erro ao inserir a Incoterm Parte 2: " + incotermsLinhas.IncotermLinha + " - Id: " + incotermsLinhas.CodigoIncotermCab); retorno.Insert(linha_retorno_inc_linha); } } IRfcTable retornoSucessoLinha = function.GetTable("IT_RETURN"); linha_retorno_inc_linha.SetValue("TYPE", "S"); linha_retorno_inc_linha.SetValue("MESSAGE", "Registros com Sucesso Incoterm - Parte 2: " + v_cont_linha); retornoSucessoLinha.Insert(linha_retorno_inc_linha); // FIM INCOTERMS }
// SD03 - Inteface de materiais - Comunicação // funcao - ZFXI_SD03C //[RfcServerFunction(Name = "ZFXI_SD03C")] public static void StfcInterfaceMaterial(RfcServerContext context, IRfcFunction function) { // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Implementa Repositório dos dados MaterialRepository materialRepository = new MaterialRepository(); // Implementa repositorio antes do Foreach para evitar duplicações Material material = new Material(); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<Material> fromDB = materialRepository.ObterTodos(); foreach (Material dados in fromDB) { materialRepository.Excluir(dados); } } IRfcTable it_material = function.GetTable("IT_MATERIAL"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO - BAPIRET2 RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); int v_cont = 0; foreach (IRfcStructure row in it_material) { material.id_material = row.GetString("MATNR"); material.descricao = row.GetString("MAKTX"); material.id_centro = row.GetString("WERKS"); material.tip_mat = row.GetString("MTART"); material.status_mat = row.GetString("MSTAE"); material.uni_med = row.GetString("MEINS"); material.status_mat = row.GetString("MSTAE"); // Pacote material.pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); material.data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao material.hora_criacao = row.GetString("ERZET"); try { v_cont = v_cont + 1; if (deletar == ' ') { IList<Material> fromDB = materialRepository.ObterTodosComCampo("id_material", material.id_material); foreach (Material dados in fromDB) { materialRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro e a descricao do material Console.Write("entrou no exception"); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir o Material: " + material.descricao); retorno.Insert(linha_retorno); } materialRepository.Salvar(material); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso: " + v_cont); retornoSucesso.Insert(linha_retorno); }
// SD01 - Inteface de cliente - Comunicação // funcao - ZFXI_SD01C //[RfcServerFunction(Name = "ZFXI_SD01C")] public static void StfcInterfaceCliente(RfcServerContext context, IRfcFunction function) { // // CLIENTE // // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Implementa repositorio antes do Foreach para evitar duplicações ClienteRepository clienteRepository = new ClienteRepository(); Cliente cliente = new Cliente(); ClienteVendasRepository clienteVendasRepository = new ClienteVendasRepository(); ClienteVendas clienteVendas = new ClienteVendas(); ClienteCondicaoLiberadaRepository clienteCondicaoLiberadaRepository = new ClienteCondicaoLiberadaRepository(); ClienteCondicaoLiberada clienteCondicaoLiberada = new ClienteCondicaoLiberada(); ClienteTransportadoraLiberadaRepository clienteTransportadoraLiberadaRepository = new ClienteTransportadoraLiberadaRepository(); ClienteTransportadoraLiberada clienteTransportadoraLiberada = new ClienteTransportadoraLiberada(); // ZTBSD056 - ZTBXI_101 IRfcTable it_cliente = function.GetTable("IT_CLIENTE"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); // ZTBSD057 - ZTBXI_101 IRfcTable it_cliente_vendas = function.GetTable("IT_CLIENTE_AV"); // Implementa Repositorio Rfc de resposta RfcRepository repVendas = context.Repository; // RETORNO RfcStructureMetadata bapiret2Vendas = repVendas.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_vendas = bapiret2Vendas.CreateStructure(); // ZTBSD058 - ZTBXI_101 IRfcTable it_cliente_condicao = function.GetTable("IT_CLIENTE_CP"); // Implementa Repositorio Rfc de resposta RfcRepository repcondicao = context.Repository; // RETORNO RfcStructureMetadata bapiret2Condicao = repcondicao.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_condicao = bapiret2Condicao.CreateStructure(); // ZTBSD085 - ZTBXI_101 IRfcTable it_cliente_trans_lib = function.GetTable("IT_CLIENTE_TL"); // Implementa Repositorio Rfc de resposta RfcRepository repclienteTrans = context.Repository; // RETORNO RfcStructureMetadata bapiret2Trans = repclienteTrans.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_trans = bapiret2Trans.CreateStructure(); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { int count = 0; // Se a interface de cliente estiver marcada para Reiniciar "X" marca os registros das 3 tabebas como Eliminados. IList<Cliente> fromDBcliente = clienteRepository.ObterTodos(); IList<ClienteVendas> fromDBclienteV = clienteVendasRepository.ObterTodos(); IList<ClienteCondicaoLiberada> fromDBclienteCond = clienteCondicaoLiberadaRepository.ObterTodos(); foreach (Cliente dados in fromDBcliente) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_cliente) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; clienteRepository.Alterar(dados); } count = 0; foreach (ClienteVendas dados in fromDBclienteV) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_cliente_vendas) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; clienteVendasRepository.Alterar(dados); } count = 0; foreach (ClienteCondicaoLiberada dados in fromDBclienteCond) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_cliente_condicao) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; clienteCondicaoLiberadaRepository.Alterar(dados); } } int v_cont = 0; foreach (IRfcStructure row in it_cliente) { cliente.Id_cliente = row.GetString("KUNNR"); cliente.Nome = row.GetString("NAME1"); cliente.Cpf = row.GetString("STCD2"); cliente.Cnpj = row.GetString("STCD1"); cliente.Nr_ie_cli = row.GetString("STCD3"); cliente.Cep = row.GetString("POST_CODE"); cliente.Endereco = row.GetString("STREET"); cliente.Numero = row.GetString("HOUSE_NUM1"); cliente.Complemento = row.GetString("HOUSE_NUM2"); cliente.Municipio = row.GetString("CITY1"); cliente.Bairro = row.GetString("CITY2"); cliente.Uf = row.GetString("UF"); cliente.Pais = row.GetString("COUNTRY"); cliente.Tel_res = row.GetString("TELF1"); cliente.Tel_cel = row.GetString("TELF2"); cliente.Fax = row.GetString("TELFX"); cliente.Email = row.GetString("EMAIL"); cliente.Pacote = row.GetString("PACOTE"); cliente.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); cliente.Hora_criacao = row.GetString("ERZET"); cliente.Eliminacao = row.GetString("LOEVM"); // Obtem todas as condicoes do banco para o cliente que esta sendo processado IList<ClienteCondicaoLiberada> fromCondicao = clienteCondicaoLiberadaRepository.ObterRegistrosUmCampo("Id_cliente", cliente.Id_cliente); // Atualiza para Eliminado todas as condicoes do cliente foreach (ClienteCondicaoLiberada dados in fromCondicao) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); dados.Eliminacao = "X"; clienteCondicaoLiberadaRepository.Alterar(dados); } v_cont = v_cont + 1; try { // Se o registro existir, ele é atualizado, se não ele é inserido. IList<Cliente> fromDB = clienteRepository.ObterRegistrosUmCampo("Id_cliente", cliente.Id_cliente); if (fromDB.Count == 0) { clienteRepository.Salvar(cliente); } else { clienteRepository.Alterar(cliente); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir o Cliente, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir o Cliente Dados Gerais: " + cliente.Nome + " - Id: " + cliente.Id_cliente); retorno.Insert(linha_retorno); } } // FIM CLIENTE // // CLIENTE VENDAS // int v_cont_vendas = 0; foreach (IRfcStructure row in it_cliente_vendas) { clienteVendas.Id_cliente = row.GetString("KUNNR"); clienteVendas.Org_vendas = row.GetString("VKORG"); clienteVendas.Can_dist = row.GetString("VTWEG"); clienteVendas.Set_ativ = row.GetString("SPART"); clienteVendas.Grupo_cli = row.GetString("KDGRP"); clienteVendas.Id_fornecedor = row.GetString("LIFNR"); clienteVendas.Denominacao = row.GetString("VKORG_TXT"); clienteVendas.Pacote = row.GetString("PACOTE"); clienteVendas.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); clienteVendas.Hora_criacao = row.GetString("ERZET"); clienteVendas.Eliminacao = row.GetString("LOEVM"); v_cont_vendas = v_cont_vendas + 1; try { IList<ClienteVendas> fromDB = clienteVendasRepository.ObterRegistrosQuatroCampos("Id_cliente", clienteVendas.Id_cliente, "Org_vendas", clienteVendas.Org_vendas, "Can_dist", clienteVendas.Can_dist, "Set_ativ", clienteVendas.Set_ativ); if (fromDB.Count == 0) { clienteVendasRepository.Salvar(clienteVendas); } else { foreach (ClienteVendas dados in fromDB) { clienteVendas.pro_id_cliente_vendas = dados.pro_id_cliente_vendas; } clienteVendasRepository.Alterar(clienteVendas); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir o Cliente Vendas, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_vendas.SetValue("TYPE", "E"); linha_retorno_vendas.SetValue("MESSAGE", ex.Message); linha_retorno_vendas.SetValue("MESSAGE", "Erro ao inserir o Cliente Área de Vendas: " + cliente.Nome + " - Id: " + cliente.Id_cliente); retorno.Insert(linha_retorno_vendas); } } // FIM CLIENTE VENDAS // // CLIENTE CONDICAO // int v_cont_condicao = 0; foreach (IRfcStructure row in it_cliente_condicao) { clienteCondicaoLiberada.Id_cliente = row.GetString("KUNNR"); clienteCondicaoLiberada.Chave_condicao = row.GetString("ZTERM"); clienteCondicaoLiberada.Data_fim_condicao = Convert.ToDateTime(row.GetString("DATBI")); clienteCondicaoLiberada.Pacote = row.GetString("PACOTE"); clienteCondicaoLiberada.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); clienteCondicaoLiberada.Hora_criacao = row.GetString("ERZET"); v_cont_condicao = v_cont_condicao + 1; try { IList<ClienteCondicaoLiberada> fromDB = clienteCondicaoLiberadaRepository.ObterRegistrosDoisCampos("Id_cliente", clienteCondicaoLiberada.Id_cliente, "Chave_condicao", clienteCondicaoLiberada.Chave_condicao); if (fromDB.Count == 0) { clienteCondicaoLiberadaRepository.Salvar(clienteCondicaoLiberada); } else { clienteCondicaoLiberadaRepository.Alterar(clienteCondicaoLiberada); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir a Condicao do Cliente, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_condicao.SetValue("TYPE", "E"); linha_retorno_condicao.SetValue("MESSAGE", ex.Message); linha_retorno_condicao.SetValue("MESSAGE", "Erro ao inserir o Cliente Condições Pagto " + clienteCondicaoLiberada.Id_cliente + " - Condicao: " + clienteCondicaoLiberada.Chave_condicao); retorno.Insert(linha_retorno_condicao); } } // FIM CLIENTE CONDICAO // // CLIENTE TRANSPORTADORAS LIBERADAS // int v_cont_tras_lib = 0; foreach (IRfcStructure row in it_cliente_trans_lib) { clienteTransportadoraLiberada.Id_cliente = row.GetString("KUNNR"); clienteTransportadoraLiberada.Funcao_parceiro = row.GetString("PARVW"); clienteTransportadoraLiberada.Numero_agente_frete = row.GetString("TDLNR"); String v_padrao = row.GetString("PADRAO"); if (v_padrao != "") { clienteTransportadoraLiberada.Padrao = Convert.ToBoolean(1); } clienteTransportadoraLiberada.Pacote = row.GetString("PACOTE"); clienteTransportadoraLiberada.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); clienteTransportadoraLiberada.Hora_criacao = row.GetString("ERZET"); v_cont_tras_lib = v_cont_tras_lib + 1; try { IList<ClienteTransportadoraLiberada> fromDB = clienteTransportadoraLiberadaRepository.ObterRegistrosDoisCampos("Id_cliente", clienteTransportadoraLiberada.Id_cliente, "Numero_agente_frete", clienteTransportadoraLiberada.Numero_agente_frete); if (fromDB.Count == 0) { clienteTransportadoraLiberadaRepository.Salvar(clienteTransportadoraLiberada); } else { foreach (ClienteTransportadoraLiberada dados in fromDB) { clienteTransportadoraLiberada.Id = dados.Id; } clienteTransportadoraLiberadaRepository.Alterar(clienteTransportadoraLiberada); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir a Tranpostadora do Cliente, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_trans.SetValue("TYPE", "E"); linha_retorno_trans.SetValue("MESSAGE", ex.Message); linha_retorno_trans.SetValue("MESSAGE", "Erro ao inserir a Tranpostadora do Cliente " + clienteTransportadoraLiberada.Id_cliente + " - Numero Agente Frete: " + clienteTransportadoraLiberada.Numero_agente_frete); retorno.Insert(linha_retorno_trans); } } // FIM CLIENTE TRANSPORTADORAS LIBERADAS // Envia o retorno dos registros inseridos com sucesso Cliente Transportadoras IRfcTable retornoSucessoTrans = function.GetTable("IT_RETURN"); linha_retorno_trans.SetValue("TYPE", "S"); linha_retorno_trans.SetValue("MESSAGE", "Registros com Sucesso Tranpostadora Cliente: " + v_cont_tras_lib); retornoSucessoTrans.Insert(linha_retorno_trans); // Envia o retorno dos registros inseridos com sucesso Condicoes Pagto IRfcTable retornoSucessoCondicao = function.GetTable("IT_RETURN"); linha_retorno_condicao.SetValue("TYPE", "S"); linha_retorno_condicao.SetValue("MESSAGE", "Registros com Sucesso Condições Pagto: " + v_cont_condicao); retornoSucessoCondicao.Insert(linha_retorno_condicao); // Envia o retorno dos registros inseridos com sucesso Area de Vendas IRfcTable retornoSucessoVendas = function.GetTable("IT_RETURN"); linha_retorno_vendas.SetValue("TYPE", "S"); linha_retorno_vendas.SetValue("MESSAGE", "Registros com Sucesso Área de Vendas: " + v_cont_vendas); retornoSucessoVendas.Insert(linha_retorno_vendas); // Envia o retorno dos registros inseridos com sucesso Geral IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso Dados Gerais: " + v_cont); retornoSucesso.Insert(linha_retorno); }
private void ProcessRetrievdData(ref DataTable t, IRfcFunction f) { SendMessage("开始解析数据"); //this.con.Log("Enter ProcessRetrievdData; LastPrimaryKey=" + this._LastPrimaryKey); string str = ""; IRfcTable table = f.GetTable("FIELDS"); var lines = f.GetTable("DATA").RowCount; for (int i = 0; i < lines; i++) { string str2 = (string)f.GetTable("DATA")[i].GetValue(0); var ii = str2.Length; var iii = ii > 20 ? 20 : ii; SendMessage(string.Format("行:{0} 内容:{1}", i, str2.Substring(0, iii))); str2 = str2.PadRight(f.GetTable("DATA").Metadata.LineType[0].NucLength); string[] strArray = null; if (this.UsePrimaryKeyPackaging) { str = str2.Substring(0, this._PrimaryKeys.GetOverallLength()); if (i >= (f.GetTable("DATA").RowCount - 1)) { int startIndex = 0; foreach (ReadTableField field in this._PrimaryKeys) { field.LastKeyValue = str.Substring(startIndex, field.Length); startIndex += field.Length; } } } if (!this.UsePrimaryKeyPackaging || (this._LastPrimaryKey != str)) { DataRow row = t.NewRow(); if (!this._Delimiter.Equals("")) { //strArray = str2.Split(this._Delimiter.ToCharArray()); strArray = Regex.Split(str2, this._Delimiter, RegexOptions.IgnoreCase); } if (this._UsePrimaryKeyPackaging) { for (int j = this._PrimaryKeys.Count; j < table.RowCount; j++) { if (this._Delimiter.Equals("")) { String value = str2.Substring(Convert.ToInt32(table[j].GetValue("OFFSET").ToString()), Convert.ToInt32(table[j].GetValue("LENGTH").ToString())); value = value.TrimEnd(' '); String type = table[j].GetValue("TYPE").ToString(); row[table[j].GetValue(0).ToString()] = Converts.RfcValueToObject(value, type); } else if (strArray.Length > j) { String value = strArray[j]; // value = value.TrimStart(' ').TrimEnd(' ');//去除前导零。 value = value.TrimEnd(' '); row[table[j].GetValue(0).ToString()] = value; } } } else { for (int k = 0; k < table.RowCount; k++) { if (this._Delimiter.Equals("")) { //// Console.WriteLine(str2.Length); // Console.WriteLine("OFFSET:" + table[k]["OFFSET"].GetValue().ToString()); // Console.WriteLine("LENGTH:" + table[k]["LENGTH"].GetValue().ToString()); String value = str2.Substring(Convert.ToInt32(table[k]["OFFSET"].GetValue().ToString()), Convert.ToInt32(table[k]["LENGTH"].GetValue().ToString())); value = value.TrimEnd(' '); //Console.WriteLine(value); String type = table[k].GetValue("TYPE").ToString(); //Console.WriteLine("TYPE:" + type); row[table[k][0].GetValue().ToString()] = Converts.RfcValueToObject(value, type); } else if (strArray.Length > k) { String value = strArray[k]; //value = value.TrimStart(' ').TrimEnd(' ');//去除前导零。 //value.Trim(); value = value.TrimEnd(' '); row[table[k][0].GetValue().ToString()] = value; } } } t.Rows.Add(row); } this._LastPrimaryKey = str; } this._FetchedRows += f.GetTable("DATA").RowCount; if (this._RaiseIncomingPackageEvent) { if (this.IncomingPackage != null) { this.IncomingPackage(this, t); t.Rows.Clear(); t.AcceptChanges(); } } else if (this.PackageProgress != null) { this.PackageProgress(this, t.Rows.Count); } SendMessage("解析数据完成"); }
// SD09 - Inteface de Preco- Comunicação // Funcao - ZFXI_SD09C //[RfcServerFunction(Name = "ZGXI_SD09")] public static void StfcInterfacePreco(RfcServerContext context, IRfcFunction function) { // // PRECOS CLIENTE // // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Mandar salvar o Preco do Cliente CondicaoDePrecoClienteRepository condicaoDePrecoClienteRepository = new CondicaoDePrecoClienteRepository(); // Implementa repositorio antes do Foreach para evitar duplicações CondicaoDePrecoCliente condicaoDePrecoCliente = new CondicaoDePrecoCliente(); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<CondicaoDePrecoCliente> fromDB = condicaoDePrecoClienteRepository.ObterTodos(); foreach (CondicaoDePrecoCliente dados in fromDB) { condicaoDePrecoClienteRepository.Excluir(dados); } } // ZTBSD074 IRfcTable it_condicaoDePrecoCliente = function.GetTable("IT_PRECO_CLIENTE"); // Implementa Repositorio Rfc de resposta RfcRepository repCliente = context.Repository; // RETORNO - BAPIRET2 RfcStructureMetadata bapiret2 = repCliente.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retornoCliente = bapiret2.CreateStructure(); int v_contCliente = 0; foreach (IRfcStructure row in it_condicaoDePrecoCliente) { condicaoDePrecoCliente.Org_vendas = row.GetString("VKORG"); condicaoDePrecoCliente.Can_dist = row.GetString("VTWEG"); condicaoDePrecoCliente.Id_cliente = row.GetString("KUNNR"); condicaoDePrecoCliente.Id_material = row.GetString("MATNR"); condicaoDePrecoCliente.NumeroRegistroCondicao = row.GetString("KNUMH"); condicaoDePrecoCliente.Montante = Convert.ToDecimal(row.GetString("KBETR")); condicaoDePrecoCliente.UnidadeCondicao = row.GetString("KONWA"); condicaoDePrecoCliente.Pacote = row.GetString("PACOTE"); condicaoDePrecoCliente.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); condicaoDePrecoCliente.Hora_criacao = row.GetString("ERZET"); try { v_contCliente = v_contCliente + 1; if (deletar == ' ') { IList<CondicaoDePrecoCliente> fromDB = condicaoDePrecoClienteRepository.ObterRegistrosQuatroCampos("Org_vendas", condicaoDePrecoCliente.Org_vendas, "Can_dist", condicaoDePrecoCliente.Can_dist, "Id_cliente", condicaoDePrecoCliente.Id_cliente, "Id_material", condicaoDePrecoCliente.Id_material); foreach (CondicaoDePrecoCliente dados in fromDB) { condicaoDePrecoClienteRepository.Excluir(dados); } } } catch (Exception ex) { Console.Write("Erro ao Inserir o Preco do Cliente, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retornoCliente.SetValue("TYPE", "E"); linha_retornoCliente.SetValue("MESSAGE", ex.Message); linha_retornoCliente.SetValue("MESSAGE", "Erro ao inserir o Preco do Cliente: " + condicaoDePrecoCliente.Id_cliente + " - Material: " + condicaoDePrecoCliente.Id_material + " - Org.: " + condicaoDePrecoCliente.Org_vendas + " - Canal:" + condicaoDePrecoCliente.Can_dist); retorno.Insert(linha_retornoCliente); } condicaoDePrecoClienteRepository.Salvar(condicaoDePrecoCliente); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucessoCliente = function.GetTable("IT_RETURN"); linha_retornoCliente.SetValue("TYPE", "S"); linha_retornoCliente.SetValue("MESSAGE", "Registros com Sucesso(CLIENTE): " + v_contCliente); retornoSucessoCliente.Insert(linha_retornoCliente); // // PRECOS REGIAO // // Mandar salvar o Preco da Regiao CondicaoDePrecoRegiaoRepository condicaoDePrecoRegiaoRepository = new CondicaoDePrecoRegiaoRepository(); // Implementa repositorio antes do Foreach para evitar duplicações CondicaoDePrecoRegiao condicaoDePrecoRegiao = new CondicaoDePrecoRegiao(); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<CondicaoDePrecoRegiao> fromDB = condicaoDePrecoRegiaoRepository.ObterTodos(); foreach (CondicaoDePrecoRegiao dados in fromDB) { condicaoDePrecoRegiaoRepository.Excluir(dados); } } // ZTBSD075 IRfcTable it_condicaoDePrecoRegiao = function.GetTable("IT_PRECO_REGIAO"); // Implementa Repositorio Rfc de resposta RfcRepository repRegiao = context.Repository; // RETORNO - BAPIRET2 RfcStructureMetadata bapiret2Regiao = repRegiao.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retornoRegiao = bapiret2Regiao.CreateStructure(); int v_contRegiao = 0; foreach (IRfcStructure row in it_condicaoDePrecoRegiao) { condicaoDePrecoRegiao.Regiao = row.GetString("REGIO"); condicaoDePrecoRegiao.Id_material = row.GetString("MATNR"); condicaoDePrecoRegiao.NumeroRegistroCondicao = row.GetString("KNUMH"); condicaoDePrecoRegiao.Id_material = row.GetString("MATNR"); condicaoDePrecoRegiao.NumeroRegistroCondicao = row.GetString("KNUMH"); condicaoDePrecoRegiao.Montante = Convert.ToDecimal(row.GetString("KBETR")); condicaoDePrecoRegiao.UnidadeCondicao = row.GetString("KONWA"); condicaoDePrecoRegiao.Pacote = row.GetString("PACOTE"); condicaoDePrecoRegiao.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); condicaoDePrecoRegiao.Hora_criacao = row.GetString("ERZET"); try { v_contRegiao = v_contRegiao + 1; if (deletar == ' ') { IList<CondicaoDePrecoRegiao> fromDB = condicaoDePrecoRegiaoRepository.ObterRegistrosDoisCampos("Regiao", condicaoDePrecoRegiao.Regiao, "Id_material", condicaoDePrecoRegiao.Id_material); foreach (CondicaoDePrecoRegiao dados in fromDB) { condicaoDePrecoRegiaoRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro e a descricao do material Console.Write("Erro ao Inserir a Condicao de Preco Regiao, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retornoRegiao.SetValue("TYPE", "E"); linha_retornoRegiao.SetValue("MESSAGE", ex.Message); linha_retornoRegiao.SetValue("MESSAGE", "Erro ao inserir a Condicao de Preco Regiao: " + condicaoDePrecoRegiao.Regiao + " - Material: " + condicaoDePrecoRegiao.Id_material); retorno.Insert(linha_retornoRegiao); } condicaoDePrecoRegiaoRepository.Salvar(condicaoDePrecoRegiao); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucessoRegiao = function.GetTable("IT_RETURN"); linha_retornoRegiao.SetValue("TYPE", "S"); linha_retornoRegiao.SetValue("MESSAGE", "Registros com Sucesso(REGIAO): " + v_contRegiao); retornoSucessoRegiao.Insert(linha_retornoRegiao); // // PRECOS GERAL // // Mandar salvar o Preco da Regiao CondicaoDePrecoGeralRepository condicaoDePrecoGeralRepository = new CondicaoDePrecoGeralRepository(); // Implementa repositorio antes do Foreach para evitar duplicações CondicaoDePrecoGeral condicaoDePrecoGeral = new CondicaoDePrecoGeral(); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<CondicaoDePrecoGeral> fromDB = condicaoDePrecoGeralRepository.ObterTodos(); foreach (CondicaoDePrecoGeral dados in fromDB) { condicaoDePrecoGeralRepository.Excluir(dados); } } // ZTBSD076 IRfcTable it_condicaoDePrecoGeral = function.GetTable("IT_PRECO_GERAL"); // Implementa Repositorio Rfc de resposta RfcRepository repGeral = context.Repository; // RETORNO - BAPIRET2 RfcStructureMetadata bapiret2Geral = repGeral.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retornoGeral = bapiret2Geral.CreateStructure(); int v_contGeral = 0; foreach (IRfcStructure row in it_condicaoDePrecoGeral) { condicaoDePrecoGeral.Org_vendas = row.GetString("VKORG"); condicaoDePrecoGeral.Can_dist = row.GetString("VTWEG"); condicaoDePrecoGeral.Id_material = row.GetString("MATNR"); condicaoDePrecoGeral.NumeroRegistroCondicao = row.GetString("KNUMH"); condicaoDePrecoGeral.Id_material = row.GetString("MATNR"); condicaoDePrecoGeral.NumeroRegistroCondicao = row.GetString("KNUMH"); condicaoDePrecoGeral.Montante = Convert.ToDecimal(row.GetString("KBETR")); condicaoDePrecoGeral.UnidadeCondicao = row.GetString("KONWA"); condicaoDePrecoGeral.Pacote = row.GetString("PACOTE"); condicaoDePrecoGeral.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); condicaoDePrecoGeral.Hora_criacao = row.GetString("ERZET"); try { v_contGeral = v_contGeral + 1; if (deletar == ' ') { IList<CondicaoDePrecoGeral> fromDB = condicaoDePrecoGeralRepository.ObterRegistrosTresCampos("Org_vendas", condicaoDePrecoGeral.Org_vendas, "Can_dist", condicaoDePrecoGeral.Can_dist, "Id_material", condicaoDePrecoGeral.Id_material); foreach (CondicaoDePrecoGeral dados in fromDB) { condicaoDePrecoGeralRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro e a descricao do material Console.Write("Erro ao Inserir a Condicao de Preco Geral, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retornoRegiao.SetValue("TYPE", "E"); linha_retornoRegiao.SetValue("MESSAGE", ex.Message); linha_retornoRegiao.SetValue("MESSAGE", "Erro ao inserir a Condicao de Preco Geral para o Material: " + condicaoDePrecoGeral.Id_material + " - Organização: " + condicaoDePrecoGeral.Org_vendas + " - Canal: " + condicaoDePrecoGeral.Can_dist); retorno.Insert(linha_retornoRegiao); } condicaoDePrecoGeralRepository.Salvar(condicaoDePrecoGeral); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucessoGeral = function.GetTable("IT_RETURN"); linha_retornoGeral.SetValue("TYPE", "S"); linha_retornoGeral.SetValue("MESSAGE", "Registros com Sucesso(GERAL): " + v_contGeral); retornoSucessoGeral.Insert(linha_retornoGeral); }
///// <summary> ///// 获取物料状态 ///// </summary> ///// <param name="MatCode">物料编号</param> ///// <param name="rList"></param> ///// <returns></returns> //public List<MaterialStatus> ZRFC_GETMATORDER(string MatCode) //{ // List<MaterialStatus> rList = new List<MaterialStatus>(); // try // { // RfcRepository repo = Conn.Repository; // IRfcFunction rfcfunc = repo.CreateFunction("ZRFC_GETMATORDER"); // rfcfunc.SetValue("MATNR", MatCode); // rfcfunc.Invoke(Conn); // IRfcTable RfcTable = rfcfunc.GetTable("MATNRDATA"); // for (int i = 0; i < RfcTable.Count(); i++) // { // MaterialStatus model = new MaterialStatus(); // //model.MATNR = RfcTable[i].GetValue("MATNR").ToString(); // //model.ZCANORDER = RfcTable[i].GetValue("ZCANORDER").ToString(); // //model.ZREPROD = RfcTable[i].GetValue("ZREPROD").ToString(); // rList.Add(model); // } // } // catch // { // rList = null; // } // return rList; //} public SapRetrun CREATE_BAPI_ACC_DOCUMENT_POST(SapUpload model) { try { RfcRepository repo = Conn.Repository; IRfcFunction Fun = repo.CreateFunction("ZBAPI_ACC_DOCUMENT_POST"); //结构体doc IRfcStructure tb = Fun.GetStructure("DOCUMENTHEADER"); DOCUMENTHEADER doc = model.结构体DOC; tb.SetValue("USERNAME", doc.USERNAME); tb.SetValue("HEADER_TXT", doc.HEADER_TXT); tb.SetValue("COMP_CODE", doc.COMP_CODE); tb.SetValue("DOC_DATE", doc.DOC_DATE); tb.SetValue("PSTNG_DATE", doc.PSTNG_DATE); tb.SetValue("TRANS_DATE", doc.TRANS_DATE); tb.SetValue("DOC_TYPE", doc.DOC_TYPE); tb.SetValue("BUS_ACT", doc.BUS_ACT); tb.SetValue("OBJ_TYPE", doc.OBJ_TYPE); tb.SetValue("REF_DOC_NO", doc.REF_DOC_NO); //一般性总账科目 if (model.一般性总账 != null && model.一般性总账.Count > 0) { IRfcTable tb1 = Fun.GetTable("ACCOUNTGL"); foreach (var item in model.一般性总账) { tb1.Insert(); tb1.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC); tb1.CurrentRow.SetValue("GL_ACCOUNT", item.GL_ACCOUNT); tb1.CurrentRow.SetValue("ITEM_TEXT", item.ITEM_TEXT); tb1.CurrentRow.SetValue("ALLOC_NMBR", item.ALLOC_NMBR); tb1.CurrentRow.SetValue("COSTCENTER", item.COSTCENTER); tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR); tb1.CurrentRow.SetValue("ACCT_TYPE", item.ACCT_TYPE); if (!string.IsNullOrEmpty(item.ASSET_NO)) { tb1.CurrentRow.SetValue("ASSET_NO", item.ASSET_NO); tb1.CurrentRow.SetValue("SUB_NUMBER", "0000"); tb1.CurrentRow.SetValue("ACCT_TYPE", "A"); } } } //科目D if (model.科目D != null && model.科目D.Count > 0) { IRfcTable tb1 = Fun.GetTable("ACCOUNTRECEIVABLE"); foreach (var item in model.科目D) { tb1.Insert(); tb1.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC); tb1.CurrentRow.SetValue("CUSTOMER", item.CUSTOMER); tb1.CurrentRow.SetValue("ITEM_TEXT", item.ITEM_TEXT); tb1.CurrentRow.SetValue("ALLOC_NMBR", item.ALLOC_NMBR); tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR); } } //科目K if (model.科目K != null && model.科目K.Count > 0) { IRfcTable tb1 = Fun.GetTable("ACCOUNTPAYABLE"); foreach (var item in model.科目K) { tb1.Insert(); tb1.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC); tb1.CurrentRow.SetValue("VENDOR_NO", item.VENDOR_NO); tb1.CurrentRow.SetValue("ITEM_TEXT", item.ITEM_TEXT); tb1.CurrentRow.SetValue("ALLOC_NMBR", item.ALLOC_NMBR); if (!string.IsNullOrEmpty(item.PO_NUMBER)) { tb1.CurrentRow.SetValue("SP_GL_IND", item.UMSKZ); tb1.CurrentRow.SetValue("GL_ACCOUNT", item.GL_ACCOUNT); tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR); } else if (!string.IsNullOrEmpty(item.PROFIT_CTR)) { tb1.CurrentRow.SetValue("GL_ACCOUNT", item.GL_ACCOUNT); tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR); } } } if (model.币种 != null && model.币种.Count > 0) { IRfcTable tb2 = Fun.GetTable("CURRENCYAMOUNT"); foreach (var item in model.币种) { tb2.Insert(); tb2.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC); tb2.CurrentRow.SetValue("CURRENCY", item.CURRENCY); tb2.CurrentRow.SetValue("AMT_DOCCUR", item.AMT_DOCCUR); tb2.CurrentRow.SetValue("EXCH_RATE", item.EXCH_RATE); } } if (model.行项目 != null && model.行项目.Count > 0) { IRfcTable tb3 = Fun.GetTable("EXTENSION2"); foreach (var item in model.行项目) { tb3.Insert(); tb3.CurrentRow.SetValue("STRUCTURE", item.STRUCTURE); tb3.CurrentRow.SetValue("VALUEPART1", item.VALUEPART1); tb3.CurrentRow.SetValue("VALUEPART2", item.VALUEPART2); tb3.CurrentRow.SetValue("VALUEPART3", item.VALUEPART3); tb3.CurrentRow.SetValue("VALUEPART4", item.VALUEPART4); } } Fun.Invoke(Conn); SapRetrun result = new SapRetrun(); var voucher = Fun.GetValue("OBJ_KEY").ToString(); if (!string.IsNullOrEmpty(voucher) && voucher != "$") { result.TYPE = "S"; result.MESSAGE = "凭证上传成功"; result.VOUCHER = voucher; } else { var Return = Fun.GetTable("RETURN"); if (Return.RowCount >= 2) { result.TYPE = Return[1].GetValue("TYPE").ToString(); result.MESSAGE = Return[1].GetValue("MESSAGE").ToString(); result.VOUCHER = Return[1].GetValue("MESSAGE_V2").ToString(); } else { result.TYPE = Return[0].GetValue("TYPE").ToString(); result.MESSAGE = Return[0].GetValue("MESSAGE").ToString(); result.VOUCHER = Return[0].GetValue("MESSAGE_V2").ToString(); } } return(result); } catch (Exception ex) { throw; } }
// SD08 - Inteface de Pedido - Comunicação // funcao - ZFXI_SD08C //[RfcServerFunction(Name = "ZFXI_SD08C")] public static void StfcInterfacePedido(RfcServerContext context, IRfcFunction function) { // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); Char teste = function.GetChar("E_STATUS"); string status = function.GetString("E_STATUS"); // Implementa repositorio antes do Foreach para evitar duplicações PedidoVendaRepository pedidoVendaRepository = new PedidoVendaRepository(); PedidoVenda pedidoCabecalho = new PedidoVenda(); PedidoVendaLinhaRepository pedidoVendaLinhaRepository = new PedidoVendaLinhaRepository(); PedidoVendaLinha pedidoLinha = new PedidoVendaLinha(); // ZSTSD011 IRfcTable it_pedidoLinhas = function.GetTable("TE_ITEM"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); if (status != "") { // // PEDIDO LINHAS // int v_cont = 0; foreach (IRfcStructure row in it_pedidoLinhas) { pedidoLinha.Id_cotacao = row.GetString("COTACAO"); pedidoLinha.Id_item = row.GetString("POSNR"); pedidoLinha.MotivoDeRecusa = row.GetString("ABGRU"); // Atualiza o Status do Cabecalho do Pedido v_cont = v_cont + 1; try { // Obtem a Linha do Pedido que será atualizada IList<PedidoVenda> fromCabecalho = pedidoVendaRepository.ObterRegistrosUmCampo("Id_cotacao", pedidoLinha.Id_cotacao); // Atualiza o status da Linha foreach (PedidoVenda dados in fromCabecalho) { dados.Status = Convert.ToString(function.GetChar("E_STATUS")); pedidoVendaRepository.Alterar(dados); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao Atualizar o Status do Cabecalho do Pedido: " + ex); IRfcTable retorno = function.GetTable("TI_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao Atualizar o Status do Cabecalho do Pedido: " + pedidoLinha.Id_cotacao); retorno.Insert(linha_retorno); } //Atualiza o Status e o Motivo Recusa da Linha do Pedido try { // Obtem a Linha do Pedido que será atualizada IList<PedidoVendaLinha> fromLinha = pedidoVendaLinhaRepository.ObterRegistrosDoisCampos("Id_cotacao", pedidoLinha.Id_cotacao, "Id_item", pedidoLinha.Id_item); // Atualiza o status da Linha foreach (PedidoVendaLinha dados in fromLinha) { //dados.Status = pedidoLinha.Status; if (pedidoLinha.MotivoDeRecusa != "") { dados.MotivoDeRecusa = pedidoLinha.MotivoDeRecusa; } else { dados.MotivoDeRecusa = null; } pedidoVendaLinhaRepository.Alterar(dados); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao atualizar o Status da Linha do Pedido: " + ex); IRfcTable retorno = function.GetTable("TI_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao Atualizar o Status da Linha do Pedido: " + pedidoLinha.Id_cotacao + " - Na linha: " + pedidoLinha.Id_item); retorno.Insert(linha_retorno); } } IRfcTable retornoSucesso = function.GetTable("TI_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros atualizados com Sucesso Pedido Vendas: " + v_cont); retornoSucesso.Insert(linha_retorno); // FIM PEDIDO LINHAS } else { IRfcTable retornoErro = function.GetTable("TI_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", "Status recebido inválido"); retornoErro.Insert(linha_retorno); return; } }
public void Excute() { if (this.Variant.Trim().Equals("")) { foreach (QuerySelectionParameter parameter in this.SelectionParameters) { if ((parameter.Obligatory && (parameter.Ranges.Count == 0)) && !parameter.NoDisplay) { throw new SAPException(string.Format(Messages.Theselectionparameter_0_isobligatoryandthereisnovalueprovided, parameter.Name)); //throw new Exception(); } } } IRfcFunction function = this._des.Repository.CreateFunction("RSAQ_REMOTE_QUERY_CALL"); if (this._WorkArea == WorkSpace.StandardArea) { function["WORKSPACE"].SetValue(" "); } else { function["WORKSPACE"].SetValue("X"); } function["QUERY"].SetValue(this._Name); function["USERGROUP"].SetValue(this._UserGroup); function["VARIANT"].SetValue(this._Variant); function["SKIP_SELSCREEN"].SetValue("X"); function["DATA_TO_MEMORY"].SetValue("X"); function["DBACC"].SetValue(this._MaxRows); foreach (QuerySelectionParameter parameter2 in this._SelectionParameters) { for (int j = 0; j < parameter2.Ranges.Count; j++) { IRfcTable table = function.GetTable("SELECTION_TABLE"); table.Append(); IRfcStructure structure = table.CurrentRow; structure["SELNAME"].SetValue(parameter2.Name); structure["KIND"].SetValue((parameter2.Kind == Kind.Parameter) ? "P" : "S"); structure["SIGN"].SetValue((parameter2.Ranges[j].Sign == Sign.Include) ? "I" : "E"); switch (parameter2.Ranges[j].Option) { case RangeOption.Equals: structure["OPTION"].SetValue("EQ"); break; case RangeOption.NotEquals: structure["OPTION"].SetValue("NE"); break; case RangeOption.GreaterThan: structure["OPTION"].SetValue("GT"); break; case RangeOption.LessThan: structure["OPTION"].SetValue("LT"); break; case RangeOption.GreaterThanOrEqualTo: structure["OPTION"].SetValue("GE"); break; case RangeOption.LessThanOrEqualTo: structure["OPTION"].SetValue("LE"); break; case RangeOption.Between: structure["OPTION"].SetValue("BT"); break; case RangeOption.NotBetween: structure["OPTION"].SetValue("NB"); break; case RangeOption.MatchesPattern: structure["OPTION"].SetValue("CP"); break; case RangeOption.NotMatchesPattern: structure["OPTION"].SetValue("NP"); break; default: throw new Exception(string.Format(Messages.Unabletoconvert_0, parameter2.Ranges[j].Option.ToString())); //throw new Exception(); } structure["LOW"].SetValue(parameter2.Ranges[j].LowValue); structure["HIGH"].SetValue(parameter2.Ranges[j].HighValue); } } try { function.Invoke(_des); } catch (RfcAbapException exception) { if (exception.Message.Equals("NO_USERGROUP")) { throw new SAPException(Messages.Usergroupdoesnotexist, exception); } if (exception.Message.Equals("NO_QUERY")) { throw new SAPException(Messages.Querydoesnotexists, exception); } if (exception.Message.Equals("QUERY_LOCKED")) { throw new SAPException(Messages.Querylocked, exception); } if (exception.Message.Equals("NO_SELECTION")) { throw new SAPException(Messages.PleasedefineaselectionorusetheMaxRowsproperty, exception); } if (exception.Message.Equals("NO_VARIANT")) { throw new SAPException(Messages.Novariantorvariantinvalid, exception); } if (exception.Message.Equals("JUST_VIA_VARIANT")) { throw new SAPException(Messages.Querymusthaveavariant, exception); } if (exception.Message.Equals("NO_SUBMIT_AUTH")) { throw new SAPException(Messages.Badauthentication, exception); } if (exception.Message.Equals("NO_DATA_SELECTED")) { throw new SAPException(Messages.Nodatacouldbeselected, exception); } if (exception.Message.Equals("DATA_TO_MEMORY_NOT_POSSIBLE")) { throw new SAPException(Messages.ErrorduringSAPmemoryallocation, exception); } throw new SAPException(exception.Key + exception.Message); } this._Fields.Clear(); string str = ""; foreach (IRfcStructure structure2 in function.GetTable("LISTDESC").ToList()) { if (str == "") { str = structure2["LID"].GetValue().ToString(); } if (structure2["LID"].GetValue().ToString() == str) { bool flag = false; for (int k = 0; k < this._Fields.Count; k++) { if (this._Fields[k].Name.Equals(structure2["FNAMEINT"].GetValue().ToString())) { flag = true; } } if (!flag) { this._Fields.Add(new QueryField(structure2["FNAMEINT"].GetValue().ToString(), structure2["FTYP"].GetValue().ToString(), Convert.ToInt32(structure2["FLEN"].GetValue().ToString()), Convert.ToInt32(structure2["FDEC"].GetValue().ToString()), structure2["FDESC"].GetValue().ToString())); } } } DataTable dt = new DataTable(); dt.BeginInit(); for (int i = 0; i < this._Fields.Count; i++) { string name = this._Fields[i].Name; DataColumn column = new DataColumn(name) { Caption = this._Fields[i].Description }; if (this._Fields[i].ABAPType.Equals("I")) { column.DataType = Type.GetType("System.Int32"); } else if (this._Fields[i].ABAPType.Equals("F")) { column.DataType = Type.GetType("System.Double"); } else if (this._Fields[i].ABAPType.Equals("P")) { column.DataType = Type.GetType("System.Decimal"); } else { column.DataType = Type.GetType("System.String"); } if (!this.SpalteVorhanden(dt, name)) { dt.Columns.Add(column); } } dt.EndInit(); int startIndex = 0; int num5 = 0; int length = 0; int num7 = 0; string str3 = ""; string str4 = ""; bool flag2 = true; IRfcStructure structure3 = null; if (function.GetTable("LDATA").RowCount > 0) { DataRow row = dt.NewRow(); while (flag2) { IRfcTable tb = function.GetTable("LDATA"); structure3 = function.GetTable("LDATA")[num7]; str3 = structure3["LINE"].GetValue().ToString().PadRight(0x41a); string str5 = str3.Substring(startIndex, 3); if (str5.Contains(":") && (startIndex > 1)) { startIndex--; str5 = str3.Substring(startIndex, 3); } if (str5.Contains(":") && (startIndex > 1)) { startIndex--; str5 = str3.Substring(startIndex, 3); } if (str5.Equals(" ")) { if (num7 < (function.GetTable("LDATA").RowCount - 1)) { num7++; startIndex = 0; } else { flag2 = false; } continue; } if (str5.Equals("/ ")) { flag2 = false; continue; } length = Convert.ToInt32(str5); startIndex += 4; str4 = str3.Substring(startIndex, length); if (this._Fields[num5].ABAPType.Equals("I")) { try { bool flag3 = false; if (str4.EndsWith("-")) { flag3 = true; str4 = str4.Substring(0, str4.Length - 1); } int num8 = Convert.ToInt32(str4); if (flag3) { num8 *= -1; } row[num5] = num8; goto Label_0B7C; } catch (Exception exception2) { throw new SAPException("Unable to convert '" + str4 + "' to data type Int32", exception2); //throw exception2; } } if (this._Fields[num5].ABAPType.Equals("P")) { str4 = str4.Replace(".", "").Replace(",", ""); bool flag4 = false; try { if (str4.EndsWith("-")) { flag4 = true; str4 = str4.Substring(0, str4.Length - 1); } int num9 = str4.Length; string str6 = str4.Substring(num9 - this._Fields[num5].Decimals, this._Fields[num5].Decimals); string str7 = str4.Substring(0, num9 - this._Fields[num5].Decimals); if (str6.Equals("")) { str6 = "0"; } decimal num10 = Convert.ToDecimal(str7) + (Convert.ToDecimal(str6) / Convert.ToDecimal(Math.Pow(10.0, (double)this._Fields[num5].Decimals))); if (flag4) { num10 *= -1M; } row[num5] = num10; goto Label_0B7C; } catch (Exception exception3) { throw new SAPException("Unable to convert '" + str4 + "' to data type Decimal", exception3); } } if (this._Fields[num5].ABAPType.Equals("F")) { try { row[num5] = Convert.ToDouble(str4); goto Label_0B7C; } catch (Exception exception4) { throw new SAPException("Unable to convert '" + str4 + "' to data type Double", exception4); } } try { row[num5] = str4; } catch (Exception exception5) { throw new SAPException("Unable to process value '" + str4 + "'", exception5); } Label_0B7C: startIndex += length + 1; if (num5 == (this._Fields.Count - 1)) { dt.Rows.Add(row); row = dt.NewRow(); num5 = 0; } else { num5++; } } this._Result = dt; } }
// SD02 - Inteface de fornecedor - Comunicação // funcao - ZFXI_SD02C //[RfcServerFunction(Name = "ZGXI_SD02")] public static void StfcInterfaceFornecedor(RfcServerContext context, IRfcFunction function) { // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Implementa Repositório dos dados FornecedorRepository fornecedorRepository = new FornecedorRepository(); Fornecedor fornecedor = new Fornecedor(); FornecedorEmpresaRepository fornecedorEmpresaRepository = new FornecedorEmpresaRepository(); FornecedorEmpresa fornecedorEmpresa = new FornecedorEmpresa(); FornecedorTransportadoraLiberadaRepository fornecedorTransportadoraLiberadaRepository = new FornecedorTransportadoraLiberadaRepository(); FornecedorTransportadoraLiberada fornecedorTransportadoraLiberada = new FornecedorTransportadoraLiberada(); // ZTBSD060 IRfcTable it_fornecedor = function.GetTable("IT_FORNECEDOR"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO - BAPIRET2 RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); // ZTBSD079 IRfcTable it_fornecedor_emp = function.GetTable("IT_FORNECEDOR_EMP"); // Implementa Repositorio Rfc de resposta RfcRepository repEmp = context.Repository; // RETORNO - BAPIRET2 RfcStructureMetadata bapiret2emp = repEmp.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_emp = bapiret2emp.CreateStructure(); // ZTBSD086 - ZTBXI_101 IRfcTable it_fornecedor_trans_lib = function.GetTable("IT_FORNECEDOR_TL"); // Implementa Repositorio Rfc de resposta RfcRepository repfornecedorTrans = context.Repository; // RETORNO RfcStructureMetadata bapiret2Trans = repfornecedorTrans.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_trans = bapiret2Trans.CreateStructure(); // Se a interface de Fornecedor estiver marcada para Reiniciar "X" marca os registros das 2 tabebas como Eliminados. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<Fornecedor> fromDB = fornecedorRepository.ObterTodos(); IList<FornecedorEmpresa> fromDBemp = fornecedorEmpresaRepository.ObterTodos(); foreach (Fornecedor dados in fromDB) { foreach (IRfcStructure row in it_fornecedor) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); } dados.Eliminacao = "X"; fornecedorRepository.Alterar(dados); } foreach (FornecedorEmpresa dados in fromDBemp) { foreach (IRfcStructure row in it_fornecedor_emp) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); } dados.Eliminacao = "X"; fornecedorEmpresaRepository.Alterar(dados); } } // // FORNECEDOR // //Char deletar = function.GetChar("I_REFRESH"); int v_cont = 0; foreach (IRfcStructure row in it_fornecedor) { fornecedor.Codigo = row.GetString("LIFNR"); fornecedor.Nome = row.GetString("NAME1"); fornecedor.Cpf = row.GetString("STCD2"); fornecedor.Cnpj = row.GetString("STCD1"); fornecedor.Nr_ie_for = row.GetString("STCD3"); fornecedor.Cep = row.GetString("POST_CODE"); fornecedor.Endereco = row.GetString("STREET"); fornecedor.Numero = row.GetString("HOUSE_NUM1"); fornecedor.Municipio = row.GetString("CITY1"); fornecedor.Bairro = row.GetString("CITY2"); fornecedor.Uf = row.GetString("UF"); fornecedor.Pais = row.GetString("COUNTRY"); fornecedor.Tel_res = row.GetString("TELF1"); fornecedor.Tel_res = row.GetString("TELF2"); fornecedor.Tel_cel = row.GetString("TELF1"); fornecedor.Fax = row.GetString("TELFX"); fornecedor.Email = row.GetString("EMAIL"); fornecedor.Grupo_contas = row.GetString("KTOKK"); fornecedor.Pacote = row.GetString("PACOTE"); fornecedor.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); fornecedor.Hora_criacao = row.GetString("ERZET"); fornecedor.Eliminacao = row.GetString("LOEVM"); v_cont = v_cont + 1; try { IList<Fornecedor> fromDB = fornecedorRepository.ObterRegistrosUmCampo("Codigo", fornecedor.Codigo); if (fromDB.Count == 0) { fornecedorRepository.Salvar(fornecedor); } else { fornecedorRepository.Alterar(fornecedor); } } catch (Exception ex) { // Em caso de erro retorna o erro e a descricao do material Console.Write("Erro ao inserir o Fornecedor, Mensagem:" + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir o Fornecedor: " + fornecedor.Nome); retorno.Insert(linha_retorno); } } // // FIM FORNECEDOR // // FORNECEDOR EMPRESA // int v_cont_emp = 0; foreach (IRfcStructure row in it_fornecedor_emp) { fornecedorEmpresa.Empresa = row.GetString("BUKRS"); fornecedorEmpresa.Codigo = row.GetString("LIFNR"); fornecedorEmpresa.Pacote = row.GetString("PACOTE"); fornecedorEmpresa.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); fornecedorEmpresa.Hora_criacao = row.GetString("ERZET"); fornecedorEmpresa.Eliminacao = row.GetString("LOEVM"); v_cont_emp = v_cont_emp + 1; try { IList<FornecedorEmpresa> fromDB = fornecedorEmpresaRepository.ObterRegistrosDoisCampos("Empresa", fornecedorEmpresa.Empresa, "Codigo", fornecedorEmpresa.Codigo); if (fromDB.Count == 0) { fornecedorEmpresaRepository.Salvar(fornecedorEmpresa); } else { fornecedorEmpresaRepository.Alterar(fornecedorEmpresa); } } catch (Exception ex) { Console.Write("Erro ao inserir o Fornecedor Empresa, Mensagem:" + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_emp.SetValue("TYPE", "E"); linha_retorno_emp.SetValue("MESSAGE", ex.Message); linha_retorno_emp.SetValue("MESSAGE", "Erro ao inserir o Forn. Empresa: " + fornecedorEmpresa.Empresa + "Fornecedor: " + fornecedorEmpresa.Codigo); retorno.Insert(linha_retorno_emp); } } // // FIM FORNECEDOR EMPRESA // // FORNECEDOR TRANSPORTADORAS LIBERADAS // int v_cont_tras_lib = 0; foreach (IRfcStructure row in it_fornecedor_trans_lib) { fornecedorTransportadoraLiberada.Codigo = row.GetString("LIFNR"); fornecedorTransportadoraLiberada.Funcao_parceiro = row.GetString("PARVW"); fornecedorTransportadoraLiberada.Numero_agente_frete = row.GetString("TDLNR"); String v_padrao = row.GetString("PADRAO"); if (v_padrao != "") { fornecedorTransportadoraLiberada.Padrao = Convert.ToBoolean(1); } fornecedorTransportadoraLiberada.Pacote = row.GetString("PACOTE"); fornecedorTransportadoraLiberada.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); fornecedorTransportadoraLiberada.Hora_criacao = row.GetString("ERZET"); v_cont_tras_lib = v_cont_tras_lib + 1; try { IList<FornecedorTransportadoraLiberada> fromDB = fornecedorTransportadoraLiberadaRepository.ObterRegistrosDoisCampos("Codigo", fornecedorTransportadoraLiberada.Codigo, "Numero_agente_frete", fornecedorTransportadoraLiberada.Numero_agente_frete); if (fromDB.Count == 0) { fornecedorTransportadoraLiberadaRepository.Salvar(fornecedorTransportadoraLiberada); } else { foreach (FornecedorTransportadoraLiberada dados in fromDB) { fornecedorTransportadoraLiberada.Id = dados.Id; } fornecedorTransportadoraLiberadaRepository.Alterar(fornecedorTransportadoraLiberada); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir a Tranpostadora do Fornecedor, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_trans.SetValue("TYPE", "E"); linha_retorno_trans.SetValue("MESSAGE", ex.Message); linha_retorno_trans.SetValue("MESSAGE", "Erro ao inserir a Tranpostadora do Fornecedor " + fornecedorTransportadoraLiberada.Codigo + " - Numero Agente Frete: " + fornecedorTransportadoraLiberada.Numero_agente_frete); retorno.Insert(linha_retorno_trans); } } // FIM FORNECEDOR TRANSPORTADORAS LIBERADAS IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso Fornecedor: " + v_cont); retornoSucesso.Insert(linha_retorno); IRfcTable retornoSucessoEmp = function.GetTable("IT_RETURN"); linha_retorno_emp.SetValue("TYPE", "S"); linha_retorno_emp.SetValue("MESSAGE", "Registros com Sucesso Forn. Empresa: " + v_cont_emp); retornoSucessoEmp.Insert(linha_retorno_emp); }
public string SAPData() { try { /* System.Data.DataTable dt = new System.Data.DataTable(); * dt.Columns.AddRange(new DataColumn[14] { new DataColumn("LIFNR", typeof(string)), * new DataColumn("BELNR", typeof(string)), * new DataColumn("BUZEI", typeof(string)), * new DataColumn("GJAHR", typeof(string)), * new DataColumn("BUDAT", typeof(string)), * new DataColumn("BWART", typeof(string)), * new DataColumn("MATNR", typeof(string)), * new DataColumn("SGTXT", typeof(string)), * new DataColumn("EBELN", typeof(string)), * new DataColumn("AEDAT", typeof(string)), * new DataColumn("MAKTX", typeof(string)), * new DataColumn("MENGE", typeof(string)), * new DataColumn("MEINS", typeof(string)), * new DataColumn("DMBTR", typeof(string)),}); */ String username = (string)(Session["username"]); RfcConfigParameters rfc = new RfcConfigParameters();////Assign values in rfcconfigparameters rfc.Add(RfcConfigParameters.Name, ConfigurationManager.AppSettings["Name"].ToString()); rfc.Add(RfcConfigParameters.AppServerHost, ConfigurationManager.AppSettings["ServerHost"].ToString()); rfc.Add(RfcConfigParameters.Client, ConfigurationManager.AppSettings["Client"].ToString()); rfc.Add(RfcConfigParameters.User, ConfigurationManager.AppSettings["User"].ToString()); rfc.Add(RfcConfigParameters.Password, ConfigurationManager.AppSettings["Password"].ToString()); rfc.Add(RfcConfigParameters.SystemNumber, ConfigurationManager.AppSettings["SystemNumber"].ToString()); rfc.Add(RfcConfigParameters.Language, ConfigurationManager.AppSettings["Language"].ToString());; rfc.Add(RfcConfigParameters.PoolSize, ConfigurationManager.AppSettings["PoolSize"].ToString()); RfcDestination mydestination = RfcDestinationManager.GetDestination(rfc); RfcRepository myrepository = mydestination.Repository; IRfcFunction myfunction = myrepository.CreateFunction("ZSP_VEND_MOVEMENT"); username = vendor_code.Value; myfunction.SetValue("I_LIFNR", username); String ponumber = po_number.Value; myfunction.SetValue("I_EBELN", ponumber); myfunction.Invoke(mydestination); IRfcTable messageTable = myfunction.GetTable("ITAB", true); int rowIndex = 0; foreach (IRfcStructure row in messageTable) { String LIFNR = row.GetString("LIFNR"); String BELNR = row.GetString("BELNR"); String BUZEI = row.GetString("BUZEI"); String GJAHR = row.GetString("GJAHR"); String BUDAT = row.GetString("BUDAT"); String BWART = row.GetString("BWART"); String MATNR = row.GetString("MATNR"); String SGTXT = row.GetString("SGTXT"); String EBELN = row.GetString("EBELN"); String AEDAT = row.GetString("AEDAT"); String MAKTX = row.GetString("MAKTX"); String MENGE = row.GetString("MENGE"); String MEINS = row.GetString("MEINS"); String DMBTR = row.GetString("DMBTR"); block2 += "<tr>"; block2 += "<td>" + LIFNR + "</td>"; block2 += "<td>" + BELNR + "</td>"; block2 += "<td>" + BUZEI + "</td>"; block2 += "<td>" + GJAHR + "</td>"; block2 += "<td>" + BUDAT + "</td>"; block2 += "<td>" + BWART + "</td>"; block2 += "<td>" + MATNR + "</td>"; block2 += "<td>" + SGTXT + "</td>"; block2 += "<td>" + EBELN + "</td>"; block2 += "<td>" + AEDAT + "</td>"; block2 += "<td>" + MAKTX + "</td>"; block2 += "<td>" + MENGE + "</td>"; block2 += "<td>" + MEINS + "</td>"; block2 += "<td>" + DMBTR + "</td>"; block2 += "</tr>"; rowIndex = rowIndex + 1; } return(block2); } catch (Exception ex) { } return(block2); }
// SD03 - Inteface de materiais - Comunicação // funcao - ZFXI_SD03C //[RfcServerFunction(Name = "ZFXI_SD03C")] public static void StfcInterfaceMaterial(RfcServerContext context, IRfcFunction function) { // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Implementa Repositório dos dados MaterialRepository materialRepository = new MaterialRepository(); Material material = new Material(); IRfcTable it_material = function.GetTable("IT_MATERIAL"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO - BAPIRET2 RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { int count = 0; // Apaga todos os registros da tabela pro_fornecedor IList<Material> fromDB = materialRepository.ObterTodos(); foreach (Material dados in fromDB) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_material) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; materialRepository.Alterar(dados); } } int v_cont = 0; foreach (IRfcStructure row in it_material) { material.Id_material = row.GetString("MATNR"); material.Descricao = row.GetString("MAKTX"); material.Id_centro = row.GetString("WERKS"); material.Tip_mat = row.GetString("MTART"); material.Status_mat = row.GetString("MSTAE"); material.Uni_med = row.GetString("MEINS"); material.Status_mat = row.GetString("MSTAE"); material.Pacote = row.GetString("PACOTE"); material.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); material.Hora_criacao = row.GetString("ERZET"); material.Eliminacao = row.GetString("LVORM"); v_cont = v_cont + 1; try { IList<Material> fromDB = materialRepository.ObterRegistrosDoisCampos("Id_material", material.Id_material, "Id_centro", material.Id_centro); if (fromDB.Count == 0) { materialRepository.Salvar(material); } else { foreach (Material dados in fromDB) { material.pro_id_material = dados.pro_id_material; } materialRepository.Alterar(material); } } catch (Exception ex) { // Em caso de erro retorna o erro e a descricao do material Console.Write("Erro ao inserir o Material, Mensagem: "); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir o Material: " + material.Descricao); retorno.Insert(linha_retorno); } } IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso Material: " + v_cont); retornoSucesso.Insert(linha_retorno); }
//MGV getListFacturasNewConSAP public List <PEntidades.FacturasXVerificar> getListFacturasNewConSAP( List <string[]> listaDiferentesInstancias, string ordenarOrden, string ordenarRef, string fhigh, string flow, string facthig, string factlow, string monedahig, string monedalow, string refhig, string refLow, ref string mensaje ) { List <PEntidades.FacturasXVerificar> lstResul = new List <PEntidades.FacturasXVerificar>(); // objeto lista //PEntidades.SrvSAPUProv.Z_UFAC_VERIFICAR verificar = new PEntidades.SrvSAPUProv.Z_UFAC_VERIFICAR(); //PEntidades.FacturasNE verificar = new PEntidades.FacturasNE(); //-- se necesita o se pasan directo los campos a la llamada? status = new string[listaDiferentesInstancias.Count]; for (int j = 0; j < listaDiferentesInstancias.Count; j++) //contiene idInstacia, endpoint, y sociedades separadas por "," ; { try { PEntidades.SrvSAPUProv.ZWS_UPROVEEDORESClient srv = new PPersistencia.WebServices().getZWS_UPROVEEDORESInstanceNew( listaDiferentesInstancias[j][1].ToString().Trim(), listaDiferentesInstancias[j][4].Split(new Char[] { ',' }) ); srv.Open(); srv.InnerChannel.OperationTimeout = new TimeSpan(0, 10, 0); //cambio llamado hacia SAP PPersistencia.SAPConn psc = new PPersistencia.SAPConn(); List <ParamsCallSAP> list = new List <ParamsCallSAP>(); ParamsCallSAP pr = new ParamsCallSAP(); pr = new ParamsCallSAP(); //verificar.REFERENCIA_LOW = refLow; pr.NameVar = "REFERENCIA_LOW"; pr.ValVar = refLow; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); //verificar.REFERENCIA_HIGH = refhig; pr.NameVar = "REFERENCIA_HIGH"; pr.ValVar = refhig; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); //verificar.MONEDA_LOW = monedalow; pr.NameVar = "MONEDA_LOW"; pr.ValVar = monedalow; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); //verificar.MONEDA_HIGH = monedahig; pr.NameVar = "MONEDA_HIGH"; pr.ValVar = monedahig; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); //verificar.F_COMPRA_LOW = flow; pr.NameVar = "F_COMPRA_LOW"; pr.ValVar = flow; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); //verificar.F_COMPRA_HIGH = fhigh; pr.NameVar = "F_COMPRA_HIGH"; pr.ValVar = fhigh; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); //verificar.FACTURA_LOW = factlow; pr.NameVar = "F_FAC_LOW"; pr.ValVar = factlow; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); //verificar.FACTURA_HIGH = facthig; pr.NameVar = "F_FAC_HIGH"; pr.ValVar = facthig; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); //verificar.P_ORDREF = ordenarRef; pr.NameVar = "P_ORDREF"; pr.ValVar = ordenarRef; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); //verificar.P_ORDPED = ordenarOrden; pr.NameVar = "P_ORDPED"; pr.ValVar = ordenarOrden; pr.TipVar = "S"; list.Add(pr); pr = new ParamsCallSAP(); //verificar.P_BLOCK = "X"; pr.NameVar = "P_BLOCK"; pr.ValVar = "X"; pr.TipVar = "S"; list.Add(pr); List <TablasCallSAP> listT = new List <TablasCallSAP>(); TablasCallSAP tr = new TablasCallSAP(); List <ParamsCallSAP> listTb = new List <ParamsCallSAP>(); string[] splitLifnr = listaDiferentesInstancias[j][3].Split(new Char[] { ',' }); for (int i = 1; i <= splitLifnr.Length; i++) //verificar.PROVEEDOR = PEntidades.Utiles.objetoLifnr(splitLifnr); { pr = new ParamsCallSAP(); pr.NameVar = "LIFNR"; pr.ValVar = splitLifnr[i - 1].ToString().Trim(); //pr.ValVar = "1000000"; pr.TipVar = "S"; listTb.Add(pr); } tr.TablaVar = "PROVEEDOR_TB"; tr.CamposVar = listTb; listT.Add(tr); string[] splitSoc = listaDiferentesInstancias[j][2].Split(new Char[] { ',' }); List <TablasCallSAP> listTC = new List <TablasCallSAP>(); TablasCallSAP trC = new TablasCallSAP(); List <ParamsCallSAP> listTc = new List <ParamsCallSAP>(); for (int i = 1; i <= splitSoc.Length; i++) //verificar.CENTRO = PEntidades.Utiles.objetoSociedad(splitSoc); { pr = new ParamsCallSAP(); pr.NameVar = "WERKS"; pr.ValVar = splitSoc[i - 1].ToString().Trim(); pr.TipVar = "S"; listTc.Add(pr); } trC.TablaVar = "CENTRO_TB"; trC.CamposVar = listTc; listT.Add(trC); //PEntidades.SrvSAPUProv.Z_UFAC_VERIFICARResponse resul = srv.Z_UFAC_VERIFICAR(verificar); IRfcFunction rescon = psc.conSAP("Z_DFAC_VERIFICAR", list, listT); mensaje = psc.mensaje; //mensaje = resul.MENSAJE; IRfcTable tb = rescon.GetTable(0); for (int o = 0; o < tb.Count; o++) //for (int i = 0; i < resul.IT_F_VERIFICAR.Length; i++) { tb.CurrentIndex = o; PEntidades.FacturasXVerificar tmpFac = new PEntidades.FacturasXVerificar(); // objeto de la lista tmpFac.IDINSTANCIA = int.Parse(listaDiferentesInstancias[j][0]); tmpFac.TIPO = tb.CurrentRow.GetString("TIPO"); //tmpFac.TIPO = resul.IT_F_VERIFICAR[i].TIPO; tmpFac.EBELN = tb.CurrentRow.GetString("EBELN"); //resul.IT_F_VERIFICAR[i].EBELN; tmpFac.RFCCorrespon = tb.CurrentRow.GetString("RFC_PROVEEDOR"); //resul.IT_F_VERIFICAR[i].RFC_PROVEEDOR; tmpFac.RFCSociedad = tb.CurrentRow.GetString("RFC_SOC"); //resul.IT_F_VERIFICAR[i].RFC_SOC; tmpFac.DescripcionErrorSAP = tb.CurrentRow.GetString("FACT_SAP"); //resul.IT_F_VERIFICAR[i].FACT_SAP; tmpFac.DescripcionErrorSAT = tb.CurrentRow.GetString("FACT_SAT"); // resul.IT_F_VERIFICAR[i].FACT_SAT; tmpFac.InsidenciaPersonal = tb.CurrentRow.GetString("INCIDENCIA"); //resul.IT_F_VERIFICAR[i].INCIDENCIA; tmpFac.XBLNR2 = tb.CurrentRow.GetString("XBLNR2"); //resul.IT_F_VERIFICAR[i].XBLNR2; tmpFac.LIFNR = tb.CurrentRow.GetString("LIFNR"); //resul.IT_F_VERIFICAR[i].LIFNR; tmpFac.BUKRS = tb.CurrentRow.GetString("BUKRS"); //resul.IT_F_VERIFICAR[i].BUKRS; tmpFac.WERKS = tb.CurrentRow.GetString("WERKS").ToString(); //resul.IT_F_VERIFICAR[i].WERKS.ToString(); tmpFac.BUDAT = tb.CurrentRow.GetString("BUDAT"); //resul.IT_F_VERIFICAR[i].BUDAT; tmpFac.BLDAT = tb.CurrentRow.GetString("BLDAT"); //resul.IT_F_VERIFICAR[i].BLDAT; tmpFac.WRBTR = tb.CurrentRow.GetString("WRBTR").ToString(); //resul.IT_F_VERIFICAR[i].WRBTR.ToString();//Decimal tmpFac.IVA = tb.CurrentRow.GetString("IVA").ToString(); //resul.IT_F_VERIFICAR[i].IVA.ToString(); tmpFac.MWSKZ = tb.CurrentRow.GetString("MWSKZ").ToString(); //resul.IT_F_VERIFICAR[i].MWSKZ.ToString();//Decimal tmpFac.IMP_TOTAL = tb.CurrentRow.GetString("IMP_TOTAL").ToString(); //resul.IT_F_VERIFICAR[i].IMP_TOTAL.ToString();//Decimal tmpFac.RETENCION = tb.CurrentRow.GetString("RETENCION").ToString(); //resul.IT_F_VERIFICAR[i].RETENCION.ToString();//Decimal tmpFac.WAERS = tb.CurrentRow.GetString("WAERS").ToString(); //resul.IT_F_VERIFICAR[i].WAERS.ToString();//Decimal tmpFac.SALDO = tb.CurrentRow.GetString("SALDO").ToString(); //resul.IT_F_VERIFICAR[i].SALDO.ToString(); tmpFac.descMaterial = tb.CurrentRow.GetString("TXZ01").ToString(); //resul.IT_F_VERIFICAR[i].TXZ01.ToString(); tmpFac.LIGHTS = tb.CurrentRow.GetString("LIGHTS").ToString(); //resul.IT_F_VERIFICAR[i].LIGHTS.ToString(); tmpFac.posicion = tb.CurrentRow.GetString("POSICION").ToString(); //resul.IT_F_VERIFICAR[i].POSICION.ToString(); tmpFac.tipoLinea = tb.CurrentRow.GetString("TIPOLINEA").ToString(); //resul.IT_F_VERIFICAR[i].TIPOLINEA.ToString(); tmpFac.BWTAR = tb.CurrentRow.GetString("BWTAR").ToString(); //resul.IT_F_VERIFICAR[i].BWTAR.ToString(); tmpFac.cantidadXML = tb.CurrentRow.GetInt("ZCOUNT"); //resul.IT_F_VERIFICAR[i].ZCOUNT; tmpFac.MATNR = tb.CurrentRow.GetString("MATNR"); //resul.IT_F_VERIFICAR[i].MATNR; tmpFac.GJAHR = tb.CurrentRow.GetString("GJAHR"); //resul.IT_F_VERIFICAR[i].GJAHR; if (tb.CurrentRow.GetString("KSCHL") == null) //.resul.IT_F_VERIFICAR[i].KSCHL { tmpFac.KSCHL = ""; } else { tmpFac.KSCHL = tb.CurrentRow.GetString("KSCHL"); //resul.IT_F_VERIFICAR[i].KSCHL.ToString(); } tmpFac.BELNR = tb.CurrentRow.GetString("BELNR"); //resul.IT_F_VERIFICAR[i].BELNR.ToString(); if (tb.CurrentRow.GetString("MSG_VARIOS") == null) //resul.IT_F_VERIFICAR[i]. == null) { tmpFac.msgVarios = ""; } else { tmpFac.msgVarios = tb.CurrentRow.GetString("MSG_VARIOS"); //resul.IT_F_VERIFICAR[i].MSG_VARIOS; } tmpFac.esPrimerCarga = false; lstResul.Add(tmpFac); } // for result srv.Close(); } // try catch (Exception e) { status[j] = "Error al cargar en la instancia: " + listaDiferentesInstancias[j][6]; } } // for return(lstResul); }
public string LoadNomenclature(string organizationId, string sessionId) { string error = ""; List <AM_SAP> amSaps = new List <AM_SAP>(); var conn = getSqlConnection(); if (conn == null) { conn = createSQLConnection(); setSqlConnection(conn); } if (conn.State != ConnectionState.Open) { conn.Open(); } try { Dictionary <string, string> openWith = new Dictionary <string, string>(); string IM_WERKS = getOrganizationBurks(int.Parse(organizationId)); openWith.Add("IM_WERKS", IM_WERKS); //openWith.Add("IM_MATNR", "2100657"); try { RfcDestinationManager.RegisterDestinationConfiguration(new ER_SAP_Config()); } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.Message); } String NOMENCLATURE_RFC = ConfigurationManager.AppSettings["SAP_ERP_" + organizationId]; RfcDestination destination = RfcDestinationManager.GetDestination(NOMENCLATURE_RFC); IRfcFunction function = null; try { function = destination.Repository.CreateFunction("ZM_RFC_MATNR_OVERALL"); foreach (KeyValuePair <string, string> kvp in openWith) { function.SetValue(kvp.Key, kvp.Value); } //function.SetValue("IM_MATNR", "2100657"); function.Invoke(destination); } catch (RfcBaseException e) { System.Diagnostics.Debug.WriteLine(e.ToString()); } if (function != null) { //Get the function table parameter COMPANYCODE_LIST IRfcTable codeses = function.GetTable("PIT_OBJECTS"); if (codeses.RowCount == 0) { System.Diagnostics.Debug.WriteLine("Данные не выбраны"); } else { using (var transaction = conn.BeginTransaction()) { OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; foreach (var codes in codeses) { cmd.CommandText = "Insert into NOMENCLATURE_SAPS (organizationid, sessionid, matnr, maktx, extwg, ewbez, zzvngm, meins, msehl3, " + "msehl, lv_m, bz_m, mtstb, ersda, laeda, lw_w," + "bz_w, class, kschl, atnam, ATKLA, atklt, atbez, val, okei_code, okei_name) " + "VALUES (" + organizationId + "," + "'" + sessionId + "'," + "'" + codes.GetString("MATNR") + "'," + "'" + codes.GetString("MAKTX") + "'," + "'" + codes.GetString("EXTWG") + "'," + "'" + codes.GetString("EWBEZ") + "'," + "'" + codes.GetString("ZZVNGM") + "'," + "'" + codes.GetString("MEINS") + "'," + "'" + codes.GetString("MSEHL3") + "'," + "'" + codes.GetString("MSEHL") + "'," + "'" + codes.GetString("LV_M") + "'," + "'" + codes.GetString("BZ_M") + "'," + "'" + codes.GetString("MTSTB") + "'," + "to_date('" + codes.GetString("ERSDA") + "','yyyy-mm-dd' )," + "to_date('" + codes.GetString("LAEDA") + "','yyyy-mm-dd' )," + "'" + codes.GetString("LW_W") + "'," + "'" + codes.GetString("BZ_W") + "'," + "'" + codes.GetString("CLASS") + "'," + "'" + codes.GetString("KLSCHL") + "'," + "'" + codes.GetString("ATNAM") + "'," + "'" + codes.GetString("ATKLA") + "'," + "'" + codes.GetString("ATKLT") + "'," + "'" + codes.GetString("ATBEZ") + "'," + "'" + codes.GetString("VAL") + "'," + "'" + codes.GetString("OKEI_CODE") + "'," + "'" + codes.GetString("OKEI_NAME") + "')"; cmd.ExecuteNonQuery(); } transaction.Commit(); // Запускаем процедуру разбора данных RFC в структуру данных АС try { cmd = new OracleCommand("PCK_STORE.nomenclature_rfc_SAP", conn); cmd.CommandType = CommandType.StoredProcedure; OracleParameter inval = new OracleParameter("organization_Id", OracleDbType.Int32); inval.Direction = ParameterDirection.Input; inval.Value = int.Parse(organizationId); cmd.Parameters.Add(inval); inval = new OracleParameter("session_id", OracleDbType.Varchar2); inval.Direction = ParameterDirection.Input; inval.Value = sessionId; cmd.Parameters.Add(inval); cmd.ExecuteNonQuery(); } catch (Exception e) { error = error + e.Message; System.Diagnostics.Debug.WriteLine(error); } } } } } catch (Exception e) { error = e.Message; System.Diagnostics.Debug.WriteLine(error); } finally { if (conn.State != ConnectionState.Closed) { conn.Close(); } } return(error); }
/// <summary> /// 取得供應商(藝術家)主檔 /// </summary> /// <param name="P_DATE_from">異動日期起始,yyyyMMdd</param> /// <param name="P_DATE_TO">異動日期迄止,yyyyMMdd</param> /// <param name="P_NAME1">藝術家名</param> /// <returns></returns> public static List <ET_VENDOR> GetSap_Z_MM_ZHAW_CUBE2(string P_DATE_from, string P_DATE_TO, string P_NAME1) { IDestinationConfiguration ID = new MyBackendConfig(); IRfcTable IRetTable = null; bool bRegistered = false; List <ET_VENDOR> ET_VENDORList = new List <ET_VENDOR>(); try { RfcDestination rfcDest = null; try { rfcDest = RfcDestinationManager.GetDestination("PRD"); bRegistered = true; } catch (Exception ex) { if (ex.GetType().Name == "RfcInvalidStateException") { } } finally { if (rfcDest == null && bRegistered == false) { bRegistered = true; RfcDestinationManager.RegisterDestinationConfiguration(ID); rfcDest = RfcDestinationManager.GetDestination("PRD"); } } RfcRepository rfcRepo = rfcDest.Repository; IRfcFunction IReader = rfcRepo.CreateFunction("Z_MM_ZHAW_CUBE2"); IReader.SetValue("P_DATE_from", P_DATE_from); IReader.SetValue("P_DATE_TO", P_DATE_TO); IReader.SetValue("P_NAME1", P_NAME1); //每幾筆資料切成一個檔案 //IReader.SetValue("COUNT", "1000"); //執行查詢 IReader.Invoke(rfcDest); IRetTable = IReader.GetTable("ET_VENDOR"); ET_VENDORList = IRetTable.AsEnumerable().Select(x => new ET_VENDOR() { NAME1 = x.GetString("NAME1"), LIFNR = x.GetString("LIFNR"), SORTL = x.GetString("SORTL"), LAND1 = x.GetString("LAND1"), ERDAT = x.GetString("ERDAT"), UDATE = x.GetString("UDATE") ?? "" }).ToList(); } catch (Exception ex) { throw ex; } finally { if (bRegistered) { RfcDestinationManager.UnregisterDestinationConfiguration(ID); } } return(ET_VENDORList); }
public static void ValidateSAPData(PlanningFunctionGroup activityPlanGroup, int functionCount) { lock (m_syncObject) { if (activityPlanGroup.FunctionList.Count > 0) { IRfcFunction sapValidateCostPlanFunction = SapConnection.GetObject().CurrentDestination.Repository.CreateFunction("BAPI_ACT_PRICE_CHECK_AND_POST"); IRfcTable returnTable = null; try { ///*** --- IMPORT (SAP TAB) -------------------------------***// IRfcStructure headerInfoStructure = sapValidateCostPlanFunction.GetStructure("HEADER_INFO"); // HEADER_INFO headerInfoStructure.SetValue("CO_AREA", ((ActivityPlan)activityPlanGroup.FunctionList[0]).ControllingArea); // 3 headerInfoStructure.SetValue("FISC_YEAR", ((ActivityPlan)activityPlanGroup.FunctionList[0]).FiscalYear); // 4 headerInfoStructure.SetValue("PERIOD_FROM", ((ActivityPlan)activityPlanGroup.FunctionList[0]).PeriodFrom); // 5 headerInfoStructure.SetValue("PERIOD_TO", ((ActivityPlan)activityPlanGroup.FunctionList[0]).PeriodTo); // 6 headerInfoStructure.SetValue("VERSION", ((ActivityPlan)activityPlanGroup.FunctionList[0]).Version); // 8 headerInfoStructure.SetValue("DOC_HDR_TX", ((ActivityPlan)activityPlanGroup.FunctionList[0]).DocumentHeaderText); // 9 headerInfoStructure.SetValue("PLAN_CURRTYPE", ((ActivityPlan)activityPlanGroup.FunctionList[0]).PlanningCurrency); // 10 sapValidateCostPlanFunction.SetValue("DELTA", ((ActivityPlan)activityPlanGroup.FunctionList[0]).Delta); // 11 sapValidateCostPlanFunction.SetValue("TESTRUN", "X"); // "X" - Validate Only, " " - Post foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList) { try { /*** --- IDX_STRUCTURE -- CO Planning: Plan Activity BAPIs -------------- ***/ IRfcTable indexTable = sapValidateCostPlanFunction.GetTable("IDX_STRUCTURE"); indexTable.Append(); indexTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000")); indexTable.SetValue("VALUE_INDEX", ((ActivityPlan)myFunction).ValueIndex.ToString("000000")); indexTable.SetValue("ATTRIB_INDEX", "000000"); /*** --- OBJECT -- CO Planning: Objects for Plan Activity BAPIs --------- ***/ IRfcTable coObjectTable = sapValidateCostPlanFunction.GetTable("OBJECT"); coObjectTable.Append(); string objectIndex = ((ActivityPlan)myFunction).ObjectIndex.ToString("000000"); string valueIndex = ((ActivityPlan)myFunction).ValueIndex.ToString("000000"); try { if (coObjectTable.GetValue("OBJECT_INDEX") != null) { if (coObjectTable.GetValue("OBJECT_INDEX").ToString() != objectIndex) { coObjectTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000")); // Calculated } } else { coObjectTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000")); // Calculated } } catch (Exception ex) { coObjectTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000")); } coObjectTable.SetValue("COSTCENTER", ((ActivityPlan)myFunction).CostCenter); // 12 coObjectTable.SetValue("ACTTYPE", ((ActivityPlan)myFunction).ActivityType); // 13 /*** --- ACCOUNT_PLAN_TOTVALUE -- CO Planning: Objects for Primary Cost BAPIs --------- ***/ IRfcTable totValueTable = sapValidateCostPlanFunction.GetTable("TOT_VALUE"); totValueTable.Append(); totValueTable.SetValue("VALUE_INDEX", ((ActivityPlan)myFunction).ValueIndex.ToString("000000")); // Calculated if (((ActivityPlan)myFunction).Price != string.Empty) { totValueTable.SetValue("PRICE_FIX", ((ActivityPlan)myFunction).Price); // 2 totValueTable.SetValue("DIST_KEY_PRICE_FIX", ((ActivityPlan)myFunction).DistributionKey); totValueTable.SetValue("PRICE_UNIT", "00001"); } else { totValueTable.SetValue("PRICE_FIX", "0"); } totValueTable.SetValue("ACTVTY_QTY", ((ActivityPlan)myFunction).Quantity); // 1 totValueTable.SetValue("DIST_KEY_QUAN", ((ActivityPlan)myFunction).DistributionKey); // 7 //// ToDo totValueTable.SetValue("CURRENCY", ((ActivityPlan)myFunction).TransactionCurrency); // 14 myFunction.Updated = true; } catch (Exception ex) { myFunction.ValidationResult = ex.Message; } } } catch (Exception exp) { foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList) { myFunction.ValidationResult = exp.Message; } } try { sapValidateCostPlanFunction.Invoke(SapConnection.GetObject().CurrentDestination); } catch (Exception ex) { DialogResult r = MessageBox.Show("SAP Authorization Error: " + ex.Message, "Error", System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); if (r == DialogResult.OK) { } ReturnProgressDataForm.CancelProcess(); return; } returnTable = sapValidateCostPlanFunction.GetTable("RETURN"); foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList) { if (!SAPRequest.ReturnValuesList.ContainsKey(myFunction.Signature)) { SAPRequest.ReturnValuesList.Add(myFunction.Signature, myFunction); } } if (returnTable.RowCount > 0) { try { string logPath = LogFile.CheckCreateLogFolder() + "\\PWLogValOnly" + DateTime.Now.ToString("(dd-MMM-yyyy-HH-mm-ss-f)") + ".txt"; if (!File.Exists(logPath)) { using (TextWriter writer = File.CreateText(logPath)) { writer.WriteLine("VALIDATION ONLY: " + DateTime.Now.ToString("(dd-MMM-yyyy-HH-mm-ss-f)")); writer.WriteLine(" "); for (int y = 0; y <= (returnTable.RowCount - 1); y += 1) { for (int z = 0; z <= (returnTable[y].ElementCount - 1); z += 1) { string par = returnTable[y][z].Metadata.Name; string val = returnTable[y].GetString(z); string messageLine = par + " : " + val; writer.WriteLine(messageLine); } writer.WriteLine(" "); } } } } catch (Exception ex) { //MessageBox.Show(ex.Message) } for (int j = 0; j <= (returnTable.RowCount - 1); j++) { int row = Convert.ToInt32(returnTable[j].GetString("ROW")) - 1; string message = returnTable[j].GetString("MESSAGE"); if (row < 0) { row = 0; } string rType = string.Empty; string messageV1 = string.Empty; string messageV2 = string.Empty; string messageV3 = string.Empty; string messageV4 = string.Empty; string rNumber = string.Empty; rType = returnTable[j].GetString("TYPE"); messageV1 = returnTable[j].GetString("MESSAGE_V1"); messageV2 = returnTable[j].GetString("MESSAGE_V2"); for (int i = 0; i <= (activityPlanGroup.FunctionList.Count - 1); i++) { int elementLocation = SAPRequest.GetObject().TotalProcessedBySAP + i; if (elementLocation < 0) { elementLocation = 0; } string activityType = ((ActivityPlan)SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation)).ActivityType; string costCenter = ((ActivityPlan)SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation)).CostCenter; try { messageV1 = messageV1.TrimStart('0'); messageV2 = messageV2.TrimStart('0'); } catch (Exception ex) { } try { if (i == row && !string.IsNullOrEmpty(message)) { SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation).Result = message; } else if (i != row && rType == "E") { try { if (messageV1 == activityType || messageV2 == activityType) { // account for incrementing batch number SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation).Result = message; } else if (messageV1 != activityType && messageV1 != costCenter && row == 0) { rNumber = returnTable[j].GetString("NUMBER"); if (rNumber != string.Empty) { SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation).Result = message; if (ReturnProgressDataForm.OperationCancelled) { break; } } } } catch (Exception ex) { } } else if (rType == "I") { foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList) { SAPRequest.ReturnValuesList[myFunction.Signature].Result = message; if (ReturnProgressDataForm.OperationCancelled) { break; } } return; } } catch (Exception ex) { } if (ReturnProgressDataForm.OperationCancelled) { break; } } if (ReturnProgressDataForm.OperationCancelled) { break; } } foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList) { if ((SAPRequest.ReturnValuesList[myFunction.Signature].Result == null) || (SAPRequest.ReturnValuesList[myFunction.Signature].Result == string.Empty)) { SAPRequest.ReturnValuesList[myFunction.Signature].Result = "pwValidated"; } if (ReturnProgressDataForm.OperationCancelled) { break; } } } else { foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList) { SAPRequest.ReturnValuesList[myFunction.Signature].Result = "pwValidated"; if (ReturnProgressDataForm.OperationCancelled) { break; } } } } } }
public void anulacioncomprobantes(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_COMPROBANTE, string P_APROBADOR_ANULACION, string P_TXT_ANULACION, string P_USUARIO, string P_IDCAJA) { Retorno.Clear(); errormessage = ""; IRfcTable lt_retorno; RETORNO retorno_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_ANULA_REC_CAJA"); BapiGetUser.SetValue("ID_COMPROBANTE", P_ID_COMPROBANTE); BapiGetUser.SetValue("APROBADOR_ANULACION", P_APROBADOR_ANULACION); BapiGetUser.SetValue("TXT_ANULACION", P_TXT_ANULACION); BapiGetUser.SetValue("ID_CAJA", P_IDCAJA); BapiGetUser.SetValue("USUARIO", P_USUARIO); BapiGetUser.Invoke(SapRfcDestination); //lt_h_documentos = BapiGetUser.GetTable("CAB_COMP"); //lt_d_documentos = BapiGetUser.GetTable("DET_COMP"); lt_retorno = BapiGetUser.GetTable("RETORNO"); if (lt_retorno.Count > 0) { for (int i = 0; i < lt_retorno.Count(); i++) { lt_retorno.CurrentIndex = i; retorno_resp = new RETORNO(); retorno_resp.TYPE = lt_retorno.GetString("TYPE"); retorno_resp.ID = lt_retorno.GetString("ID"); retorno_resp.NUMBER = lt_retorno.GetString("NUMBER"); retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE"); retorno_resp.LOG_NO = lt_retorno.GetString("LOG_NO"); retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO"); retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE"); retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1"); if (lt_retorno.GetString("TYPE") == "S") { Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V4"); NumComprobante = lt_retorno.GetString("MESSAGE_V4"); } if (lt_retorno.GetString("TYPE") == "E") { errormessage = errormessage + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1"); } retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2"); retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3"); retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4"); retorno_resp.PARAMETER = lt_retorno.GetString("PARAMETER"); retorno_resp.ROW = lt_retorno.GetString("ROW"); retorno_resp.FIELD = lt_retorno.GetString("FIELD"); retorno_resp.SYSTEM = lt_retorno.GetString("SYSTEM"); Retorno.Add(retorno_resp); } // System.Windows.MessageBox.Show(Mensaje); } } else { errormessage = retval; } GC.Collect(); }
public byte[] Get_Z_RFC_PO(string EBELN) { string LIFNR = string.Empty; string LIFNM = string.Empty; string ERNAM = string.Empty; string LOEKZ = string.Empty; string E_RET = string.Empty; System.Data.DataSet mDs = new System.Data.DataSet(); System.Data.DataTable mDt = new System.Data.DataTable("Z_RFC_PO"); System.Data.DataTable mtable = new System.Data.DataTable("Header"); mDt.Columns.Add("EBELP", typeof(string)); mDt.Columns.Add("LOEKZ", typeof(string)); mDt.Columns.Add("MATNR", typeof(string)); mDt.Columns.Add("MAKTX", typeof(string)); mDt.Columns.Add("MENGE", typeof(string)); mDt.Columns.Add("MEINS", typeof(string)); mDt.Columns.Add("MATKL", typeof(string)); mDt.Columns.Add("WERKS", typeof(string)); mDt.Columns.Add("LGORT", typeof(string)); mDt.Columns.Add("RETPO", typeof(string)); mtable.Columns.Add("EBELN", typeof(string)); mtable.Columns.Add("LIFNR", typeof(string)); mtable.Columns.Add("LIFNM", typeof(string)); mtable.Columns.Add("ERNAM", typeof(string)); mtable.Columns.Add("LOEKZ", typeof(string)); mtable.Columns.Add("E_RET", typeof(string)); RfcDestination destination = RfcDestinationManager.GetDestination(this.GetCfgParameters()); IRfcFunction rfcFunction = destination.Repository.CreateFunction("Z_RFC_PO"); rfcFunction.SetValue("I_EBELN", EBELN); rfcFunction.Invoke(destination); LIFNR = rfcFunction.GetValue("LIFNR").ToString().TrimStart('0'); LIFNM = rfcFunction.GetValue("LIFNM").ToString().TrimStart('0'); ERNAM = rfcFunction.GetValue("ERNAM").ToString().TrimStart('0'); LOEKZ = rfcFunction.GetValue("LOEKZ").ToString().TrimStart('0'); E_RET = rfcFunction.GetValue("E_RET").ToString().TrimStart('0'); IRfcTable table = rfcFunction.GetTable("T_POITEM"); mtable.Rows.Add(EBELN, LIFNR, LIFNM, ERNAM, LOEKZ, E_RET); for (int i = 0; i < table.RowCount; i++) { mDt.Rows.Add( table[i].GetString("EBELP").TrimStart('0'), table[i].GetString("LOEKZ").TrimStart('0'), table[i].GetString("MATNR").TrimStart('0'), table[i].GetString("MAKTX").TrimStart('0'), table[i].GetString("MENGE").TrimStart('0'), table[i].GetString("MEINS").TrimStart('0'), table[i].GetString("MATKL").TrimStart('0'), table[i].GetString("WERKS").TrimStart('0'), table[i].GetString("LGORT").TrimStart('0'), table[i].GetString("RETPO").TrimStart('0')); } mDs.Tables.Add(mtable); mDs.Tables.Add(mDt); return(mlc.GetDataSetSurrogateZipBytes(mDs)); }
public DataTable ObtenerStock() { DataTable dt = new DataTable(""); RfcConfigParameters rfc = new RfcConfigParameters(); rfc.Add(RfcConfigParameters.Name, ConfigurationManager.AppSettings["Name"]); rfc.Add(RfcConfigParameters.AppServerHost, ConfigurationManager.AppSettings["AppServerHost"]); rfc.Add(RfcConfigParameters.Client, ConfigurationManager.AppSettings["Client"]); rfc.Add(RfcConfigParameters.User, ConfigurationManager.AppSettings["User"]); rfc.Add(RfcConfigParameters.Password, ConfigurationManager.AppSettings["Password"]); rfc.Add(RfcConfigParameters.SystemNumber, "00"); rfc.Add(RfcConfigParameters.Language, "ES"); rfc.Add(RfcConfigParameters.PoolSize, "5"); rfc.Add(RfcConfigParameters.MaxPoolSize, "100"); rfc.Add(RfcConfigParameters.IdleTimeout, "900"); RfcDestination rfcDest = null; RfcRepository rfcRep = null; try { rfcDest = RfcDestinationManager.GetDestination(rfc); rfcRep = rfcDest.Repository; } catch (Exception e) { e.ToString(); } IRfcFunction function = rfcRep.CreateFunction("ZSD_REXSAP_006"); IRfcTable material; material = function.GetTable("TI_MATNR"); BdConnection bd = new BdConnection(); foreach (TI_MATNR mat in bd.GetMaterial()) { material.Append(); material.SetValue("SIGN", mat.SIGN); material.SetValue("OPTION", mat.OPTION); material.SetValue("LOW", mat.LOW); material.SetValue("HIGH", ""); } try { function.Invoke(rfcDest); IRfcTable doc = function.GetTable("MSTOCKS"); DataTable table = IRfcTable_To_DataTable(doc, "MSTOCKS"); dt = table; return(dt); } catch (RfcBaseException e) { return(null); } }
public void partidasopen(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_CODCLIENTE, string P_DOCUMENTO, string P_RUT, string P_SOCIEDAD, DateTime P_FECHA_VENC, string P_LAND, string P_FACT_SAP, string TipoBusqueda) { ObjDatosPartidasOpen.Clear(); Retorno.Clear(); IRfcTable lt_t_documentos; IRfcStructure lt_retorno; // PART_ABIERTAS PART_ABIERTAS_resp; T_DOCUMENTOS PART_ABIERTAS_resp; ESTADO retorno_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_DOC"); BapiGetUser.SetValue("CODCLIENTE", P_CODCLIENTE); BapiGetUser.SetValue("DOCUMENTO", P_DOCUMENTO); BapiGetUser.SetValue("RUT", P_RUT); BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD); BapiGetUser.SetValue("LAND", P_LAND); BapiGetUser.SetValue("FACTURA_SAP", P_DOCUMENTO); BapiGetUser.SetValue("FECHA_VENC", P_FECHA_VENC); BapiGetUser.Invoke(SapRfcDestination); protesto = BapiGetUser.GetString("PE_PROTESTADO"); lt_t_documentos = BapiGetUser.GetTable("T_DOCUMENTOS"); lt_retorno = BapiGetUser.GetStructure("SE_ESTATUS"); //lt_PART_ABIERTAS = BapiGetUser.GetTable("ZCLSP_TT_LISTA_DOCUMENTOS"); try { if (lt_t_documentos.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_t_documentos.RowCount; i++) { try { lt_t_documentos.CurrentIndex = i; PART_ABIERTAS_resp = new T_DOCUMENTOS(); PART_ABIERTAS_resp.SOCIEDAD = lt_t_documentos[i].GetString("SOCIEDAD"); PART_ABIERTAS_resp.NDOCTO = lt_t_documentos[i].GetString("NDOCTO"); PART_ABIERTAS_resp.NREF = lt_t_documentos[i].GetString("NREF"); PART_ABIERTAS_resp.CLASE_CUENTA = lt_t_documentos[i].GetString("CLASE_CUENTA"); PART_ABIERTAS_resp.CLASE_DOC = lt_t_documentos[i].GetString("CLASE_DOC"); PART_ABIERTAS_resp.COD_CLIENTE = lt_t_documentos[i].GetString("COD_CLIENTE"); PART_ABIERTAS_resp.RUTCLI = lt_t_documentos[i].GetString("RUTCLI"); PART_ABIERTAS_resp.NOMCLI = lt_t_documentos[i].GetString("NOMCLI"); PART_ABIERTAS_resp.CEBE = lt_t_documentos[i].GetString("CEBE"); //PART_ABIERTAS_resp.FECHA_DOC = lt_t_documentos[i].GetString("FECHA_DOC"); DateTime fec_doc = Convert.ToDateTime(lt_t_documentos[i].GetString("FECHA_DOC")); PART_ABIERTAS_resp.FECHA_DOC = fec_doc.ToString("dd/MM/yyyy"); //PART_ABIERTAS_resp.FECVENCI = lt_t_documentos[i].GetString("FECVENCI"); DateTime fec_venc = Convert.ToDateTime(lt_t_documentos[i].GetString("FECVENCI")); PART_ABIERTAS_resp.FECVENCI = fec_venc.ToString("dd/MM/yyyy"); PART_ABIERTAS_resp.DIAS_ATRASO = lt_t_documentos[i].GetString("DIAS_ATRASO"); PART_ABIERTAS_resp.ESTADO = lt_t_documentos[i].GetString("ESTADO"); PART_ABIERTAS_resp.ICONO = lt_t_documentos[i].GetString("ICONO"); PART_ABIERTAS_resp.MONEDA = lt_t_documentos[i].GetString("MONEDA"); PART_ABIERTAS_resp.ACC = lt_t_documentos[i].GetString("ACC"); PART_ABIERTAS_resp.CLASE_CUENTA = lt_t_documentos[i].GetString("CLASE_CUENTA"); PART_ABIERTAS_resp.COND_PAGO = lt_t_documentos[i].GetString("COND_PAGO"); PART_ABIERTAS_resp.CME = lt_t_documentos[i].GetString("CME"); PART_ABIERTAS_resp.CONTROL_CREDITO = lt_t_documentos[i].GetString("CONTROL_CREDITO"); //string.Format("{0:0.##}", lvatend) //decimal lvNetoAbo2 = Convert.ToDecimal(t_REPORTE_CONTACTOS[i].GetString("NETO_ABONO2")); //REPORTE_CONTACTOS_resp.NETO_ABONO2 = string.Format("{0:#,0}", lvNetoAbo2); //decimal Cualquiernombre = Convert.ToDecimal(lt_t_documentos[i].GetString("MONTOF")); //**** // if (lt_t_documentos[i].GetString("MONTOF") == "") // { // PART_ABIERTAS_resp.MONTOF = "0"; // } // else // { // PART_ABIERTAS_resp.MONTOF = lt_t_documentos[i].GetString("MONTOF"); // } // //PART_ABIERTAS_resp.MONTOF = string.Format("{0:0.##}", Cualquiernombre); // //Cualquiernombre = Convert.ToDecimal(lt_t_documentos[i].GetString("MONTOF_ABON")); //// PART_ABIERTAS_resp.MONTOF_ABON = string.Format("{0:0.##}", Cualquiernombre); // if (lt_t_documentos[i].GetString("MONTOF_ABON") == "") // { // PART_ABIERTAS_resp.MONTOF_ABON = "0"; // } // else // { // PART_ABIERTAS_resp.MONTOF_ABON = lt_t_documentos[i].GetString("MONTOF_ABON"); // } // //Cualquiernombre = Convert.ToDecimal(lt_t_documentos[i].GetString("MONTOF_PAGAR")); // //PART_ABIERTAS_resp.MONTOF_PAGAR = string.Format("{0:0.##}", Cualquiernombre); // if (lt_t_documentos[i].GetString("MONTOF_PAGAR") == "") // { // PART_ABIERTAS_resp.MONTOF_PAGAR = "0"; // } // else // { // PART_ABIERTAS_resp.MONTOF_PAGAR = lt_t_documentos[i].GetString("MONTOF_PAGAR"); // } //MONTOF string Monto = ""; //******* if (lt_t_documentos[i].GetString("MONTOF") == "") { //indice = lt_t_documentos[i].GetString("MONTO").IndexOf(','); //Monto = lt_t_documentos[i].GetString("MONTO").Substring(0, indice - 1); //PART_ABIERTAS_resp.MONTOF = Monto; if (lt_t_documentos[i].GetString("MONEDA") == "CLP") { string Valor = lt_t_documentos[i].GetString("MONTO").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); string Cualquiernombre = string.Format("{0:0,0}", ValorAux); PART_ABIERTAS_resp.MONTOF = Cualquiernombre.Replace(",", "."); } else { string moneda = Convert.ToString(lt_t_documentos[i].GetString("MONTOF")); decimal ValorAux = Convert.ToDecimal(moneda); PART_ABIERTAS_resp.MONTOF = string.Format("{0:0,0.##}", ValorAux).Replace(",", "."); //PART_ABIERTAS_resp.MONTOF = lt_t_documentos[i].GetString("MONTO"); } } else { //string Valor = lt_t_documentos[i].GetString("MONTOF").Trim(); //if (Valor.Contains("-")) //{ // Valor = "-" + Valor.Replace("-", ""); //} //Valor = Valor.Replace(".", ""); //Valor = Valor.Replace(",", ""); //decimal TOTIN2 = Convert.ToDecimal(Valor); //string Cualquiernombre = string.Format("{0:0,0}", TOTIN2); //PART_ABIERTAS_resp.MONTOF = Cualquiernombre; //PART_ABIERTAS_resp.MONTOF = lt_t_documentos[i].GetString("MONTOF"); //PART_ABIERTAS_resp.MONTOF = Convert.ToDouble( Convert.ToDouble( lt_t_documentos[i].GetString("MONTO"))*100).ToString("0,0",elGR) ; if (lt_t_documentos[i].GetString("MONEDA") == "CLP") { string Valor = lt_t_documentos[i].GetString("MONTOF").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); string Cualquiernombre = string.Format("{0:0,0}", ValorAux); PART_ABIERTAS_resp.MONTOF = Cualquiernombre.Replace(",", "."); } else { //PART_ABIERTAS_resp.MONTOF = lt_t_documentos[i].GetString("MONTOF"); string moneda = Convert.ToString(lt_t_documentos[i].GetString("MONTOF")); decimal ValorAux = Convert.ToDecimal(moneda); PART_ABIERTAS_resp.MONTOF = string.Format("{0:0,0.##}", ValorAux).Replace(",", "."); } } //MONTO //if (lt_t_documentos[i].GetString("MONTO") == "") //{ // indice = lt_t_documentos[i].GetString("MONTO").IndexOf(','); // Monto = lt_t_documentos[i].GetString("MONTO").Substring(0, indice - 1); // PART_ABIERTAS_resp.MONTO = Monto; //} //else //{ // PART_ABIERTAS_resp.MONTO = lt_t_documentos[i].GetString("MONTOF"); //} if (lt_t_documentos[i].GetString("MONEDA") == "CLP") { string Valor = lt_t_documentos[i].GetString("MONTO").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); string Cualquiernombre = string.Format("{0:0,0}", ValorAux); PART_ABIERTAS_resp.MONTO = Cualquiernombre.Replace(",", "."); } else { //PART_ABIERTAS_resp.MONTO = lt_t_documentos[i].GetString("MONTO"); string moneda = Convert.ToString(lt_t_documentos[i].GetString("MONTO")); decimal ValorAux = Convert.ToDecimal(moneda); PART_ABIERTAS_resp.MONTO = string.Format("{0:0,0.##}", ValorAux).Replace(",", "."); } //MONTO ABONADO //if (lt_t_documentos[i].GetString("MONTOF_ABON") == "") //{ // indice = lt_t_documentos[i].GetString("MONTO_ABONADO").IndexOf(','); // Monto = lt_t_documentos[i].GetString("MONTO_ABONADO").Substring(0, indice - 1); // PART_ABIERTAS_resp.MONTOF_ABON = Monto; //} //else //{ // PART_ABIERTAS_resp.MONTOF_ABON = lt_t_documentos[i].GetString("MONTOF_ABON"); // //PART_ABIERTAS_resp.MONTOF_ABON = Convert.ToDouble(Convert.ToDouble(lt_t_documentos[i].GetString("MONTO_ABONADO")) * 100).ToString("0,0", elGR); //} if (lt_t_documentos[i].GetString("MONEDA") == "CLP") { string Valor = lt_t_documentos[i].GetString("MONTOF_ABON").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); string Cualquiernombre = string.Format("{0:0,0}", ValorAux); PART_ABIERTAS_resp.MONTOF_ABON = Cualquiernombre.Replace(",", "."); } else { //PART_ABIERTAS_resp.MONTOF_ABON = lt_t_documentos[i].GetString("MONTOF_ABON"); string moneda = Convert.ToString(lt_t_documentos[i].GetString("MONTOF_ABON")); decimal ValorAux = Convert.ToDecimal(moneda); PART_ABIERTAS_resp.MONTOF_ABON = string.Format("{0:0,0.##}", ValorAux).Replace(",", "."); } //MONTO A PAGAR if (lt_t_documentos[i].GetString("MONEDA") == "CLP") { string Valor = lt_t_documentos[i].GetString("MONTOF_PAGAR").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); string monedachil = string.Format("{0:0,0}", ValorAux); PART_ABIERTAS_resp.MONTOF_PAGAR = monedachil.Replace(",", "."); } else { string moneda = Convert.ToString(lt_t_documentos[i].GetString("MONTOF_PAGAR")); decimal ValorAux = Convert.ToDecimal(moneda); PART_ABIERTAS_resp.MONTOF_PAGAR = string.Format("{0:0,0.##}", ValorAux).Replace(",", "."); } ObjDatosPartidasOpen.Add(PART_ABIERTAS_resp); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } } else { MessageBox.Show("No existe(n) registro(s) para este número de " + TipoBusqueda); } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } String Mensaje = ""; if (lt_retorno.Count > 0) { string returning = ""; retorno_resp = new ESTADO(); for (int i = 0; i < lt_retorno.Count(); i++) { // lt_retorno.CurrentIndex = i; if (i == 0) { returning = retorno_resp.TYPE = lt_retorno.GetString("TYPE"); } retorno_resp.TYPE = lt_retorno.GetString("TYPE"); retorno_resp.ID = lt_retorno.GetString("ID"); retorno_resp.NUMBER = lt_retorno.GetString("NUMBER"); retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE"); retorno_resp.LOG_NO = lt_retorno.GetString("LOG_NO"); retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO"); retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE"); retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1"); if (i == 0) { Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1"); } retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2"); retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3"); retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4"); retorno_resp.PARAMETER = lt_retorno.GetString("PARAMETER"); retorno_resp.ROW = lt_retorno.GetString("ROW"); retorno_resp.FIELD = lt_retorno.GetString("FIELD"); retorno_resp.SYSTEM = lt_retorno.GetString("SYSTEM"); Retorno.Add(retorno_resp); } if (returning != "") { System.Windows.MessageBox.Show(Mensaje); } } GC.Collect(); } else { errormessage = retval; GC.Collect(); } }
public String FechaOrdem(string NUM_ORDEM, string DESC_ORDEM, string DT_INICIO, string DT_FIM, string DT_REFER, string DESC_BREVE_ORDEM, string FECHA_ORDEM, string MODIFICA_ORDEM, string Exclui_Operacao, string Exclui_Componente, string Operacao, string Complemento_ChavePM03, string Componente_L, string Componente_N) { // IRfcFunction objRfc = repo.CreateFunction("ZRFC_FROTAWEB_FECHAORDEM"); IRfcFunction objRfc = repo.CreateFunction("ZRFC_FROTAWEB_FECHAORDEM_NEW"); /*CABEÇALHO*/ IRfcStructure objEstrutura = objRfc.GetStructure("I_CAB"); objEstrutura.SetValue("NUM_ORDEM", NUM_ORDEM); objEstrutura.SetValue("DESC_ORDEM", DESC_ORDEM); objEstrutura.SetValue("DT_INICIO", DT_INICIO); objEstrutura.SetValue("DT_FIM", DT_FIM); objEstrutura.SetValue("DT_REFER", DT_REFER); // objEstrutura.SetValue("DESC_BREVE_ORDEM", DESC_BREVE_ORDEM); objEstrutura.SetValue("FECHA_ORDEM", FECHA_ORDEM); objEstrutura.SetValue("MODIFICA_ORDEM", MODIFICA_ORDEM); /* OPERAÇÃO */ /*LAY-OUT: * CASO A CHAVE SEJA PM01(SERVIÇOS INTERNO/PRÓPRIO), BASTA CHAMAR ESTE BLOCO, CASO SEJA PM03(SERVIÇOS DE TERCEIROS, DEVE-SE CHAMAR ESTE BLOCO E O BLOCO LOGO ABAIXO DE COMPLEMENTO EM CASO DE PM03) * COMO PODEM TER DIVERSAS OPERAÇÕES, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO: * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;) * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (]) * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(]) * OPERACAO;CENTRO_TRABALHO; CHAVE_CONTROLE;TEXTO_BREVE;TEXTO_DESC;CENTRO */ if (!String.IsNullOrEmpty(Operacao)) { string valor = Operacao; string[] linhas = Regex.Split(valor, "]"); string[] Colunas; string OPERACAO, CENTRO_TRABALHO, CHAVE_CONTROLE, TEXTO_BREVE, TEXTO_DESC, CENTRO; for (int i = 0; i <= linhas.Length - 1; i++) { Colunas = Regex.Split(linhas[i], ";"); OPERACAO = Colunas[0]; CENTRO_TRABALHO = Colunas[1]; CHAVE_CONTROLE = Colunas[2]; TEXTO_BREVE = Colunas[3]; TEXTO_DESC = Colunas[4]; CENTRO = Colunas[5]; IRfcTable objPM01 = objRfc.GetTable("T_PM01"); objPM01.Append(); objPM01.SetValue("OPERACAO", OPERACAO); objPM01.SetValue("CENTRO_TRABALHO", CENTRO_TRABALHO); objPM01.SetValue("CHAVE_CONTROLE", CHAVE_CONTROLE); objPM01.SetValue("TEXTO_BREVE", TEXTO_BREVE); objPM01.SetValue("TEXTO_DESC", TEXTO_DESC); objPM01.SetValue("CENTRO", CENTRO); } } /**/ /* EXCLUIR OPERAÇÃO */ /*LAY-OUT: * COMO PODEM EXCLUIR DIVERSAS OPERAÇÕES, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO: * AS OPERAÇÕES DEVEM SER SEPARADOS POR PONTO E VÍGULA (;) * OPERACAO */ if (!String.IsNullOrEmpty(Exclui_Operacao)) { string valor = Exclui_Operacao; string[] linhas = Regex.Split(valor, ";"); // string[] Colunas; string OPERACAO; for (int i = 0; i <= linhas.Length - 1; i++) { OPERACAO = linhas[i]; IRfcTable objPM01 = objRfc.GetTable("T_EXCLUI_OPER"); objPM01.Append(); objPM01.SetValue("OPERACAO", OPERACAO); } } /* EXCLUIR COMPONENTE */ /*LAY-OUT: * COMO PODEM EXCLUIR DIVERSAS OPERAÇÕES, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO: * AS OPERAÇÕES DEVEM SER SEPARADOS POR PONTO E VÍGULA (;) * OPERACAO */ if (!String.IsNullOrEmpty(Exclui_Componente)) { string valor = Exclui_Componente; string[] linhas = Regex.Split(valor, ";"); // string[] Colunas; string COMPONENTE; for (int i = 0; i <= linhas.Length - 1; i++) { COMPONENTE = linhas[i]; IRfcTable objPM01 = objRfc.GetTable("T_EXCLUI_COMP"); objPM01.Append(); objPM01.SetValue("ITEM_EXCLUIR", COMPONENTE); } } /**/ /* COMPLEMENTO EM CASO DE CHAVE PM03 - SERVIÇO EXTERNO/TERCEIRO */ /*LAY-OUT: * CASO A CHAVE SEJA PM03(SERVIÇOS EXTERNOS/TERCEIRO) NO BLOCO ACIMA, É PRECISO CHAMAR ESTE BLOCO) * COMO PODEM TER DIVERSOS COMPLEMENTOS OPERAÇÕES DE OPERAÇÃO COM CHAVE PM03, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO: * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;) * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (]) * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(]) * OPERACAO; CENTRO_TRABALHO; CHAVE_CONTROLE; TEXTO_BREVE; PRECO; TEXTO_DESC; CENTRO; GRUPO_MERCADORIAS; GRUPO_COMPRAS; REQUISITANTE; FORNECEDOR; ACOMPANHAMENTO; SERVICO; QUANTIDADE; UN_MEDIDA; RECEBEDOR; */ if (!String.IsNullOrEmpty(Complemento_ChavePM03)) { string valor = Complemento_ChavePM03; string[] linhas = Regex.Split(valor, "]"); string[] Colunas; string OPERACAO, CENTRO_TRABALHO, CHAVE_CONTROLE, TEXTO_BREVE, PRECO, TEXTO_DESC, CENTRO, GRUPO_MERCADORIAS, GRUPO_COMPRAS, REQUISITANTE, FORNECEDOR, ACOMPANHAMENTO, SERVICO, QUANTIDADE, UN_MEDIDA, RECEBEDOR, ORG_COMPRAS; for (int i = 0; i <= linhas.Length - 1; i++) { Colunas = Regex.Split(linhas[i], ";"); OPERACAO = Colunas[0]; CENTRO_TRABALHO = Colunas[1]; CHAVE_CONTROLE = Colunas[2]; TEXTO_BREVE = Colunas[3]; PRECO = Colunas[4]; TEXTO_DESC = Colunas[5]; CENTRO = Colunas[6]; GRUPO_MERCADORIAS = Colunas[7]; GRUPO_COMPRAS = Colunas[8]; REQUISITANTE = Colunas[9]; FORNECEDOR = Colunas[10]; ACOMPANHAMENTO = Colunas[11]; SERVICO = Colunas[12]; QUANTIDADE = Colunas[13]; UN_MEDIDA = Colunas[14]; RECEBEDOR = Colunas[15]; ORG_COMPRAS = Colunas[16]; IRfcTable objPM03 = objRfc.GetTable("T_PM03"); objPM03.Append(); objPM03.SetValue("OPERACAO", OPERACAO); objPM03.SetValue("CENTRO_TRABALHO", CENTRO_TRABALHO); objPM03.SetValue("CHAVE_CONTROLE", CHAVE_CONTROLE); objPM03.SetValue("TEXTO_BREVE", TEXTO_BREVE); objPM03.SetValue("PRICE", (Convert.ToDouble(PRECO) / Convert.ToDouble(QUANTIDADE))); objPM03.SetValue("TEXTO_DESC", TEXTO_DESC); objPM03.SetValue("CENTRO", CENTRO); objPM03.SetValue("GRUPO_MERCADORIAS", GRUPO_MERCADORIAS); objPM03.SetValue("GRUPO_COMPRAS", GRUPO_COMPRAS); objPM03.SetValue("ORG_COMPRAS", ORG_COMPRAS); objPM03.SetValue("REQUISITANTE", REQUISITANTE); objPM03.SetValue("FORNECEDOR", FORNECEDOR); objPM03.SetValue("ACOMPANHAMENTO", ACOMPANHAMENTO); objPM03.SetValue("SERVICO", SERVICO); objPM03.SetValue("QUANTIDADE", QUANTIDADE); objPM03.SetValue("UN_MEDIDA", UN_MEDIDA); objPM03.SetValue("RECEBEDOR", RECEBEDOR); } } /*COMPONENTE L - PEÇAS PRÓPRIAS/ESTOQUE*/ /*COMPONENTES/PEÇAS DO ESTOQUE DA ORDEM DE MANUTENÇÃO*/ /*LAY-OUT: * COMO PODEM TER DIVERSAS PEÇAS, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO: * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;) * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (]) * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(]) * OPERACAO;TEXTO_DESC; UN_MEDIDA;COMPONENTE;QUANT_NECESSARIA;TP_ITEM;DEPOSITO;CENTRO]TEXTO_DESC; UN_MEDIDA;COMPONENTE;QUANT_NECESSARIA;TP_ITEM;DEPOSITO;CENTRO */ if (!String.IsNullOrEmpty(Componente_L)) { string valor = Componente_L; string[] linhas = Regex.Split(valor, "]"); string[] Colunas; // string ITEM;/*Valor Fixo*/ string OPERACAO, ITEM, TEXTO_DESC, UN_MEDIDA, COMPONENTE, QUANT_NECESSARIA, TP_ITEM, DEPOSITO, CENTRO; for (int i = 0; i <= linhas.Length - 1; i++) { Colunas = Regex.Split(linhas[i], ";"); OPERACAO = Colunas[0]; ITEM = Colunas[1]; TEXTO_DESC = Colunas[2]; UN_MEDIDA = Colunas[3]; COMPONENTE = Colunas[4]; QUANT_NECESSARIA = Colunas[5]; TP_ITEM = Colunas[7]; DEPOSITO = Colunas[8]; CENTRO = Colunas[9]; IRfcTable objCompL = objRfc.GetTable("T_COMPL"); objCompL.Append(); objCompL.SetValue("OPERACAO", OPERACAO); objCompL.SetValue("ITEM", ITEM); objCompL.SetValue("TEXTO_DESC", TEXTO_DESC); objCompL.SetValue("UN_MEDIDA", UN_MEDIDA); objCompL.SetValue("COMPONENTE", COMPONENTE); objCompL.SetValue("QUANT_NECESSARIA", QUANT_NECESSARIA); objCompL.SetValue("TP_ITEM", TP_ITEM); objCompL.SetValue("DEPOSITO", DEPOSITO); objCompL.SetValue("CENTRO", CENTRO); } } /*COMPONENTE N - PEÇAS COMPRADAS/DÉBITO DIRETO*/ /*COMPONENTES/PEÇAS COMPRA DIRETA DA ORDEM DE MANUTENÇÃO*/ /*LAY-OUT: * COMO PODEM TER DIVERSAS PEÇAS, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO: * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;) * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (]) * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(]) * OPERACAO;OPERACAO, GRUPO_COMPRAS; REQUISITANTE; FORNECEDOR; ACOMPANHAMENTO; UN_MEDIDA; COMPONENTE; QUANT_NECESSARIA; TP_ITEM; DEPOSITO; CENTRO; RECEBEDOR; MAT_FORNECEDOR] */ if (!String.IsNullOrEmpty(Componente_N)) { string valor = Componente_N; string[] linhas = Regex.Split(valor, "]"); string[] Colunas; string OPERACAO, ITEM, TEXTO_DESC, GRUPO_COMPRAS, REQUISITANTE, FORNECEDOR, ACOMPANHAMENTO, UN_MEDIDA, COMPONENTE, QUANT_NECESSARIA, PRECO, TP_ITEM, DEPOSITO, CENTRO, RECEBEDOR, MAT_FORNECEDOR, ORG_COMPRAS; for (int i = 0; i <= linhas.Length - 1; i++) { Colunas = Regex.Split(linhas[i], ";"); //Double val = (Convert.ToDouble(Colunas[10]) / Convert.ToDouble(Colunas[9]) / 100); OPERACAO = Colunas[0]; ITEM = Colunas[1]; TEXTO_DESC = Colunas[2]; GRUPO_COMPRAS = Colunas[3]; REQUISITANTE = Colunas[4]; FORNECEDOR = Colunas[5]; ACOMPANHAMENTO = Colunas[6]; UN_MEDIDA = Colunas[7]; COMPONENTE = Colunas[8]; QUANT_NECESSARIA = Colunas[9]; // PRECO = Convert.ToString(val).Replace(",", "."); PRECO = Colunas[10]; TP_ITEM = Colunas[11]; DEPOSITO = Colunas[12]; if (Colunas[13] == "0301" || Colunas[13] == "301") { Colunas[13] = "B301"; } if (Colunas[13] == "0201" || Colunas[13] == "201") { Colunas[13] = "B201"; } CENTRO = Colunas[13]; RECEBEDOR = Colunas[14]; MAT_FORNECEDOR = Colunas[15]; ORG_COMPRAS = Colunas[16]; IRfcTable objCompN = objRfc.GetTable("T_COMPN"); objCompN.Append(); objCompN.SetValue("OPERACAO", OPERACAO); objCompN.SetValue("ITEM", ITEM); objCompN.SetValue("TEXTO_DESC", TEXTO_DESC); objCompN.SetValue("GRUPO_COMPRAS", GRUPO_COMPRAS); objCompN.SetValue("REQUISITANTE", REQUISITANTE); objCompN.SetValue("FORNECEDOR", FORNECEDOR); objCompN.SetValue("ACOMPANHAMENTO", ACOMPANHAMENTO); objCompN.SetValue("UN_MEDIDA", UN_MEDIDA); objCompN.SetValue("COMPONENTE", COMPONENTE); objCompN.SetValue("QUANT_NECESSARIA", QUANT_NECESSARIA); Decimal val_ = 0; PRECO = PRECO.Replace(".", ","); val_ = Convert.ToDecimal(PRECO); objCompN.SetValue("PRICE", Convert.ToString(val_).Replace(",", ".")); //objCompN.SetValue("PRICE", PRECO); objCompN.SetValue("TP_ITEM", TP_ITEM); objCompN.SetValue("DEPOSITO", DEPOSITO); objCompN.SetValue("CENTRO", CENTRO); objCompN.SetValue("RECEBEDOR", RECEBEDOR); objCompN.SetValue("MAT_FORNECEDOR", MAT_FORNECEDOR); // objCompN.SetValue("ORG_COMPRAS", ORG_COMPRAS); } } objRfc.Invoke(dest); IRfcTable tabelaSAP = objRfc.GetTable("T_RETURN_REQ"); return(tabelaSAP.ToString() + " / " + objRfc.GetTable("T_RETURN_BAPI").ToString()); }
public void GetCustomerDetails(RfcDestination destination) { try { RfcRepository repo = destination.Repository; IRfcFunction customerBapi = repo.CreateFunction("BAPI_CUSTOMER_GETLIST"); customerBapi.Invoke(destination); IRfcTable idRange = customerBapi.GetTable("IdRange"); idRange.SetValue("SIGN", "I"); idRange.SetValue("OPTION", "BT"); idRange.SetValue("LOW", ""); //customer number range - smallest value idRange.SetValue("HIGH", "999999"); //customer number range - largest value //add selection range to customerBapi function to search for all customers customerBapi.SetValue("idrange", idRange); IRfcTable addressData = customerBapi.GetTable("AddressData"); customerBapi.Invoke(destination);//execute query for (int cuIndex = 0; cuIndex < addressData.RowCount; cuIndex++) { addressData.CurrentIndex = cuIndex; IRfcFunction customerHierachy = repo.CreateFunction("BAPI_CUSTOMER_GETSALESAREAS"); IRfcFunction customerDetail1 = repo.CreateFunction("BAPI_CUSTOMER_GETDETAIL1"); IRfcFunction customerDetail2 = repo.CreateFunction("BAPI_CUSTOMER_GETDETAIL2"); Customers cust = new Customers();; cust.CustomerNo = addressData.GetString("Customer"); cust.CustomerName = addressData.GetString("Name"); cust.Address = addressData.GetString("Street"); cust.City = addressData.GetString("City"); cust.StateProvince = addressData.GetString("Region"); cust.CountryCode = addressData.GetString("CountryISO"); cust.PostalCode = addressData.GetString("Postl_Cod1"); customerDetail2.SetValue("CustomerNo", cust.CustomerNo); customerDetail2.Invoke(destination); IRfcStructure generalDetail = customerDetail2.GetStructure("CustomerGeneralDetail"); cust.Region = generalDetail.GetString("Reg_Market"); cust.Industry = generalDetail.GetString("Industry"); customerDetail1.Invoke(destination); IRfcStructure detail1 = customerDetail1.GetStructure("PE_CompanyData"); cust.District = detail1.GetString("District"); customerHierachy.Invoke(destination); customerHierachy.SetValue("CustomerNo", cust.CustomerNo); customerHierachy.Invoke(destination); IRfcTable otherDetail = customerHierachy.GetTable("SalesAreas"); if (otherDetail.RowCount > 0) { cust.SalesOrg = otherDetail.GetString("SalesOrg"); cust.DistributionChannel = otherDetail.GetString("DistrChn"); cust.Division = otherDetail.GetString("Division"); } customerHierachy = null; customerDetail1 = null; customerDetail2 = null; GC.Collect(); GC.WaitForPendingFinalizers(); } } catch (RfcCommunicationException e) { } catch (RfcLogonException e) { // user could not logon... } catch (RfcAbapRuntimeException e) { // serious problem on ABAP system side... } catch (RfcAbapBaseException e) { // The function module returned an ABAP exception, an ABAP message // or an ABAP class-based exception... } }
public InvoiceValueModel GetInvoiceValue(RfcDestination rfcDest, string InvoiceDocNumber, string FISCALYEAR) { List <InvoiceValueModel> lstInvoiceValueDet = new List <InvoiceValueModel>(); InvoiceValueModel invoiceValueModel = new InvoiceValueModel(); RfcDestination SAPRfcDestination = RfcDestinationManager.GetDestination("accelyides"); RfcRepository rfcrep = SAPRfcDestination.Repository; IRfcFunction BapiGetCompanyDetail = null; BapiGetCompanyDetail = rfcrep.CreateFunction("BAPI_INCOMINGINVOICE_GETDETAIL"); BapiGetCompanyDetail.SetValue("INVOICEDOCNUMBER", InvoiceDocNumber); BapiGetCompanyDetail.SetValue("FISCALYEAR", FISCALYEAR); BapiGetCompanyDetail.Invoke(rfcDest); IRfcTable tblReturn = BapiGetCompanyDetail.GetTable("ITEMDATA"); DataTable TBL = tblReturn.ToDataTable("TBL"); IRfcTable tblTAXReturn = BapiGetCompanyDetail.GetTable("TAXDATA"); DataTable TBLTaxReturn = tblTAXReturn.ToDataTable("TBL"); IRfcTable tblWithTAXReturn = BapiGetCompanyDetail.GetTable("WITHTAXDATA"); DataTable DtWithTAXReturn = tblWithTAXReturn.ToDataTable("TBL"); IRfcTable tblVendorSplitData = BapiGetCompanyDetail.GetTable("VENDORITEMSPLITDATA"); DataTable DtVendorSplitData = tblVendorSplitData.ToDataTable("TBL"); //for (int i = 0; i < TBL.Rows.Count; i++) //{ // InvoiceValueModel InvoiceValueModel = new InvoiceValueModel(); // InvoiceValueModel.REF_DOC = TBL.Rows[i]["REF_DOC"].ToString(); // // invoiceValueModel.lstInvoiceValue.Add(InvoiceValueModel); //} invoiceValueModel.lstItemInvoiceDet = (from DataRow row in TBL.Rows select new InvoiceValueModel { INVOICE_DOC_ITEM = row["INVOICE_DOC_ITEM"].ToString(), PO_NUMBER = row["INVOICE_DOC_ITEM"].ToString(), PO_ITEM = row["PO_ITEM"].ToString(), SERIAL_NO = row["SERIAL_NO"].ToString(), REF_DOC = row["REF_DOC"].ToString(), REF_DOC_YEAR = row["REF_DOC_YEAR"].ToString(), REF_DOC_IT = row["REF_DOC_IT"].ToString(), TAX_CODE = row["TAX_CODE"].ToString(), ITEM_AMOUNT = row["ITEM_AMOUNT"].ToString(), QUANTITY = row["QUANTITY"].ToString(), PO_UNIT = row["PO_UNIT"].ToString(), PO_UNIT_ISO = row["PO_UNIT_ISO"].ToString() }).ToList(); invoiceValueModel.lstInvoiceTAXDet = (from DataRow row in TBLTaxReturn.Rows select new InvoiceValueModel { TAX_CODE = row["TAX_CODE"].ToString(), TAX_AMOUNT = row["TAX_AMOUNT"].ToString(), VEND_ERROR = row["VEND_ERROR"].ToString(), TAX_ERROR = row["TAX_ERROR"].ToString(), }).ToList(); invoiceValueModel.lstWithTAXInvoiceDet = (from DataRow row in DtWithTAXReturn.Rows select new InvoiceValueModel { SPLIT_KEY = row["SPLIT_KEY"].ToString(), WI_TAX_TYPE = row["WI_TAX_TYPE"].ToString() }).ToList(); invoiceValueModel.lstVEndorItemSolitData = (from DataRow row in DtVendorSplitData.Rows select new InvoiceValueModel { SPLIT_KEY = row["SPLIT_KEY"].ToString(), SPLIT_AMOUNT = row["SPLIT_AMOUNT"].ToString() }).ToList(); IRfcStructure IRS_OS_HEADER = BapiGetCompanyDetail.GetStructure("HEADERDATA"); invoiceValueModel.INV_DOC_NO = IRS_OS_HEADER.GetValue("INV_DOC_NO").ToString(); invoiceValueModel.USERNAME = IRS_OS_HEADER.GetValue("FISC_YEAR").ToString(); invoiceValueModel.FISC_YEAR = IRS_OS_HEADER.GetValue("USERNAME").ToString(); invoiceValueModel.INVOICEE_IND = IRS_OS_HEADER.GetValue("INVOICE_IND").ToString(); invoiceValueModel.DOC_TYPE = IRS_OS_HEADER.GetValue("DOC_TYPE").ToString(); invoiceValueModel.DOC_DATE = DateTime.Parse(IRS_OS_HEADER.GetValue("DOC_DATE").ToString()); invoiceValueModel.PSTNG_DATE = DateTime.Parse(IRS_OS_HEADER.GetValue("PSTNG_DATE").ToString()); invoiceValueModel.USERNAME = IRS_OS_HEADER.GetValue("USERNAME").ToString(); invoiceValueModel.REF_DOC_NO = IRS_OS_HEADER.GetValue("REF_DOC_NO").ToString(); invoiceValueModel.COMP_CODE = IRS_OS_HEADER.GetValue("COMP_CODE").ToString(); invoiceValueModel.DIFF_INV = IRS_OS_HEADER.GetValue("DIFF_INV").ToString(); invoiceValueModel.CURRENCY = IRS_OS_HEADER.GetValue("CURRENCY").ToString(); invoiceValueModel.CURRENCY_ISO = IRS_OS_HEADER.GetValue("CURRENCY_ISO").ToString(); invoiceValueModel.EXCH_RATE = IRS_OS_HEADER.GetValue("EXCH_RATE").ToString(); invoiceValueModel.EXCH_RATE_V = IRS_OS_HEADER.GetValue("EXCH_RATE_V").ToString(); invoiceValueModel.GROSS_AMT = IRS_OS_HEADER.GetValue("GROSS_AMNT").ToString(); invoiceValueModel.BLINE_DATE = DateTime.Parse(IRS_OS_HEADER.GetValue("BLINE_DATE").ToString()); invoiceValueModel.ENTRY_DATE = DateTime.Parse(IRS_OS_HEADER.GetValue("ENTRY_DATE").ToString()); invoiceValueModel.ENTRY_TIME = DateTime.Parse(IRS_OS_HEADER.GetValue("ENTRY_TIME").ToString()); invoiceValueModel.DISCNT = IRS_OS_HEADER.GetValue("DISCNT").ToString(); invoiceValueModel.INVOICE_STATUS = IRS_OS_HEADER.GetValue("INVOICE_STATUS").ToString(); //Console.WriteLine(invoiceValueModel.Value); //Console.ReadKey(); RfcSessionManager.EndContext(rfcDest); return(invoiceValueModel); }
public void reportescaja(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_SOCIEDAD, string P_ID_APERTURA, string P_ID_CIERRE, string P_ID_REPORT) { try { T_Retorno.Clear(); resumen_viapago.Clear(); detalle_rend.Clear(); cab_arqueo.Clear(); detalle_arqueo.Clear(); resumen_caja.Clear(); rendicion_caja.Clear(); resumen_mensual.Clear(); info_soc.Clear(); RETORNO retorno; CajaIndigo.AppPersistencia.Class.RendicionCaja.Estructura.RESUMEN_VP resumenvp; DETALLE_REND detallerend; CAB_ARQUEO cabarqueo; DET_ARQUEO detallearqueo; RESUMEN_CAJA resumencaja; RESUMEN_MENSUAL resumenmensual; RENDICION_CAJA rendicioncaja; INFO_SOC infosoc; errormessage = ""; message = ""; IdCaja = ""; FechArqueo = ""; FechaArqueoHasta = ""; CajeroResp = ""; RUT = ""; Sucursal = ""; Sociedad = ""; SociedadR = ""; Empresa = ""; NombreCaja = ""; Tipo = ""; MontoIngresos = 0; MontoEfect = 0; MontoChqDia = 0; MontoChqFech = 0; MontoTransf = 0; MontoValeV = 0; MontoDepot = 0; MontoTarj = 0; MontoFinanc = 0; MontoApp = 0; MontoCredit = 0; MontoEgresos = 0; MontoFondosFijos = 0; SaldoTotal = 0; IRfcStructure ls_RETORNO; IRfcTable lt_RESUMEN_VP; IRfcTable lt_DETALLE_REND; IRfcTable lt_CAB_ARQUEO; IRfcTable lt_DET_ARQUEO; IRfcTable lt_RESUMEN_CAJA; IRfcTable lt_RENDICION_CAJA; IRfcTable lt_RESUMEN_MENSUAL; IRfcTable lt_INFOSOC; //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_REP_CAJA"); BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA); BapiGetUser.SetValue("DATE_DOC_FROM", Convert.ToDateTime(P_DATUMDESDE)); BapiGetUser.SetValue("DATE_DOC_TO", Convert.ToDateTime(P_DATUMHASTA)); BapiGetUser.SetValue("USUARIO", P_USUARIO); BapiGetUser.SetValue("ID_CIERRE", P_ID_CIERRE); BapiGetUser.SetValue("ID_APERTURA", P_ID_APERTURA); BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD); BapiGetUser.SetValue("ID_REPORT", P_ID_REPORT); BapiGetUser.SetValue("LAND", P_PAIS); Tipo = P_ID_REPORT; FechArqueo = P_DATUMDESDE; FechaArqueoHasta = P_DATUMHASTA; BapiGetUser.Invoke(SapRfcDestination); Caja = BapiGetUser.GetString("ID_CAJA_OUT"); CajeroResp = BapiGetUser.GetString("CAJERO_RESP_OUT"); Sucursal = BapiGetUser.GetString("SUCURSAL"); NombreCaja = BapiGetUser.GetString("NOM_CAJA"); Sociedad = BapiGetUser.GetString("SOCIEDAD_OUT"); Pais = BapiGetUser.GetString("LAND_OUT"); lt_INFOSOC = BapiGetUser.GetTable("INFO_SOC"); try { for (int i = 0; i < lt_INFOSOC.Count(); i++) { lt_INFOSOC.CurrentIndex = i; infosoc = new INFO_SOC(); SociedadR = lt_INFOSOC.GetString("BUKRS"); infosoc.BUKRS = lt_INFOSOC.GetString("BUKRS"); Empresa = lt_INFOSOC.GetString("BUTXT"); infosoc.BUTXT = lt_INFOSOC.GetString("BUTXT"); RUT = lt_INFOSOC.GetString("STCD1"); infosoc.STCD1 = lt_INFOSOC.GetString("STCD1"); info_soc.Add(infosoc); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } lt_RESUMEN_VP = BapiGetUser.GetTable("RESUMEN_VP"); try { for (int i = 0; i < lt_RESUMEN_VP.Count(); i++) { lt_RESUMEN_VP.CurrentIndex = i; resumenvp = new CajaIndigo.AppPersistencia.Class.RendicionCaja.Estructura.RESUMEN_VP(); resumenvp.LAND = lt_RESUMEN_VP.GetString("LAND"); resumenvp.ID_CAJA = lt_RESUMEN_VP.GetString("ID_CAJA"); SociedadR = lt_RESUMEN_VP.GetString("SOCIEDAD"); resumenvp.SOCIEDAD = lt_RESUMEN_VP.GetString("SOCIEDAD"); Empresa = lt_RESUMEN_VP.GetString("SOCIEDAD_TXT"); resumenvp.SOCIEDAD_TXT = lt_RESUMEN_VP.GetString("SOCIEDAD_TXT"); resumenvp.VIA_PAGO = lt_RESUMEN_VP.GetString("VIA_PAGO"); if (lt_RESUMEN_VP.GetString("VIA_PAGO") == "N" || lt_RESUMEN_VP.GetString("VIA_PAGO") == "0") { MontoEgresos = MontoEgresos + Convert.ToDouble(lt_RESUMEN_VP.GetString("MONTO")); } 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_REND"); try { for (int i = 0; i < lt_DETALLE_REND.Count(); i++) { lt_DETALLE_REND.CurrentIndex = i; detallerend = new DETALLE_REND(); detallerend.N_VENTA = lt_DETALLE_REND.GetString("N_VENTA"); detallerend.FEC_EMI = lt_DETALLE_REND.GetString("FEC_EMI"); detallerend.FEC_VENC = lt_DETALLE_REND.GetString("FEC_VENC"); detallerend.MONTO = lt_DETALLE_REND.GetString("MONTO"); detallerend.NAME1 = lt_DETALLE_REND.GetString("NAME1"); detallerend.MONTO_EFEC = lt_DETALLE_REND.GetString("MONTO_EFEC"); MontoEfect = MontoEfect + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_EFEC")); detallerend.NUM_CHEQUE = lt_DETALLE_REND.GetString("NUM_CHEQUE"); detallerend.MONTO_DIA = lt_DETALLE_REND.GetString("MONTO_DIA"); MontoChqDia = MontoChqDia + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_DIA")); detallerend.MONTO_FECHA = lt_DETALLE_REND.GetString("MONTO_FECHA"); MontoChqFech = MontoChqFech + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_FECHA")); detallerend.MONTO_TRANSF = lt_DETALLE_REND.GetString("MONTO_TRANSF"); MontoTransf = MontoTransf + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_TRANSF")); detallerend.MONTO_VALE_V = lt_DETALLE_REND.GetString("MONTO_VALE_V"); MontoValeV = MontoValeV + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_VALE_V")); detallerend.MONTO_DEP = lt_DETALLE_REND.GetString("MONTO_DEP"); MontoDepot = MontoDepot + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_DEP")); detallerend.MONTO_TARJ = lt_DETALLE_REND.GetString("MONTO_TARJ"); MontoTarj = MontoTarj + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_TARJ")); detallerend.MONTO_FINANC = lt_DETALLE_REND.GetString("MONTO_FINANC"); MontoFinanc = MontoFinanc + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_FINANC")); detallerend.MONTO_APP = lt_DETALLE_REND.GetString("MONTO_APP"); MontoApp = MontoApp + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_APP")); detallerend.MONTO_CREDITO = lt_DETALLE_REND.GetString("MONTO_CREDITO"); MontoCredit = MontoCredit + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_CREDITO")); detallerend.PATENTE = lt_DETALLE_REND.GetString("PATENTE"); detallerend.MONTO_C_CURSE = lt_DETALLE_REND.GetString("MONTO_C_CURSE"); MontoCCurse = MontoCCurse + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_C_CURSE")); detallerend.DOC_SAP = lt_DETALLE_REND.GetString("DOC_SAP"); detalle_rend.Add(detallerend); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } MontoIngresos = MontoIngresos + MontoEfect + MontoChqDia + MontoChqFech + MontoTransf + MontoValeV + MontoDepot + MontoTarj + MontoFinanc + MontoApp + MontoCredit + MontoCCurse; SaldoTotal = MontoIngresos; // +MontoEgresos; lt_CAB_ARQUEO = BapiGetUser.GetTable("CAB_ARQUEO"); try { for (int i = 0; i < lt_CAB_ARQUEO.Count(); i++) { lt_CAB_ARQUEO.CurrentIndex = i; cabarqueo = new CAB_ARQUEO(); cabarqueo.MANDT = lt_CAB_ARQUEO.GetString("MANDT"); cabarqueo.LAND = lt_CAB_ARQUEO.GetString("LAND"); cabarqueo.ID_ARQUEO = lt_CAB_ARQUEO.GetString("ID_ARQUEO"); cabarqueo.ID_REGISTRO = lt_CAB_ARQUEO.GetString("ID_DENOMINACION"); cabarqueo.ID_CAJA = lt_CAB_ARQUEO.GetString("CANTIDAD"); cabarqueo.MONTO_CIERRE = lt_CAB_ARQUEO.GetString("MONTO_TOTAL"); cabarqueo.MONTO_DIF = lt_CAB_ARQUEO.GetString("ID_DENOMINACION"); cabarqueo.COMENTARIO_DIF = lt_CAB_ARQUEO.GetString("CANTIDAD"); cabarqueo.NULO = lt_CAB_ARQUEO.GetString("MONTO_TOTAL"); cab_arqueo.Add(cabarqueo); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } lt_DET_ARQUEO = BapiGetUser.GetTable("DET_ARQUEO"); try { for (int i = 0; i < lt_DET_ARQUEO.Count(); i++) { lt_DET_ARQUEO.CurrentIndex = i; detallearqueo = new DET_ARQUEO(); detallearqueo.MANDT = lt_DET_ARQUEO.GetString("MANDT"); detallearqueo.LAND = lt_DET_ARQUEO.GetString("LAND"); detallearqueo.ID_ARQUEO = lt_DET_ARQUEO.GetString("ID_ARQUEO"); detallearqueo.ID_DENOMINACION = lt_DET_ARQUEO.GetString("ID_DENOMINACION"); detallearqueo.CANTIDAD = lt_DET_ARQUEO.GetString("CANTIDAD"); detallearqueo.MONTO_TOTAL = lt_DET_ARQUEO.GetString("MONTO_TOTAL"); detalle_arqueo.Add(detallearqueo); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } lt_RESUMEN_CAJA = BapiGetUser.GetTable("RESUMEN_CAJA"); try { for (int i = 0; i < lt_RESUMEN_CAJA.Count(); i++) { lt_RESUMEN_CAJA.CurrentIndex = i; resumencaja = new RESUMEN_CAJA(); resumencaja.ID_SUCURSAL = lt_RESUMEN_CAJA.GetString("ID_SUCURSAL"); resumencaja.SUCURSAL = lt_RESUMEN_CAJA.GetString("SUCURSAL"); resumencaja.ID_CAJA = lt_RESUMEN_CAJA.GetString("ID_CAJA"); resumencaja.NOM_CAJA = lt_RESUMEN_CAJA.GetString("NOM_CAJA"); resumencaja.MONTO_EFEC = lt_RESUMEN_CAJA.GetString("MONTO_EFEC"); MontoEfect = MontoEfect + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_EFEC")); resumencaja.MONTO_DIA = lt_RESUMEN_CAJA.GetString("MONTO_DIA"); MontoChqDia = MontoChqDia + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_DIA")); resumencaja.MONTO_FECHA = lt_RESUMEN_CAJA.GetString("MONTO_FECHA"); MontoChqFech = MontoChqFech + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_FECHA")); resumencaja.MONTO_TRANSF = lt_RESUMEN_CAJA.GetString("MONTO_TRANSF"); MontoTransf = MontoTransf + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_TRANSF")); resumencaja.MONTO_VALE_V = lt_RESUMEN_CAJA.GetString("MONTO_VALE_V"); MontoValeV = MontoValeV + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_VALE_V")); resumencaja.MONTO_DEP = lt_RESUMEN_CAJA.GetString("MONTO_DEP"); MontoDepot = MontoDepot + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_DEP")); resumencaja.MONTO_TARJ = lt_RESUMEN_CAJA.GetString("MONTO_TARJ"); MontoTarj = MontoTarj + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_TARJ")); resumencaja.MONTO_FINANC = lt_RESUMEN_CAJA.GetString("MONTO_FINANC"); MontoFinanc = MontoFinanc + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_FINANC")); resumencaja.MONTO_APP = lt_RESUMEN_CAJA.GetString("MONTO_APP"); MontoApp = MontoApp + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_APP")); resumencaja.MONTO_CREDITO = lt_RESUMEN_CAJA.GetString("MONTO_CREDITO"); MontoCredit = MontoCredit + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_CREDITO")); //resumencaja.MONEDA = lt_RESUMEN_CAJA.GetString("MONEDA"); resumen_caja.Add(resumencaja); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } lt_RENDICION_CAJA = BapiGetUser.GetTable("RENDICION_CAJA"); try { for (int i = 0; i < lt_RENDICION_CAJA.Count(); i++) { lt_RENDICION_CAJA.CurrentIndex = i; rendicioncaja = new RENDICION_CAJA(); rendicioncaja.N_VENTA = lt_RENDICION_CAJA.GetString("N_VENTA"); rendicioncaja.DOC_TRIB = lt_RENDICION_CAJA.GetString("DOC_TRIB"); rendicioncaja.CAJERO = lt_RENDICION_CAJA.GetString("CAJERO"); rendicioncaja.FEC_EMI = lt_RENDICION_CAJA.GetString("FEC_EMI"); rendicioncaja.FEC_VENC = lt_RENDICION_CAJA.GetString("FEC_VENC"); rendicioncaja.MONTO = lt_RENDICION_CAJA.GetString("MONTO"); rendicioncaja.NAME1 = lt_RENDICION_CAJA.GetString("NAME1"); rendicioncaja.NUM_CHEQUE = lt_RENDICION_CAJA.GetString("NUM_CHEQUE"); rendicioncaja.MONTO_DIA = lt_RENDICION_CAJA.GetString("MONTO_DIA"); MontoChqDia = MontoChqDia + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_DIA")); rendicioncaja.MONTO_FECHA = lt_RENDICION_CAJA.GetString("MONTO_FECHA"); MontoChqFech = MontoChqFech + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_FECHA")); rendicioncaja.MONTO_EFEC = lt_RENDICION_CAJA.GetString("MONTO_EFEC"); MontoEfect = MontoEfect + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_EFEC")); rendicioncaja.MONTO_TRANSF = lt_RENDICION_CAJA.GetString("MONTO_TRANSF"); MontoTransf = MontoTransf + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_TRANSF")); rendicioncaja.MONTO_VALE_V = lt_RENDICION_CAJA.GetString("MONTO_VALE_V"); MontoValeV = MontoValeV + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_VALE_V")); rendicioncaja.MONTO_DEP = lt_RENDICION_CAJA.GetString("MONTO_DEP"); MontoDepot = MontoDepot + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_DEP")); rendicioncaja.MONTO_TARJ = lt_RENDICION_CAJA.GetString("MONTO_TARJ"); MontoTarj = MontoTarj + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_TARJ")); rendicioncaja.MONTO_FINANC = lt_RENDICION_CAJA.GetString("MONTO_FINANC"); MontoFinanc = MontoFinanc + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_FINANC")); rendicioncaja.MONTO_APP = lt_RENDICION_CAJA.GetString("MONTO_APP"); MontoApp = MontoApp + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_APP")); rendicioncaja.MONTO_CREDITO = lt_RENDICION_CAJA.GetString("MONTO_CREDITO"); MontoCredit = MontoCredit + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_CREDITO")); //rendicioncaja.PATENTE = lt_RENDICION_CAJA.GetString("PATENTE"); //rendicioncaja.MONTO_C_CURSE = lt_RENDICION_CAJA.GetString("MONTO_C_CURSE"); //MontoCCurse = MontoCCurse + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_C_CURSE")); rendicioncaja.DOC_SAP = lt_RENDICION_CAJA.GetString("DOC_SAP"); rendicioncaja.MONEDA = lt_RENDICION_CAJA.GetString("MONEDA"); rendicion_caja.Add(rendicioncaja); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } lt_RESUMEN_MENSUAL = BapiGetUser.GetTable("RESUMEN_MENSUAL"); try { for (int i = 0; i < lt_RESUMEN_MENSUAL.Count(); i++) { lt_RESUMEN_MENSUAL.CurrentIndex = i; resumenmensual = new RESUMEN_MENSUAL(); resumenmensual.ID_SUCURSAL = lt_RESUMEN_MENSUAL.GetString("ID_SUCURSAL"); resumenmensual.ID_CAJA = lt_RESUMEN_MENSUAL.GetString("ID_CAJA"); resumenmensual.SUCURSAL = lt_RESUMEN_MENSUAL.GetString("SUCURSAL"); resumenmensual.NOM_CAJA = lt_RESUMEN_MENSUAL.GetString("NOM_CAJA"); resumenmensual.CAJERO = lt_RESUMEN_MENSUAL.GetString("CAJERO"); resumenmensual.AREA_VTAS = lt_RESUMEN_MENSUAL.GetString("AREA_VTAS"); resumenmensual.FLUJO_DOCS = lt_RESUMEN_MENSUAL.GetString("FLUJO_DOCS"); resumenmensual.TOTAL_MOV = lt_RESUMEN_MENSUAL.GetString("TOTAL_MOV"); resumenmensual.TOTAL_INGR = lt_RESUMEN_MENSUAL.GetString("TOTAL_INGR"); resumenmensual.MONTO_EFEC = lt_RESUMEN_MENSUAL.GetString("MONTO_EFEC"); MontoEfect = MontoEfect + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_EFEC")); resumenmensual.MONTO_DIA = lt_RESUMEN_MENSUAL.GetString("MONTO_DIA"); MontoChqDia = MontoChqDia + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_DIA")); resumenmensual.MONTO_FECHA = lt_RESUMEN_MENSUAL.GetString("MONTO_FECHA"); MontoChqFech = MontoChqFech + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_FECHA")); resumenmensual.MONTO_TRANSF = lt_RESUMEN_MENSUAL.GetString("MONTO_TRANSF"); MontoTransf = MontoTransf + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_TRANSF")); resumenmensual.MONTO_VALE_V = lt_RESUMEN_MENSUAL.GetString("MONTO_VALE_V"); MontoValeV = MontoValeV + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_VALE_V")); resumenmensual.MONTO_DEP = lt_RESUMEN_MENSUAL.GetString("MONTO_DEP"); MontoDepot = MontoDepot + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_DEP")); resumenmensual.MONTO_TARJ = lt_RESUMEN_MENSUAL.GetString("MONTO_TARJ"); MontoTarj = MontoTarj + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_TARJ")); resumenmensual.MONTO_FINANC = lt_RESUMEN_MENSUAL.GetString("MONTO_FINANC"); MontoFinanc = MontoFinanc + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_FINANC")); resumenmensual.MONTO_APP = lt_RESUMEN_MENSUAL.GetString("MONTO_APP"); MontoApp = MontoApp + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_APP")); resumenmensual.MONTO_CREDITO = lt_RESUMEN_MENSUAL.GetString("MONTO_CREDITO"); MontoCredit = MontoCredit + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_CREDITO")); //resumenmensual.MONTO_C_CURSE = lt_RESUMEN_MENSUAL.GetString("MONTO_C_CURSE"); //MontoCCurse = MontoCCurse + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_C_CURSE")); resumenmensual.TOTAL_CAJERO = lt_RESUMEN_MENSUAL.GetString("TOTAL_CAJERO"); resumenmensual.MONEDA = lt_RESUMEN_MENSUAL.GetString("MONEDA"); resumen_mensual.Add(resumenmensual); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } ls_RETORNO = BapiGetUser.GetStructure("RETORNO"); try { for (int i = 0; i < ls_RETORNO.Count(); i++) { //ls_RETORNO.CurrentIndex = i; retorno = new RETORNO(); if (ls_RETORNO.GetString("TYPE") == "S") { message = message + " - " + ls_RETORNO.GetString("MESSAGE"); } 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"); 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); } }
public void checkdocsanulacion(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_USUARIO, string P_ID_CAJA, string P_LAND, string P_RUT , string P_ID_COMPROBANTE, string P_SOCIEDAD, string P_TP_DOC, List <CAB_COMP> P_CAB_COM) { CabeceraDocs.Clear(); Retorno.Clear(); IRfcTable lt_h_documentos; //IRfcTable lt_d_documentos; IRfcStructure lt_retorno; //PART_ABIERTAS PART_ABIERTAS_resp; CAB_COMP DOCS_CABECERA_resp; //DET_COMP DOCS_DETALLES_resp; RETORNO retorno_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_CHECK_JEFE_CAJA"); BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA); BapiGetUser.SetValue("USUARIO", P_USUARIO); IRfcTable GralDat = BapiGetUser.GetTable("CAB_COMP"); try { for (var i = 0; i < P_CAB_COM.Count; i++) { GralDat.Append(); GralDat.SetValue("LAND", P_CAB_COM[i].LAND); GralDat.SetValue("ID_CAJA", P_CAB_COM[i].ID_CAJA); GralDat.SetValue("ID_COMPROBANTE", P_CAB_COM[i].ID_COMPROBANTE); GralDat.SetValue("TIPO_DOCUMENTO", P_CAB_COM[i].TIPO_DOCUMENTO); GralDat.SetValue("DESCRIPCION", P_CAB_COM[i].DESCRIPCION); GralDat.SetValue("NRO_REFERENCIA", P_CAB_COM[i].NRO_REFERENCIA); GralDat.SetValue("FECHA_COMP", P_CAB_COM[i].FECHA_COMP); GralDat.SetValue("FECHA_VENC_DOC", P_CAB_COM[i].FECHA_VENC_DOC); GralDat.SetValue("MONTO_DOC", P_CAB_COM[i].MONTO_DOC); GralDat.SetValue("TEXTO_EXCEPCION", P_CAB_COM[i].TEXTO_EXCEPCION); GralDat.SetValue("CLIENTE", Convert.ToDateTime(P_CAB_COM[i].CLIENTE)); GralDat.SetValue("MONEDA", P_CAB_COM[i].MONEDA); GralDat.SetValue("CLASE_DOC", P_CAB_COM[i].CLASE_DOC); GralDat.SetValue("TXT_CLASE_DOC", P_CAB_COM[i].TXT_CLASE_DOC); GralDat.SetValue("NUM_CANCELACION", P_CAB_COM[i].NUM_CANCELACION); GralDat.SetValue("AUT_JEF", P_CAB_COM[i].AUT_JEF); } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); } BapiGetUser.SetValue("CAB_COMP", GralDat); BapiGetUser.Invoke(SapRfcDestination); valido = BapiGetUser.GetString("VALIDO"); lt_h_documentos = BapiGetUser.GetTable("CAB_COMP"); lt_retorno = BapiGetUser.GetStructure("ESTADO"); if (lt_h_documentos.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_h_documentos.RowCount; i++) { try { lt_h_documentos.CurrentIndex = i; DOCS_CABECERA_resp = new CAB_COMP(); DOCS_CABECERA_resp.LAND = lt_h_documentos[i].GetString("LAND"); DOCS_CABECERA_resp.ID_CAJA = lt_h_documentos[i].GetString("ID_CAJA"); DOCS_CABECERA_resp.ID_COMPROBANTE = lt_h_documentos[i].GetString("ID_COMPROBANTE"); DOCS_CABECERA_resp.TIPO_DOCUMENTO = lt_h_documentos[i].GetString("TIPO_DOCUMENTO"); DOCS_CABECERA_resp.DESCRIPCION = lt_h_documentos[i].GetString("DESCRIPCION"); DOCS_CABECERA_resp.NRO_REFERENCIA = lt_h_documentos[i].GetString("NRO_REFERENCIA"); DOCS_CABECERA_resp.FECHA_COMP = lt_h_documentos[i].GetString("FECHA_COMP"); DOCS_CABECERA_resp.FECHA_VENC_DOC = lt_h_documentos[i].GetString("FECHA_VENC_DOC"); DOCS_CABECERA_resp.MONTO_DOC = lt_h_documentos[i].GetString("MONTO_DOC"); DOCS_CABECERA_resp.TEXTO_EXCEPCION = lt_h_documentos[i].GetString("TEXTO_EXCEPCION"); DOCS_CABECERA_resp.CLIENTE = lt_h_documentos[i].GetString("CLIENTE"); DOCS_CABECERA_resp.MONEDA = lt_h_documentos[i].GetString("MONEDA"); DOCS_CABECERA_resp.CLASE_DOC = lt_h_documentos[i].GetString("CLASE_DOC"); DOCS_CABECERA_resp.TXT_CLASE_DOC = lt_h_documentos[i].GetString("TXT_CLASE_DOC"); DOCS_CABECERA_resp.NUM_CANCELACION = lt_h_documentos[i].GetString("NUM_CANCELACION"); DOCS_CABECERA_resp.AUT_JEF = lt_h_documentos[i].GetString("AUT_JEF"); CabeceraDocs.Add(DOCS_CABECERA_resp); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } } else { System.Windows.MessageBox.Show("No existe(n) registro(s)"); } String Mensaje = ""; if (lt_retorno.Count > 0) { for (int i = 0; i < lt_retorno.Count(); i++) { //lt_retorno.CurrentIndex = i; retorno_resp = new RETORNO(); retorno_resp.TYPE = lt_retorno.GetString("TYPE"); retorno_resp.ID = lt_retorno.GetString("ID"); retorno_resp.NUMBER = lt_retorno.GetString("NUMBER"); retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE"); retorno_resp.LOG_NO = lt_retorno.GetString("LOG_NO"); retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO"); retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE"); retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1"); if (i == 0) { Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1"); } retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2"); retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3"); retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4"); retorno_resp.PARAMETER = lt_retorno.GetString("PARAMETER"); retorno_resp.ROW = lt_retorno.GetString("ROW"); retorno_resp.FIELD = lt_retorno.GetString("FIELD"); retorno_resp.SYSTEM = lt_retorno.GetString("SYSTEM"); Retorno.Add(retorno_resp); } System.Windows.MessageBox.Show(Mensaje); } } else { errormessage = retval; } GC.Collect(); }
/// <summary>执行按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void 函数执行ToolStripMenuItem_Click(object sender, EventArgs e) { try { ttbFunName.Focus(); //指定函数名称 dsRFC.DataSetName = ttbFunName.Text.Trim(); myfun = SapRfcRepository.CreateFunction(ttbFunName.Text.Trim());//根据输入的函数名获取函数对象 //传入值赋值 foreach (DataTable item in dsRFC.Tables) { //传入值赋值 if (item.Namespace == "IM") { int imrowindex = 0; foreach (DataRow item1 in item.Rows) { if (myfun.Metadata[item1["Code"].ToString()].DataType != RfcDataType.TABLE && myfun.Metadata[item1["Code"].ToString()].DataType != RfcDataType.STRUCTURE) { if (!string.IsNullOrEmpty(item1["Value"].ToString())) { myfun.SetValue(item1["Code"].ToString(), item1["Value"].ToString()); } } if (myfun.Metadata[item1["Code"].ToString()].DataType == RfcDataType.TABLE) { if (dsRFC.Tables.Contains("IMT." + item1["Code"].ToString() + "[R" + (imrowindex + 1).ToString() + ",C3]")) { //setStructureByFun(myfun, myfun.Metadata[item1["Code"].ToString()].DataType.ToString(), "IMT." + item1["Code"].ToString(), "IMT." + item1["Code"].ToString() + "[R" + (imrowindex + 1).ToString() + ",C3]"); setStructureByFun(myfun, myfun.Metadata[item1["Code"].ToString()].DataType.ToString(), "IMT." + item1["Code"].ToString() + "[R" + (imrowindex + 1).ToString() + ",C3]", "IMT." + item1["Code"].ToString()); } } imrowindex++; } } //传入结构赋值 if (item.Namespace == "IMS") { if (item.Rows.Count > 0) { setStructureByFun(myfun, "STRUCTURE", item.Namespace, item.TableName); } } //表赋值 if (item.Namespace == "Tables") { if (item.Rows.Count > 0) { IRfcStructure import = null; IRfcTable table = myfun.GetTable(item.TableName); foreach (DataRow item1 in item.Rows) { import = SapRfcRepository.GetStructureMetadata(myfun.Metadata[item.TableName].ValueMetadataAsTableMetadata.LineType.Name).CreateStructure(); foreach (DataColumn item2 in item.Columns) { item2.Namespace = "String"; if (!string.IsNullOrEmpty(item1[item2.ColumnName].ToString())) { import.SetValue(item2.ColumnName, item1[item2.ColumnName]); } } table.Insert(import); } } } } Stopwatch = new System.Diagnostics.Stopwatch(); CWaitForm b = new CWaitForm(); b._wtVoid = 执行; b.ShowDialog(); toolStripMenuItem1.Text = "SAP端执行时间:" + Stopwatch.Elapsed.ToString(); int exrowindex = -1; //获取返回值 foreach (DataRow item in dtEX.Rows) { exrowindex++; string flag = ""; if (item["Value"].ToString().Length >= 4) { flag = item["Value"].ToString().Substring(0, 4); } if (flag == "点击赋值") { if (dsRFC.Tables.Contains("EXT." + item["Code"].ToString())) { DataTable dt = new DataTable(); if (!dsRFC.Tables.Contains("EXT." + item["Code"].ToString() + "[R" + (exrowindex + 1).ToString() + ",C3]")) { dt = dsRFC.Tables["EXT." + item["Code"].ToString()].Clone(); dt.Namespace = "EXT." + item["Code"].ToString(); dt.TableName = "EXT." + item["Code"].ToString() + "[R" + (exrowindex + 1).ToString() + ",C3]"; dsRFC.Tables.Add(dt); } else { dt = dsRFC.Tables["EXT." + item["Code"].ToString() + "[R" + (exrowindex + 1).ToString() + ",C3]"]; dt.Clear(); } IRfcTable irtb; irtb = (IRfcTable)myfun.GetValue(item["Code"].ToString()); if (irtb.RowCount > 0) { for (int i = 0; i < irtb.RowCount; i++) { DataRow dr = dt.NewRow(); foreach (DataColumn item1 in dt.Columns) { item1.Namespace = "String"; irtb.CurrentIndex = i; dr[item1.ColumnName] = irtb.CurrentRow[item1.ColumnName].GetValue(); } dt.Rows.Add(dr); } } } //if (!dsRFC.Tables.Contains(linetablename)) //{ // //不存在则创建 // DataTable dt = new DataTable(); // dt = dsRFC.Tables[linetabletypename].Clone(); // dt.Namespace = linetabletypename; // dt.TableName = linetablename; // dsRFC.Tables.Add(dt); //} } else { item["Value"] = myfun.GetValue(item["Code"].ToString()); } } //获取表结果,结构结果 foreach (DataTable item in dsRFC.Tables) { if (item.Namespace == "Tables") { IRfcTable irtb; irtb = (IRfcTable)myfun.GetValue(item.TableName); if (irtb.RowCount > 0) { item.Clear(); for (int i = 0; i < irtb.RowCount; i++) { DataRow dr = item.NewRow(); foreach (DataColumn item1 in item.Columns) { item1.Namespace = "String"; irtb.CurrentIndex = i; dr[item1.ColumnName] = irtb.CurrentRow[item1.ColumnName].GetValue(); } item.Rows.Add(dr); } } } else if (item.Namespace == "EXS") { IRfcStructure irs; String[] ssname = item.TableName.Split('.'); irs = (IRfcStructure)myfun.GetValue(ssname[1]); if (irs.Count > 0) { item.Clear(); DataRow dr = item.NewRow(); foreach (DataColumn item1 in item.Columns) { if (item1.Namespace == "STRUCTURE") { dr[item1.ColumnName.ToString()] = "点击赋值"; } else if (item1.Namespace == "TABLE") { dr[item1.ColumnName.ToString()] = "点击赋值"; } else { dr[item1.ColumnName.ToString()] = irs.GetValue(item1.ColumnName.ToString()); } } item.Rows.Add(dr); } } } string filepath = ""; filepath = System.Environment.CurrentDirectory + "\\RFCFunConfig\\" + dsRFC.DataSetName.ToString() + "\\" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + "\\"; if (!File.Exists(filepath)) { FileInfo oInfo = new FileInfo(filepath); if (!Directory.Exists(oInfo.DirectoryName)) { Directory.CreateDirectory(oInfo.DirectoryName); } } dsRFC.WriteXmlSchema(filepath + "\\JieGou.XML"); dsRFC.WriteXml(filepath + "\\ShuZhi.XML"); MessageBox.Show("执行成功,结果保存在" + filepath); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
// SD02 - Inteface de fornecedor - Comunicação // funcao - ZFXI_SD02C //[RfcServerFunction(Name = "ZGXI_SD02")] public static void StfcInterfaceFornecedor(RfcServerContext context, IRfcFunction function) { // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Implementa Repositório dos dados FornecedorRepository fornecedorRepository = new FornecedorRepository(); // Implementa repositorio antes do Foreach para evitar duplicações Fornecedor fornecedor = new Fornecedor(); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<Fornecedor> fromDB = fornecedorRepository.ObterTodos(); foreach (Fornecedor dados in fromDB) { fornecedorRepository.Excluir(dados); } } // ZTBSD060 IRfcTable it_fornecedor = function.GetTable("IT_FORNECEDOR"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO - BAPIRET2 RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); int v_cont = 0; foreach (IRfcStructure row in it_fornecedor) { fornecedor.codigo = row.GetString("LIFNR"); fornecedor.nome = row.GetString("NAME1"); fornecedor.cpf = row.GetString("STCD2"); fornecedor.cnpj = row.GetString("STCD1"); fornecedor.nr_ie_for = row.GetString("STCD3"); fornecedor.cep = row.GetString("POST_CODE"); fornecedor.endereco = row.GetString("STREET"); fornecedor.numero = row.GetString("HOUSE_NUM1"); fornecedor.municipio = row.GetString("CITY1"); fornecedor.bairro = row.GetString("CITY2"); fornecedor.uf = row.GetString("UF"); fornecedor.pais = row.GetString("COUNTRY"); fornecedor.tel_res = row.GetString("TELF1"); fornecedor.tel_res = row.GetString("TELF2"); fornecedor.tel_cel = row.GetString("TELF1"); fornecedor.fax = row.GetString("TELFX"); fornecedor.email = row.GetString("EMAIL"); // Pacote fornecedor.pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); fornecedor.data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao fornecedor.hora_criacao = row.GetString("ERZET"); try { v_cont = v_cont + 1; if (deletar == ' ') { IList<Fornecedor> fromDB = fornecedorRepository.ObterTodosComCampo("codigo", fornecedor.codigo); foreach (Fornecedor dados in fromDB) { fornecedorRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro e a descricao do material Console.Write("entrou no exception"); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir o Fornecedor: " + fornecedor.nome); retorno.Insert(linha_retorno); } fornecedorRepository.Salvar(fornecedor); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso: " + v_cont); retornoSucesso.Insert(linha_retorno); }
/// <summary> /// 给函数深层表结构赋值 /// </summary> /// <param name="IRFCF"></param> /// <param name="stype"></param> /// <param name="ceng"></param> /// <param name="tname"></param> /// <returns></returns> public DataTable setStructureByFun(IRfcFunction IRFCF, string stype, string ceng, string tname) { string linetabletypename = ""; //表结构名称 string linetablename = ""; //表名称 int rowindex = 0; int columnindex = 0; int r = 0; int c = 0; string sname = ""; DataTable dt = new DataTable(); String[] tnames = tname.Split('.'); String[] snames = tnames[tnames.Count() - 1].Split('[', ']', ','); sname = snames[0].ToString(); //r = int.Parse(snames[1].Substring(1, snames[1].Length - 1).ToString()); //c = int.Parse(snames[2].Substring(1, snames[2].Length - 1).ToString()); if (stype == "TABLE") { IRfcTable table = IRFCF.GetTable(sname); dt = dsRFC.Tables[ceng]; foreach (DataRow item1 in dt.Rows) { IRfcStructure structure = null; structure = SapRfcRepository.GetStructureMetadata(table.Metadata.LineType.Name).CreateStructure(); columnindex = 0; foreach (DataColumn item2 in dt.Columns) { if (item2.Namespace == "TABLE") { linetabletypename = tname + "." + item2.ColumnName.ToString(); linetablename = linetabletypename + "[R" + (rowindex + 1).ToString() + ",C" + (columnindex + 1).ToString() + "]"; setStructureByStru(structure, item2.Namespace, linetabletypename, linetablename); } else if (item2.Namespace == "STRUCTURE") { linetabletypename = tname + "." + item2.ColumnName.ToString(); linetablename = linetabletypename + "[R" + (rowindex + 1).ToString() + ",C" + (columnindex + 1).ToString() + "]"; setStructureByStru(structure, item2.Namespace, linetabletypename, linetablename); } else { structure.SetValue(item2.ColumnName, item1[item2.ColumnName]); } columnindex++; } table.Insert(structure); rowindex++; } } else if (stype == "STRUCTURE") { IRfcStructure structure = IRFCF.GetStructure(tnames[tnames.Count() - 1]); dt = dsRFC.Tables[tname]; foreach (DataRow item1 in dt.Rows) { columnindex = 0; foreach (DataColumn item2 in dt.Columns) { if (item2.Namespace == "TABLE") { linetabletypename = tname + "." + item2.ColumnName.ToString(); linetablename = linetabletypename + "[R" + (rowindex + 1).ToString() + ",C" + (columnindex + 1).ToString() + "]"; setStructureByStru(structure, item2.Namespace, linetabletypename, linetablename); } else if (item2.Namespace == "STRUCTURE") { linetabletypename = tname + "." + item2.ColumnName.ToString(); linetablename = linetabletypename + "[R" + (rowindex + 1).ToString() + ",C" + (columnindex + 1).ToString() + "]"; setStructureByStru(structure, item2.Namespace, linetabletypename, linetablename); } else { structure.SetValue(item2.ColumnName, item1[item2.ColumnName]); } columnindex++; } rowindex++; } } return(dt); }
// SD04 - Inteface de cond. de pag. - Comunicação // Funcao - ZFXI_SD04C //[RfcServerFunction(Name = "ZGXI_SD04")] public static void StfcInterfaceCondPag(RfcServerContext context, IRfcFunction function) { // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Mandar salvar o Condicao de Pagamento CondicaoPagamentoRepository condicaoPagamentoRepository = new CondicaoPagamentoRepository(); // Implementa repositorio antes do Foreach para evitar duplicações CondicaoPagamento condicaoPagamento = new CondicaoPagamento(); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<CondicaoPagamento> fromDB = condicaoPagamentoRepository.ObterTodos(); foreach (CondicaoPagamento dados in fromDB) { condicaoPagamentoRepository.Excluir(dados); } } // ZTBSD060 IRfcTable it_condicaoPagamento = function.GetTable("IT_CONDPAG"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO - BAPIRET2 RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); int v_cont = 0; foreach (IRfcStructure row in it_condicaoPagamento) { condicaoPagamento.Codigo = row.GetString("ZTERM"); condicaoPagamento.Descricao = row.GetString("VTEXT"); // Pacote condicaoPagamento.pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); condicaoPagamento.data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao //string v_hora_Cricao = row.GetString("ERZET"); condicaoPagamento.hora_criacao = row.GetString("ERZET");//Convert.ToDateTime(v_hora_Cricao); try { v_cont = v_cont + 1; if (deletar == ' ') { IList<CondicaoPagamento> fromDB = condicaoPagamentoRepository.ObterTodosComCampo("Codigo", condicaoPagamento.Codigo); foreach (CondicaoPagamento dados in fromDB) { condicaoPagamentoRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro e a descricao do material Console.Write("entrou no exception"); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir a Condicao de Pagamento: " + condicaoPagamento.Descricao + " - Id: " + condicaoPagamento.Codigo); retorno.Insert(linha_retorno); } condicaoPagamentoRepository.Salvar(condicaoPagamento); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso: " + v_cont); retornoSucesso.Insert(linha_retorno); }
public void LoadDataFromSAPERP(string[] newTP) { string werk = ""; string onDate = txbOnDate.Text; var settingsSP = (from s in context.SettingsSAPERPTbls select s).FirstOrDefault(); werk = settingsSP.Werk; if (werk == null || werk == "") { ErrorLabel1.Text = "Не указан в настройках завод магазина"; Wizard1.ActiveStepIndex = 1; return; } MyBackendConfig2 cfg = new MyBackendConfig2(); try { // delete all var sap1Del = from p in context.SAPOUT_REST select p; context.SAPOUT_REST.DeleteAllOnSubmit(sap1Del); context.SubmitChanges(); var sap2Del = from p in context.SAPOUT_SMENA select p; context.SAPOUT_SMENA.DeleteAllOnSubmit(sap2Del); context.SubmitChanges(); //----------------------------- RfcDestinationManager.RegisterDestinationConfiguration(cfg); //1 RfcDestination prd = RfcDestinationManager.GetDestination("AEP"); //2 RfcRepository repo = prd.Repository;//3 IRfcFunction pricesBapi = repo.CreateFunction("Y_GET_MATNR_REST"); //4 pricesBapi.SetValue("I_WERKS", werk); //5 //pricesBapi.SetValue("I_DATE", onDate); //5 IRfcTable detail1 = pricesBapi.GetTable("TAB"); foreach (string strs in newTP) { detail1.Append(); detail1.SetValue("MATNR", strs); detail1.SetValue("MAKTX", ""); detail1.SetValue("LGORT", ""); detail1.SetValue("LABST", 0.0); detail1.SetValue("MEINS", ""); } pricesBapi.Invoke(prd); //6 IRfcTable detail3 = pricesBapi.GetTable("TAB"); DateTime tsmp = DateTime.Now; int i = 0; foreach (IRfcStructure elem in detail3) { string matnr = elem[0].GetString(); string maktx = elem[1].GetString(); string lgort = elem[2].GetString(); double labst = elem[3].GetDouble(); string meins = elem[4].GetString(); SAPOUT_REST np = new SAPOUT_REST(); np.MATNR = matnr; np.MAKTX = maktx; np.LGORT = lgort; np.LABST = labst; np.MEINS = meins; np.TimeStamp = tsmp; context.SAPOUT_REST.InsertOnSubmit(np); if (i == 100) { context.SubmitChanges(); i = 0; } i++; } context.SubmitChanges(); RfcRepository repo2 = prd.Repository;//3 IRfcFunction pricesBapi2 = repo2.CreateFunction("Y_GET_SMENA"); //4 pricesBapi2.SetValue("I_WERKS", werk); //5 pricesBapi2.SetValue("I_DATE", onDate); //5 pricesBapi2.Invoke(prd); //6 IRfcTable detail2 = pricesBapi2.GetTable("TAB"); tsmp = DateTime.Now; i = 0; foreach (IRfcStructure elem in detail2) { string sm_date = elem[0].GetString(); string smena = elem[1].GetString(); SAPOUT_SMENA np = new SAPOUT_SMENA(); np.SM_DATE = DateTime.Parse(sm_date); np.SMENA = smena; np.TimeStamp = tsmp; context.SAPOUT_SMENA.InsertOnSubmit(np); if (i == 100) { context.SubmitChanges(); i = 0; } i++; } context.SubmitChanges(); //String companyName = detail. // GetString("NAME1");//7 //Console.WriteLine(companyName); //Console.Read(); } catch (RfcInvalidStateException e) { // cascade up callstack ErrorLabel1.Text = "Проблема повторного подключения к SAP: " + e.Message; Wizard1.ActiveStepIndex = 1; Log l = new Log(); l.Message = e.Message; l.Type = "SAP"; l.TimeStamp = DateTime.Now; context.Logs.InsertOnSubmit(l); context.SubmitChanges(); } catch (RfcCommunicationException e) { // network problem... ErrorLabel1.Text = "Сетевая проблема подключения к SAP: " + e.Message; Wizard1.ActiveStepIndex = 1; Log l = new Log(); l.Message = e.Message; l.Type = "SAP"; l.TimeStamp = DateTime.Now; context.Logs.InsertOnSubmit(l); context.SubmitChanges(); } catch (RfcLogonException e) { // user could not logon... ErrorLabel1.Text = "Не правильный пользователь для подключения к SAP: " + e.Message; Wizard1.ActiveStepIndex = 1; Log l = new Log(); l.Message = e.Message; l.Type = "SAP"; l.TimeStamp = DateTime.Now; context.Logs.InsertOnSubmit(l); context.SubmitChanges(); } catch (RfcAbapRuntimeException e) { // serious problem on ABAP system side... ErrorLabel1.Text = "Серьезная проблема на стороне SAP обратитесь в службу поддержки SAP (serious problem on ABAP system side...): " + e.Message; Wizard1.ActiveStepIndex = 1; Log l = new Log(); l.Message = e.Message; l.Type = "SAP"; l.TimeStamp = DateTime.Now; context.Logs.InsertOnSubmit(l); context.SubmitChanges(); } catch (RfcAbapBaseException e) { // The function module returned an ABAP exception, an ABAP message // or an ABAP class-based exception... ErrorLabel1.Text = "Серьезная проблема на стороне SAP обратитесь в службу поддержки SAP (The function module returned an ABAP exception, an ABAP message): " + e.Message; Wizard1.ActiveStepIndex = 1; Log l = new Log(); l.Message = e.Message; l.Type = "SAP"; l.TimeStamp = DateTime.Now; context.Logs.InsertOnSubmit(l); context.SubmitChanges(); } finally { RfcDestinationManager.UnregisterDestinationConfiguration(cfg);//1 } }
// SD01 - Inteface de cliente - Comunicação // funcao - ZFXI_SD01C //[RfcServerFunction(Name = "ZFXI_SD01C")] public static void StfcInterfaceCliente(RfcServerContext context, IRfcFunction function) { // // CLIENTE // // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Implementa repositorio antes do Foreach para evitar duplicações ClienteRepository clienteRepository = new ClienteRepository(); // Implementa repositorio antes do Foreach para evitar duplicações Cliente cliente = new Cliente(); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<Cliente> fromDB = clienteRepository.ObterTodos(); foreach (Cliente dados in fromDB) { clienteRepository.Excluir(dados); } } // ZTBSD056 - ZTBXI_101 IRfcTable it_cliente = function.GetTable("IT_CLIENTE"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); int v_cont = 0; foreach (IRfcStructure row in it_cliente) { cliente.id_cliente = row.GetString("KUNNR"); cliente.nome = row.GetString("NAME1"); cliente.cpf = row.GetString("STCD2"); cliente.cnpj = row.GetString("STCD1"); cliente.nr_ie_cli = row.GetString("STCD3"); cliente.cep = row.GetString("POST_CODE"); cliente.endereco = row.GetString("STREET"); cliente.numero = row.GetString("HOUSE_NUM1"); cliente.complemento = row.GetString("HOUSE_NUM2"); cliente.municipio = row.GetString("CITY1"); cliente.bairro = row.GetString("CITY2"); cliente.uf = row.GetString("UF"); cliente.pais = row.GetString("COUNTRY"); cliente.tel_res = row.GetString("TELF1"); cliente.tel_cel = row.GetString("TELF2"); cliente.fax = row.GetString("TELFX"); cliente.email = row.GetString("EMAIL"); // Pacote cliente.pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); cliente.data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao cliente.hora_criacao = row.GetString("ERZET"); try { v_cont = v_cont + 1; if (deletar == ' ') { IList<Cliente> fromDB = clienteRepository.ObterTodosComCampo("id_cliente", cliente.id_cliente); foreach (Cliente dados in fromDB) { clienteRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("entrou no exception"); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir o Cliente: " + cliente.nome + " - Id: " + cliente.id_cliente); retorno.Insert(linha_retorno); } clienteRepository.Salvar(cliente); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso: " + v_cont); retornoSucesso.Insert(linha_retorno); // FIM CLIENTE // // CLIENTE VENDAS // // Implementa repositorio antes do Foreach para evitar duplicações ClienteVendasRepository clienteVendasRepository = new ClienteVendasRepository(); // Implementa repositorio antes do Foreach para evitar duplicações ClienteVendas clienteVendas = new ClienteVendas(); // ZTBSD056 - ZTBXI_101 IRfcTable it_cliente_vendas = function.GetTable("IT_CLIENTE_AV"); // Implementa Repositorio Rfc de resposta RfcRepository repVendas = context.Repository; // RETORNO RfcStructureMetadata bapiret2Vendas = repVendas.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_vendas = bapiret2Vendas.CreateStructure(); int v_cont_vendas = 0; foreach (IRfcStructure row in it_cliente_vendas) { clienteVendas.id_cliente = row.GetString("KUNNR"); clienteVendas.org_vendas = row.GetString("VKORG"); clienteVendas.can_dist = row.GetString("VTWEG"); clienteVendas.can_dist = row.GetString("VTWEG"); clienteVendas.set_ativ = row.GetString("SPART"); clienteVendas.set_ativ = row.GetString("SPART"); clienteVendas.grupo_cli = row.GetString("KDGRP"); clienteVendas.id_fornecedor = row.GetString("LIFNR"); // Pacote clienteVendas.pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); clienteVendas.data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao clienteVendas.hora_criacao = row.GetString("ERZET"); try { //v_cont_vendas = v_cont_vendas + 1; //if (deletar == ' ') //{ IList<ClienteVendas> fromDB = clienteVendasRepository.PesquisaClienteVendas("id_cliente", clienteVendas.id_cliente, "org_vendas", clienteVendas.org_vendas); foreach (ClienteVendas dados in fromDB) { clienteVendasRepository.Excluir(dados); } //} } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("entrou no exception"); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_vendas.SetValue("TYPE", "E"); linha_retorno_vendas.SetValue("MESSAGE", ex.Message); linha_retorno_vendas.SetValue("MESSAGE", "Erro ao inserir o Cliente: " + cliente.nome + " - Id: " + cliente.id_cliente); retorno.Insert(linha_retorno_vendas); } clienteVendasRepository.Salvar(clienteVendas); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucessoVendas = function.GetTable("IT_RETURN"); linha_retorno_vendas.SetValue("TYPE", "S"); linha_retorno_vendas.SetValue("MESSAGE", "Registros com Sucesso Grupo de Vendas: " + v_cont_vendas); retornoSucessoVendas.Insert(linha_retorno_vendas); // FIM CLIENTE VENDAS }
private void ExecuteRFC_READ_TABLE(ref IRfcFunction f) { SendMessage(String.Format("开始调用{0}", f.Metadata.Name)); if (this.BackgroundExtraction) { f["ACTIONID"].SetValue("D"); f["REQUESTID"].SetValue(this.BackgroundRequestID); if (!this.BufferLocation.Equals("")) { f["LCTN"].SetValue(this.BufferLocation); } } IRfcTable toptions = f.GetTable("OPTIONS"); this.InitWhereClause(ref toptions); this.anzahlaufrufe++; if ((this._UsePrimaryKeyPackaging && (this.anzahlaufrufe > 1)) && (((int)f["ROWCOUNT"].GetValue()) > 0)) { f["ROWCOUNT"].SetValue(((int)f["ROWCOUNT"].GetValue()) + 1); } f["DELIMITER"].SetValue(this.Delimiter); //if (this.con.Logging) //{ // try // { // f.SaveToXML("ReadTableBeforeCall_" + this.anzahlaufrufe.ToString() + ".xml"); // } // catch // { // } //} if (this._UsePrimaryKeyPackaging) { f["ROWSKIPS"].SetValue("0"); } try { SendMessage("Invoke开始"); f.Invoke(_des); SendMessage("Invoke结束"); } catch (RfcAbapException e) { this.fields.Clear(); this.options.Clear(); throw new SAPException(e.Key + e.Message); } catch (RfcAbapRuntimeException ee) { throw new SAPException(ee.Key + ee.Message); } SendMessage(String.Format("结束调用{0}", f.Metadata.Name)); }