public void cadastrarMaterial() { Material material = new Material(); material.descricao = "Cia Ltda"; material.id_centro = "100"; material.tip_mat = "Q"; material.status_mat = "S"; material.uni_med = "CX"; MaterialRepository materialRepository = new MaterialRepository(); materialRepository.Salvar(material); }
// 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); }
// 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); }