public static void StfcConnection(RfcServerContext context, IRfcFunction function) { switch (context.FunctionName) { case "ZFXI_SD01C": Console.WriteLine("Interface de Cliente"); MyServerHandlerExecute.StfcInterfaceCliente(context, function); break; } switch (context.FunctionName) { case "ZFXI_SD02C": Console.WriteLine("Interface de Fornecedor"); MyServerHandlerExecute.StfcInterfaceFornecedor(context, function); break; } switch (context.FunctionName) { case "ZFXI_SD03C": Console.WriteLine("Interface de Material"); MyServerHandlerExecute.StfcInterfaceMaterial(context, function); break; } switch (context.FunctionName) { case "ZFXI_SD04C": Console.WriteLine("Interface de Condicao de Pagamento"); MyServerHandlerExecute.StfcInterfaceCondPag(context, function); break; } switch (context.FunctionName) { case "ZFXI_SD05C": Console.WriteLine("Unidade de Medida"); MyServerHandlerExecute.StfcInterfaceUM(context, function); break; } switch (context.FunctionName) { case "ZFXI_SD07C": Console.WriteLine("Incoterms"); MyServerHandlerExecute.StfcInterfaceIncoterms(context, function); break; } }
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 override RfcPreparedFunction Prepare() { try { this.function = this.repository.CreateFunction(this.FunctionName); foreach (var parameter in this.Parameters) { int idx = this.function.Metadata.TryNameToIndex(parameter.Name); if (idx == -1) throw new UnknownRfcParameterException(parameter.Name, this.FunctionName); RfcDataType pType = this.function.Metadata[idx].DataType; switch (pType) { case RfcDataType.STRUCTURE: RfcStructureMetadata structureMetadata = this.function.GetStructure(idx).Metadata; IRfcStructure structure = this.structureMapper.CreateStructure(structureMetadata, parameter.Value); this.function.SetValue(parameter.Name, structure); break; case RfcDataType.TABLE: RfcTableMetadata tableMetadata = this.function.GetTable(idx).Metadata; IRfcTable table = this.structureMapper.CreateTable(tableMetadata, parameter.Value); this.function.SetValue(parameter.Name, table); break; default: object formattedValue = this.structureMapper.ToRemoteValue(this.function.Metadata[idx].GetAbapDataType(), parameter.Value); this.function.SetValue(parameter.Name, formattedValue); break; } } return this; } catch (Exception ex) { if (ex.GetBaseException() is SharpRfcException) throw ex; throw new SharpRfcCallException(ex.Message, function == null ? "null" : function.ToString(), ex); } }
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 static void StfcConnection(RfcServerContext context, IRfcFunction function) { Console.WriteLine("Received function call{0} from system{1}.", function.Metadata.Name, context.SystemAttributes.SystemID); String reqtext = function.GetString("REQUTEXT"); Console.WriteLine("REQUTEXT = {0}\n", reqtext); function.SetValue("ECHOTEXT", reqtext); function.SetValue("RESPTEXT", "Hello from NCo 3.0!"); }
public static void ZARFC_DEST_SHIP(RfcServerContext context, IRfcFunction function) { IRfcTable DATA = function.GetTable("DATA"); DataTable dt = GetDataTableFromRfcTable(DATA); }
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 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)); }
// 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 }
// 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 }
// 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); }
/// <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; } } } }
public static IRfcFunction handleOnAfterCall(HeContext heContext, Action <HeContext> onAfterCall, String actionName, IRfcFunction func) { using (var sapInternalContext = new OutSystems.Internal.SAP.SAPInternalContext(actionName)) { sapInternalContext.SetIRfcFunction(func); onAfterCall(heContext); func = sapInternalContext.GetIRfcFunction(); } return(func); }
/// <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); } } } }
/// <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> /// Call the SAP remote function /// </summary> /// <param name="function"></param> /// <param name="rfc"></param> private void InvokeSAP( SAPFunction function, IRfcFunction rfc) { try { DateTime start = DateTime.Now; rfc.Invoke(this.Destination); DateTime end = DateTime.Now; TimeSpan total = end.Subtract(start); double seconds = total.TotalSeconds; double milliseconds = total.TotalMilliseconds; } catch (Exception ex) { LogException(ex, function); } }
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() }; } }
/// <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); }
// mgv llamado por medio de SAPconn public List <PEntidades.PAbiertasYPago> getPagosConn(string date1, string date2, List <string[]> listaDiferentesInstancias) //llamada con nva conexion { List <PEntidades.PAbiertasYPago> list = new List <PEntidades.PAbiertasYPago>(); PEntidades.SrvSAPUProv.ZWS_UPROVEEDORESClient srv; PEntidades.SrvSAPUProv.Z_UPAGOS pagos = new PEntidades.SrvSAPUProv.Z_UPAGOS(); 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; // pagos.SOCIEDAD = PEntidades.Utiles.objetoSociedad(splitSoc); // pagos.PROVEEDOR = PEntidades.Utiles.objetoLifnr(splitLifnr); PPersistencia.SAPConn psc = new PPersistencia.SAPConn(); //cambio llamado hacia SAP List <ParamsCallSAP> listPA = new List <ParamsCallSAP>(); ParamsCallSAP pr = new ParamsCallSAP(); pr = new ParamsCallSAP(); //pagos.DATE1 = Gen.Util.CS.Gen.convertirFecha_SAP(date1); pr.NameVar = "DATE1"; pr.ValVar = Gen.Util.CS.Gen.convertirFecha_SAP(date1); pr.TipVar = "S"; listPA.Add(pr); pr = new ParamsCallSAP(); //pagos.DATE2 = Gen.Util.CS.Gen.convertirFecha_SAP(date2); pr.NameVar = "DATE2"; pr.ValVar = Gen.Util.CS.Gen.convertirFecha_SAP(date2); 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_DPAGOS", listPA, listT); // var resultado = srv.Z_UPAGOS(pagos); // int cantidad = resultado.PAGOS.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.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.SGTXT = tb.CurrentRow.GetString("SGTXT"); objPabYPag.EBELN = tb.CurrentRow.GetString("EBELN"); objPabYPag.AUGBL1 = tb.CurrentRow.GetString("AUGBL"); objPabYPag.KONTO = tb.CurrentRow.GetString("KONTO"); objPabYPag.indice = o; list.Add(objPabYPag); } srv.Close(); } catch (Exception) { status[j] = "Error al cargar en la instancia: " + listaDiferentesInstancias[j][6]; } } return(list); }
//类型赋值 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; }
// 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); }
// 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); }
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("解析数据完成"); }
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); }
public void IDOC_INBOUND_ASYNCHRONOUS(RfcServerContext context, IRfcFunction function) { List <string> IdocNumberList = new List <string>(); string IDocNumber = string.Empty; string field = string.Empty; IRfcTable IdocControlRec40; IRfcStructure structureIdocControlRec40; IRfcTable IdocDataRec40; IRfcStructure structureIdocDataRec40; SAPIDocStream sapIDocWriter = new SAPIDocStream(); // notify any subscribed clients that we are about to receive an IDoc SAPIDocReceiveEventArgs e = new SAPIDocReceiveEventArgs(); e.SessionId = context.SessionID; if (IDocBeginReceiveCompleteEvent != null) { IDocBeginReceiveCompleteEvent(e); } try { // Process the IDoc DC40 header segment IdocControlRec40 = function.GetTable("IDOC_CONTROL_REC_40"); // Build DC40 Control record string foreach (IRfcStructure rfcControlRecord in IdocControlRec40) { structureIdocControlRec40 = IdocControlRec40.Metadata.LineType.CreateStructure(); sapIDocWriter.Write(rfcControlRecord.GetValue("TABNAM").ToString().PadRight(structureIdocControlRec40["TABNAM"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("MANDT").ToString().PadRight(structureIdocControlRec40["MANDT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); IDocNumber = rfcControlRecord.GetValue("DOCNUM").ToString().PadRight(structureIdocControlRec40["DOCNUM"].Metadata.NucLength, ' '); sapIDocWriter.Write(IDocNumber, SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); IdocNumberList.Add(IDocNumber); sapIDocWriter.Write(rfcControlRecord.GetValue("DOCREL").ToString().PadRight(structureIdocControlRec40["DOCREL"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("STATUS").ToString().PadRight(structureIdocControlRec40["STATUS"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("DIRECT").ToString().PadRight(structureIdocControlRec40["DIRECT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("OUTMOD").ToString().PadRight(structureIdocControlRec40["OUTMOD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("EXPRSS").ToString().PadRight(structureIdocControlRec40["EXPRSS"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("TEST").ToString().PadRight(structureIdocControlRec40["TEST"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("IDOCTYP").ToString().PadRight(structureIdocControlRec40["IDOCTYP"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("CIMTYP").ToString().PadRight(structureIdocControlRec40["CIMTYP"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("MESTYP").ToString().PadRight(structureIdocControlRec40["MESTYP"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("MESCOD").ToString().PadRight(structureIdocControlRec40["MESCOD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("MESFCT").ToString().PadRight(structureIdocControlRec40["MESFCT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("STD").ToString().PadRight(structureIdocControlRec40["STD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("STDVRS").ToString().PadRight(structureIdocControlRec40["STDVRS"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("STDMES").ToString().PadRight(structureIdocControlRec40["STDMES"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("SNDPOR").ToString().PadRight(structureIdocControlRec40["SNDPOR"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("SNDPRT").ToString().PadRight(structureIdocControlRec40["SNDPRT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("SNDPFC").ToString().PadRight(structureIdocControlRec40["SNDPFC"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("SNDPRN").ToString().PadRight(structureIdocControlRec40["SNDPRN"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("SNDSAD").ToString().PadRight(structureIdocControlRec40["SNDSAD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("SNDLAD").ToString().PadRight(structureIdocControlRec40["SNDLAD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("RCVPOR").ToString().PadRight(structureIdocControlRec40["RCVPOR"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("RCVPRT").ToString().PadRight(structureIdocControlRec40["RCVPRT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("RCVPFC").ToString().PadRight(structureIdocControlRec40["RCVPFC"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("RCVPRN").ToString().PadRight(structureIdocControlRec40["RCVPRN"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("RCVSAD").ToString().PadRight(structureIdocControlRec40["RCVSAD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("RCVLAD").ToString().PadRight(structureIdocControlRec40["RCVLAD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); string dateField = rfcControlRecord.GetValue("CREDAT").ToString().PadRight(structureIdocControlRec40["CREDAT"].Metadata.NucLength, ' '); dateField = dateField.Replace("-", ""); sapIDocWriter.Write(dateField, SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); string timeField = rfcControlRecord.GetValue("CRETIM").ToString().PadRight(structureIdocControlRec40["CRETIM"].Metadata.NucLength, ' '); timeField = timeField.Replace(":", ""); sapIDocWriter.Write(timeField, SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("REFINT").ToString().PadRight(structureIdocControlRec40["REFINT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("REFGRP").ToString().PadRight(structureIdocControlRec40["REFGRP"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("REFMES").ToString().PadRight(structureIdocControlRec40["REFMES"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("ARCKEY").ToString().PadRight(structureIdocControlRec40["ARCKEY"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcControlRecord.GetValue("SERIAL").ToString().PadRight(structureIdocControlRec40["SERIAL"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write("\r\n", SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); } // Process the IDoc DDR40 data segment IdocDataRec40 = function.GetTable("IDOC_DATA_REC_40"); //for (int i = 0; i < IdocDataRec40.RowCount; i++) foreach (IRfcStructure rfcDataRecord in IdocDataRec40) { // Get the record structureIdocDataRec40 = IdocDataRec40.Metadata.LineType.CreateStructure(); // Build the data segment sapIDocWriter.Write(rfcDataRecord.GetValue("SEGNAM").ToString().PadRight(structureIdocDataRec40["SEGNAM"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcDataRecord.GetValue("MANDT").ToString().PadRight(structureIdocDataRec40["MANDT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcDataRecord.GetValue("DOCNUM").ToString().PadRight(structureIdocDataRec40["DOCNUM"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcDataRecord.GetValue("SEGNUM").ToString().PadRight(structureIdocDataRec40["SEGNUM"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcDataRecord.GetValue("PSGNUM").ToString().PadRight(structureIdocDataRec40["PSGNUM"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcDataRecord.GetValue("HLEVEL").ToString().PadRight(structureIdocDataRec40["HLEVEL"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write(rfcDataRecord.GetValue("SDATA").ToString().PadRight(structureIdocDataRec40["SDATA"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); sapIDocWriter.Write("\r\n", SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode); } sapIDocWriter.UnderlyingStream.Seek(0, SeekOrigin.Begin); StreamReader iDocReader = new StreamReader(sapIDocWriter.UnderlyingStream); string Idoc = iDocReader.ReadToEnd(); byte[] buffer = Encoding.UTF8.GetBytes(Idoc); // Pass the IDoc back in the EventArgs parameter e.IDocBuffer = buffer; e.IDocStream = sapIDocWriter.UnderlyingStream; // Pass back current session Id e.SessionId = context.SessionID; // Pas back IDOcnumbers e.IDocNumberList = IdocNumberList; // Set IDocs are batched flag e.IsBatched = (IdocControlRec40.RowCount > 1); if (IDocEndReceiveCompleteEvent != null) { IDocEndReceiveCompleteEvent(e); } } catch (Exception ex) { // raise exception up System.Diagnostics.Trace.WriteLine(string.Format("Exception raised in IDOC_INBOUND_ASYNCHRONOUS of type:{0}", ex.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) { 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.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(); } }
/// <summary> /// Realiza commit de los cambios realizados mediante una función RFC /// </summary> /// <param name="rfcFunction"></param> /// <param name="rfcDestination"></param> private static void commitDataInsertion(IRfcFunction rfcFunction, RfcDestination rfcDestination) { RfcTransaction trans = new RfcTransaction(); trans.AddFunction(rfcFunction); trans.Commit(rfcDestination); }
// 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 void gestiondedepositos(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_USUARIO, string P_PAIS, string P_ID_APERTURA , string P_ID_CIERRE, string P_ID_ARQUEO) { try { RETORNO retorno; VIAS_PAGOGD vpgestion; BCO_DESTINO banco_destino; BCO_DEPOSITOS banco_depositos; //DETALLE_REND detallerend; vpgestiondepositos.Clear(); Retorno.Clear(); BancoDest.Clear(); BancoDeposito.Clear(); errormessage = ""; message = ""; IdCaja = ""; Efectivo = "0"; IRfcTable lt_RETORNO; IRfcTable lt_VPGESTIONBANCOS; IRfcTable lt_BANCODEST; IRfcTable lt_BANCODEPOSITOS; 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_GESTION_DEPOSITOS"); BapiGetUser.SetValue("LAND", P_PAIS); BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA); BapiGetUser.SetValue("USUARIO", P_USUARIO); BapiGetUser.SetValue("ID_APERTURA", P_ID_APERTURA); BapiGetUser.SetValue("ID_CIERRE", P_ID_CIERRE); BapiGetUser.SetValue("ID_ARQUEO", P_ID_ARQUEO); BapiGetUser.Invoke(SapRfcDestination); //BapiGetUser.SetValue("I_VBELN",P_NUMDOCSD); //IRfcTable GralDat = BapiGetUser.GetTable("VIAS_PAGO"); lt_VPGESTIONBANCOS = BapiGetUser.GetTable("VIAS_PAGO"); if (lt_VPGESTIONBANCOS.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_VPGESTIONBANCOS.RowCount; i++) { try { lt_VPGESTIONBANCOS.CurrentIndex = i; vpgestion = new VIAS_PAGOGD(); vpgestion.SELECCION = lt_VPGESTIONBANCOS[i].GetString("SELECCION"); vpgestion.ID_CAJA = lt_VPGESTIONBANCOS[i].GetString("ID_CAJA"); vpgestion.ID_APERTURA = lt_VPGESTIONBANCOS[i].GetString("ID_APERTURA"); vpgestion.ID_CIERRE = P_ID_CIERRE; vpgestion.TEXT_VIA_PAGO = lt_VPGESTIONBANCOS[i].GetString("TEXT_VIA_PAGO"); vpgestion.FECHA_EMISION = lt_VPGESTIONBANCOS[i].GetString("FECHA_EMISION"); vpgestion.NUM_DOC = lt_VPGESTIONBANCOS[i].GetString("NUM_DOC"); vpgestion.TEXT_BANCO = lt_VPGESTIONBANCOS[i].GetString("TEXT_BANCO"); if (lt_VPGESTIONBANCOS[i].GetString("MONEDA") == "CLP") { string Valor = lt_VPGESTIONBANCOS[i].GetString("MONTO_DOC").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2)); string monedachile = string.Format("{0:0,0}", ValorAux); vpgestion.MONTO_DOC = monedachile; } else { string moneda = Convert.ToString(lt_VPGESTIONBANCOS[i].GetString("MONTO_DOC")); decimal ValorAux = Convert.ToDecimal(moneda); vpgestion.MONTO_DOC = string.Format("{0:0,0.##}", ValorAux); } vpgestion.ZUONR = lt_VPGESTIONBANCOS[i].GetString("ZUONR"); vpgestion.FECHA_VENC = lt_VPGESTIONBANCOS[i].GetString("FECHA_VENC"); vpgestion.MONEDA = lt_VPGESTIONBANCOS[i].GetString("MONEDA"); vpgestion.ID_BANCO = lt_VPGESTIONBANCOS[i].GetString("ID_BANCO"); vpgestion.VIA_PAGO = lt_VPGESTIONBANCOS[i].GetString("VIA_PAGO"); vpgestion.SOCIEDAD = lt_VPGESTIONBANCOS[i].GetString("SOCIEDAD"); vpgestion.NUM_DEPOSITO = lt_VPGESTIONBANCOS[i].GetString("NUM_DEPOSITO"); vpgestion.USUARIO = lt_VPGESTIONBANCOS[i].GetString("USUARIO"); vpgestion.ID_DEPOSITO = lt_VPGESTIONBANCOS[i].GetString("ID_DEPOSITO"); vpgestion.FEC_DEPOSITO = lt_VPGESTIONBANCOS[i].GetString("FEC_DEPOSITO"); vpgestion.BANCO = lt_VPGESTIONBANCOS[i].GetString("BANCO"); vpgestion.CTA_BANCO = lt_VPGESTIONBANCOS[i].GetString("CTA_BANCO"); vpgestion.BELNR_DEP = lt_VPGESTIONBANCOS[i].GetString("BELNR_DEP"); vpgestion.BELNR = lt_VPGESTIONBANCOS[i].GetString("BELNR"); vpgestion.SOCIEDAD = lt_VPGESTIONBANCOS[i].GetString("SOCIEDAD"); vpgestion.HKONT = lt_VPGESTIONBANCOS[i].GetString("HKONT"); vpgestion.ID_COMPROBANTE = lt_VPGESTIONBANCOS[i].GetString("ID_COMPROBANTE"); vpgestion.ID_DETALLE = lt_VPGESTIONBANCOS[i].GetString("ID_DETALLE"); vpgestiondepositos.Add(vpgestion); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } } else { System.Windows.Forms.MessageBox.Show("No existe(n) registro(s) de vias de pago"); } lt_BANCODEST = BapiGetUser.GetTable("BCO_DESTINO"); if (lt_BANCODEST.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_BANCODEST.RowCount; i++) { try { lt_BANCODEST.CurrentIndex = i; banco_destino = new BCO_DESTINO(); banco_destino.BUKRS = lt_BANCODEST[i].GetString("BUKRS"); banco_destino.HBKID = lt_BANCODEST[i].GetString("HBKID"); banco_destino.HKTID = lt_BANCODEST[i].GetString("HKTID"); banco_destino.BANKN = lt_BANCODEST[i].GetString("BANKN"); banco_destino.BANKL = lt_BANCODEST[i].GetString("BANKL"); banco_destino.BANKA = lt_BANCODEST[i].GetString("BANKA"); banco_destino.WAERS = lt_BANCODEST[i].GetString("WAERS"); banco_destino.TEXT1 = lt_BANCODEST[i].GetString("TEXT1"); BancoDest.Add(banco_destino); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } } else { System.Windows.Forms.MessageBox.Show("No existe(n) registro(s) en banco destino"); } lt_BANCODEPOSITOS = BapiGetUser.GetTable("BCO_DEPOSITOS"); if (lt_BANCODEPOSITOS.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_BANCODEPOSITOS.RowCount; i++) { try { lt_BANCODEPOSITOS.CurrentIndex = i; banco_depositos = new BCO_DEPOSITOS(); banco_depositos.MANDT = lt_BANCODEPOSITOS[i].GetString("MANDT"); banco_depositos.BANKS = lt_BANCODEPOSITOS[i].GetString("BANKS"); banco_depositos.BUKRS = lt_BANCODEPOSITOS[i].GetString("BUKRS"); banco_depositos.WAERS = lt_BANCODEPOSITOS[i].GetString("WAERS"); banco_depositos.BANKL = lt_BANCODEPOSITOS[i].GetString("BANKL"); banco_depositos.HBKID = lt_BANCODEPOSITOS[i].GetString("HBKID"); banco_depositos.BANKN = lt_BANCODEPOSITOS[i].GetString("BANKN"); banco_depositos.BANKA = lt_BANCODEPOSITOS[i].GetString("BANKA"); banco_depositos.HKONT = lt_BANCODEPOSITOS[i].GetString("HKONT"); BancoDeposito.Add(banco_depositos); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } } else { System.Windows.Forms.MessageBox.Show("No existe(n) registro(s) en depósitos de banco"); } lt_RETORNO = BapiGetUser.GetTable("RETORNO"); try { for (int i = 0; i < lt_RETORNO.Count(); i++) { lt_RETORNO.CurrentIndex = i; retorno = new RETORNO(); if (lt_RETORNO.GetString("TYPE") == "S") { message = message + " - " + lt_RETORNO.GetString("MESSAGE") + "-" + lt_RETORNO.GetString("MESSAGE_V1").Trim(); NumComprob = lt_RETORNO.GetString("MESSAGE_V4").Trim();; } if (lt_RETORNO.GetString("TYPE") == "E") { errormessage = errormessage + " - " + lt_RETORNO.GetString("MESSAGE"); } retorno.TYPE = lt_RETORNO.GetString("TYPE"); retorno.ID = lt_RETORNO.GetString("ID"); retorno.NUMBER = lt_RETORNO.GetString("NUMBER"); retorno.MESSAGE = lt_RETORNO.GetString("MESSAGE"); retorno.LOG_NO = lt_RETORNO.GetString("LOG_NO"); retorno.LOG_MSG_NO = lt_RETORNO.GetString("LOG_MSG_NO"); retorno.MESSAGE_V1 = lt_RETORNO.GetString("MESSAGE_V1"); retorno.MESSAGE_V2 = lt_RETORNO.GetString("MESSAGE_V2"); retorno.MESSAGE_V3 = lt_RETORNO.GetString("MESSAGE_V3"); if (lt_RETORNO.GetString("MESSAGE_V4") != "") { // comprobante = ls_RETORNO.GetString("MESSAGE_V4"); } retorno.MESSAGE_V4 = lt_RETORNO.GetString("MESSAGE_V4"); retorno.PARAMETER = lt_RETORNO.GetString("PARAMETER"); retorno.ROW = lt_RETORNO.GetString("ROW"); retorno.FIELD = lt_RETORNO.GetString("FIELD"); retorno.SYSTEM = lt_RETORNO.GetString("SYSTEM"); 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); } }
/// <summary> /// Remote Function Module YBAPI_ACC_DOCUMENT_POST_COMMIT. /// YAPBAPIINVOICE /// </summary> /// <param name="Obj_Key">Reference Key</param> /// <param name="Obj_Sys">Logical system of source document</param> /// <param name="Obj_Type">Reference procedure</param> /// <param name="Contractheader">Add. Contract Accounts Recievable and Payable Header Line</param> /// <param name="Customercpd">Posting in accounting: Partner billing doc (load receivable)</param> /// <param name="Documentheader">Header</param> /// <param name="Accountgl">G/L account item</param> /// <param name="Accountpayable">Vendor Item</param> /// <param name="Accountreceivable">Customer Item</param> /// <param name="Accounttax">Tax item</param> /// <param name="Contractitem">Add. Contract Accounts Rec. and Payable Document Line Item</param> /// <param name="Criteria">Posting in accounting: CO-PA acct assignment characteristics</param> /// <param name="Currencyamount">Currency Items</param> /// <param name="Extension1">Container for 'Customer Exit' Parameter</param> /// <param name="Extension2">Ref. structure for BAPI parameter ExtensionIn/ExtensionOut</param> /// <param name="Paymentcard">Payment Card Information</param> /// <param name="Realestate">Real Estate Account Assignment Data</param> /// <param name="Return0">Return Parameter</param> /// <param name="Valuefield">Posting in accounting: CO-PA acct assignment value fields</param> //[RfcMethod(AbapName = "YBAPI_ACC_DOCUMENT_POST_COMMIT")] //[SoapDocumentMethodAttribute("http://tempuri.org/YBAPI_ACC_DOCUMENT_POST_COMMIT", // RequestNamespace = "urn:sap-com:document:sap:rfc:functions", // RequestElementName = "YBAPI_ACC_DOCUMENT_POST_COMMIT", // ResponseNamespace = "urn:sap-com:document:sap:rfc:functions", // ResponseElementName = "YBAPI_ACC_DOCUMENT_POST_COMMIT.Response")] public virtual void Ybapi_Acc_Document_Post_Commit( //[RfcParameter(AbapName = "CONTRACTHEADER", RfcType = RFCTYPE.RFCTYPE_STRUCTURE, Optional = true, Direction = RFCINOUT.IN)] //[XmlElement("CONTRACTHEADER", IsNullable = false, Form = XmlSchemaForm.Unqualified)] BAPIACCAHD Contractheader, //[RfcParameter(AbapName = "CUSTOMERCPD", RfcType = RFCTYPE.RFCTYPE_STRUCTURE, Optional = true, Direction = RFCINOUT.IN)] //[XmlElement("CUSTOMERCPD", IsNullable = false, Form = XmlSchemaForm.Unqualified)] BAPIACPA09 Customercpd, //[RfcParameter(AbapName = "DOCUMENTHEADER", RfcType = RFCTYPE.RFCTYPE_STRUCTURE, Optional = false, Direction = RFCINOUT.IN)] //[XmlElement("DOCUMENTHEADER", IsNullable = false, Form = XmlSchemaForm.Unqualified)] BAPIACHE09 Documentheader, //[RfcParameter(AbapName = "OBJ_KEY", RfcType = RFCTYPE.RFCTYPE_CHAR, Optional = true, Direction = RFCINOUT.OUT, Length = 20, Length2 = 40)] //[XmlElement("OBJ_KEY", IsNullable = false, Form = XmlSchemaForm.Unqualified)] out string Obj_Key, //[RfcParameter(AbapName = "OBJ_SYS", RfcType = RFCTYPE.RFCTYPE_CHAR, Optional = true, Direction = RFCINOUT.OUT, Length = 10, Length2 = 20)] //[XmlElement("OBJ_SYS", IsNullable = false, Form = XmlSchemaForm.Unqualified)] out string Obj_Sys, //[RfcParameter(AbapName = "OBJ_TYPE", RfcType = RFCTYPE.RFCTYPE_CHAR, Optional = true, Direction = RFCINOUT.OUT, Length = 5, Length2 = 10)] //[XmlElement("OBJ_TYPE", IsNullable = false, Form = XmlSchemaForm.Unqualified)] out string Obj_Type, //[RfcParameter(AbapName = "ACCOUNTGL", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("ACCOUNTGL", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACGL09Table Accountgl, //[RfcParameter(AbapName = "ACCOUNTPAYABLE", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("ACCOUNTPAYABLE", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACAP09Table Accountpayable, //[RfcParameter(AbapName = "ACCOUNTRECEIVABLE", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("ACCOUNTRECEIVABLE", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACAR09Table Accountreceivable, //[RfcParameter(AbapName = "ACCOUNTTAX", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("ACCOUNTTAX", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACTX09Table Accounttax, //[RfcParameter(AbapName = "CONTRACTITEM", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("CONTRACTITEM", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACCAITTable Contractitem, //[RfcParameter(AbapName = "CRITERIA", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("CRITERIA", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACKEC9Table Criteria, //[RfcParameter(AbapName = "CURRENCYAMOUNT", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = false, Direction = RFCINOUT.INOUT)] //[XmlArray("CURRENCYAMOUNT", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACCR09Table Currencyamount, //[RfcParameter(AbapName = "EXTENSION1", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("EXTENSION1", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACEXTCTable Extension1, //[RfcParameter(AbapName = "EXTENSION2", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("EXTENSION2", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIPAREXTable Extension2, //[RfcParameter(AbapName = "PAYMENTCARD", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("PAYMENTCARD", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACPC09Table Paymentcard, //[RfcParameter(AbapName = "REALESTATE", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("REALESTATE", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACRE09Table Realestate, //[RfcParameter(AbapName = "RETURN", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = false, Direction = RFCINOUT.INOUT)] //[XmlArray("RETURN", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIRET2Table Return0, //[RfcParameter(AbapName = "VALUEFIELD", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)] //[XmlArray("VALUEFIELD", IsNullable = false, Form = XmlSchemaForm.Unqualified)] //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)] ref BAPIACKEV9Table Valuefield, bool useEcc) { //object[] results = null; //results = this.SAPInvoke("Ybapi_Acc_Document_Post_Commit", new object[] { // Contractheader,Customercpd,Documentheader,Accountgl,Accountpayable,Accountreceivable,Accounttax,Contractitem,Criteria,Currencyamount,Extension1,Extension2,Paymentcard,Realestate,Return0,Valuefield }); IRfcFunction function = destination.Repository.CreateFunction("YBAPI_ACC_DOCUMENT_POST_COMMIT"); #region set parameter value function.SetValue("CONTRACTHEADER", Contractheader.GetStructure(destination.Repository)); function.SetValue("CUSTOMERCPD", Customercpd.GetStructure(destination.Repository, useEcc)); function.SetValue("DOCUMENTHEADER", Documentheader.GetStructure(destination.Repository)); function.SetValue("ACCOUNTGL", Accountgl.GetTable(destination.Repository, function.GetTable("ACCOUNTGL"))); function.SetValue("ACCOUNTPAYABLE", Accountpayable.GetTable(destination.Repository, function.GetTable("ACCOUNTPAYABLE"))); function.SetValue("ACCOUNTRECEIVABLE", Accountreceivable.GetTable(destination.Repository, function.GetTable("ACCOUNTRECEIVABLE"))); function.SetValue("ACCOUNTTAX", Accounttax.GetTable(destination.Repository, function.GetTable("ACCOUNTTAX"))); function.SetValue("CONTRACTITEM", Contractitem.GetTable(destination.Repository, function.GetTable("CONTRACTITEM"))); function.SetValue("CRITERIA", Criteria.GetTable(destination.Repository, function.GetTable("CRITERIA"))); function.SetValue("CURRENCYAMOUNT", Currencyamount.GetTable(destination.Repository, function.GetTable("CURRENCYAMOUNT"))); function.SetValue("EXTENSION1", Extension1.GetTable(destination.Repository, function.GetTable("EXTENSION1"))); function.SetValue("EXTENSION2", Extension2.GetTable(destination.Repository, function.GetTable("EXTENSION2"))); function.SetValue("PAYMENTCARD", Paymentcard.GetTable(destination.Repository, function.GetTable("PAYMENTCARD"))); function.SetValue("REALESTATE", Realestate.GetTable(destination.Repository, function.GetTable("REALESTATE"))); function.SetValue("RETURN", Return0.GetTable(destination.Repository, function.GetTable("RETURN"))); function.SetValue("VALUEFIELD", Valuefield.GetTable(destination.Repository, function.GetTable("VALUEFIELD"))); #endregion function.Invoke(destination); Obj_Key = function.GetString("OBJ_KEY"); //(string)results[0]; Obj_Sys = function.GetString("OBJ_SYS"); //(string)results[1]; Obj_Type = function.GetString("OBJ_TYPE"); //(string)results[2]; Accountgl.SetValue(function.GetTable("ACCOUNTGL")); //Accountgl = (BAPIACGL09Table)results[3]; Accountpayable.SetValue(function.GetTable("ACCOUNTPAYABLE")); //Accountpayable = (BAPIACAP09Table)results[4]; Accountreceivable.SetValue(function.GetTable("ACCOUNTRECEIVABLE")); //Accountreceivable = (BAPIACAR09Table)results[5]; Accounttax.SetValue(function.GetTable("ACCOUNTTAX")); //Accounttax = (BAPIACTX09Table)results[6]; Contractitem.SetValue(function.GetTable("CONTRACTITEM")); //Contractitem = (BAPIACCAITTable)results[7]; Criteria.SetValue(function.GetTable("CRITERIA")); //Criteria = (BAPIACKEC9Table)results[8]; Currencyamount.SetValue(function.GetTable("CURRENCYAMOUNT")); //Currencyamount = (BAPIACCR09Table)results[9]; Extension1.SetValue(function.GetTable("EXTENSION1")); //Extension1 = (BAPIACEXTCTable)results[10]; Extension2.SetValue(function.GetTable("EXTENSION2")); //Extension2 = (BAPIPAREXTable)results[11]; Paymentcard.SetValue(function.GetTable("PAYMENTCARD")); //Paymentcard = (BAPIACPC09Table)results[12]; Realestate.SetValue(function.GetTable("REALESTATE")); //Realestate = (BAPIACRE09Table)results[13]; Return0.SetValue(function.GetTable("RETURN")); //Return0 = (BAPIRET2Table)results[14]; Valuefield.SetValue(function.GetTable("VALUEFIELD")); //Valuefield = (BAPIACKEV9Table)results[15]; }
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_COMPROBANTE", P_ID_COMPROBANTE); //BapiGetUser.SetValue("RUT", P_RUT); //BapiGetUser.SetValue("LAND", P_LAND); //BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD); BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA); BapiGetUser.SetValue("USUARIO", P_USUARIO); //BapiGetUser.SetValue("TP_DOC", P_TP_DOC); 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); //System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } BapiGetUser.SetValue("CAB_COMP", GralDat); BapiGetUser.Invoke(SapRfcDestination); valido = BapiGetUser.GetString("VALIDO"); // estado = BapiGetUser.GetString("ESTADO"); 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)"); } //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"); // 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"); 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 //{ // System.Windows.MessageBox.Show("No existe(n) registro(s)"); //} } else { errormessage = retval; } GC.Collect(); }
public void bloqueardesbloquearcaja(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, List <LOG_APERTURA> P_LOGAPERTURA) { //IRfcTable lt_t_documentos; //IRfcStructure lt_retorno; // PART_ABIERTAS PART_ABIERTAS_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_BLOQ_DES_CAJA"); //BapiGetUser.SetValue("LOG_APERTURA", P_LOGAPERTURA); IRfcStructure GralDat = BapiGetUser.GetStructure("LOG_APERTURA"); for (var i = 0; i < P_LOGAPERTURA.Count; i++) { //GralDat.Append(); GralDat.SetValue("MANDT", P_LOGAPERTURA[i].MANDT); GralDat.SetValue("ID_REGISTRO", P_LOGAPERTURA[i].ID_REGISTRO); GralDat.SetValue("LAND", P_LOGAPERTURA[i].LAND); GralDat.SetValue("ID_CAJA", P_LOGAPERTURA[i].ID_CAJA); GralDat.SetValue("USUARIO", P_LOGAPERTURA[i].USUARIO); GralDat.SetValue("FECHA", P_LOGAPERTURA[i].FECHA); GralDat.SetValue("HORA", P_LOGAPERTURA[i].HORA); GralDat.SetValue("MONTO", P_LOGAPERTURA[i].MONTO); GralDat.SetValue("MONEDA", P_LOGAPERTURA[i].MONEDA); GralDat.SetValue("TIPO_REGISTRO", P_LOGAPERTURA[i].TIPO_REGISTRO); GralDat.SetValue("ID_APERTURA", P_LOGAPERTURA[i].ID_APERTURA); GralDat.SetValue("TXT_CIERRE", P_LOGAPERTURA[i].TXT_CIERRE); GralDat.SetValue("BLOQUEO", P_LOGAPERTURA[i].BLOQUEO); GralDat.SetValue("USUARIO_BLOQ", P_LOGAPERTURA[i].USUARIO_BLOQ); } BapiGetUser.SetValue("LOG_APERTURA", GralDat); BapiGetUser.Invoke(SapRfcDestination); //lt_t_documentos = BapiGetUser.GetTable("T_DOCUMENTOS"); //lt_retorno = BapiGetUser.GetStructure("SE_ESTATUS"); //lt_PART_ABIERTAS = BapiGetUser.GetTable("ZCLSP_TT_LISTA_DOCUMENTOS"); try { 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 (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); //} } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } else { errormessage = retval; } GC.Collect(); }
public Attachment_BE VALIDATE_XML(ref Attachment_BE attach, string metodoPago, SharedSettings.Settings settings) { try { //Establecemos conexion con SAP RfcConfigParameters rfc = SAP_Connection.GetParameters(settings); RfcDestination rfcDest = null; rfcDest = RfcDestinationManager.GetDestination(rfc); //Creamos repositorio para la función RfcRepository repo = rfcDest.Repository; IRfcFunction validate_mail = repo.CreateFunction("Z_MAIL_VALIDATE_DATA"); validate_mail.SetValue("P_RFC_VENDOR", attach.RFC_VEND); validate_mail.SetValue("P_RFC_COMPANY", attach.RFC_COMP); validate_mail.SetValue("P_MET_PAGO", metodoPago); //Ejecutamos la consulta validate_mail.Invoke(rfcDest); attach.RFC_COMPANY = validate_mail.GetString("ERFC_COMPANY"); attach.RFC_VENDOR = validate_mail.GetString("ERFC_VENDOR"); attach.LIFNR = validate_mail.GetString("ELIFNR"); attach.BUKRS = validate_mail.GetString("EBUKRS"); //attach.ECALLECOMP = validate_mail.GetString("ECALLECOMP"); //attach.E_N_EXTCOMP = validate_mail.GetString("E_N_EXTCOMP"); //attach.ECOLCOMP = validate_mail.GetString("ECOLCOMP"); //attach.EMUNI_COMP = validate_mail.GetString("EMUNI_COMP"); //attach.ECPCOMP = validate_mail.GetString("ECPCOMP"); //attach.EPAISCOMP = validate_mail.GetString("EPAISCOMP"); //attach.ECALLEVEND = validate_mail.GetString("ECALLEVEND"); //attach.E_N_EXTVEND = validate_mail.GetString("E_N_EXTVEND"); //attach.ECOLVEND = validate_mail.GetString("ECOLVEND"); //attach.EMUNI_VEND = validate_mail.GetString("EMUNI_VEND"); //attach.ECPVEND = validate_mail.GetString("ECPVEND"); //attach.EPAISVEND = validate_mail.GetString("EPAISVEND"); //attach.EEDO_COMP = validate_mail.GetString("EEDO_COMP"); //attach.EEDO_VEND = validate_mail.GetString("EEDO_VEND"); attach.Desc_Error = attach.Desc_Error + validate_mail.GetString("E_MET_PAGO"); return(attach); } catch (RfcCommunicationException e) { throw e; } catch (RfcLogonException e) { // user could not logon... throw e; } catch (RfcAbapRuntimeException e) { // serious problem on ABAP system side... throw e; } catch (RfcAbapBaseException e) { // The function module returned an ABAP exception, an ABAP message // or an ABAP class-based exception... throw e; } catch (Exception e) { throw e; } }
public static void ZRFCFUNCTION01(RfcServerContext context, IRfcFunction function) { //Console.WriteLine("Received function call{0} from system{1}.", // function.Metadata.Name, // context.SystemAttributes.SystemID); String reqtext = function.GetString("ZNAME"); Console.WriteLine("ZNAME = {0}\n", reqtext); }
public string SAVE_MAIL_DATA(MAIL_DATA_BE mail_data, List <Attachment_BE> attachs, List <Relacionados> relacionados, SharedSettings.Settings settings) { byte[] pdf; try { //Establecemos conexion con SAP RfcConfigParameters rfc = SAP_Connection.GetParameters(settings); RfcDestination rfcDest = null; rfcDest = RfcDestinationManager.GetDestination(rfc); //Creamos repositorio para la función RfcRepository repo = rfcDest.Repository; IRfcFunction save_mail = repo.CreateFunction("Z_MAIL_SAVE"); IRfcStructure p_maildata = save_mail.GetStructure("P_MAILDATA"); IRfcTable p_attachments = save_mail.GetTable("P_ATTACHMENTS"); IRfcTable p_relacionados = save_mail.GetTable("P_RELACIONADOS"); get_maildata_sapstr(mail_data, ref p_maildata); get_mailattach_saptab(attachs, ref p_attachments); get_relacionados_saptab(relacionados, ref p_relacionados); //Ejecutamos la consulta save_mail.Invoke(rfcDest); pdf = save_mail.GetByteArray("FILEPDFGEN"); IRfcStructure bapiret = save_mail.GetStructure("BAPIRET"); //string res = save_mail.GetString("MSG"); //Revisamos que la consulta haya sido exitosa if (pdf.Length > 0 && String.IsNullOrEmpty(attachs[0].PATHFILEPDF) == false) { if (System.IO.File.Exists(attachs[0].PATHFILEPDF) == false) { System.IO.File.WriteAllBytes(attachs[0].PATHFILEPDF, pdf); } } if (bapiret.GetString("TYPE") == "E") { string mensajeError = bapiret.GetString("MESSAGE"); return(mensajeError); //Hubo un error } else { return(""); //Guardado exitoso } } catch (RfcCommunicationException e) { throw e; } catch (RfcLogonException e) { // user could not logon... throw e; } catch (RfcAbapRuntimeException e) { // serious problem on ABAP system side... throw e; } catch (RfcAbapBaseException e) { // The function module returned an ABAP exception, an ABAP message // or an ABAP class-based exception... throw e; } catch (Exception e) { throw e; } }
public void aperturacaja(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_MONTO, string P_PAIS, string P_MONEDA, string P_TIPO_REGISTRO, string P_EQUIPO) { try { errormessage = ""; status = ""; message = ""; stringRfc = ""; IRfcStructure ls_APER_CAJA; //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_GF_RFC_APER_CAJA"); BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA); if (P_MONTO == "") { P_MONTO = "0"; } BapiGetUser.SetValue("MONTO", P_MONTO); BapiGetUser.SetValue("MONEDA", P_MONEDA); BapiGetUser.SetValue("TIPO_REGISTRO", P_TIPO_REGISTRO); BapiGetUser.SetValue("LAND", P_PAIS); BapiGetUser.SetValue("USUARIO", P_UNAME); BapiGetUser.SetValue("EQUIPO", P_EQUIPO); BapiGetUser.Invoke(SapRfcDestination); ls_APER_CAJA = BapiGetUser.GetStructure("ESTATUS"); stringRfc = Convert.ToString(BapiGetUser.GetValue("ESTATUS")); //LLenamos los datos que retorna la estructura de la RFC status = ls_APER_CAJA.GetString("TYPE"); message = ls_APER_CAJA.GetString("MESSAGE"); } else ////Si el valor de retorno es distinto nulo o vacio,se emite el mensaje de error. { errormessage = retval; } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } GC.Collect(); }
static void Main(string[] args) { string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); Appconfig.Initialize(path, ConfigurationManager.AppSettings, null); #region Logger log4net.GlobalContext.Properties["LOG4NET_ERROR"] = Appconfig.LOG4NET_ERROR; //log file path log4net.GlobalContext.Properties["LOG4NET_DEBUG"] = Appconfig.LOG4NET_DEBUG; //log file path log4net.Config.XmlConfigurator.Configure(); #endregion var currencyRatioDict = Appconfig.CurrencyRatioDict; DateTime programDatetime = DateTime.Now; DateTime runningDate; if (programDatetime.Hour > Appconfig.BOTHourUpdate) { runningDate = new DateTime(programDatetime.Year, programDatetime.Month, programDatetime.Day); } else { var programDatetimeYesterday = programDatetime.AddDays(-1); runningDate = new DateTime(programDatetimeYesterday.Year, programDatetimeYesterday.Month, programDatetimeYesterday.Day); } if (args != null && args.Count() > 0) { DateTime tryResult; if (DateTime.TryParseExact(args.First(), "d/MM/yyyy", new CultureInfo("en-US"), DateTimeStyles.None, out tryResult)) { runningDate = tryResult; } } log.Debug("*******************************************************************"); log.Debug("PROGRAM RUNS ON " + programDatetime.ToString("dd/MM/yyyy HH:mm:ss")); log.Debug("*******************************************************************"); JsonLogService db = new JsonLogService(Appconfig.JsonLog); var dateToRun = new List <DateTime>(); if (!Appconfig.RecoveryMode) { dateToRun.Add(runningDate); // we could check last date run is yesterday|| today ? if not we cound add lost day in between var lastDataDate = db.GetLastRunningDate(); if (lastDataDate != default(DateTime) && lastDataDate.CompareTo(runningDate) < 0) // 0 means run second time for the day, 1 is not possible (if we do not force them to run future's day) { log.Debug("-----------------------------------------------------------------"); log.Debug("CHECKING LAST RUNING DATE FOR SPECIFY DATES TO RUN (IF THERE IS MISSING RUNNING ON SOME DAYS)"); log.Debug("-----------------------------------------------------------------"); var timeSpanDiff = runningDate.Subtract(lastDataDate); if (timeSpanDiff.TotalDays > 1) { int dayToRecover = Convert.ToInt32(timeSpanDiff.TotalDays) - 1; for (int i = 1; i <= dayToRecover; i++) { dateToRun.Add(runningDate.AddDays(-i)); } } } } else { foreach (var recoveryDate in Appconfig.RecoveryDate) { DateTime tryResult; if (DateTime.TryParseExact(recoveryDate, "d/M/yyyy", new CultureInfo("en-US"), DateTimeStyles.None, out tryResult)) { dateToRun.Add(tryResult); } } } foreach (var transactionDate in dateToRun) { #region BOT API log.Debug("-----------------------------------------------------------------"); log.Debug("API Call Start"); log.Debug("-----------------------------------------------------------------"); //var todayLog = db.GetDailyLog(transactionDate);//?? List <Task> taskList = new List <Task>(); foreach (var currencyPair in Appconfig.SyncCurrency) { var currencyInDb = db.GetOrCreateCurrency(transactionDate, currencyPair); //if sap is sync we will not call api again if (currencyInDb.isSyncSAP == false) { if (currencyInDb.isAPIComplete) { log.Debug(String.Format(@"NOTE : THERE WAS FINISHED API CALL BUT SAP ERROR --> RECALL API AGAIN {0} {1}", currencyInDb.Currency, currencyInDb.Date.ToShortDateString())); } taskList.Add(APIExecute(currencyInDb, transactionDate)); } } var unfinishedAPI = db.GetUnfinishedBOTSync().Where(x => x.Date != transactionDate && Appconfig.SyncCurrency.Contains(x.Currency) && x.isSyncSAP == false); foreach (var currencyPair in unfinishedAPI) { taskList.Add(APIExecute(currencyPair, currencyPair.Date)); } Task.WhenAll(taskList).Wait(); log.Debug("-----------------------------------------------------------------"); log.Debug("API Call Successfully"); log.Debug("-----------------------------------------------------------------"); if (!db.SaveChange()) { log.Debug("-----------------------------------------------------------------"); log.Debug("Log Update Error"); log.Debug("-----------------------------------------------------------------"); } else { log.Debug("-----------------------------------------------------------------"); log.Debug("Log Update Successful"); log.Debug("-----------------------------------------------------------------"); } #endregion } #region API Patch for non-value date log.Debug("=============================================================================="); log.Debug("CHECK PATCHING START"); log.Debug("=============================================================================="); try { var patchingNeededDates = db.GetAllLog().Where(x => x.CurrenciesRate.Any(c => Appconfig.SyncCurrency.Contains(c.Currency) && c.isAPIComplete == true && c.isSyncSAP == false && c.Sell_SAP == (decimal)0 && c.Buy_SAP == (decimal)0)).ToList();//REVIEW if (patchingNeededDates.Count > 0) { log.Debug("PATCHING FOUND"); Patching(Appconfig.SyncCurrency, patchingNeededDates); log.Debug("PATCHING END"); } } catch (Exception ex) { log.Debug("=============================================================================="); log.Debug("CHECK PATCHING ERROR : CHECK THE EXCEPTION BELOW"); log.Debug("=============================================================================="); ExceptionHandling.LogException(ex); } #endregion #region SAP Part /// we will send sap only isAPIcomplete and if none of Buy and Sell we will use the last known value before that day to be value sent to SAP /// send only currency config, only isAPIComplete = true, only isSAPComplete = false log.Debug("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); log.Debug("SAP START"); log.Debug("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); bool isSAPCompleted = true; string SAPErrorMsg = string.Empty; try { var sapSent = db.GetAllLog().Where(x => x.CurrenciesRate.Any(c => Appconfig.SyncCurrency.Contains(c.Currency) && c.isAPIComplete == true && c.isSyncSAP == false && c.Sell_SAP != (decimal)0 && c.Buy_SAP != (decimal)0)).ToList(); #region SAP Connection DestinationRegister.RegistrationDestination(new SAPDestinationSetting { AppServerHost = Appconfig.SAPServerHost, Client = Appconfig.SAPClient, User = Appconfig.SAPUser, Password = Appconfig.SAPPassword, SystemNumber = Appconfig.SAPSystemNumber, SystemID = Appconfig.SAPSystemID, }); var des = RfcDestinationManager.GetDestination(DestinationRegister.Destination()); IRfcFunction function = des.Repository.CreateFunction("ZBAPI_EXCHANGERATE_UPDATE"); #endregion #region example for input structure as input bapi /* * TABLE :I_EXCHANGE * STRUCTURE BAPI1093_0 * RATE_TYPE Exchange Rate Type , B = buy // M = sell * FROM_CURR From currency * TO_CURRNCY To-currency * VALID_FROM Date from Which Entry Is Valid (yyyy-MM-dd) * EXCH_RATE Direct Quoted Exchange Rate * FROM_FACTOR Ratio for the "From" Currency Units, 1 // if JPY this is 100 * TO_FACTOR Ratio for the "To" Currency Units, 1 * EXCH_RATE_V Indirect Quoted Exchange Rate ****No input * FROM_FACTOR_V Ratio for the "From" Currency Units ****No input * TO_FACTOR_V Ratio for the "To" Currency Units ****No input */ IRfcTable table = function["I_EXCHANGE"].GetTable();//table List <CurrencyRate> sentSAP = new List <CurrencyRate>(); foreach (var dailyLog in sapSent) { foreach (var cur in dailyLog.CurrenciesRate.Where(c => Appconfig.SyncCurrency.Contains(c.Currency) && c.isAPIComplete == true && c.isSyncSAP == false && c.Sell_SAP != (decimal)0 && c.Buy_SAP != (decimal)0)) { table.Append(); //create new row IRfcStructure Buy = table.CurrentRow; //current structure ,row string structure_name = Buy.Metadata.Name; //Buy Buy.SetValue("RATE_TYPE", "B"); Buy.SetValue("FROM_CURR", cur.Currency); Buy.SetValue("TO_CURRNCY", "THB"); Buy.SetValue("VALID_FROM", dailyLog.Date.ToString("yyyy-MM-dd", new CultureInfo("en-US"))); Buy.SetValue("EXCH_RATE", cur.Buy_SAP.ToString("0.#####")); if (currencyRatioDict.ContainsKey(cur.Currency)) { Buy.SetValue("FROM_FACTOR", currencyRatioDict[cur.Currency]); } else { Buy.SetValue("FROM_FACTOR", 1); } Buy.SetValue("TO_FACTOR", 1); log.Debug(String.Format("{0} {1} {2} {3} {4}", "B", cur.Currency, "THB", dailyLog.Date.ToString("ddMMyyyy", new CultureInfo("en-US")), cur.Buy_SAP.ToString("0.#####"))); table.Append(); //create new row IRfcStructure Sell = table.CurrentRow; //current structure ,row //Sell Sell.SetValue("RATE_TYPE", "M"); Sell.SetValue("FROM_CURR", cur.Currency); Sell.SetValue("TO_CURRNCY", "THB"); Sell.SetValue("VALID_FROM", dailyLog.Date.ToString("yyyy-MM-dd", new CultureInfo("en-US"))); Sell.SetValue("EXCH_RATE", cur.Sell_SAP.ToString("0.#####")); if (currencyRatioDict.ContainsKey(cur.Currency)) { Sell.SetValue("FROM_FACTOR", currencyRatioDict[cur.Currency]); } else { Sell.SetValue("FROM_FACTOR", 1); } Sell.SetValue("TO_FACTOR", 1); log.Debug(String.Format("{0} {1} {2} {3} {4}", "M", cur.Currency, "THB", dailyLog.Date.ToString("ddMMyyyy", new CultureInfo("en-US")), cur.Sell_SAP.ToString("0.#####"))); sentSAP.Add(cur); } } var count = table.Count; #endregion if (count > 0) { try { function.Invoke(des); sentSAP.ForEach(x => { x.isSyncSAP = true; }); } catch (SAP.Middleware.Connector.RfcAbapClassicException ex) { if (ex.Key == "SAPSQL_ARRAY_INSERT_DUPREC") { //dublicate record found log.Debug("-----------------------------------------------------------------"); log.Debug("SAP BAPI CALL Error : DUBLICATED RECORD FOUND IN SAP."); log.Debug("-----------------------------------------------------------------"); } ExceptionHandling.LogException(ex); } catch (Exception ex) { isSAPCompleted = false; SAPErrorMsg += Environment.NewLine + ex.Message; log.Debug("-----------------------------------------------------------------"); log.Debug("SAP BAPI CALL Error : READ THE EXCEPTION DETAIL."); log.Debug("-----------------------------------------------------------------"); ExceptionHandling.LogException(ex); } } //Call bapi #region example for fetch structure as object /* * IRfcParameter export = function["PRHEADER"]; * IRfcStructure structure = export.GetStructure(); * var setting = new PropertiesList<DataContainer> * { * { "PREQ_NO", x=>x.PREQ_NO}, * { "PREQ_NO", x=>x.PREQ_NO}, * { "PR_TYPE", x=>x.PR_TYPE}, * { "CTRL_IND", x=>x.CTRL_IND}, * }; * DataContainer output = structure.ToObject(setting);*/ #endregion IRfcParameter returnTable = function["I_EXCHANGE"]; IRfcTable table1 = returnTable.GetTable(); //foreach (IRfcStructure record in table1) //{ // Console.WriteLine(String.Format("{0}:{1}", record.GetInt("PREQ_ITEM"), record.GetValue("PREQ_ITEM").ToString())); //} if (!db.SaveChange()) { log.Debug("-----------------------------------------------------------------"); log.Debug("Log Update Error"); log.Debug("-----------------------------------------------------------------"); } else { log.Debug("-----------------------------------------------------------------"); log.Debug("Log Update Successful"); log.Debug("-----------------------------------------------------------------"); } } catch (Exception ex) { isSAPCompleted = false; SAPErrorMsg += Environment.NewLine + ex.Message; log.Debug("-----------------------------------------------------------------"); log.Debug("SAP PART Error : READ THE EXCEPTION DETAIL."); log.Debug("-----------------------------------------------------------------"); ExceptionHandling.LogException(ex); } #endregion #region AlertMsg try { if (!Appconfig.RecoveryMode && db.GetOrCreateDailyLog(runningDate).CurrenciesRate.Any(x => Appconfig.SyncCurrency.Contains(x.Currency) && x.isSyncSAP == false && x.Sell != (decimal)0 && x.Buy != (decimal)0) && programDatetime.Date.AddDays(-1) == runningDate.Date && programDatetime.Hour < Appconfig.BOTHourUpdate && programDatetime.Hour > Appconfig.AlertCutOffTime) { //recovery mode is off //there is some sync currency which cannot sent to SAP found and it is not dayoff (sell && buy !=0) //program is running on not today for sure (not after 18.00 of the day) (not before 7.00 of the program date) MailService mailService = new MailService(Appconfig.MailServer, Appconfig.MailServerPort); //send email to user Email userMail = new Email(); userMail.Cc = Appconfig.AlertAdminEmail; userMail.From = Appconfig.MailAdminAddress; userMail.To = Appconfig.AlertUserEmail; userMail.Subject = @"[BOTExchangeRate] ERROR UPDATE TO SAP NOTIFICATION"; userMail.SenderName = @"BOTExchange Automatic Email Alert"; userMail.BodyMessage = MailTemplateUser(runningDate, Appconfig.SyncCurrency); mailService.SendMail(userMail); //send email to admin if exception found if (!isSAPCompleted) { Email adminMail = new Email(); adminMail.From = Appconfig.MailAdminAddress; adminMail.To = Appconfig.AlertAdminEmail; adminMail.Subject = @"[BOTExchangeRate] ERROR UPDATE TO SAP NOTIFICATION [DEBUG]"; adminMail.SenderName = @"BOTExchange Automatic Email Alert"; adminMail.BodyMessage = MailTemplateAdmin(runningDate, Appconfig.SyncCurrency, SAPErrorMsg); mailService.SendMail(adminMail); } } } catch (Exception ex) { log.Debug("-----------------------------------------------------------------"); log.Debug("EMAIL ALERT ERROR"); log.Debug("-----------------------------------------------------------------"); ExceptionHandling.LogException(ex); } #endregion log.Debug("*******************************************************************"); log.Debug("PROGRAM RUNS COMPLETED " + programDatetime.ToString("dd/MM/yyyy HH:mm:ss")); log.Debug("*******************************************************************"); }
public void reimprcomprobantes(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, List <VIAS_PAGO2> P_VIASPAGO, List <DOCUMENTOS> P_DOCSAPAGAR) { try { DatosCabecera.Clear(); DatosDetalle.Clear(); DatosDocumentos.Clear(); DatosViaPago.Clear(); DatosCaja.Clear(); DatosCliente.Clear(); DatosEmpresa.Clear(); IRfcStructure lt_DATOS_CAJA; IRfcStructure lt_DATOS_CLIENTES; IRfcTable lt_DATOS_DOCUMENTOS; IRfcTable lt_DATOS_VP; IRfcTable lt_DATOSEMPRESA; //DATOS_CAJA DATOS_CAJA_resp; DATOS_CLIENTES datosclientes; DATOS_CAJA datoscaja; DATOS_DOCUMENTOS datosdocumentos; DATOS_VP datosvp; INFO_SOC datosempresa; //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_FM_REC_IMP_COMPROBANTE"); try { IRfcTable GralDat = BapiGetUser.GetTable("VIAS_PAGO"); for (var i = 0; i < P_VIASPAGO.Count; i++) { GralDat.Append(); GralDat.SetValue("MANDT", P_VIASPAGO[i].MANDT); GralDat.SetValue("LAND", P_VIASPAGO[i].LAND); GralDat.SetValue("ID_COMPROBANTE", P_VIASPAGO[i].ID_COMPROBANTE); GralDat.SetValue("ID_DETALLE", P_VIASPAGO[i].ID_DETALLE); GralDat.SetValue("VIA_PAGO", P_VIASPAGO[i].VIA_PAGO); GralDat.SetValue("MONTO", P_VIASPAGO[i].MONTO); GralDat.SetValue("MONEDA", P_VIASPAGO[i].MONEDA); if (P_VIASPAGO[i].BANCO != "") { GralDat.SetValue("BANCO", P_VIASPAGO[i].BANCO.Substring(0, 3)); } else { GralDat.SetValue("BANCO", P_VIASPAGO[i].BANCO); } GralDat.SetValue("EMISOR", P_VIASPAGO[i].EMISOR); GralDat.SetValue("NUM_CHEQUE", P_VIASPAGO[i].NUM_CHEQUE); GralDat.SetValue("COD_AUTORIZACION", P_VIASPAGO[i].COD_AUTORIZACION); GralDat.SetValue("NUM_CUOTAS", P_VIASPAGO[i].NUM_CUOTAS); if (P_VIASPAGO[i].FECHA_VENC != "0000-00-00") { GralDat.SetValue("FECHA_VENC", Convert.ToDateTime(P_VIASPAGO[i].FECHA_VENC)); } GralDat.SetValue("TEXTO_POSICION", P_VIASPAGO[i].TEXTO_POSICION); GralDat.SetValue("ANEXO", P_VIASPAGO[i].ANEXO); GralDat.SetValue("SUCURSAL", P_VIASPAGO[i].SUCURSAL); GralDat.SetValue("NUM_CUENTA", P_VIASPAGO[i].NUM_CUENTA); GralDat.SetValue("NUM_TARJETA", P_VIASPAGO[i].NUM_TARJETA); GralDat.SetValue("NUM_VALE_VISTA", P_VIASPAGO[i].NUM_VALE_VISTA); GralDat.SetValue("PATENTE", P_VIASPAGO[i].PATENTE); GralDat.SetValue("NUM_VENTA", P_VIASPAGO[i].NUM_VENTA); GralDat.SetValue("PAGARE", P_VIASPAGO[i].PAGARE); if (P_VIASPAGO[i].FECHA_EMISION != "0000-00-00") { GralDat.SetValue("FECHA_EMISION", Convert.ToDateTime(P_VIASPAGO[i].FECHA_EMISION)); } GralDat.SetValue("NOMBRE_GIRADOR", P_VIASPAGO[i].NOMBRE_GIRADOR); GralDat.SetValue("CARTA_CURSE", P_VIASPAGO[i].CARTA_CURSE); GralDat.SetValue("NUM_TRANSFER", P_VIASPAGO[i].NUM_TRANSFER); GralDat.SetValue("NUM_DEPOSITO", P_VIASPAGO[i].NUM_DEPOSITO); GralDat.SetValue("CTA_BANCO", P_VIASPAGO[i].CTA_BANCO); GralDat.SetValue("IFINAN", P_VIASPAGO[i].IFINAN); GralDat.SetValue("CORRE", P_VIASPAGO[i].CORRE); GralDat.SetValue("ZUONR", P_VIASPAGO[i].ZUONR); GralDat.SetValue("HKONT", P_VIASPAGO[i].HKONT); GralDat.SetValue("PRCTR", P_VIASPAGO[i].PRCTR); } BapiGetUser.SetValue("VIAS_PAGO", GralDat); } catch (Exception ex) { Console.WriteLine("{0} Exception caught.", ex); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } try { IRfcTable GralDat2 = BapiGetUser.GetTable("DOCUMENTOS"); for (var i = 0; i < P_DOCSAPAGAR.Count; i++) { GralDat2.Append(); GralDat2.SetValue("MANDT", P_DOCSAPAGAR[i].MANDT); GralDat2.SetValue("LAND", P_DOCSAPAGAR[i].LAND); GralDat2.SetValue("ID_COMPROBANTE", P_DOCSAPAGAR[i].ID_COMPROBANTE); GralDat2.SetValue("POSICION", P_DOCSAPAGAR[i].POSICION); GralDat2.SetValue("CLIENTE", P_DOCSAPAGAR[i].CLIENTE); GralDat2.SetValue("TIPO_DOCUMENTO", P_DOCSAPAGAR[i].CLASE_DOC); GralDat2.SetValue("SOCIEDAD", P_DOCSAPAGAR[i].SOCIEDAD); if (i == 0) { NumDocCont = P_DOCSAPAGAR[i].NRO_DOCUMENTO; } GralDat2.SetValue("NRO_DOCUMENTO", P_DOCSAPAGAR[i].NRO_DOCUMENTO); GralDat2.SetValue("NRO_REFERENCIA", P_DOCSAPAGAR[i].NRO_REFERENCIA); GralDat2.SetValue("CAJERO_RESP", P_DOCSAPAGAR[i].CAJERO_RESP); GralDat2.SetValue("CAJERO_GEN", P_DOCSAPAGAR[i].CAJERO_GEN); GralDat2.SetValue("ID_CAJA", P_DOCSAPAGAR[i].ID_CAJA); GralDat2.SetValue("FECHA_COMP", P_DOCSAPAGAR[i].FECHA_COMP); GralDat2.SetValue("HORA", P_DOCSAPAGAR[i].HORA); GralDat2.SetValue("NRO_COMPENSACION", P_DOCSAPAGAR[i].NRO_COMPENSACION); GralDat2.SetValue("TEXTO_CABECERA", P_DOCSAPAGAR[i].TEXTO_CABECERA); GralDat2.SetValue("NULO", P_DOCSAPAGAR[i].NULO); GralDat2.SetValue("USR_ANULADOR", P_DOCSAPAGAR[i].USR_ANULADOR); GralDat2.SetValue("NRO_ANULACION", P_DOCSAPAGAR[i].NRO_ANULACION); GralDat2.SetValue("APROBADOR_ANULA", P_DOCSAPAGAR[i].APROBADOR_ANULA); GralDat2.SetValue("TXT_ANULACION", P_DOCSAPAGAR[i].TXT_ANULACION); GralDat2.SetValue("EXCEPCION", P_DOCSAPAGAR[i].EXCEPCION); if (P_DOCSAPAGAR[i].FECHA_COMP != "0000-00-00") { GralDat2.SetValue("FECHA_DOC", Convert.ToDateTime(P_DOCSAPAGAR[i].FECHA_COMP)); } if (P_DOCSAPAGAR[i].FECHA_VENC_DOC != "0000-00-00") { GralDat2.SetValue("FECHA_VENC_DOC", Convert.ToDateTime(P_DOCSAPAGAR[i].FECHA_VENC_DOC)); } GralDat2.SetValue("NUM_CUOTA", P_DOCSAPAGAR[i].NUM_CUOTA); GralDat2.SetValue("MONTO_DOC", P_DOCSAPAGAR[i].MONTO_DOC); GralDat2.SetValue("MONTO_DIFERENCIA", P_DOCSAPAGAR[i].MONTO_DIFERENCIA); GralDat2.SetValue("TEXTO_EXCEPCION", P_DOCSAPAGAR[i].TEXTO_EXCEPCION); GralDat2.SetValue("PARCIAL", P_DOCSAPAGAR[i].PARCIAL); GralDat2.SetValue("TIME", P_DOCSAPAGAR[i].TIME); GralDat2.SetValue("APROBADOR_EX", P_DOCSAPAGAR[i].APROBADOR_EX); GralDat2.SetValue("MONEDA", P_DOCSAPAGAR[i].MONEDA); GralDat2.SetValue("CLASE_CUENTA", P_DOCSAPAGAR[i].CLASE_CUENTA); GralDat2.SetValue("CLASE_DOC", P_DOCSAPAGAR[i].CLASE_DOC); GralDat2.SetValue("NUM_CANCELACION", P_DOCSAPAGAR[i].NUM_CANCELACION); GralDat2.SetValue("CME", P_DOCSAPAGAR[i].CME); GralDat2.SetValue("NOTA_VENTA", P_DOCSAPAGAR[i].NOTA_VENTA); GralDat2.SetValue("CEBE", P_DOCSAPAGAR[i].CEBE); GralDat2.SetValue("ACC", P_DOCSAPAGAR[i].ACC); } BapiGetUser.SetValue("DOCUMENTOS", GralDat2); } catch (Exception ex) { Console.WriteLine("{0} Exception caught.", ex); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } BapiGetUser.Invoke(SapRfcDestination); //LLenamos los datos que retorna la estructura de la RFC try { lt_DATOS_CAJA = BapiGetUser.GetStructure("DATOS_CAJA"); for (int i = 0; i < lt_DATOS_CAJA.Count(); i++) { //lt_DATOS_CAJA.CurrentIndex = i; datoscaja = new DATOS_CAJA(); datoscaja.NAME_CAJERO = lt_DATOS_CAJA.GetString("NAME_CAJERO"); datoscaja.USUARIO = lt_DATOS_CAJA.GetString("USUARIO"); datoscaja.ID_COMPROBANTE = lt_DATOS_CAJA.GetString("ID_COMPROBANTE"); datoscaja.NRO_DOCUMENTO = lt_DATOS_CAJA.GetString("NRO_DOCUMENTO"); datoscaja.NOM_SOCIEDAD = lt_DATOS_CAJA.GetString("NOM_SOCIEDAD"); datoscaja.RUT_SOCIEDAD = lt_DATOS_CAJA.GetString("RUT_SOCIEDAD"); datoscaja.NOM_CAJA = lt_DATOS_CAJA.GetString("NOM_CAJA"); DatosCaja.Add(datoscaja); } } catch (Exception ex) { Console.WriteLine("{0} Exception caught.", ex); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } try { lt_DATOS_CLIENTES = BapiGetUser.GetStructure("DATOS_CLIENTES"); for (int i = 0; i < lt_DATOS_CLIENTES.Count(); i++) { //lt_DATOS_CLIENTES.CurrentIndex = i; datosclientes = new DATOS_CLIENTES(); datosclientes.RUT = lt_DATOS_CLIENTES.GetString("RUT"); datosclientes.NOMBRE = lt_DATOS_CLIENTES.GetString("NOMBRE"); DatosCliente.Add(datosclientes); } } catch (Exception ex) { Console.WriteLine("{0} Exception caught.", ex); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } try { lt_DATOS_DOCUMENTOS = BapiGetUser.GetTable("DATOS_DOCUMENTOS"); for (int i = 0; i < lt_DATOS_DOCUMENTOS.Count(); i++) { lt_DATOS_DOCUMENTOS.CurrentIndex = i; datosdocumentos = new DATOS_DOCUMENTOS(); datosdocumentos.TXT_DOCU = lt_DATOS_DOCUMENTOS.GetString("TXT_DOCU"); datosdocumentos.NRO_DOCUMENTO = lt_DATOS_DOCUMENTOS.GetString("NRO_DOCUMENTO"); datosdocumentos.FECHA_DOC = lt_DATOS_DOCUMENTOS.GetString("FECHA_DOC"); datosdocumentos.FECHA_VENC_DOC = lt_DATOS_DOCUMENTOS.GetString("FECHA_VENC_DOC"); datosdocumentos.MONEDA = lt_DATOS_DOCUMENTOS.GetString("MONEDA"); string str = datosdocumentos.MONEDA; switch (str) { case "USD": //string Valor3 = lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_MO").Trim(); //Valor3 = Valor3.Replace(".", ""); //Valor3 = Valor3.Replace(",", ""); //decimal ValorAux3 = Convert.ToDecimal(Valor3.Substring(0, Valor3.Length - 2)); //string Cualquiernombre3 = string.Format("{0:0,0}", ValorAux3); datosdocumentos.MONTO_DOC_MO = Formato.FormatoMonedaExtranjera(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_MO").Trim()); //string Valor4 = lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_ML").Trim(); //Valor4 = Valor4.Replace(".", ""); //Valor4 = Valor4.Replace(",", ""); //decimal ValorAux4 = Convert.ToDecimal(Valor4.Substring(0, Valor4.Length - 2)); //string Cualquiernombre4 = string.Format("{0:0,0}", ValorAux4); datosdocumentos.MONTO_DOC_ML = Formato.FormatoMonedaExtranjera(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_ML").Trim()); break; case "EUR": //string Valor6 = lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_MO").Trim(); //Valor6 = Valor6.Replace(".", ""); //Valor6 = Valor6.Replace(",", ""); //decimal ValorAux6 = Convert.ToDecimal(Valor6.Substring(0, Valor6.Length - 2)); //string Cualquiernombre6 = string.Format("{0:0,0}", ValorAux6); datosdocumentos.MONTO_DOC_MO = Formato.FormatoMonedaExtranjera(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_MO").Trim()); //string Valor7 = lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_ML").Trim(); //Valor7 = Valor7.Replace(".", ""); //Valor7 = Valor7.Replace(",", ""); //decimal ValorAux7 = Convert.ToDecimal(Valor7.Substring(0, Valor7.Length - 2)); //string Cualquiernombre7 = string.Format("{0:0,0}", ValorAux7); datosdocumentos.MONTO_DOC_ML = Formato.FormatoMonedaExtranjera(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_ML").Trim()); break; case "CLP": datosdocumentos.MONTO_DOC_MO = Formato.FormatoMoneda(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_MO")); datosdocumentos.MONTO_DOC_ML = Formato.FormatoMoneda(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_ML")); break; } datosdocumentos.PEDIDO = lt_DATOS_DOCUMENTOS.GetString("PEDIDO"); DatosDocumentos.Add(datosdocumentos); } } catch (Exception ex) { Console.WriteLine("{0} Exception caught.", ex); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } try { lt_DATOSEMPRESA = BapiGetUser.GetTable("INFO_SOC"); for (int i = 0; i < lt_DATOSEMPRESA.Count(); i++) { lt_DATOSEMPRESA.CurrentIndex = i; datosempresa = new INFO_SOC(); datosempresa.BUKRS = lt_DATOSEMPRESA.GetString("BUKRS"); datosempresa.BUTXT = lt_DATOSEMPRESA.GetString("BUTXT"); datosempresa.STCD1 = lt_DATOSEMPRESA.GetString("STCD1"); DatosEmpresa.Add(datosempresa); } } catch (Exception ex) { Console.WriteLine("{0} Exception caught.", ex); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } try { lt_DATOS_VP = BapiGetUser.GetTable("DATOS_VP"); for (int i = 0; i < lt_DATOS_VP.Count(); i++) { lt_DATOS_VP.CurrentIndex = i; datosvp = new DATOS_VP(); datosvp.NUM_POS = lt_DATOS_VP.GetString("NUM_POS"); datosvp.DESCRIP_VP = lt_DATOS_VP.GetString("DESCRIP_VP"); datosvp.NUM_VP = lt_DATOS_VP.GetString("NUM_VP"); datosvp.FECHA_EMISION = lt_DATOS_VP.GetString("FECHA_EMISION"); datosvp.FECHA_VENC = lt_DATOS_VP.GetString("FECHA_VENC"); datosvp.MONEDA = lt_DATOS_VP.GetString("MONEDA"); string str = datosvp.MONEDA; switch (str) { case "USD": //string Valor = lt_DATOS_VP.GetString("MONTO_MO").Trim(); //Valor = Valor.Replace(".", ""); //Valor = Valor.Replace(",", ""); //decimal ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2)); //string Cualquiernombre = string.Format("{0:0,0}", ValorAux); datosvp.MONTO_MO = Formato.FormatoMonedaExtranjera(lt_DATOS_VP.GetString("MONTO_MO").Trim()); //string Valor2 = lt_DATOS_VP.GetString("MONTO_ML").Trim(); //Valor2 = Valor2.Replace(".", ""); //Valor2 = Valor2.Replace(",", ""); //decimal ValorAux2 = Convert.ToDecimal(Valor2.Substring(0, Valor2.Length - 2)); //string Cualquiernombre2 = string.Format("{0:0,0}", ValorAux2); datosvp.MONTO_ML = Formato.FormatoMonedaExtranjera(lt_DATOS_VP.GetString("MONTO_ML").Trim()); break; case "EUR": //string Valor1 = lt_DATOS_VP.GetString("MONTO_MO").Trim(); //Valor1 = Valor1.Replace(".", ""); //Valor1 = Valor1.Replace(",", ""); //decimal ValorAux1 = Convert.ToDecimal(Valor1.Substring(0, Valor1.Length - 2)); //string Cualquiernombre1 = string.Format("{0:0,0}", ValorAux1); datosvp.MONTO_MO = Formato.FormatoMonedaExtranjera(lt_DATOS_VP.GetString("MONTO_MO").Trim()); //string Valor5 = lt_DATOS_VP.GetString("MONTO_ML").Trim(); //Valor5 = Valor5.Replace(".", ""); //Valor5 = Valor5.Replace(",", ""); //decimal ValorAux5 = Convert.ToDecimal(Valor5.Substring(0, Valor5.Length - 2)); //string Cualquiernombre5 = string.Format("{0:0,0}", ValorAux5); datosvp.MONTO_ML = Formato.FormatoMonedaExtranjera(lt_DATOS_VP.GetString("MONTO_ML").Trim()); break; case "CLP": datosvp.MONTO_MO = Formato.FormatoMoneda(lt_DATOS_VP.GetString("MONTO_MO")); datosvp.MONTO_ML = Formato.FormatoMoneda(lt_DATOS_VP.GetString("MONTO_ML")); break; } DatosViaPago.Add(datosvp); } } catch (Exception ex) { Console.WriteLine("{0} Exception caught.", ex); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } GC.Collect(); } catch (InvalidCastException ex) { Console.WriteLine("{0} Exception caught.", ex); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } }
private DataSet CallFunction(string functionName, Dictionary <string, object> importParameters, ref Dictionary <string, object> exportParameters) { IRfcFunction function = null; Dictionary <string, IRfcTable> tables = new Dictionary <string, IRfcTable>(); Dictionary <string, object> exports = new Dictionary <string, object>(); try { //get metadata repository associated with the destination //fetch or get cached function metadata and //create a function container based on the function metadata function = destination.Repository.CreateFunction(functionName); //find import parameter //The .Net Connector runtime always trys to find //a suitable conversion between C# data types and ABAP data types. for (int i = 0; i < function.Metadata.ParameterCount; i++) { object parameter = null; if (importParameters != null) { if (importParameters.TryGetValue(function.Metadata[i].Name, out parameter)) { function.SetValue(function.Metadata[i].Name, parameter); } } switch (function.Metadata[i].Direction) { case RfcDirection.CHANGING: break; case RfcDirection.EXPORT: exports.Add(function.Metadata[i].Name, function.GetStructure(function.Metadata[i].Name)); break; case RfcDirection.IMPORT: break; case RfcDirection.TABLES: tables.Add(function.Metadata[i].Name, function.GetTable(function.Metadata[i].Name)); break; default: break; } } function.Invoke(destination); //make the remote call //get dataset DataSet dataSet = new DataSet(); foreach (string key in tables.Keys) { DataTable dataTable = ConvertRFCTabletoDataTable(tables[key]); dataTable.TableName = key; dataSet.Tables.Add(dataTable); } //get export if (exportParameters != null) { exportParameters = exports; } return(dataSet); } catch (RfcCommunicationException e) { // network problem... //throw new Exception("network problem", e); throw new Exception(e.Message, e); } catch (RfcAbapRuntimeException e) { // serious problem on ABAP system side... //throw new Exception("serious problem on ABAP system side", e); throw new Exception(e.Message, e); } catch (RfcAbapBaseException e) { // The function module returned an ABAP exception, an ABAP message // or an ABAP class-based exception... //throw new Exception("The function module returned an ABAP exception, an ABAP message or an ABAP class-based exception...",e); throw new Exception(e.Message, e); } catch (RfcBaseException e) { throw e; } catch (Exception ex) { throw new Exception(message + ex.Message); } }
private void BuildIdoc(StreamReader txtStream, IRfcFunction function) { IRfcTable tableIdocControlRec40 = null; IRfcStructure structureIdocControlRec40; IRfcTable tableIdocDataRec40; IRfcStructure structureIdocDataRec40; String iDocText = txtStream.ReadToEnd(); int pos = 0; tableIdocControlRec40 = function.GetTable("IDOC_CONTROL_REC_40"); structureIdocControlRec40 = tableIdocControlRec40.Metadata.LineType.CreateStructure(); // need one row for DC40 control record tableIdocControlRec40.Insert(); // iterate thru fields in structure foreach (IRfcField field in structureIdocControlRec40) { // get value from text String fieldValue = iDocText.Substring(pos, field.Metadata.NucLength); // insert value into table tableIdocControlRec40.SetValue(field.Metadata.Name, fieldValue); pos += field.Metadata.NucLength; } String iDocDataline = string.Empty; txtStream.BaseStream.Seek(0, SeekOrigin.Begin); // skip DC40 control row txtStream.ReadLine(); // now build Data Table tableIdocDataRec40 = function.GetTable("IDOC_DATA_REC_40"); int lineCount = 0; do { iDocDataline = txtStream.ReadLine(); if (!string.IsNullOrEmpty(iDocDataline)) { structureIdocDataRec40 = tableIdocDataRec40.Metadata.LineType.CreateStructure(); tableIdocDataRec40.Append(iDocDataline.Length); pos = 0; // iterate thru fields in structure foreach (IRfcField field in structureIdocDataRec40) { // data segment header record if (!string.Equals(field.Metadata.Name, "SDATA")) { // get value from text String fieldValue = iDocDataline.Substring(pos, field.Metadata.NucLength); tableIdocDataRec40[lineCount].SetValue(field.Metadata.Name, fieldValue); pos += field.Metadata.NucLength; } else { // rest of data String fieldValue = iDocDataline.Substring(pos).PadRight(field.Metadata.NucLength); tableIdocDataRec40[lineCount].SetValue(field.Metadata.Name, fieldValue); } // insert value into table } } lineCount += 1; }while (!string.IsNullOrEmpty(iDocDataline)); }
public void ProcessRequest(HttpContext context) { try { string Rut = context.Request.QueryString["Rut"]; string Mes = context.Request.QueryString["Mes"]; string Anio = context.Request.QueryString["Anio"]; string usuario = context.Request.QueryString["Usuario"]; string contrasena = context.Request.QueryString["Clave"]; string retorno = "ERROR"; ConexionController conexion = new ConexionController(); try { if (!string.IsNullOrEmpty(usuario) && !string.IsNullOrEmpty(contrasena)) { retorno = conexion.connectionsSAP(usuario, contrasena); } if (string.IsNullOrEmpty(retorno)) { RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(conexion.connectorConfig); RfcRepository SapRfcRepository = SapRfcDestination.Repository; IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZHR_LIQ_SUE"); BapiGetUser.SetValue("I_RUT", Rut); BapiGetUser.SetValue("I_MES", Mes); BapiGetUser.SetValue("I_ANO", Anio); BapiGetUser.Invoke(SapRfcDestination); Byte[] bytes = (Byte[])BapiGetUser.GetValue("PDF_LIQUI"); using (MemoryStream input = new MemoryStream(bytes)) { using (MemoryStream output = new MemoryStream()) { string password = Rut; PdfReader reader = new PdfReader(input); PdfEncryptor.Encrypt(reader, output, true, password, password, PdfWriter.ALLOW_SCREENREADERS); bytes = output.ToArray(); } } context.Response.Buffer = true; context.Response.Charset = ""; context.Response.Cache.SetCacheability(HttpCacheability.NoCache); context.Response.ContentType = "application/pdf"; context.Response.BinaryWrite(bytes); context.Response.Flush(); context.Response.End(); } } catch (Exception e) { } finally { } } catch (Exception ex) { } }
public void viaspago(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_EXCEPCION, string P_CLASE_CUENTA, string P_HAS_CME, string P_LAND, string P_PROTESTO, List <ViasPago> P_CONDICIONES) { ObjDatosViasPago.Clear(); ViasPagoTransaccion.Clear(); errormessage = ""; IRfcTable lt_VIAS_PAGOS; VIAS_PAGO VIAS_PAGOS_resp; //Conexion a SAP connectorSap.idioma = P_IDIOMA; connectorSap.idSistema = P_IDSISTEMA; connectorSap.instancia = P_INSTANCIA; connectorSap.mandante = P_MANDANTE; connectorSap.paswr = P_PASSWORD; connectorSap.sapRouter = P_SAPROUTER; connectorSap.user = P_UNAME; connectorSap.server = P_SERVER; string retval = connectorSap.connectionsSAP(); //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos if (string.IsNullOrEmpty(retval)) { RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig); RfcRepository SapRfcRepository = SapRfcDestination.Repository; IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_GET_MATRIZ_PAGO"); BapiGetUser.SetValue("EXCEPCION", P_EXCEPCION); IRfcTable GralDat = BapiGetUser.GetTable("CONDICIONES"); for (var i = 0; i < P_CONDICIONES.Count; i++) { GralDat.Append(); GralDat.SetValue("ACC", P_CONDICIONES[i].Acc); GralDat.SetValue("COND_PAGO", P_CONDICIONES[i].Cond_Pago); GralDat.SetValue("CAJA", P_CONDICIONES[i].Caja); } BapiGetUser.SetValue("CONDICIONES", GralDat); BapiGetUser.SetValue("CLASE_CUENTA", P_CLASE_CUENTA); BapiGetUser.SetValue("HAS_CME", P_HAS_CME); BapiGetUser.SetValue("LAND", P_LAND); BapiGetUser.SetValue("PROT", P_PROTESTO); // IRfcStructure GralDat = BapiGetUser.GetStructure("CONDICIONES"); // BapiGetUser.SetValue("T_GET_DOC", GralDat); BapiGetUser.Invoke(SapRfcDestination); lt_VIAS_PAGOS = BapiGetUser.GetTable("VIAS_PAGO"); //lt_PART_ABIERTAS = BapiGetUser.GetTable("ZCLSP_TT_LISTA_DOCUMENTOS"); if (lt_VIAS_PAGOS.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_VIAS_PAGOS.RowCount; i++) { lt_VIAS_PAGOS.CurrentIndex = i; VIAS_PAGOS_resp = new VIAS_PAGO(); VIAS_PAGOS_resp.VIA_PAGO = lt_VIAS_PAGOS[i].GetString("VIA_PAGO"); VIAS_PAGOS_resp.DESCRIPCION = lt_VIAS_PAGOS[i].GetString("DESCRIPCION"); // VIAS_PAGOS_resp..Add(lt_VIAS_PAGOS[i].GetString("VIA_PAGO"),lt_VIAS_PAGOS[i].GetString("DESCRIPCION")); //VIAS_PAGOS_resp = new VIAS_PAGO(); ObjDatosViasPago.Add(VIAS_PAGOS_resp); //ViasPagoTransaccion.Add(VIAS_PAGOS_resp.); } } else { // MessageBox.Show("No existen registros"); } GC.Collect(); } else { errormessage = retval; GC.Collect(); } }
public void pagosmasivos(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_RUT, string P_SOCIEDAD, List <PagosMasivos> ListaExc) { ObjDatosPartidasOpen.Clear(); Retorno.Clear(); errormessage = ""; protesto = ""; IRfcTable lt_PAGOS_MASIVOS; IRfcStructure lt_retorno; ESTADO retorno_resp; T_DOCUMENTOS PAGOS_MASIVOS_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_MASI"); BapiGetUser.SetValue("STCD1", P_RUT); BapiGetUser.SetValue("BUKRS", P_SOCIEDAD); IRfcTable GralDat = BapiGetUser.GetTable("T_GET_DOC"); for (var i = 0; i < ListaExc.Count; i++) { GralDat.Append(); GralDat.SetValue("XBLNR", ListaExc[i].Referencia); GralDat.SetValue("MONTO", ListaExc[i].Monto); GralDat.SetValue("WAERS", ListaExc[i].Moneda); } BapiGetUser.SetValue("T_GET_DOC", GralDat); BapiGetUser.Invoke(SapRfcDestination); protesto = BapiGetUser.GetString("PE_PROTESTADO"); lt_PAGOS_MASIVOS = BapiGetUser.GetTable("T_DOCUMENTOS"); lt_retorno = BapiGetUser.GetStructure("SE_ESTATUS"); //lt_PART_ABIERTAS = BapiGetUser.GetTable("ZCLSP_TT_LISTA_DOCUMENTOS"); if (lt_PAGOS_MASIVOS.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_PAGOS_MASIVOS.RowCount; i++) { lt_PAGOS_MASIVOS.CurrentIndex = i; PAGOS_MASIVOS_resp = new T_DOCUMENTOS(); PAGOS_MASIVOS_resp.SOCIEDAD = lt_PAGOS_MASIVOS[i].GetString("SOCIEDAD"); PAGOS_MASIVOS_resp.NDOCTO = lt_PAGOS_MASIVOS[i].GetString("NDOCTO"); PAGOS_MASIVOS_resp.NREF = lt_PAGOS_MASIVOS[i].GetString("NREF"); PAGOS_MASIVOS_resp.CLASE_CUENTA = lt_PAGOS_MASIVOS[i].GetString("CLASE_CUENTA"); PAGOS_MASIVOS_resp.CLASE_DOC = lt_PAGOS_MASIVOS[i].GetString("CLASE_DOC"); PAGOS_MASIVOS_resp.COD_CLIENTE = lt_PAGOS_MASIVOS[i].GetString("COD_CLIENTE"); PAGOS_MASIVOS_resp.RUTCLI = lt_PAGOS_MASIVOS[i].GetString("RUTCLI"); PAGOS_MASIVOS_resp.NOMCLI = lt_PAGOS_MASIVOS[i].GetString("NOMCLI"); PAGOS_MASIVOS_resp.CEBE = lt_PAGOS_MASIVOS[i].GetString("CEBE"); PAGOS_MASIVOS_resp.FECHA_DOC = lt_PAGOS_MASIVOS[i].GetString("FECHA_DOC"); PAGOS_MASIVOS_resp.FECVENCI = lt_PAGOS_MASIVOS[i].GetString("FECVENCI"); PAGOS_MASIVOS_resp.DIAS_ATRASO = lt_PAGOS_MASIVOS[i].GetString("DIAS_ATRASO"); PAGOS_MASIVOS_resp.ESTADO = lt_PAGOS_MASIVOS[i].GetString("ESTADO"); PAGOS_MASIVOS_resp.ICONO = lt_PAGOS_MASIVOS[i].GetString("ICONO"); PAGOS_MASIVOS_resp.MONEDA = lt_PAGOS_MASIVOS[i].GetString("MONEDA"); PAGOS_MASIVOS_resp.ACC = lt_PAGOS_MASIVOS[i].GetString("ACC"); PAGOS_MASIVOS_resp.CLASE_CUENTA = lt_PAGOS_MASIVOS[i].GetString("CLASE_CUENTA"); PAGOS_MASIVOS_resp.CLASE_DOC = lt_PAGOS_MASIVOS[i].GetString("CLASE_DOC"); PAGOS_MASIVOS_resp.CME = lt_PAGOS_MASIVOS[i].GetString("CME"); PAGOS_MASIVOS_resp.CONTROL_CREDITO = lt_PAGOS_MASIVOS[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); if (lt_PAGOS_MASIVOS[i].GetString("MONTOF") == "") { PAGOS_MASIVOS_resp.MONTOF = "0"; } else { decimal Cualquiernombre = Convert.ToDecimal(lt_PAGOS_MASIVOS[i].GetString("MONTOF")); // PAGOS_MASIVOS_resp.MONTOF = lt_PAGOS_MASIVOS[i].GetString("MONTOF"); PAGOS_MASIVOS_resp.MONTOF = string.Format("{0:0.##}", Cualquiernombre); } if (lt_PAGOS_MASIVOS[i].GetString("MONTO") == "") { PAGOS_MASIVOS_resp.MONTO = "0"; } else { decimal Cualquiernombre = Convert.ToDecimal(lt_PAGOS_MASIVOS[i].GetString("MONTO")); // PAGOS_MASIVOS_resp.MONTOF = lt_PAGOS_MASIVOS[i].GetString("MONTOF"); PAGOS_MASIVOS_resp.MONTO = string.Format("{0:0.##}", Cualquiernombre); } if (lt_PAGOS_MASIVOS[i].GetString("MONTOF_ABON") == "") { PAGOS_MASIVOS_resp.MONTOF_ABON = "0"; } else { decimal Cualquiernombre = Convert.ToDecimal(lt_PAGOS_MASIVOS[i].GetString("MONTOF_ABON")); PAGOS_MASIVOS_resp.MONTOF_ABON = string.Format("{0:0.##}", Cualquiernombre); } if (lt_PAGOS_MASIVOS[i].GetString("MONTOF_PAGAR") == "") { PAGOS_MASIVOS_resp.MONTOF_PAGAR = "0"; } else { // PAGOS_MASIVOS_resp.MONTOF_ABON = lt_PAGOS_MASIVOS[i].GetString("MONTOF_ABON"); decimal Cualquiernombre = Convert.ToDecimal(lt_PAGOS_MASIVOS[i].GetString("MONTOF_PAGAR")); PAGOS_MASIVOS_resp.MONTOF_PAGAR = string.Format("{0:0.##}", Cualquiernombre); } // PAGOS_MASIVOS_resp.MONTOF_PAGAR = lt_PAGOS_MASIVOS[i].GetString("MONTOF_PAGAR"); ObjDatosPartidasOpen.Add(PAGOS_MASIVOS_resp); } } else { MessageBox.Show("No existen registros para este número de RUT"); } 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 (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); } GC.Collect(); } else { errormessage = retval; GC.Collect(); } }
// 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); }
public void precierrecaja(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_USUARIO , string P_PAIS, string P_ID_APERTURA, string P_ID_CIERRE, string P_SOCIEDAD, string P_ID_REPORT, string P_DATUMDESDE, string P_DATUMHASTA) { try { RETORNO retorno; CAB_ARQUEO cabarqueo; RESUMEN_VP resumenvp; DET_ARQUEO detarqueo; DETALLE_REND detallerend; T_Retorno.Clear(); det_arqueo.Clear(); detalle_rend.Clear(); cab_arqueo.Clear(); resumen_viapago.Clear(); errormessage = ""; message = ""; diferencia = ""; id_arqueo = ""; 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; id_arqueo = ""; idcajaout = ""; cajerorespout = ""; sucursal = ""; nomcaja = ""; sociedadout = ""; landout = ""; IRfcStructure ls_RETORNO; IRfcTable lt_DETALLE_REND; IRfcTable lt_RESUMEN_VP; IRfcTable lt_CAB_ARQUEO; IRfcTable lt_DET_ARQUEO; //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("LAND", P_PAIS); BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA); 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("IND_ARQUEO", P_IND_ARQUEO); BapiGetUser.SetValue("ID_REPORT", P_ID_REPORT); BapiGetUser.SetValue("DATE_ARQ_FROM", Convert.ToDateTime(P_DATUMDESDE)); BapiGetUser.SetValue("DATE_ARQ_TO", Convert.ToDateTime(P_DATUMHASTA)); BapiGetUser.Invoke(SapRfcDestination); idcajaout = BapiGetUser.GetString("ID_CAJA_OUT"); cajerorespout = BapiGetUser.GetString("CAJERO_RESP_OUT"); sucursal = BapiGetUser.GetString("SUCURSAL"); nomcaja = BapiGetUser.GetString("NOM_CAJA"); sociedadout = BapiGetUser.GetString("SOCIEDAD_OUT"); landout = BapiGetUser.GetString("LAND_OUT"); 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_RESUMEN_VP = BapiGetUser.GetTable("RESUMEN_VP"); try { for (int i = 0; i < lt_RESUMEN_VP.Count(); i++) { lt_RESUMEN_VP.CurrentIndex = i; resumenvp = new RESUMEN_VP(); resumenvp.LAND = lt_RESUMEN_VP.GetString("LAND"); resumenvp.ID_CAJA = lt_RESUMEN_VP.GetString("ID_CAJA"); resumenvp.SOCIEDAD = lt_RESUMEN_VP.GetString("SOCIEDAD"); resumenvp.SOCIEDAD_TXT = lt_RESUMEN_VP.GetString("SOCIEDAD_TXT"); resumenvp.VIA_PAGO = lt_RESUMEN_VP.GetString("VIA_PAGO"); resumenvp.TEXT1 = lt_RESUMEN_VP.GetString("TEXT1"); resumenvp.MONEDA = lt_RESUMEN_VP.GetString("MONEDA"); resumenvp.MONTO = lt_RESUMEN_VP.GetString("MONTO"); resumenvp.CANT_DOCS = lt_RESUMEN_VP.GetString("CANT_DOCS"); resumen_viapago.Add(resumenvp); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } lt_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; detarqueo = new DET_ARQUEO(); detarqueo.MANDT = lt_DET_ARQUEO.GetString("MANDT"); detarqueo.LAND = lt_DET_ARQUEO.GetString("LAND"); detarqueo.ID_ARQUEO = lt_DET_ARQUEO.GetString("ID_ARQUEO"); detarqueo.ID_DENOMINACION = lt_DET_ARQUEO.GetString("ID_DENOMINACION"); detarqueo.CANTIDAD = lt_DET_ARQUEO.GetString("CANTIDAD"); detarqueo.MONTO_TOTAL = lt_DET_ARQUEO.GetString("MONTO_TOTAL"); det_arqueo.Add(detarqueo); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } //lt_INFO_SOC = BapiGetUser.GetTable("INFO_SOC"); //try { // for (int i = 0; i < lt_INFO_SOC.Count(); i++) // { // lt_INFO_SOC.CurrentIndex = i; // infosociedad = new INFO_SOC2(); // infosociedad.BUKRS = lt_INFO_SOC.GetString("BUKRS"); // infosociedad.BUTXT = lt_INFO_SOC.GetString("BUTXT"); // infosociedad.STCD1 = lt_INFO_SOC.GetString("STCD1"); // info_soc(infosociedad); // } //} //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"); if (ls_RETORNO.GetString("MESSAGE_V4") != "") { // comprobante = ls_RETORNO.GetString("MESSAGE_V4"); } retorno.MESSAGE_V4 = ls_RETORNO.GetString("MESSAGE_V4"); retorno.PARAMETER = ls_RETORNO.GetString("PARAMETER"); retorno.ROW = ls_RETORNO.GetString("ROW"); retorno.FIELD = ls_RETORNO.GetString("FIELD"); retorno.SYSTEM = ls_RETORNO.GetString("SYSTEM"); T_Retorno.Add(retorno); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } } else { errormessage = retval; MessageBox.Show("No se pudo conectar a la RFC"); } GC.Collect(); } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } }
// 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; } }
/// <summary> /// Creates links between document and employees in SAP. /// </summary> /// <param name="env"></param> /// <param name="documentType"></param> /// <param name="newSAPObjects"></param> private void createLinks(StateEnvironment env, string documentType, string SAPObjectType, IEnumerable <string> newSAPObjects, SAPDataSource source) { foreach (string employeeID in newSAPObjects) { // Generate and set SAP properties string documentID = GUIDToDocumentID(env); env.ObjVerEx.Properties.SetProperty(DocumentIDProperty, MFDataType.MFDatatypeText, documentID); // Set properties required by SAP env.ObjVerEx.Properties.SetProperty(ComponentPropertiesProperty, MFDataType.MFDatatypeMultiLineText, "ComponentID=data|ContentType=application/pdf|FileID=" + GetFileID(env) + "|Filename=data.pdf|ADate=" + GetSAPDateFromTS(env.ObjVerEx.GetProperty(20).Value.GetValueAsTimestamp().UtcToLocalTime()) + "|ATime=" + GetSAPTimeFromTS(env.ObjVerEx.GetProperty(20).Value.GetValueAsTimestamp().UtcToLocalTime()) + "|MDate=" + GetSAPDateFromTS(env.ObjVerEx.GetProperty(21).Value.GetValueAsTimestamp().UtcToLocalTime()) + "|MTime=" + GetSAPTimeFromTS(env.ObjVerEx.GetProperty(21).Value.GetValueAsTimestamp().UtcToLocalTime()) + "|AppVer=|Charset="); env.ObjVerEx.SetProperty(DocumentProtectionProperty, MFDataType.MFDatatypeText, "rud"); env.ObjVerEx.SetProperty(ArchiveLinkVersionProperty, MFDataType.MFDatatypeText, "0046"); // Save properties env.ObjVerEx.SaveProperties(); // Get SAP repository if (env.ObjVerEx.Properties.GetProperty(ContentRepositoryProperty) == null) { throw new Exception("No SAP repository defined."); } string repository = env.ObjVerEx.Properties.GetProperty(ContentRepositoryProperty).GetValueAsUnlocalizedText(); // Get filename string fileName = env.ObjVerEx.Title; // Get description string description = ""; PropertyValue descProp; if (env.ObjVerEx.Properties.TryGetProperty(DocumentDescriptionProperty, out descProp)) { description = descProp.GetValueAsLocalizedText(); } // Do the link with RFC function IRfcFunction rfcFunction = SAPHelper.CreateFunction("ARCHIV_CONNECTION_INSERT", source.getDestination()); rfcFunction.SetValue("ARCHIV_ID", repository); rfcFunction.SetValue("AR_OBJECT", documentType); rfcFunction.SetValue("SAP_OBJECT", SAPObjectType); rfcFunction.SetValue("ARC_DOC_ID", documentID); rfcFunction.SetValue("OBJECT_ID", employeeID); // Is the file info in use if (config.UseFileInfo == "true") { rfcFunction.SetValue("FILENAME", fileName); rfcFunction.SetValue("DESCR", description); rfcFunction.SetValue("CREATOR", employeeID); } // try { string result = SAPHelper.InvokeRFC(rfcFunction, source.getDestination()); string message = "Linked document: " + documentID + ", type: " + documentType + "\n" + "with SAP object: " + employeeID + ", type: " + SAPObjectType + "\n" + "Filename: " + fileName + ", Description: " + description + "\n" + result; SysUtils.ReportInfoToEventLog(message); } catch (Exception ex) { // Show failed FRC call in Event viewer. StringBuilder message = new StringBuilder() .AppendLine("ARCHIV_CONNECTION_INSERT") .AppendFormat(" - ARCHIV_ID: '{0}'", repository).AppendLine() .AppendFormat(" - AR_OBJECT: '{0}'", documentType).AppendLine() .AppendFormat(" - SAP_OBJECT: '{0}'", SAPObjectType).AppendLine() .AppendFormat(" - ARC_DOC_ID: '{0}'", documentID).AppendLine() .AppendFormat(" - OBJECT_ID: '{0}'", employeeID).AppendLine(); if (config.UseFileInfo == "true") { message .AppendFormat(" - FILENAME: '{0}'", fileName).AppendLine() .AppendFormat(" - DESCR: '{0}'", description).AppendLine() .AppendFormat(" - CREATOR: '{0}'", employeeID).AppendLine(); } message.AppendLine().AppendLine(ex.Message); SysUtils.ReportErrorToEventLog("SAPDocumentConnector", message.ToString(), ex); throw new RfcInvalidParameterException(ex.Message); } } }
// 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); }
public void emitirnotasdecredito(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE , string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_ID_CAJA, string P_MONEDA, string P_PAIS , List <T_DOCUMENTOS> P_DOCSAPAGAR, string P_CHKTRIB) { try { RETURN2 retorno; T_DOCUMENTOS docs; //DETALLE_REND detallerend; T_Retorno.Clear(); documentos.Clear(); errormessage = ""; message = ""; IdCaja = ""; Efectivo = "0"; IRfcTable ls_RETORNO; IRfcTable lt_DOCS; connectorSap.idioma = P_IDIOMA; connectorSap.idSistema = P_IDSISTEMA; connectorSap.instancia = P_INSTANCIA; connectorSap.mandante = P_MANDANTE; connectorSap.paswr = P_PASSWORD; connectorSap.sapRouter = P_SAPROUTER; connectorSap.user = P_UNAME; connectorSap.server = P_SERVER; string retval = connectorSap.connectionsSAP(); //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos if (string.IsNullOrEmpty(retval)) { RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig); RfcRepository SapRfcRepository = SapRfcDestination.Repository; IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_REC_Y_FAC_NC"); BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA); BapiGetUser.SetValue("PAY_CURRENCY", P_MONEDA); BapiGetUser.SetValue("LAND", P_PAIS); IRfcTable GralDat2 = BapiGetUser.GetTable("DOCUMENTOS"); try { for (var i = 0; i < P_DOCSAPAGAR.Count; i++) { GralDat2.Append(); GralDat2.SetValue("NDOCTO", P_DOCSAPAGAR[i].NDOCTO); GralDat2.SetValue("MONTO", P_DOCSAPAGAR[i].MONTO); GralDat2.SetValue("MONTOF", P_DOCSAPAGAR[i].MONTOF); GralDat2.SetValue("MONEDA", P_DOCSAPAGAR[i].MONEDA); GralDat2.SetValue("LAND", P_DOCSAPAGAR[i].LAND); GralDat2.SetValue("FECVENCI", P_DOCSAPAGAR[i].FECVENCI); GralDat2.SetValue("CONTROL_CREDITO", P_DOCSAPAGAR[i].CONTROL_CREDITO); GralDat2.SetValue("CEBE", P_DOCSAPAGAR[i].CEBE); GralDat2.SetValue("COND_PAGO", P_DOCSAPAGAR[i].COND_PAGO); GralDat2.SetValue("RUTCLI", P_DOCSAPAGAR[i].RUTCLI); GralDat2.SetValue("NOMCLI", P_DOCSAPAGAR[i].NOMCLI); GralDat2.SetValue("ESTADO", P_DOCSAPAGAR[i].ESTADO); GralDat2.SetValue("ICONO", P_CHKTRIB); GralDat2.SetValue("DIAS_ATRASO", P_DOCSAPAGAR[i].DIAS_ATRASO); string MontoAux = ""; MontoAux = P_DOCSAPAGAR[i].MONTO_ABONADO; MontoAux = MontoAux.Replace(",", ""); MontoAux = MontoAux.Replace(".", ""); GralDat2.SetValue("MONTO_ABONADO", MontoAux); MontoAux = P_DOCSAPAGAR[i].MONTOF_ABON; MontoAux = MontoAux.Replace(",", ""); MontoAux = MontoAux.Replace(".", ""); GralDat2.SetValue("MONTOF_ABON", MontoAux); MontoAux = P_DOCSAPAGAR[i].MONTO_PAGAR; MontoAux = MontoAux.Replace(",", ""); MontoAux = MontoAux.Replace(".", ""); GralDat2.SetValue("MONTO_PAGAR", MontoAux); MontoAux = P_DOCSAPAGAR[i].MONTOF_PAGAR; MontoAux = MontoAux.Replace(",", ""); MontoAux = MontoAux.Replace(".", ""); GralDat2.SetValue("MONTOF_PAGAR", MontoAux); GralDat2.SetValue("NREF", P_DOCSAPAGAR[i].NREF); GralDat2.SetValue("FECHA_DOC", P_DOCSAPAGAR[i].FECHA_DOC); GralDat2.SetValue("COD_CLIENTE", P_DOCSAPAGAR[i].COD_CLIENTE); GralDat2.SetValue("SOCIEDAD", P_DOCSAPAGAR[i].SOCIEDAD); GralDat2.SetValue("CLASE_DOC", P_DOCSAPAGAR[i].CLASE_DOC); GralDat2.SetValue("CLASE_CUENTA", P_DOCSAPAGAR[i].CLASE_CUENTA); GralDat2.SetValue("CME", P_DOCSAPAGAR[i].CME); GralDat2.SetValue("ACC", P_DOCSAPAGAR[i].ACC); GralDat2.SetValue("FACT_SD_ORIGEN", P_DOCSAPAGAR[i].FACT_SD_ORIGEN); GralDat2.SetValue("FACT_ELECT", P_DOCSAPAGAR[i].FACT_ELECT); GralDat2.SetValue("ID_COMPROBANTE", P_DOCSAPAGAR[i].ID_COMPROBANTE); GralDat2.SetValue("ID_CAJA", P_DOCSAPAGAR[i].ID_CAJA); GralDat2.SetValue("LAND", P_DOCSAPAGAR[i].LAND); GralDat2.SetValue("BAPI", P_DOCSAPAGAR[i].BAPI); } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); //System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } BapiGetUser.SetValue("DOCUMENTOS", GralDat2); BapiGetUser.Invoke(SapRfcDestination); //BapiGetUser.SetValue("I_VBELN",P_NUMDOCSD); //IRfcTable GralDat = BapiGetUser.GetTable("VIAS_PAGO"); lt_DOCS = BapiGetUser.GetTable("DOCUMENTOS"); if (lt_DOCS.Count > 0) { //LLenamos la tabla de salida lt_DatGen for (int i = 0; i < lt_DOCS.RowCount; i++) { try { lt_DOCS.CurrentIndex = i; docs = new T_DOCUMENTOS(); docs.NDOCTO = lt_DOCS[i].GetString("NDOCTO"); string Monto = ""; int indice = 0; //******* if (lt_DOCS[i].GetString("MONEDA") == "CLP") { string Valor = lt_DOCS[i].GetString("MONTOF").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = 0; if ((Valor == "00") | (Valor == "0")) { ValorAux = Convert.ToDecimal(Valor); } else { ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2)); } string Cualquiernombre = string.Format("{0:0,0}", ValorAux); docs.MONTOF = Cualquiernombre; } else { string moneda = Convert.ToString(lt_DOCS[i].GetString("MONTOF")); decimal ValorAux = Convert.ToDecimal(moneda); docs.MONTOF = string.Format("{0:0,0.##}", ValorAux); } //if (lt_DOCS[i].GetString("MONTOF") == "") //{ // indice = lt_DOCS[i].GetString("MONTO").IndexOf(','); // Monto = lt_DOCS[i].GetString("MONTO").Substring(0, indice - 1); // docs.MONTOF = Monto; //} //else //{ // docs.MONTOF = lt_DOCS[i].GetString("MONTOF"); //} if (lt_DOCS[i].GetString("MONEDA") == "CLP") { string Valor = lt_DOCS[i].GetString("MONTO").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); if ((Valor == "00") | (Valor == "0")) { ValorAux = Convert.ToDecimal(Valor); } else { ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2)); } docs.MONTO = string.Format("{0:0,0}", ValorAux); } else { string moneda = Convert.ToString(lt_DOCS[i].GetString("MONTO")); decimal ValorAux = Convert.ToDecimal(moneda); docs.MONTO = string.Format("{0:0,0.##}", ValorAux); } //if (lt_DOCS[i].GetString("MONTO") == "") //{ // indice = lt_DOCS[i].GetString("MONTO").IndexOf(','); // Monto = lt_DOCS[i].GetString("MONTO").Substring(0, indice - 1); // docs.MONTO = Monto; //} //else //{ // docs.MONTO = lt_DOCS[i].GetString("MONTO"); //} docs.MONEDA = lt_DOCS[i].GetString("MONEDA"); docs.FECVENCI = lt_DOCS[i].GetString("FECVENCI"); docs.CONTROL_CREDITO = lt_DOCS[i].GetString("CONTROL_CREDITO"); docs.CEBE = lt_DOCS[i].GetString("CEBE"); docs.COND_PAGO = lt_DOCS[i].GetString("COND_PAGO"); docs.RUTCLI = lt_DOCS[i].GetString("RUTCLI"); docs.NOMCLI = lt_DOCS[i].GetString("NOMCLI"); docs.ESTADO = lt_DOCS[i].GetString("ESTADO"); docs.ICONO = lt_DOCS[i].GetString("ICONO"); docs.DIAS_ATRASO = lt_DOCS[i].GetString("DIAS_ATRASO"); if (lt_DOCS[i].GetString("MONEDA") == "CLP") { string Valor = lt_DOCS[i].GetString("MONTOF_ABON").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux; if ((Valor == "00") | (Valor == "0")) { ValorAux = Convert.ToDecimal(Valor); } else { ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2)); } docs.MONTOF_ABON = string.Format("{0:0,0}", ValorAux); } else { string moneda = Convert.ToString(lt_DOCS[i].GetString("MONTOF_ABON")); decimal ValorAux = Convert.ToDecimal(moneda); docs.MONTOF_ABON = string.Format("{0:0,0.##}", ValorAux); } //if (lt_DOCS[i].GetString("MONTOF_ABON") == "") //{ // indice = lt_DOCS[i].GetString("MONTO_ABONADO").IndexOf(','); // Monto = lt_DOCS[i].GetString("MONTO_ABONADO").Substring(0, indice - 1); // docs.MONTOF = Monto; //} //else //{ // docs.MONTOF_ABON = lt_DOCS[i].GetString("MONTOF_ABON"); //} if (lt_DOCS[i].GetString("MONEDA") == "CLP") { string Valor = lt_DOCS[i].GetString("MONTOF_PAGAR").Trim(); if (Valor.Contains("-")) { Valor = "-" + Valor.Replace("-", ""); } Valor = Valor.Replace(".", ""); Valor = Valor.Replace(",", ""); decimal ValorAux = Convert.ToDecimal(Valor); if ((Valor == "00") | (Valor == "0")) { ValorAux = Convert.ToDecimal(Valor); } else { ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2)); } docs.MONTOF_PAGAR = string.Format("{0:0,0}", ValorAux); } else { string moneda = Convert.ToString(lt_DOCS[i].GetString("MONTOF_PAGAR")); decimal ValorAux = Convert.ToDecimal(moneda); docs.MONTOF_PAGAR = string.Format("{0:0,0.##}", ValorAux); } //if (lt_DOCS[i].GetString("MONTOF_PAGAR") == "") //{ // indice = lt_DOCS[i].GetString("MONTO_PAGAR").IndexOf(','); // Monto = lt_DOCS[i].GetString("MONTO_PAGAR").Substring(0, indice - 1); // docs.MONTOF = Monto; //} //else //{ // docs.MONTOF_PAGAR = lt_DOCS[i].GetString("MONTOF_PAGAR"); //} docs.NREF = lt_DOCS[i].GetString("NREF"); docs.FECHA_DOC = lt_DOCS[i].GetString("FECHA_DOC"); docs.COD_CLIENTE = lt_DOCS[i].GetString("COD_CLIENTE"); docs.SOCIEDAD = lt_DOCS[i].GetString("SOCIEDAD"); docs.CLASE_DOC = lt_DOCS[i].GetString("CLASE_DOC"); docs.CLASE_CUENTA = lt_DOCS[i].GetString("CLASE_CUENTA"); docs.CME = lt_DOCS[i].GetString("CME"); docs.ACC = lt_DOCS[i].GetString("ACC"); docs.FACT_SD_ORIGEN = lt_DOCS[i].GetString("FACT_SD_ORIGEN"); docs.FACT_ELECT = lt_DOCS[i].GetString("FACT_ELECT"); docs.ID_COMPROBANTE = lt_DOCS[i].GetString("ID_COMPROBANTE"); docs.ID_CAJA = lt_DOCS[i].GetString("ID_CAJA"); docs.LAND = lt_DOCS[i].GetString("LAND"); documentos.Add(docs); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); System.Windows.MessageBox.Show(ex.Message + ex.StackTrace); } } } else { System.Windows.Forms.MessageBox.Show("No existe(n) registro(s)"); } ls_RETORNO = BapiGetUser.GetTable("RETURN"); try { for (int i = 0; i < ls_RETORNO.Count(); i++) { ls_RETORNO.CurrentIndex = i; retorno = new RETURN2(); if (ls_RETORNO.GetString("TYPE") == "S") { message = message + "-" + ls_RETORNO.GetString("MESSAGE") + ":" + ls_RETORNO.GetString("MESSAGE_V1").Trim() + "\n"; NumComprob = ls_RETORNO.GetString("MESSAGE_V4").Trim(); } if (ls_RETORNO.GetString("TYPE") == "E") { errormessage = errormessage + " - " + ls_RETORNO.GetString("MESSAGE") + "\n"; } retorno.TYPE = ls_RETORNO.GetString("TYPE"); retorno.ID = ls_RETORNO.GetString("ID"); retorno.NUMBER = ls_RETORNO.GetString("NUMBER"); retorno.MESSAGE = ls_RETORNO.GetString("MESSAGE"); retorno.LOG_NO = ls_RETORNO.GetString("LOG_NO"); retorno.LOG_MSG_NO = ls_RETORNO.GetString("LOG_MSG_NO"); retorno.MESSAGE_V1 = ls_RETORNO.GetString("MESSAGE_V1"); retorno.MESSAGE_V2 = ls_RETORNO.GetString("MESSAGE_V2"); retorno.MESSAGE_V3 = ls_RETORNO.GetString("MESSAGE_V3"); if (ls_RETORNO.GetString("MESSAGE_V4") != "") { // comprobante = ls_RETORNO.GetString("MESSAGE_V4"); } retorno.MESSAGE_V4 = ls_RETORNO.GetString("MESSAGE_V4"); retorno.PARAMETER = ls_RETORNO.GetString("PARAMETER"); retorno.ROW = ls_RETORNO.GetString("ROW"); retorno.FIELD = ls_RETORNO.GetString("FIELD"); retorno.SYSTEM = ls_RETORNO.GetString("SYSTEM"); T_Retorno.Add(retorno); } } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } } else { errormessage = retval; MessageBox.Show("No se pudo conectar a la RFC"); } GC.Collect(); } catch (Exception ex) { Console.WriteLine(ex.Message, ex.StackTrace); MessageBox.Show(ex.Message + ex.StackTrace); } }
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 string doAction() { try { SqlConnection sqlconn = new SqlConnection(__conn); string sqlstr = @"SELECT ObjectId FROM WF_Object WHERE BaseId='" + __flowId + "'"; SqlDataAdapter sda = new SqlDataAdapter(sqlstr, sqlconn); //获取 DataSet ds = new DataSet(); sda.Fill(ds); DataTable dt = new DataTable(); dt = ds.Tables[0]; // 链接 RfcConfigParameters rfcPar = new RfcConfigParameters(); rfcPar.Add(RfcConfigParameters.Name, "DEV"); rfcPar.Add(RfcConfigParameters.AppServerHost, "10.98.0.22"); rfcPar.Add(RfcConfigParameters.Client, "400"); rfcPar.Add(RfcConfigParameters.User, "USER01"); rfcPar.Add(RfcConfigParameters.Password, "1234567890"); rfcPar.Add(RfcConfigParameters.SystemNumber, "00");//SAP实例 rfcPar.Add(RfcConfigParameters.Language, "ZH"); RfcDestination dest = RfcDestinationManager.GetDestination(rfcPar); RfcRepository rfcrep = dest.Repository; IRfcFunction myfun = dest.Repository.CreateFunction("Z_RFC_PLM_SAP_BOM_CREATE"); IRfcStructure import = null; IRfcTable table = myfun.GetTable("ZT_PP0011"); IRfcTable retable; SqlDataAdapter sda2; DataTable dt2; DataTable dt3; bool wrong = true; string error = ""; DataRow dr; for (int i = 0; i < dt.Rows.Count; i++) { sqlstr = @"exec GETBOM_woo '" + dt.Rows[i][0] + "'"; sda2 = new SqlDataAdapter(sqlstr, sqlconn); dt2 = new DataTable(); sda2.Fill(dt2); for (int j = 0; j < dt2.Rows.Count; j++) { import = rfcrep.GetStructureMetadata("ZPP0011").CreateStructure(); import.SetValue("MATNR", dt2.Rows[j][0]); //物料编号 import.SetValue("DATUV", dt2.Rows[j][1]); //有效起始日期 import.SetValue("IDNRK", dt2.Rows[j][2]); //BOM 组件 import.SetValue("BMENG", dt2.Rows[j][3]); //基本数量 import.SetValue("STLST", dt2.Rows[j][4]); //BOM 状态 import.SetValue("MENGE", dt2.Rows[j][5]); //组件数量 import.SetValue("MEINS", dt2.Rows[j][6]); //组件计量单位 import.SetValue("DATUV_I", dt2.Rows[j][7]); //有效起始日期 import.SetValue("DATUB_I", dt2.Rows[j][8]); //有效截止日期 table.Append(import); } myfun.Invoke(dest); } dt3 = new DataTable(); dt3.Columns.Add("MATNR", typeof(string)); dt3.Columns.Add("POSNR", typeof(string)); dt3.Columns.Add("IDNRK", typeof(string)); dt3.Columns.Add("FLAG", typeof(string)); dt3.Columns.Add("ZRESULTS", typeof(string)); retable = myfun.GetTable("ZT_PP0011_RLT"); //re1 = re1 + " kmax=" + Convert.ToString(retable.RowCount) + " ; table= " + Convert.ToString(table.RowCount); for (int k = 0; k < retable.Count; k++) { retable.CurrentIndex = k; dr = dt3.NewRow(); dr["MATNR"] = retable[k].GetValue("MATNR").ToString(); dr["POSNR"] = retable[k].GetValue("POSNR").ToString(); dr["IDNRK"] = retable[k].GetValue("IDNRK").ToString(); dr["FLAG"] = retable[k].GetValue("FLAG").ToString(); dr["ZRESULTS"] = retable[k].GetValue("ZRESULTS").ToString(); if (Convert.ToString(dr["FLAG"]) == "E") { if (dr["ZRESULTS"].ToString() == "" || dr["ZRESULTS"].ToString().Contains("创建过程中")) { continue; } wrong = false; error = error + "第" + (k + 1) + "行子物料" + retable[k].GetValue("MATNR").ToString() + "<出错原因:" + dr["ZRESULTS"].ToString() + ">;"; } dt3.Rows.Add(dr); } if (wrong == false) { return(error); } else { return(""); } } catch (Exception ex) { return(ex.Message); } }
public List <string> CHK_STOCKIN_Z_RFC_AUFNR_MIGO(string DicRFCAufnrMigo) { IDictionary <string, object> mst = MapListConverter.JsonToDictionary(DicRFCAufnrMigo); List <string> LsMsg = new List <string>(); try { #region GM_CODE是和SAP的T-code相关 /*01 MB01 * 02 MB31 * 03 MB1A * 04 MB1B * 05 MB1C * 06 MB11*/ #endregion RfcDestination destination = RfcDestinationManager.GetDestination(this.GetCfgParameters()); IRfcFunction rfcFunction = destination.Repository.CreateFunction("Z_RFC_AUFNR_MIGO"); IRfcStructure IS_HEAD = rfcFunction.GetStructure("IS_HEAD"); IS_HEAD.SetValue("GM_CODE", "02"); //IS_HEAD.SetValue("PSTNG_DATE", string.IsNullOrEmpty(RFCAufnrMigo.PSTNG_DATE) ? DateTime.Now.ToString("yyyyMMdd") : RFCAufnrMigo.PSTNG_DATE); //IS_HEAD.SetValue("DOC_DATE", string.IsNullOrEmpty(RFCAufnrMigo.DOC_DATE) ? DateTime.Now.ToString("yyyyMMdd") : RFCAufnrMigo.DOC_DATE); //IS_HEAD.SetValue("HEADER_TXT", RFCAufnrMigo.EMP_NO + RFCAufnrMigo.EMP_NAME);//人员权限 IS_HEAD.SetValue("PSTNG_DATE", DateTime.Now.ToString("yyyyMMdd")); IS_HEAD.SetValue("DOC_DATE", DateTime.Now.ToString("yyyyMMdd")); IS_HEAD.SetValue("HEADER_TXT", mst["EMP_NO"].ToString() + mst["EMP_NAME"].ToString()); //人员权限 rfcFunction.SetValue("IS_HEAD", IS_HEAD); //设置参数 IRfcStructure IS_ITEM = rfcFunction.GetStructure("IS_ITEM"); IS_ITEM.SetValue("MATERIAL", mst["PARTNUMBER"].ToString()); if (mst.ContainsKey("PLANT")) { IS_ITEM.SetValue("PLANT", mst["PLANT"].ToString()); } else { IS_ITEM.SetValue("PLANT", "2100"); } IS_ITEM.SetValue("MOVE_TYPE", "101"); IS_ITEM.SetValue("ENTRY_QNT", Convert.ToInt32(mst["QTY"])); IS_ITEM.SetValue("ORDERID", mst["WOID"].ToString()); IS_ITEM.SetValue("MVT_IND", "F"); rfcFunction.SetValue("IS_ITEM", IS_ITEM); //设置参数 rfcFunction.SetValue("I_TYPE", "1"); //1成品入库 2出库 rfcFunction.SetValue("TESTRUN", "X"); //检查入库,不过账 rfcFunction.Invoke(destination); string SAP_STOCKNO = rfcFunction.GetValue("E_MBLNR").ToString().TrimStart('0'); //物料凭证号码 IRfcStructure ES_RETURN = rfcFunction.GetStructure("ES_RETURN"); string SAP_TYPE = ES_RETURN.GetValue("TYPE").ToString(); //是否成功 S 表示成功 string SAP_E_ID = ES_RETURN.GetValue("ID").ToString(); string SAP_E_NUM = ES_RETURN.GetValue("NUMBER").ToString(); string SAP_MSG = ES_RETURN.GetValue("MESSAGE").ToString(); LsMsg.Add(SAP_STOCKNO); LsMsg.Add(SAP_TYPE); LsMsg.Add(SAP_E_ID); LsMsg.Add(SAP_E_NUM); LsMsg.Add(SAP_MSG); return(LsMsg); } catch (Exception ex) { LsMsg.Add(ex.Message); return(LsMsg); } }
public string doActions() { try { SqlConnection sqlconn = new SqlConnection(__conn); string sqlstr = "SELECT ObjectId FROM WF_Object WHERE BaseId='" + __flowId + "'"; SqlDataAdapter sda = new SqlDataAdapter(sqlstr, sqlconn); //获取 DataSet ds = new DataSet(); sda.Fill(ds); DataTable dt3 = new DataTable(); dt3 = ds.Tables[0]; // 链接 RfcConfigParameters rfcPar = new RfcConfigParameters(); rfcPar.Add(RfcConfigParameters.Name, "DEV"); rfcPar.Add(RfcConfigParameters.AppServerHost, "10.98.0.22"); rfcPar.Add(RfcConfigParameters.Client, "400"); rfcPar.Add(RfcConfigParameters.User, "USER01"); rfcPar.Add(RfcConfigParameters.Password, "1234567890"); rfcPar.Add(RfcConfigParameters.SystemNumber, "00");//SAP实例 rfcPar.Add(RfcConfigParameters.Language, "ZH"); RfcDestination dest = RfcDestinationManager.GetDestination(rfcPar); RfcRepository rfcrep = dest.Repository; IRfcFunction myfun = dest.Repository.CreateFunction("ZSET_MATERIEL_MARA"); myfun.SetValue("P_CODE", "N");//SAP里面的传入参数 // N 新增;M 修改 IRfcStructure import = null; IRfcTable table; bool wrong = true; string error = ""; DataRow dr; DataTable dt2 = new DataTable(); dt2.Columns.Add("DATA1", typeof(string)); dt2.Columns.Add("DATA2", typeof(string)); dt2.Columns.Add("DATA3", typeof(string)); dt2.Columns.Add("DATA4", typeof(string)); dt2.Columns.Add("DATA5", typeof(string)); table = myfun.GetTable("T_ZMARA"); string strsql2 = ""; DataTable dt = new DataTable(); SqlDataAdapter sda2; if (dt3.Rows.Count <= 0) { return("Error:流程行不足1"); } for (int k = 0; k < dt3.Rows.Count; k++) { strsql2 = "exec GETmat_woo '" + dt3.Rows[k]["ObjectId"] + "'"; sda2 = new SqlDataAdapter(strsql2, sqlconn); sqlconn.Open(); ds.Clear(); dt.Clear(); sda2.Fill(ds); dt = ds.Tables[0]; sqlconn.Close(); if (dt.Rows.Count <= 0) { continue; } else if (k != 0) { loopstr2 = loopstr2 + " union"; } for (int i = 0; i < dt.Rows.Count; i++) { import = rfcrep.GetStructureMetadata("ZMARA").CreateStructure(); //赋值 import.SetValue("MATNR", dt.Rows[i]["物料编码"].ToString()); //物料编码 import.SetValue("LTEXT", dt.Rows[i]["物料長描述"]); //物料描述长文本 import.SetValue("MAKTX", dt.Rows[i]["物料短描述"]); //物料描述 import.SetValue("MATKL", dt.Rows[i]["物料组"]); // dt.Rows[0][2]); //物料组 table.Append(import); } } myfun.Invoke(dest); table = myfun.GetTable("T_ZMARA_RESULT"); for (int j = 0; j < table.Count; j++) { table.CurrentIndex = j; dr = dt2.NewRow(); dr["DATA1"] = table[j].GetValue("MANDT").ToString(); dr["DATA2"] = table[j].GetValue("MATNR").ToString(); dr["DATA3"] = table[j].GetValue("MAKTX").ToString(); dr["DATA4"] = table[j].GetValue("ZRESULT").ToString(); dr["DATA5"] = table[j].GetValue("ZRESULT_TEXT").ToString(); if (Convert.ToString(dr["DATA4"]) == "N" && (!(table[j].GetValue("ZRESULT_TEXT").ToString().Contains("已在创建过程"))) && (table[j].GetValue("ZRESULT_TEXT").ToString() != "")) { wrong = false; error = error + "第" + (j + 1) + "行物料[" + (j + 1) + "]" + table[j].GetValue("MATNR").ToString() + "[" + table[j].GetValue("MAKTX").ToString() + "]" + "<出错原因:" + table[j].GetValue("ZRESULT_TEXT").ToString() + ">;\r\n"; } dt2.Rows.Add(dr); } // dt 包含返回结果 if (wrong == false) { return(error); } else { return(""); } } catch (Exception ex) { return(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); }
public void PagaVehicu(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 ID_CAJA, string TOTAL_VENTA, List <VIAS_PAGO_VEHI> ViaPago, List <DOCUMENTO_CAB> DocumPago, List <ACT_FPAGOS> pago, string PAY_CURRENCY, string RUT, string SOCIEDAD, string NOTA_VENTA, string TOTAL_VIAS, string LAND) { objReturn2.Clear(); DOCUMENTO = ""; DOCUMENTO2 = ""; IRfcTable lt_VIAS_PAGO_VEHI; VIAS_PAGO_VEHI VIAS_PAGO_VEHI_RESP; errormessage = ""; message = ""; try { RETURN p_return; TOTAL_VENTA = TOTAL_VENTA.Replace(".", ""); TOTAL_VENTA = TOTAL_VENTA.Replace(",", ""); decimal totalventa_d = Convert.ToDecimal(TOTAL_VENTA); FormatoMonedas FM = new FormatoMonedas(); //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(); if (string.IsNullOrEmpty(retval)) { RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig); RfcRepository SapRfcRepository = SapRfcDestination.Repository; IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_PAGO_ANT_VEHI"); BapiGetUser.SetValue("PAY_CURRENCY", PAY_CURRENCY); BapiGetUser.SetValue("RUT", RUT); BapiGetUser.SetValue("SOCIEDAD", SOCIEDAD); BapiGetUser.SetValue("NOTA_VENTA", NOTA_VENTA); BapiGetUser.SetValue("TOTAL_VIAS", TOTAL_VIAS); BapiGetUser.SetValue("LAND", LAND); BapiGetUser.SetValue("ID_CAJA", ID_CAJA); BapiGetUser.SetValue("TOTAL_VENTA", totalventa_d); // LLENAMOS TABLA DOCUMENTO IRfcTable paramt = BapiGetUser.GetTable("DOCUMENTO_CAB"); for (int i = 0; i < DocumPago.Count(); i++) { paramt.Append(); paramt.SetValue("MANDT", DocumPago[i].MANDT); paramt.SetValue("LAND", DocumPago[i].LAND); paramt.SetValue("ID_COMPROBANTE", DocumPago[i].ID_COMPROBANTE); paramt.SetValue("POSICION", DocumPago[i].POSICION); paramt.SetValue("ID_CAJA", DocumPago[i].ID_CAJA); paramt.SetValue("ID_APERTURA", DocumPago[i].ID_APERTURA); paramt.SetValue("CLIENTE", DocumPago[i].CLIENTE); paramt.SetValue("TIPO_DOCUMENTO", DocumPago[i].TIPO_DOCUMENTO); paramt.SetValue("SOCIEDAD", DocumPago[i].SOCIEDAD); paramt.SetValue("NRO_DOCUMENTO", DocumPago[i].NRO_DOCUMENTO); paramt.SetValue("NRO_REFERENCIA", DocumPago[i].NRO_REFERENCIA); paramt.SetValue("CAJERO_RESP", DocumPago[i].CAJERO_RESP); paramt.SetValue("CAJERO_GEN", DocumPago[i].CAJERO_GEN); paramt.SetValue("FECHA_COMP", DocumPago[i].FECHA_COMP); paramt.SetValue("HORA", DocumPago[i].HORA); paramt.SetValue("NRO_COMPENSACION", DocumPago[i].NRO_COMPENSACION); paramt.SetValue("TEXTO_CABECERA", DocumPago[i].TEXTO_CABECERA); paramt.SetValue("NULO", DocumPago[i].NULO); paramt.SetValue("USR_ANULADOR", DocumPago[i].USR_ANULADOR); paramt.SetValue("NRO_ANULACION", DocumPago[i].NRO_ANULACION); paramt.SetValue("APROBADOR_ANULA", DocumPago[i].APROBADOR_ANULA); paramt.SetValue("TXT_ANULACION", DocumPago[i].TXT_ANULACION); paramt.SetValue("EXCEPCION", DocumPago[i].EXCEPCION); paramt.SetValue("FECHA_DOC", DocumPago[i].FECHA_DOC); paramt.SetValue("FECHA_VENC_DOC", DocumPago[i].FECHA_VENC_DOC); paramt.SetValue("NUM_CUOTA", DocumPago[i].NUM_CUOTA); //if (DocumPago[i].MONEDA == "CLP") //{ // paramt.SetValue("MONTO_DOC",FM.FormatoMonedaChilena(DocumPago[i].MONTO_DOC, "2")); //} //else //{ // paramt.SetValue("MONTO_DOC", FM.FormatoMonedaExtranjera(DocumPago[i].MONTO_DOC)); //} paramt.SetValue("MONTO_DOC", DocumPago[i].MONTO_DOC); //if (DocumPago[i].MONEDA == "CLP") //{ // paramt.SetValue("MONTO_DIFERENCIA", FM.FormatoMonedaChilena(DocumPago[i].MONTO_DIFERENCIA, "2")); //} //else //{ // paramt.SetValue("MONTO_DIFERENCIA", FM.FormatoMonedaExtranjera(DocumPago[i].MONTO_DIFERENCIA)); //} paramt.SetValue("MONTO_DIFERENCIA", DocumPago[i].MONTO_DIFERENCIA); paramt.SetValue("TEXTO_EXCEPCION", DocumPago[i].TEXTO_EXCEPCION); paramt.SetValue("PARCIAL", DocumPago[i].PARCIAL); paramt.SetValue("TIME", DocumPago[i].TIME); paramt.SetValue("APROBADOR_EX", DocumPago[i].APROBADOR_EX); paramt.SetValue("MONEDA", DocumPago[i].MONEDA); paramt.SetValue("CLASE_CUENTA", DocumPago[i].CLASE_CUENTA); paramt.SetValue("CLASE_DOC", DocumPago[i].CLASE_DOC); paramt.SetValue("NUM_CANCELACION", DocumPago[i].NUM_CANCELACION); paramt.SetValue("CME", DocumPago[i].CME); paramt.SetValue("NOTA_VENTA", DocumPago[i].NOTA_VENTA); paramt.SetValue("CEBE", DocumPago[i].CEBE); paramt.SetValue("ACC", DocumPago[i].ACC); } //LLENAMOS TABLA VIAS DE PAGO IRfcTable paramt2 = BapiGetUser.GetTable("VIAS_PAGO_VEHI"); for (int i = 0; i < ViaPago.Count(); i++) { paramt2.Append(); paramt2.SetValue("MANDT", ViaPago[i].MANDT); paramt2.SetValue("LAND", ViaPago[i].LAND); paramt2.SetValue("ID_COMPROBANTE", ViaPago[i].ID_COMPROBANTE); paramt2.SetValue("ID_DETALLE", ViaPago[i].ID_DETALLE); paramt2.SetValue("ID_CAJA", ViaPago[i].ID_CAJA); paramt2.SetValue("VIA_PAGO", ViaPago[i].VIA_PAGO); //if (ViaPago[i].MONEDA == "CLP") //{ // paramt2.SetValue("MONTO", FM.FormatoMonedaChilena(ViaPago[i].MONTO, "1")); //} //else //{ // paramt2.SetValue("MONTO", FM.FormatoMonedaExtranjera(ViaPago[i].MONTO)); //} paramt2.SetValue("MONTO", ViaPago[i].MONTO); paramt2.SetValue("MONEDA", ViaPago[i].MONEDA); paramt2.SetValue("BANCO", ViaPago[i].BANCO); paramt2.SetValue("EMISOR", ViaPago[i].EMISOR); paramt2.SetValue("NUM_CHEQUE", ViaPago[i].NUM_CHEQUE); paramt2.SetValue("COD_AUTORIZACION", ViaPago[i].COD_AUTORIZACION); paramt2.SetValue("NUM_CUOTAS", ViaPago[i].NUM_CUOTAS); paramt2.SetValue("FECHA_VENC", ViaPago[i].FECHA_VENC); paramt2.SetValue("TEXTO_POSICION", ViaPago[i].TEXTO_POSICION); paramt2.SetValue("ANEXO", ViaPago[i].ANEXO); paramt2.SetValue("SUCURSAL", ViaPago[i].SUCURSAL); paramt2.SetValue("NUM_CUENTA", ViaPago[i].NUM_CUENTA); paramt2.SetValue("NUM_TARJETA", ViaPago[i].NUM_TARJETA); paramt2.SetValue("NUM_VALE_VISTA", ViaPago[i].NUM_VALE_VISTA); paramt2.SetValue("PATENTE", ViaPago[i].PATENTE); paramt2.SetValue("NUM_VENTA", ViaPago[i].NUM_VENTA); paramt2.SetValue("PAGARE", ViaPago[i].PAGARE); if ((ViaPago[i].VIA_PAGO == "B") | (ViaPago[i].VIA_PAGO == "U")) { paramt2.SetValue("FECHA_EMISION", Convert.ToDateTime(ViaPago[i].FECHA_EMISION)); } else { paramt2.SetValue("FECHA_EMISION", ViaPago[i].FECHA_EMISION); } paramt2.SetValue("NOMBRE_GIRADOR", ViaPago[i].NOMBRE_GIRADOR); paramt2.SetValue("CARTA_CURSE", ViaPago[i].CARTA_CURSE); paramt2.SetValue("NUM_TRANSFER", ViaPago[i].NUM_TRANSFER); paramt2.SetValue("NUM_DEPOSITO", ViaPago[i].NUM_DEPOSITO); paramt2.SetValue("CTA_BANCO", ViaPago[i].CTA_BANCO); paramt2.SetValue("IFINAN", ViaPago[i].IFINAN); paramt2.SetValue("ZUONR", ViaPago[i].ZUONR); paramt2.SetValue("CORRE", ViaPago[i].CORRE); paramt2.SetValue("HKONT", ViaPago[i].HKONT); paramt2.SetValue("PRCTR", ViaPago[i].PRCTR); paramt2.SetValue("ZNOP", ViaPago[i].ZNOP); } IRfcTable paramt3 = BapiGetUser.GetTable("ACT_FPAGOS"); for (int i = 0; i < pago.Count(); i++) { paramt3.Append(); paramt3.SetValue("VBELN", pago[i].VBELN); paramt3.SetValue("CORRE", pago[i].CORRE); } BapiGetUser.SetValue("DOCUMENTO_CAB", paramt); BapiGetUser.SetValue("VIAS_PAGO_VEHI", paramt2); BapiGetUser.SetValue("ACT_FPAGOS", paramt3); BapiGetUser.Invoke(SapRfcDestination); DOCUMENTO = BapiGetUser.GetValue("DOCUMENTO").ToString(); DOCUMENTO2 = BapiGetUser.GetValue("COMPROBANTE").ToString(); IRfcTable retorno = BapiGetUser.GetTable("RETORNO"); for (var i = 0; i < retorno.RowCount; i++) { retorno.CurrentIndex = i; p_return = new RETURN(); p_return.TYPE = retorno[i].GetString("TYPE"); p_return.ID = retorno[i].GetString("ID"); p_return.NUMBER = retorno[i].GetString("NUMBER"); p_return.MESSAGE = retorno[i].GetString("MESSAGE"); p_return.LOG_NO = retorno[i].GetString("LOG_NO"); p_return.LOG_MSG_NO = retorno[i].GetString("LOG_MSG_NO"); p_return.MESSAGE_V1 = retorno[i].GetString("MESSAGE_V1"); p_return.MESSAGE_V2 = retorno[i].GetString("MESSAGE_V2"); p_return.MESSAGE_V3 = retorno[i].GetString("MESSAGE_V3"); p_return.MESSAGE_V4 = retorno[i].GetString("MESSAGE_V4"); p_return.PARAMETER = retorno[i].GetString("PARAMETER"); p_return.ROW = retorno[i].GetString("ROW"); p_return.FIELD = retorno[i].GetString("FIELD"); p_return.SYSTEM = retorno[i].GetString("SYSTEM"); if (retorno[i].GetString("TYPE") == "E") { if (errormessage.Contains(retorno[i].GetString("MESSAGE"))) { ; } else { errormessage = errormessage + " - " + retorno[i].GetString("MESSAGE"); } } if (retorno[i].GetString("TYPE") == "S") { if (message.Contains(retorno[i].GetString("MESSAGE"))) { ; } else { message = message + " - " + retorno[i].GetString("MESSAGE"); } } objReturn2.Add(p_return); } } } catch (Exception ex) { Console.WriteLine("{0} Exception caught.", ex); } }
// 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 recauVehi(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 VBELN, string STCD1, string SOCIEDAD) { objPag.Clear(); objPagCab.Clear(); objReturn2.Clear(); errormessage = ""; message = ""; try { RETURN p_return; IRfcTable lt_IT_PAGOS_CAB; IRfcTable lt_IT_PAGOS; IT_PAGOS GET_IT_PAGOS_resp; IT_PAGOS_CAB GET_IT_PAGOS_CAB_resp; FormatoMonedas FM = new FormatoMonedas(); //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_RECAU_VEHI"); BapiGetUser.SetValue("VBELN", VBELN); BapiGetUser.SetValue("STCD1", STCD1); BapiGetUser.SetValue("SOCIEDAD", SOCIEDAD); BapiGetUser.Invoke(SapRfcDestination); lt_IT_PAGOS_CAB = BapiGetUser.GetTable("IT_PAGOS_CAB"); lt_IT_PAGOS = BapiGetUser.GetTable("IT_PAGOS"); if (lt_IT_PAGOS_CAB.RowCount > 0) { for (int i = 0; i < lt_IT_PAGOS_CAB.RowCount; i++) { lt_IT_PAGOS_CAB.CurrentIndex = i; GET_IT_PAGOS_CAB_resp = new IT_PAGOS_CAB(); GET_IT_PAGOS_CAB_resp.VBELN = lt_IT_PAGOS_CAB[i].GetString("VBELN"); GET_IT_PAGOS_CAB_resp.LICPL = lt_IT_PAGOS_CAB[i].GetString("LICPL"); GET_IT_PAGOS_CAB_resp.H_NETWR = lt_IT_PAGOS_CAB[i].GetString("H_NETWR"); GET_IT_PAGOS_CAB_resp.WAERK = lt_IT_PAGOS_CAB[i].GetString("WAERK"); GET_IT_PAGOS_CAB_resp.BUKRS_VF = lt_IT_PAGOS_CAB[i].GetString("BUKRS_VF"); GET_IT_PAGOS_CAB_resp.KKBER = lt_IT_PAGOS_CAB[i].GetString("KKBER"); GET_IT_PAGOS_CAB_resp.STCD1 = lt_IT_PAGOS_CAB[i].GetString("STCD1"); objPagCab.Add(GET_IT_PAGOS_CAB_resp); } } if (lt_IT_PAGOS.RowCount > 0) { for (int i = 0; i < lt_IT_PAGOS.RowCount; i++) { lt_IT_PAGOS.CurrentIndex = i; GET_IT_PAGOS_resp = new IT_PAGOS(); GET_IT_PAGOS_resp.VBELN = lt_IT_PAGOS[i].GetString("VBELN"); GET_IT_PAGOS_resp.CORRE = lt_IT_PAGOS[i].GetString("CORRE"); GET_IT_PAGOS_resp.VIADP = lt_IT_PAGOS[i].GetString("VIADP"); GET_IT_PAGOS_resp.DESCV = lt_IT_PAGOS[i].GetString("DESCV"); GET_IT_PAGOS_resp.DBM_LICEXT = lt_IT_PAGOS[i].GetString("DBM_LICEXT"); GET_IT_PAGOS_resp.NUDOC = lt_IT_PAGOS[i].GetString("NUDOC"); GET_IT_PAGOS_resp.CODBA = lt_IT_PAGOS[i].GetString("CODBA"); GET_IT_PAGOS_resp.NOMBA = lt_IT_PAGOS[i].GetString("NOMBA"); GET_IT_PAGOS_resp.CODIN = lt_IT_PAGOS[i].GetString("CODIN"); GET_IT_PAGOS_resp.NOMIN = lt_IT_PAGOS[i].GetString("NOMIN"); //string VALORUN = Convert.ToString(lt_IT_PAGOS[i].GetString("MONTO")); //VALORUN = VALORUN.Replace(".", ""); //VALORUN = VALORUN.Replace(",", ""); //decimal monto = Convert.ToDecimal(VALORUN); //GET_IT_PAGOS_resp.MONTO = string.Format("{0:0,0}", monto); GET_IT_PAGOS_resp.KUNNR = lt_IT_PAGOS[i].GetString("KUNNR"); if (lt_IT_PAGOS[i].GetString("WAERS") == "CLP") { GET_IT_PAGOS_resp.MONTO = FM.FormatoMonedaChilena(lt_IT_PAGOS[i].GetString("MONTO"), "2"); //paramt.SetValue("MONTO_DOC", FM.FormatoMonedaChilena(DocumPago[i].MONTO_DOC, "2")); } else { GET_IT_PAGOS_resp.MONTO = FM.FormatoMonedaExtranjera(lt_IT_PAGOS[i].GetString("MONTO")); //paramt.SetValue("MONTO_DOC", FM.FormatoMonedaExtranjera(DocumPago[i].MONTO_DOC)); } //GET_IT_PAGOS_resp.MONTO = lt_IT_PAGOS[i].GetString("MONTO"); GET_IT_PAGOS_resp.CTACE = lt_IT_PAGOS[i].GetString("CTACE"); GET_IT_PAGOS_resp.FEACT = lt_IT_PAGOS[i].GetString("FEACT"); GET_IT_PAGOS_resp.FEVEN = lt_IT_PAGOS[i].GetString("FEVEN"); GET_IT_PAGOS_resp.INTER = lt_IT_PAGOS[i].GetString("INTER"); GET_IT_PAGOS_resp.TASAI = lt_IT_PAGOS[i].GetString("TASAI"); GET_IT_PAGOS_resp.CUOTA = lt_IT_PAGOS[i].GetString("CUOTA"); GET_IT_PAGOS_resp.MINTE = lt_IT_PAGOS[i].GetString("MINTE"); //string VALORTOTIN = Convert.ToString(lt_IT_PAGOS[i].GetString("TOTIN")); //VALORTOTIN = VALORTOTIN.Replace(".", ""); //VALORTOTIN = VALORTOTIN.Replace(",", ""); //decimal TOTIN2 = Convert.ToDecimal(VALORTOTIN); if (lt_IT_PAGOS[i].GetString("WAERS") == "CLP") { GET_IT_PAGOS_resp.TOTIN = FM.FormatoMonedaChilena(lt_IT_PAGOS[i].GetString("TOTIN"), "2"); //paramt.SetValue("MONTO_DOC", FM.FormatoMonedaChilena(DocumPago[i].MONTO_DOC, "2")); } else { GET_IT_PAGOS_resp.TOTIN = FM.FormatoMonedaExtranjera(lt_IT_PAGOS[i].GetString("TOTIN")); //paramt.SetValue("MONTO_DOC", FM.FormatoMonedaExtranjera(DocumPago[i].MONTO_DOC)); } //GET_IT_PAGOS_resp.TOTIN = string.Format("{0:0,0}", TOTIN2); // GET_IT_PAGOS_resp.TOTIN = lt_IT_PAGOS[i].GetString("TOTIN"); GET_IT_PAGOS_resp.RUTGI = lt_IT_PAGOS[i].GetString("RUTGI"); GET_IT_PAGOS_resp.NOMGI = lt_IT_PAGOS[i].GetString("NOMGI"); GET_IT_PAGOS_resp.WAERS = lt_IT_PAGOS[i].GetString("WAERS"); GET_IT_PAGOS_resp.STAT = lt_IT_PAGOS.GetString("STAT"); GET_IT_PAGOS_resp.PRCTR = lt_IT_PAGOS[i].GetString("PRCTR"); GET_IT_PAGOS_resp.KUNNR = lt_IT_PAGOS[i].GetString("KUNNR"); GET_IT_PAGOS_resp.KKBER = lt_IT_PAGOS[i].GetString("KKBER"); GET_IT_PAGOS_resp.STCD1 = lt_IT_PAGOS[i].GetString("STCD1"); GET_IT_PAGOS_resp.HKONT = lt_IT_PAGOS[i].GetString("HKONT"); GET_IT_PAGOS_resp.BANKN = lt_IT_PAGOS[i].GetString("BANKN"); objPag.Add(GET_IT_PAGOS_resp); } } else { // MessageBox.Show("No existen datos para este número de documento o RUT"); } IRfcTable retorno = BapiGetUser.GetTable("RETURN"); for (var i = 0; i < retorno.RowCount; i++) { retorno.CurrentIndex = i; p_return = new RETURN(); p_return.TYPE = retorno[i].GetString("TYPE"); p_return.ID = retorno[i].GetString("ID"); p_return.NUMBER = retorno[i].GetString("NUMBER"); p_return.MESSAGE = retorno[i].GetString("MESSAGE"); p_return.LOG_NO = retorno[i].GetString("LOG_NO"); p_return.LOG_MSG_NO = retorno[i].GetString("LOG_MSG_NO"); p_return.MESSAGE_V1 = retorno[i].GetString("MESSAGE_V1"); p_return.MESSAGE_V2 = retorno[i].GetString("MESSAGE_V2"); p_return.MESSAGE_V3 = retorno[i].GetString("MESSAGE_V3"); p_return.MESSAGE_V4 = retorno[i].GetString("MESSAGE_V4"); p_return.PARAMETER = retorno[i].GetString("PARAMETER"); p_return.ROW = retorno[i].GetString("ROW"); p_return.FIELD = retorno[i].GetString("FIELD"); p_return.SYSTEM = retorno[i].GetString("SYSTEM"); objReturn2.Add(p_return); } } } catch (Exception ex) { Console.WriteLine("{0} Exception caught.", ex); } }
// 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)); }