public FunctionResult ExecuteInsert(string functionName, List<NTable> parameters, List<string> tableNames)
        {
            try
            {
                _function = _destination.Repository.CreateFunction(functionName);

                for (int i = 0; i < tableNames.Count; i++)
                {
                    RfcStructureMetadata metaData = _destination.Repository.GetStructureMetadata(parameters[i].StructureName);

                    IRfcTable tblInput = _function.GetTable(tableNames[i]);

                    foreach (DataRow row in parameters[i].Parameters.Rows)
                    {
                        IRfcStructure structRow = metaData.CreateStructure();

                        foreach (DataColumn column in parameters[i].Parameters.Columns)
                        {
                            object obj = row[column];
                            structRow.SetValue(column.ToString(), obj);
                        }

                        tblInput.Append(structRow);
                    }
                }

                RfcSessionManager.BeginContext(_destination);
                _function.Invoke(_destination);

                IRfcTable returnTable = _function.GetTable("NOTESRETURN");

                return new FunctionResult
                {
                    IsSuccess = true,
                    Data = new List<object> { returnTable }
                };
            }
            catch (Exception ex)
            {
                return new FunctionResult
                {
                    IsSuccess = false,
                    ErrorMessage = ex.ToString()
                };
            }
        }
        public static void IDOC_INBOUND(RfcServerContext context, IRfcFunction function)
        {
            IRfcTable control = function.GetTable("IDOC_CONTROL_REC_40");
            IRfcTable data = function.GetTable("IDOC_DATA_REC_40");

            DataTable dtIdocControlData = GetDataTableFromRfcTable(control);
            DataTable dtIdocData = GetDataTableFromRfcTable(data);

            for (int i = 0; i < control.RowCount; i++)
            {
                IRfcStructure tControl = control[i];
                string client = ConfigFileTool.SAPGlobalSettings.GetDefaultSapCient();
                string TableName = "T" + tControl["DOCNUM"].GetValue().ToString().Trim();
                SapTable idoctable = new SapTable(client, TableName, "EDI_DD40");
                DataTable dt = GetDataTableFromRfcTable(data);
                idoctable.SaveDataTable(dt);
                processSingleIdoc(tControl, data);
            }

            //DataTable dtcontrol = GetDataTableFromRfcTable(control);

            //foreach (DataRow row in dtcontrol.Rows)
            //{
            //    for (int k = 0; k < dtcontrol.Columns.Count; k++)
            //    {
            //        Console.WriteLine(row[k].ToString());

            //    }
            //}
            //DataTable dtdata = GetDataTableFromRfcTable(data);

            //foreach (DataRow row in dtdata.Rows)
            //{
            //    for (int k = 0; k < dtdata.Columns.Count; k++)
            //    {
            //        Console.WriteLine(row[k].ToString());

            //    }
            //}
        }
示例#3
0
        public Location LocationGetByCode(string locationCode, string warehouseCode)
        {
            Location location = null;

            //using (var db = new DbManager("HandHeldDB"))
            //{
            //    var reader = db.SetCommand(GetSql(43),
            //   db.Parameter("@LocationCode", locationCode),
            //   db.Parameter("@WarehouseCode", warehouseCode))
            //   .ExecuteReader();
            //    while (reader.Read())
            //    {
            //        location = new Location { Code = (string)reader["LocationCode"], WarehouseCode = (string)reader["WarehouseCode"] };
            //    }
            //}
            //var conn = new DBCon.DBSQLDataContext();
            //var locationli = conn.ProductLocations.Where(x => x.LocationCode == locationCode && x.WarehouseCode == warehouseCode).ToList();
            //foreach (var item in locationli)
            //{
            //    location = new Location { Code = item.LocationCode, WarehouseCode = item.WarehouseCode };
            //}
            if (location == null)
            {
                RfcDestination sapRfcDestination = SapHelper.Destination;
                RfcRepository  sapRfcRepository  = sapRfcDestination.Repository;

                char          delimiter  = ':';
                RfcRepository repo       = sapRfcRepository;
                string        bapiName   = "RFC_READ_TABLE";
                IRfcFunction  exportBapi = repo.CreateFunction(bapiName);
                exportBapi.SetValue("QUERY_TABLE", "ZLOCSTRC");
                exportBapi.SetValue("DELIMITER", delimiter);
                exportBapi.SetValue("NO_DATA", "");
                exportBapi.SetValue("ROWSKIPS", 0);
                exportBapi.SetValue("ROWCOUNT", 0);

                RfcStructureMetadata rfcDbOpt = repo.GetStructureMetadata("RFC_DB_OPT");
                var opt = rfcDbOpt.CreateStructure();
                //opt.SetValue("TEXT", @"(APRVFLAG = 'C') AND (USEFLAG = 'X')");
                opt.SetValue("TEXT", string.Format(" (BINLOC = '{0}') ", locationCode));
                var tableOptions = exportBapi.GetTable("OPTIONS");
                tableOptions.Append(opt);

                var                  table = exportBapi.GetTable("FIELDS");
                IRfcStructure        articol;
                RfcStructureMetadata am = repo.GetStructureMetadata("RFC_DB_FLD");
                articol = am.CreateStructure();
                articol.SetValue("FIELDNAME", "BINLOC");
                table.Append(articol);
                articol = am.CreateStructure();
                articol.SetValue("FIELDNAME", "LGORT");
                table.Append(articol);
                articol = am.CreateStructure();
                articol.SetValue("FIELDNAME", "USEFLAG");
                table.Append(articol);

                exportBapi.SetValue("FIELDS", table);
                exportBapi.SetValue("OPTIONS", tableOptions);
                exportBapi.Invoke(sapRfcDestination);
                IRfcTable detail2 = exportBapi.GetTable("DATA");

                string[] value;
                foreach (var item in detail2)
                {
                    value = item.GetString("WA").Replace(" ", "").Split(delimiter);
                    if (((string)value.GetValue(0)).Length != 10)
                    {
                        continue;
                    }
                    if ((string)value.GetValue(2) != "X")
                    {
                        continue;
                    }
                    if (((string)value.GetValue(1)).ToUpper() != warehouseCode.ToUpper())
                    {
                        continue;
                    }
                    location               = new Location();
                    location.Code          = (string)value.GetValue(0);
                    location.WarehouseCode = (string)value.GetValue(1);

                    //using (var db = new DbManager("HandHeldDB"))
                    //{
                    //    //insert new data
                    //    db.SetCommand(GetSql(88),
                    //    db.Parameter("@LocationCode", location.Code),
                    //    db.Parameter("@WarehouseCode", location.WarehouseCode),
                    //    db.Parameter("@isUse", location.IsUse)
                    //    ).ExecuteNonQuery();
                    //}

                    break;
                }
            }


            return(location);

            //List<SAPProxyII.ZLOCSTRC> locations;
            //string key = string.Format(LOCATION_ALL_KEY, DateTime.Now.Date.Day);
            //string keyOld = string.Format(LOCATION_ALL_KEY, DateTime.Now.AddDays(-1).Day);
            //object obj1 = _cacheManager.Get(keyOld);
            //object obj2 = _cacheManager.Get(key);

            //if (obj1 != null)
            //    _cacheManager.Remove(keyOld);

            //if (obj2 != null)
            //    locations = (List<SAPProxyII.ZLOCSTRC>)obj2;
            //else
            //{
            //    using (var sapConnection = new SAP.Connector.SAPConnection(GlobalContext.SapDestination))
            //    {
            //        using (var prx = new SAPProxyII.UWProxy())
            //        {
            //            prx.Connection = sapConnection;

            //            SAPProxyII.ZLOCSTRCTable Tables = new SAPProxyII.ZLOCSTRCTable();
            //            prx.Zdd_Handheld_Get_Zlockstrc(ref Tables);

            //            locations = (List<SAPProxyII.ZLOCSTRC>)CollectionHelper.ConvertTo<SAPProxyII.ZLOCSTRC>(Tables.ToADODataTable());
            //            _cacheManager.Add(key, locations);
            //        }
            //    }
            //}

            //var location = locations.Find(p => p.Binloc == locationCode);
            //if (location != null)
            //{
            //    var locat = new Location();
            //    locat.Code = location.Binloc;
            //    locat.LocationType = location.Loctype;
            //    return locat;
            //}
            //else
            //    return null;
        }
示例#4
0
        public string SAPData()
        {
            try
            {
                String username         = (string)(Session["username"]);
                RfcConfigParameters rfc = new RfcConfigParameters();////Assign values in rfcconfigparameters
                rfc.Add(RfcConfigParameters.Name, ConfigurationManager.AppSettings["Name"].ToString());
                rfc.Add(RfcConfigParameters.AppServerHost, ConfigurationManager.AppSettings["ServerHost"].ToString());
                rfc.Add(RfcConfigParameters.Client, ConfigurationManager.AppSettings["Client"].ToString());
                rfc.Add(RfcConfigParameters.User, ConfigurationManager.AppSettings["User"].ToString());
                rfc.Add(RfcConfigParameters.Password, ConfigurationManager.AppSettings["Password"].ToString());
                rfc.Add(RfcConfigParameters.SystemNumber, ConfigurationManager.AppSettings["SystemNumber"].ToString());
                rfc.Add(RfcConfigParameters.Language, ConfigurationManager.AppSettings["Language"].ToString());;
                rfc.Add(RfcConfigParameters.PoolSize, ConfigurationManager.AppSettings["PoolSize"].ToString());

                RfcDestination mydestination = RfcDestinationManager.GetDestination(rfc);
                RfcRepository  myrepository  = mydestination.Repository;
                IRfcFunction   myfunction    = myrepository.CreateFunction("ZSP_VEND_PO_DETAILS");
                username = vendor_code.Value;
                myfunction.SetValue("I_LIFNR", username);
                String fd = Session["VendorPoDetailsF_date"].ToString();
                String ed = Session["VendorPoDetailsT_date"].ToString();
                myfunction.SetValue("I_FROM_AEDAT", fd);
                myfunction.SetValue("I_TO_AEDAT", ed);
                myfunction.Invoke(mydestination);

                IRfcTable messageTable = myfunction.GetTable("ITAB", true);
                int       rowIndex     = 0;
                foreach (IRfcStructure row in messageTable)
                {
                    String LIFNR      = row.GetString("LIFNR");
                    String EBELN      = row.GetString("EBELN");
                    String BSART      = row.GetString("BSART");
                    String WERKS      = row.GetString("WERKS");
                    String AEDAT      = row.GetString("AEDAT");
                    String EBELP      = row.GetString("EBELP");
                    String MENGE      = row.GetString("MENGE");
                    String MEINS      = row.GetString("MEINS");
                    String NETWR      = row.GetString("NETWR");
                    String DMBTR      = row.GetString("DMBTR");
                    String DELIV_DATE = row.GetString("DELIV_DATE");
                    block2  += "<tr>";
                    block2  += "<td>" + LIFNR + "</td>";
                    block2  += "<td>" + EBELN + "</td>";
                    block2  += "<td>" + BSART + "</td>";
                    block2  += "<td>" + WERKS + "</td>";
                    block2  += "<td>" + AEDAT + "</td>";
                    block2  += "<td>" + EBELP + "</td>";
                    block2  += "<td>" + MENGE + "</td>";
                    block2  += "<td>" + MEINS + "</td>";
                    block2  += "<td>" + NETWR + "</td>";
                    block2  += "<td>" + DMBTR + "</td>";
                    block2  += "<td>" + DELIV_DATE + "</td>";
                    block2  += "</tr>";
                    rowIndex = rowIndex + 1;
                }
                return(block2);
            }
            catch (Exception ex)
            {
            }
            return(block2);
        }
示例#5
0
            // 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);
            }
示例#6
0
        public List <PEntidades.FV60XVerificar> exec_connSAP(string xprov, string xxblrn, string xbladti, string xbladtf)
        //public List<PEntidades.FV60> exec_connSAP(List<string> listaProveed, string xxblrn, string xbladti, string xbladtf)
        {
            PPersistencia.SAPConn psc  = new PPersistencia.SAPConn();
            List <ParamsCallSAP>  list = new List <ParamsCallSAP>(); //tipo de parametro  S-tring  B-oolean Y-byte  D-ecimal
            ParamsCallSAP         pr   = new ParamsCallSAP();

            pr         = new ParamsCallSAP();
            pr.NameVar = "XBLNR";
            pr.ValVar  = xxblrn;
            pr.TipVar  = "S";
            list.Add(pr);

            pr         = new ParamsCallSAP();
            pr.NameVar = "BLDATI";
            pr.ValVar  = xbladti;
            pr.TipVar  = "S";
            list.Add(pr);

            pr         = new ParamsCallSAP();
            pr.NameVar = "BLDATF";
            pr.ValVar  = xbladtf;
            pr.TipVar  = "S";
            list.Add(pr);

            List <TablasCallSAP> listT = new List <TablasCallSAP>();
            TablasCallSAP        tr    = new TablasCallSAP();

            List <ParamsCallSAP> listTb = new List <ParamsCallSAP>();

            pr         = new ParamsCallSAP();
            pr.NameVar = "LIFNR";
            pr.ValVar  = xprov;          //"1000082";  "1000072" 1000037;  algunos acreedores para FV60 - gonher
            pr.TipVar  = "S";
            listTb.Add(pr);

            tr.TablaVar  = "PROVEEDOR_TB";
            tr.CamposVar = listTb;
            listT.Add(tr);

            IRfcFunction resCon = psc.conSAP("Z_DFAC_FV60_LIST", list, listT);
            List <PEntidades.FV60XVerificar> listF = new List <PEntidades.FV60XVerificar>();

            PEntidades.FV60XVerificar objFV60;
            IRfcTable tb = resCon.GetTable(0);

            if (tb.Count == 0)
            {
                msg = "No se encontraron resultados";
            }

            for (int o = 0; o < tb.Count; o++)
            {
                tb.CurrentIndex    = o;
                objFV60            = new PEntidades.FV60XVerificar();
                objFV60.BUKRS      = tb.CurrentRow.GetString("BUKRS");
                objFV60.BELNR      = tb.CurrentRow.GetString("BELNR");
                objFV60.GJAHR      = tb.CurrentRow.GetString("GJAHR");
                objFV60.BLDAT      = tb.CurrentRow.GetString("BLDAT");
                objFV60.BUDAT      = tb.CurrentRow.GetString("BUDAT");
                objFV60.XBLNR      = tb.CurrentRow.GetString("XBLNR");
                objFV60.WAERS      = tb.CurrentRow.GetString("WAERS");
                objFV60.KURSF      = decimal.Parse(tb.CurrentRow.GetString("KURSF"));
                objFV60.LIFNR      = tb.CurrentRow.GetString("LIFNR");
                objFV60.DMBTR      = decimal.Parse(tb.CurrentRow.GetString("DMBTR"));
                objFV60.WRBTR      = decimal.Parse(tb.CurrentRow.GetString("WRBTR"));
                objFV60.WMWST      = decimal.Parse(tb.CurrentRow.GetString("WMWST"));
                objFV60.TIPOLINEA  = tb.CurrentRow.GetString("TIPOLINEA");
                objFV60.ZCOUNT     = tb.CurrentRow.GetInt("ZCOUNT");
                objFV60.INCIDENCIA = tb.CurrentRow.GetString("INCIDENCIA");
                //objFV60.InsidenciaPersonal = tb.CurrentRow.GetString("InsidenciaPersonal");
                //objFV60.DescripcionErrorSAP = tb.CurrentRow.GetString("DescripcionErrorSAP");
                //objFV60.DescripcionErrorSAT = tb.CurrentRow.GetString("DescripcionErrorSAT");

                if (tb.CurrentRow.GetString("MSG_VARIOS") == null)
                {
                    objFV60.msgVarios = "";
                }
                else
                {
                    objFV60.msgVarios = tb.CurrentRow.GetString("MSG_VARIOS");
                }
                objFV60.esPrimerCarga = false;

                listF.Add(objFV60);
            }
            return(listF);
        }
示例#7
0
        public String CriaOrdem(string TPO, string Equipamento, string centro_p, string desc_ordem, string dt_ini, string dt_fim, string desc_breve, string Operacao, string Complemento_ChavePM03, string Componente_L, string Componente_N)
        {
            IRfcFunction objRfc = repo.CreateFunction("ZRFC_FROTAWEB_CRIAORDEM");

            /*CABEÇALHO*/
            IRfcStructure objEstrutura = objRfc.GetStructure("I_CAB");

            objEstrutura.SetValue("TP_ORDEM", TPO);
            objEstrutura.SetValue("EQUIPAMENTO", Equipamento);
            if (centro_p == "0301" || centro_p == "301")
            {
                centro_p = "B301";
            }
            objEstrutura.SetValue("CENTRO_PLANEJAMENTO", centro_p);
            objEstrutura.SetValue("DESC_ORDEM", desc_ordem);
            objEstrutura.SetValue("DT_INICIO", dt_ini);
            objEstrutura.SetValue("DT_FIM", dt_fim);


            /* OPERAÇÃO  */

            /*LAY-OUT:
             * CASO A CHAVE SEJA PM01(SERVIÇOS INTERNO/PRÓPRIO), BASTA CHAMAR ESTE BLOCO, CASO SEJA PM03(SERVIÇOS DE TERCEIROS, DEVE-SE CHAMAR ESTE BLOCO E O BLOCO LOGO ABAIXO DE COMPLEMENTO EM CASO DE PM03)
             * COMO PODEM TER DIVERSAS OPERAÇÕES, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO:
             * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;)
             * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (])
             * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(])
             * OPERACAO;CENTRO_TRABALHO; CHAVE_CONTROLE;TEXTO_BREVE;TEXTO_DESC;CENTRO
             */

            if (!String.IsNullOrEmpty(Operacao))
            {
                string   valor  = Operacao;
                string[] linhas = Regex.Split(valor, "]");
                string[] Colunas;
                string   OPERACAO, CENTRO_TRABALHO, CHAVE_CONTROLE, TEXTO_BREVE, TEXTO_DESC, CENTRO;

                for (int i = 0; i <= linhas.Length - 1; i++)
                {
                    Colunas         = Regex.Split(linhas[i], ";");
                    OPERACAO        = Colunas[0];
                    CENTRO_TRABALHO = Colunas[1];
                    CHAVE_CONTROLE  = Colunas[2];
                    TEXTO_BREVE     = Colunas[3];
                    TEXTO_DESC      = Colunas[4];
                    CENTRO          = Colunas[5];

                    IRfcTable objPM01 = objRfc.GetTable("T_PM01");
                    objPM01.Append();
                    objPM01.SetValue("OPERACAO", OPERACAO);
                    objPM01.SetValue("CENTRO_TRABALHO", CENTRO_TRABALHO);
                    objPM01.SetValue("CHAVE_CONTROLE", CHAVE_CONTROLE);
                    objPM01.SetValue("TEXTO_BREVE", TEXTO_BREVE);
                    objPM01.SetValue("TEXTO_DESC", TEXTO_DESC);
                    objPM01.SetValue("CENTRO", CENTRO);
                }
            }

            /* COMPLEMENTO EM CASO DE CHAVE PM03 - SERVIÇO EXTERNO/TERCEIRO  */

            /*LAY-OUT:
             * CASO A CHAVE SEJA PM03(SERVIÇOS EXTERNOS/TERCEIRO) NO BLOCO ACIMA, É PRECISO CHAMAR ESTE BLOCO)
             * COMO PODEM TER DIVERSOS COMPLEMENTOS OPERAÇÕES DE OPERAÇÃO COM CHAVE PM03, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO:
             * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;)
             * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (])
             * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(])
             * OPERACAO; CENTRO_TRABALHO; CHAVE_CONTROLE; TEXTO_BREVE; TEXTO_DESC; CENTRO; GRUPO_MERCADORIAS; GRUPO_COMPRAS; REQUISITANTE; FORNECEDOR; ACOMPANHAMENTO; SERVICO; QUANTIDADE; UN_MEDIDA; RECEBEDOR;
             */
            if (!String.IsNullOrEmpty(Complemento_ChavePM03))
            {
                string   valor  = Complemento_ChavePM03;
                string[] linhas = Regex.Split(valor, "]");
                string[] Colunas;
                string   OPERACAO, CENTRO_TRABALHO, CHAVE_CONTROLE, TEXTO_BREVE, TEXTO_DESC, CENTRO, GRUPO_MERCADORIAS, GRUPO_COMPRAS, REQUISITANTE, FORNECEDOR, ACOMPANHAMENTO, SERVICO, QUANTIDADE, UN_MEDIDA, RECEBEDOR, ORG_COMPRAS;

                for (int i = 0; i <= linhas.Length - 1; i++)
                {
                    Colunas           = Regex.Split(linhas[i], ";");
                    OPERACAO          = Colunas[0];
                    CENTRO_TRABALHO   = Colunas[1];
                    CHAVE_CONTROLE    = Colunas[2];
                    TEXTO_BREVE       = Colunas[3];
                    TEXTO_DESC        = Colunas[4];
                    CENTRO            = Colunas[5];
                    GRUPO_MERCADORIAS = Colunas[6];
                    GRUPO_COMPRAS     = Colunas[7];
                    REQUISITANTE      = Colunas[8];
                    FORNECEDOR        = Colunas[9];
                    ACOMPANHAMENTO    = Colunas[10];
                    SERVICO           = Colunas[11];
                    QUANTIDADE        = Colunas[12];
                    UN_MEDIDA         = Colunas[13];
                    RECEBEDOR         = Colunas[14];
                    ORG_COMPRAS       = Colunas[15];

                    IRfcTable objPM03 = objRfc.GetTable("T_PM03");
                    objPM03.Append();
                    objPM03.SetValue("OPERACAO", OPERACAO);
                    objPM03.SetValue("CENTRO_TRABALHO", CENTRO_TRABALHO);
                    objPM03.SetValue("CHAVE_CONTROLE", CHAVE_CONTROLE);
                    objPM03.SetValue("TEXTO_BREVE", TEXTO_BREVE);
                    objPM03.SetValue("TEXTO_DESC", TEXTO_DESC);
                    objPM03.SetValue("CENTRO", CENTRO);
                    objPM03.SetValue("GRUPO_MERCADORIAS", GRUPO_MERCADORIAS);
                    objPM03.SetValue("GRUPO_COMPRAS", GRUPO_COMPRAS);
                    objPM03.SetValue("REQUISITANTE", REQUISITANTE);
                    objPM03.SetValue("FORNECEDOR", FORNECEDOR);
                    objPM03.SetValue("ACOMPANHAMENTO", ACOMPANHAMENTO);
                    objPM03.SetValue("SERVICO", SERVICO);
                    objPM03.SetValue("QUANTIDADE", QUANTIDADE);
                    objPM03.SetValue("UN_MEDIDA", UN_MEDIDA);
                    objPM03.SetValue("RECEBEDOR", RECEBEDOR);
                    objPM03.SetValue("Org_compras", ORG_COMPRAS);
                }
            }


            /*COMPONENTE L - PEÇAS PRÓPRIAS/ESTOQUE*/

            /*COMPONENTES/PEÇAS DO ESTOQUE DA ORDEM DE MANUTENÇÃO*/

            /*LAY-OUT:
             * COMO PODEM TER DIVERSAS PEÇAS, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO:
             * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;)
             * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (])
             * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(])
             * OPERACAO;TEXTO_DESC; UN_MEDIDA;COMPONENTE;QUANT_NECESSARIA;TP_ITEM;DEPOSITO;CENTRO]TEXTO_DESC; UN_MEDIDA;COMPONENTE;QUANT_NECESSARIA;TP_ITEM;DEPOSITO;CENTRO
             */

            if (!String.IsNullOrEmpty(Componente_L))
            {
                string   valor  = Componente_L;
                string[] linhas = Regex.Split(valor, "]");
                string[] Colunas;
                string   OPERACAO, TEXTO_DESC, UN_MEDIDA, COMPONENTE, QUANT_NECESSARIA, TP_ITEM, DEPOSITO, CENTRO;

                for (int i = 0; i <= linhas.Length - 1; i++)
                {
                    Colunas          = Regex.Split(linhas[i], ";");
                    OPERACAO         = Colunas[0];
                    TEXTO_DESC       = Colunas[1];
                    UN_MEDIDA        = Colunas[2];
                    COMPONENTE       = Colunas[3];
                    QUANT_NECESSARIA = Colunas[4];
                    TP_ITEM          = Colunas[5];
                    DEPOSITO         = Colunas[6];
                    CENTRO           = Colunas[7];

                    IRfcTable objCompL = objRfc.GetTable("T_COMPL");
                    objCompL.Append();
                    objCompL.SetValue("OPERACAO", OPERACAO);
                    objCompL.SetValue("TEXTO_DESC", TEXTO_DESC);
                    objCompL.SetValue("UN_MEDIDA", UN_MEDIDA);
                    objCompL.SetValue("COMPONENTE", COMPONENTE);
                    objCompL.SetValue("QUANT_NECESSARIA", QUANT_NECESSARIA);
                    objCompL.SetValue("TP_ITEM", TP_ITEM);
                    objCompL.SetValue("DEPOSITO", DEPOSITO);
                    objCompL.SetValue("CENTRO", CENTRO);
                }
            }

            /*COMPONENTE N - PEÇAS COMPRADAS/DÉBITO DIRETO*/

            /*COMPONENTES/PEÇAS COMPRA DIRETA DA ORDEM DE MANUTENÇÃO*/

            /*LAY-OUT:
             * COMO PODEM TER DIVERSAS PEÇAS, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO:
             * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;)
             * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (])
             * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(])
             * OPERACAO;OPERACAO, GRUPO_COMPRAS; REQUISITANTE; FORNECEDOR; ACOMPANHAMENTO; UN_MEDIDA; COMPONENTE; QUANT_NECESSARIA; TP_ITEM; DEPOSITO; CENTRO; RECEBEDOR; MAT_FORNECEDOR]
             */

            if (!String.IsNullOrEmpty(Componente_N))
            {
                string   valor  = Componente_N;
                string[] linhas = Regex.Split(valor, "]");
                string[] Colunas;
                string   OPERACAO, GRUPO_COMPRAS, REQUISITANTE, FORNECEDOR, ACOMPANHAMENTO, UN_MEDIDA, COMPONENTE, QUANT_NECESSARIA, TP_ITEM, DEPOSITO, CENTRO, RECEBEDOR, MAT_FORNECEDOR, ORG_COMPRAS, TEXTO_DESC;

                for (int i = 0; i <= linhas.Length - 1; i++)
                {
                    Colunas          = Regex.Split(linhas[i], ";");
                    OPERACAO         = Colunas[0];
                    GRUPO_COMPRAS    = Colunas[1];
                    REQUISITANTE     = Colunas[2];
                    FORNECEDOR       = Colunas[3];
                    ACOMPANHAMENTO   = Colunas[4];
                    UN_MEDIDA        = Colunas[5];
                    COMPONENTE       = Colunas[6];
                    QUANT_NECESSARIA = Colunas[7];
                    TP_ITEM          = Colunas[8];
                    DEPOSITO         = Colunas[9];
                    CENTRO           = Colunas[10];
                    RECEBEDOR        = Colunas[11];
                    MAT_FORNECEDOR   = Colunas[12];
                    ORG_COMPRAS      = Colunas[13];
                    TEXTO_DESC       = Colunas[14];

                    IRfcTable objCompN = objRfc.GetTable("T_COMPN");
                    objCompN.Append();
                    objCompN.SetValue("OPERACAO", OPERACAO);
                    objCompN.SetValue("GRUPO_COMPRAS", GRUPO_COMPRAS);
                    objCompN.SetValue("REQUISITANTE", REQUISITANTE);
                    objCompN.SetValue("FORNECEDOR", FORNECEDOR);
                    objCompN.SetValue("ACOMPANHAMENTO", ACOMPANHAMENTO);
                    objCompN.SetValue("UN_MEDIDA", UN_MEDIDA);
                    objCompN.SetValue("COMPONENTE", COMPONENTE);
                    objCompN.SetValue("QUANT_NECESSARIA", QUANT_NECESSARIA);
                    objCompN.SetValue("TP_ITEM", TP_ITEM);
                    objCompN.SetValue("DEPOSITO", DEPOSITO);
                    objCompN.SetValue("CENTRO", CENTRO);
                    objCompN.SetValue("RECEBEDOR", RECEBEDOR);
                    objCompN.SetValue("MAT_FORNECEDOR", MAT_FORNECEDOR);
                    objCompN.SetValue("ORG_COMPRAS", ORG_COMPRAS);
                    objCompN.SetValue("TEXTO_DESC", TEXTO_DESC);
                }
            }

            objRfc.Invoke(dest);

            IRfcTable tabelaSAP = objRfc.GetTable("T_RETURN_REQ");

            return(tabelaSAP.ToString() + " / " + objRfc.GetTable("T_RETURN_BAPI").ToString());
        }
示例#8
0
        public void anticiposopen(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA
                                  , string P_DOCUMENTO, string P_RUT, string P_SOCIEDAD, string P_LAND, string TipoBusqueda)

        {
            ObjDatosAnticipos.Clear();
            Retorno.Clear();
            protesto     = "";
            errormessage = "";
            IRfcTable     lt_t_documentos;
            IRfcStructure lt_retorno;

            //  PART_ABIERTAS  PART_ABIERTAS_resp;
            T_DOCUMENTOS ANTICIPOS_resp;
            ESTADO       retorno_resp;

            //Conexion a SAP
            //connectorSap.idioma = "ES";
            //connectorSap.idSistema = "INS";
            //connectorSap.instancia = "00";
            //connectorSap.mandante = "400";
            //connectorSap.paswr = P_PASSWORD;
            //connectorSap.sapRouter = "/H/64.76.139.78/H/";
            //connectorSap.user = P_UNAME;
            //connectorSap.server = "10.9.100.4";
            //frm.txtIdSistema.Text = txtIdSistema.Text;
            //frm.txtInstancia.Text = txtInstancia.Text;
            //frm.txtMandante.Text = txtMandante.Text;
            //frm.txtSapRouter.Text = txtSapRouter.Text;
            //frm.txtServer.Text = txtServer.Text;
            //frm.txtIdioma.Text = txtIdioma.Text;
            connectorSap.idioma    = P_IDIOMA;
            connectorSap.idSistema = P_IDSISTEMA;
            connectorSap.instancia = P_INSTANCIA;
            connectorSap.mandante  = P_MANDANTE;
            connectorSap.paswr     = P_PASSWORD;
            connectorSap.sapRouter = P_SAPROUTER;
            connectorSap.user      = P_UNAME;
            connectorSap.server    = P_SERVER;

            string retval = connectorSap.connectionsSAP();

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

                IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_GET_ANT");
                BapiGetUser.SetValue("DOCUMENTO", P_DOCUMENTO);
                BapiGetUser.SetValue("LAND", P_LAND);
                BapiGetUser.SetValue("RUT", P_RUT);
                BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD);
                //BapiGetUser.SetValue("PROT", P_PROTESTO);
                BapiGetUser.Invoke(SapRfcDestination);
                protesto = BapiGetUser.GetString("PE_PROTESTADO");

                lt_t_documentos = BapiGetUser.GetTable("T_DOCUMENTOS");
                lt_retorno      = BapiGetUser.GetStructure("SE_ESTATUS");
                //lt_PART_ABIERTAS = BapiGetUser.GetTable("ZCLSP_TT_LISTA_DOCUMENTOS");
                try
                {
                    if (lt_t_documentos.Count > 0)
                    {
                        //LLenamos la tabla de salida lt_DatGen
                        for (int i = 0; i < lt_t_documentos.RowCount; i++)
                        {
                            try
                            {
                                lt_t_documentos.CurrentIndex = i;
                                ANTICIPOS_resp = new T_DOCUMENTOS();

                                ANTICIPOS_resp.NDOCTO = lt_t_documentos[i].GetString("NDOCTO");
                                string Monto  = "";
                                int    indice = 0;
                                //*******
                                if (lt_t_documentos[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_t_documentos[i].GetString("MONTOF").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux        = Convert.ToDecimal(Valor);
                                    string  Cualquiernombre = string.Format("{0:0,0}", ValorAux);
                                    ANTICIPOS_resp.MONTOF = Cualquiernombre;
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_t_documentos[i].GetString("MONTOF"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    ANTICIPOS_resp.MONTOF = string.Format("{0:0,0.##}", ValorAux);
                                }

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

                                //if (lt_t_documentos[i].GetString("MONTO") == "")
                                //{
                                //    indice = lt_t_documentos[i].GetString("MONTO").IndexOf(',');
                                //    Monto = lt_t_documentos[i].GetString("MONTO").Substring(0, indice - 1);
                                //    ANTICIPOS_resp.MONTO = Monto;
                                //}
                                //else
                                //{
                                //    ANTICIPOS_resp.MONTO = lt_t_documentos[i].GetString("MONTO");
                                //}
                                ANTICIPOS_resp.MONEDA          = lt_t_documentos[i].GetString("MONEDA");
                                ANTICIPOS_resp.FECVENCI        = lt_t_documentos[i].GetString("FECVENCI");
                                ANTICIPOS_resp.CONTROL_CREDITO = lt_t_documentos[i].GetString("CONTROL_CREDITO");
                                ANTICIPOS_resp.CEBE            = lt_t_documentos[i].GetString("CEBE");
                                ANTICIPOS_resp.COND_PAGO       = lt_t_documentos[i].GetString("COND_PAGO");
                                ANTICIPOS_resp.RUTCLI          = lt_t_documentos[i].GetString("RUTCLI");
                                ANTICIPOS_resp.NOMCLI          = lt_t_documentos[i].GetString("NOMCLI");
                                ANTICIPOS_resp.ESTADO          = lt_t_documentos[i].GetString("ESTADO");
                                ANTICIPOS_resp.ICONO           = lt_t_documentos[i].GetString("ICONO");
                                ANTICIPOS_resp.DIAS_ATRASO     = lt_t_documentos[i].GetString("DIAS_ATRASO");
                                //if (lt_t_documentos[i].GetString("MONTOF_ABON") == "")
                                //{
                                //    indice = lt_t_documentos[i].GetString("MONTO_ABONADO").IndexOf(',');
                                //    Monto = lt_t_documentos[i].GetString("MONTO_ABONADO").Substring(0, indice - 1);
                                //    ANTICIPOS_resp.MONTOF = Monto;
                                //}
                                //else
                                //{
                                //    ANTICIPOS_resp.MONTOF_ABON = lt_t_documentos[i].GetString("MONTOF_ABON");
                                //}
                                if (lt_t_documentos[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_t_documentos[i].GetString("MONTOF_ABON").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux        = Convert.ToDecimal(Valor);
                                    string  Cualquiernombre = string.Format("{0:0,0}", ValorAux);
                                    ANTICIPOS_resp.MONTOF_ABON = Cualquiernombre;
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_t_documentos[i].GetString("MONTOF_ABON"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    ANTICIPOS_resp.MONTOF_ABON = string.Format("{0:0,0.##}", ValorAux);
                                }

                                //if (lt_t_documentos[i].GetString("MONTOF_PAGAR") == "")
                                //{
                                //    indice = lt_t_documentos[i].GetString("MONTO_PAGAR").IndexOf(',');
                                //    Monto = lt_t_documentos[i].GetString("MONTO_PAGAR").Substring(0, indice - 1);
                                //    ANTICIPOS_resp.MONTOF = Monto;
                                //}
                                //else
                                //{
                                //    ANTICIPOS_resp.MONTOF_PAGAR = lt_t_documentos[i].GetString("MONTOF_PAGAR");
                                //}
                                if (lt_t_documentos[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_t_documentos[i].GetString("MONTOF_PAGAR").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux        = Convert.ToDecimal(Valor);
                                    string  Cualquiernombre = string.Format("{0:0,0}", ValorAux);
                                    ANTICIPOS_resp.MONTOF_PAGAR = Cualquiernombre;
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_t_documentos[i].GetString("MONTOF_PAGAR"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    ANTICIPOS_resp.MONTOF_PAGAR = string.Format("{0:0,0.##}", ValorAux);
                                }
                                ANTICIPOS_resp.NREF         = lt_t_documentos[i].GetString("NREF");
                                ANTICIPOS_resp.FECHA_DOC    = lt_t_documentos[i].GetString("FECHA_DOC");
                                ANTICIPOS_resp.COD_CLIENTE  = lt_t_documentos[i].GetString("COD_CLIENTE");
                                ANTICIPOS_resp.SOCIEDAD     = lt_t_documentos[i].GetString("SOCIEDAD");
                                ANTICIPOS_resp.CLASE_DOC    = lt_t_documentos[i].GetString("CLASE_DOC");
                                ANTICIPOS_resp.CLASE_CUENTA = lt_t_documentos[i].GetString("CLASE_CUENTA");
                                ANTICIPOS_resp.CME          = lt_t_documentos[i].GetString("CME");
                                ANTICIPOS_resp.ACC          = lt_t_documentos[i].GetString("ACC");
                                ObjDatosAnticipos.Add(ANTICIPOS_resp);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message + ex.StackTrace);
                                System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("No existe(n) registro(s)");
                    }

                    String Mensaje = "";
                    if (lt_retorno.Count > 0)
                    {
                        retorno_resp = new ESTADO();
                        for (int i = 0; i < lt_retorno.Count(); i++)
                        {
                            // lt_retorno.CurrentIndex = i;

                            retorno_resp.TYPE       = lt_retorno.GetString("TYPE");
                            retorno_resp.ID         = lt_retorno.GetString("ID");
                            retorno_resp.NUMBER     = lt_retorno.GetString("NUMBER");
                            retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                            retorno_resp.LOG_NO     = lt_retorno.GetString("LOG_NO");
                            retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO");
                            retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                            retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1");
                            if (lt_retorno.GetString("TYPE") == "S")
                            {
                                Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1");
                            }
                            retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2");
                            retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3");
                            retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4");
                            retorno_resp.PARAMETER  = lt_retorno.GetString("PARAMETER");
                            retorno_resp.ROW        = lt_retorno.GetString("ROW");
                            retorno_resp.FIELD      = lt_retorno.GetString("FIELD");
                            retorno_resp.SYSTEM     = lt_retorno.GetString("SYSTEM");
                            Retorno.Add(retorno_resp);
                        }
                        //System.Windows.MessageBox.Show(Mensaje);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message + ex.StackTrace);
                    System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                }
            }
            else
            {
                errormessage = retval;
            }
            GC.Collect();
        }
示例#9
0
        /// <summary>
        /// 取得商品(作品)主檔
        /// </summary>
        /// <param name="P_DATE_from">異動日期起始,yyyyMMdd</param>
        /// <param name="P_DATE_TO">異動日期迄止,yyyyMMdd</param>
        /// <param name="P_DESC">作品名</param>
        /// <param name="P_YEAR">年代,傳入格式%yyyy%yyyy%,兩個年份間,及前後加百分比</param>
        /// <param name="P_NAME1">作者名名</param>
        /// <returns></returns>
        public static List <ET_MASTER> GetSap_Z_MM_ZHAW_CUBE1(string P_DATE_from, string P_DATE_TO, string P_DESC = "", string P_YEAR = "", string P_NAME1 = "")
        {
            IDestinationConfiguration ID = new MyBackendConfig();
            IRfcTable IRetTable          = null;

            bool             bRegistered   = false;
            List <ET_MASTER> ET_MASTERList = new List <ET_MASTER>();

            try
            {
                RfcDestination rfcDest = null;
                try
                {
                    rfcDest     = RfcDestinationManager.GetDestination("PRD");
                    bRegistered = true;
                }
                catch (Exception ex)
                {
                    if (ex.GetType().Name == "RfcInvalidStateException")
                    {
                    }
                }
                finally
                {
                    if (rfcDest == null && bRegistered == false)
                    {
                        bRegistered = true;
                        RfcDestinationManager.RegisterDestinationConfiguration(ID);
                        rfcDest = RfcDestinationManager.GetDestination("PRD");
                    }
                }
                RfcRepository rfcRepo = rfcDest.Repository;
                IRfcFunction  IReader = rfcRepo.CreateFunction("Z_MM_ZHAW_CUBE1");
                IReader.SetValue("P_DATE_from", P_DATE_from);
                IReader.SetValue("P_DATE_TO", P_DATE_TO);
                IReader.SetValue("P_DESC", P_DESC);
                IReader.SetValue("P_YEAR", P_YEAR);
                IReader.SetValue("P_NAME1", P_NAME1);
                //每幾筆資料切成一個檔案
                //IReader.SetValue("COUNT", "1000");
                //執行查詢
                IReader.Invoke(rfcDest);
                IRetTable     = IReader.GetTable("ET_MASTER");
                ET_MASTERList = IRetTable.AsEnumerable().Select(x =>
                                                                new ET_MASTER()
                {
                    MATNR        = x.GetString("MATNR") ?? "",
                    ZZCT         = x.GetString("ZZCT") ?? "",
                    NAME1        = x.GetString("NAME1") ?? "",
                    ZFPRESERVE_D = x.GetString("ZFPRESERVE_D") ?? "",
                    ZZSE         = x.GetString("ZZSE") ?? "",
                    LOCATION     = x.GetString("LOCATION") ?? "",
                    STATUS       = x.GetString("STATUS") ?? "",
                    STPRS        = x.GetString("STPRS") ?? "",
                    NETPR        = x.GetString("NETPR") ?? "",
                    WAERS        = x.GetString("WAERS") ?? "",
                    ERDAT        = x.GetString("ERDAT") ?? "",
                    UDATE        = x.GetString("UDATE") ?? ""
                }).ToList();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (bRegistered)
                {
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
                }
            }

            return(ET_MASTERList);
        }
示例#10
0
        /// <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;
                    }
                }
            }
        }
示例#11
0
        /// <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);
                    }
                }
            }
        }
示例#12
0
        /// <summary>
        /// Pass input parameters to SAP remote function call
        /// </summary>
        /// <param name="function"></param>
        /// <param name="meta"></param>
        /// <param name="rfc"></param>
        private void PrepareInputParameters( SAPFunction function, RfcFunctionMetadata meta, IRfcFunction rfc)
        {
            Dictionary<String,IRfcTable> _table = new Dictionary<String,IRfcTable>();
            Dictionary<String,IRfcStructure> _structure = new Dictionary<String,IRfcStructure>();
            foreach (var iin in function.InputParameters)
            {
                String paramName = iin.Key;
                String paramValue = iin.Value;
                String secondLevelStructure = string.Empty;
                int sapFieldIndex = -1;
                int tableRowIndex = -1;

                string[] paramDetail = paramName.Split(':');
                if(paramDetail.Length == 1) {
                    sapFieldIndex = meta.TryNameToIndex(paramName);
                } else if (paramDetail.Length == 2) {
                    secondLevelStructure = paramDetail[0];
                    paramName = paramDetail[1];

                    if (secondLevelStructure.Contains('[') && secondLevelStructure.Contains(']'))
                    {
                        sapFieldIndex = meta.TryNameToIndex(secondLevelStructure.Split('[')[0]);
                        string arrayIndex = secondLevelStructure.Split('[')[1].Split(']')[0];
                        Int32.TryParse(arrayIndex, out tableRowIndex);
                    }
                    else
                    {
                        sapFieldIndex = meta.TryNameToIndex(secondLevelStructure);
                    }
                }

                if (sapFieldIndex != -1)
                {
                    RfcElementMetadata elementMeta = rfc.GetElementMetadata(sapFieldIndex);
                    RfcDataType type = elementMeta.DataType;
                    String dataType = type.ToString();
                    function.DataType.Add(secondLevelStructure + ":" + paramName, ConvertDataType(type));
                    if (dataType.Equals(SAPFunction.STRUCTURE))
                    {
                        IRfcStructure structure;
                        if (!_structure.TryGetValue(secondLevelStructure, out structure))
                        {
                            structure = rfc.GetStructure(secondLevelStructure);
                            _structure.Add(secondLevelStructure, structure);
                        }
                        structure.SetValue(paramName, paramValue);
                        function.Length.Add(paramName + ":" + secondLevelStructure, structure.GetElementMetadata(paramName).NucLength);
                    }
                    else if (dataType.Equals(SAPFunction.TABLE))
                    {
                        if (secondLevelStructure.Contains('[') && secondLevelStructure.Contains(']'))
                        {
                            IRfcTable table;
                            if (!_table.TryGetValue(secondLevelStructure.Split('[')[0], out table))
                            {
                                table = rfc.GetTable(secondLevelStructure.Split('[')[0]);
                                _table.Add(secondLevelStructure.Split('[')[0], table);
                            }

                            try
                            {
                                table.ElementAt(tableRowIndex);
                            }
                            catch (ArgumentOutOfRangeException)
                            {
                                table.Insert(1, tableRowIndex);
                            }
                            table.CurrentIndex = tableRowIndex;

                            //rfc.Invoke(this.Destination);

                            RfcElementMetadata em = table.GetElementMetadata(paramName);

                            string s = String.Format("{0, " + table.GetElementMetadata(paramName).NucLength + "}", paramValue);

                            table.SetValue(paramName, s.Trim());
                            function.Length.Add(paramName + ":" + secondLevelStructure, table.GetElementMetadata(paramName).NucLength);
                        }
                    }
                    else
                    {
                        rfc.SetValue(paramName, paramValue);
                        function.Length.Add(paramName, rfc.GetElementMetadata( paramName ).NucLength);
                    }
                }
            }
        }
        public FunctionResult ExecuteSelect(string functionName, List<NParameter> parameters, List<string> tableNames)
        {
            try
            {
                _function = _destination.Repository.CreateFunction(functionName);

                foreach (NParameter param in parameters)
                    _function.SetValue(param.Name, param.Value);

                _function.Invoke(_destination);

                List<object> tables = tableNames.Select(table => _function.GetTable(table)).Cast<object>().ToList();

                return new FunctionResult()
                {
                    IsSuccess = true,
                    Data = tables
                };
            }
            catch (Exception ex)
            {
                return new FunctionResult
                {
                    IsSuccess = false,
                    ErrorMessage = ex.ToString()
                };
            }
        }
示例#14
0
            // 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
            }
示例#15
0
 /// <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);
 }
示例#16
0
        internal void RefreshFieldsAndSelections()
        {
            if (this._UserGroup.Trim().Equals("") || this._Name.Trim().Equals(""))
            {
                throw new SAPException(Messages.PleasemakesurethatthefieldsUserGroupandNamearefilledcorrectly);
            }
            //RFCFunction function = RFCFunctionFactory.GenerateFunctionObjectForRSAQ_REMOTE_QUERY_FIELDLIST(this._con.IsUnicode);
            IRfcFunction function = _des.Repository.CreateFunction("RSAQ_REMOTE_QUERY_FIELDLIST");

            //function.Connection = this._con;
            if (this._WorkArea == WorkSpace.StandardArea)
            {
                function.SetValue("WORKSPACE", " ");
            }
            else
            {
                function.SetValue("WORKSPACE", "X");
            }
            function["QUERY"].SetValue(this._Name);
            function.SetValue("USERGROUP", this._UserGroup);
            //function.Exports["USERGROUP"].ParamValue = this._UserGroup;
            try
            {
                function.Invoke(_des);
                // function.Execute();
                IRfcTable table  = function.GetTable("FIELDS");
                IRfcTable table2 = function.GetTable("SEL_FIELDS");
                this._Fields.Clear();
                this._SelectionParameters.Clear();
                string str = "";
                foreach (IRfcStructure structure in table.ToList())
                {
                    if (str == "")
                    {
                        str = structure["LID"].GetValue().ToString();
                    }
                    if (str == structure["LID"].GetValue().ToString())
                    {
                        QueryField newParameter = new QueryField(structure["NAME"].GetValue().ToString(), structure["TYPE"].GetValue().ToString(), Convert.ToInt32(structure["OLENG"].GetValue()), Convert.ToInt32(structure["DECIMALS"].GetValue()), "");
                        this._Fields.Add(newParameter);
                        if ((!structure["CURRY"].GetValue().ToString().Trim().Equals("") && !structure["CURRY"].GetValue().ToString().Trim().Equals("W")) && !structure["CURRY"].GetValue().ToString().Trim().Equals("E"))
                        {
                            QueryField field2 = new QueryField(structure["NAME"].GetValue().ToString() + "-" + structure["LINE"].GetValue().ToString() + structure["POS"].GetValue().ToString(), "C", 10, 0, "");
                            this._Fields.Add(field2);
                        }
                    }
                }
                foreach (IRfcStructure structure2 in table2.ToList())
                {
                    if (!structure2["SPNAME"].GetValue().ToString().Substring(0, 1).Equals("%"))
                    {
                        string descriptionText = structure2["FTEXT"].GetValue().ToString();
                        if (descriptionText.StartsWith("D       "))
                        {
                            descriptionText = descriptionText.Substring(8);
                        }
                        QuerySelectionParameter parameter = new QuerySelectionParameter(structure2["SPNAME"].GetValue().ToString(), structure2["FNAME"].GetValue().ToString(), descriptionText, Convert.ToInt32(structure2["LENGTH"].GetValue()), structure2["OBLIGATORY"].GetValue().ToString().Equals("X"), structure2["NODISPLAY"].GetValue().ToString().Equals("X"), structure2["KIND"].GetValue().ToString().Equals("S") ? Kind.SelectOption : Kind.Parameter);
                        this.SelectionParameters.Add(parameter);
                    }
                }
            }
            catch (RfcAbapException ee)
            {
                throw new SAPException(ee.Key + ee.Message);
            }
            catch (Exception ee)
            {
                throw new SAPException(ee.Message);
            }
        }
示例#17
0
        public void ReipresionFiscal2(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_DOCUMENTO, string P_SOCIEDAD)
        {
            IRfcTable lt_DTE_SII;
            DTE_SII   DTE_SII_resp;

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

            string retval = connectorSap.connectionsSAP();

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

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_REIMPRESION");
                    BapiGetUser.SetValue("XBLNR", P_DOCUMENTO);
                    BapiGetUser.SetValue("BUKRS", P_SOCIEDAD);


                    BapiGetUser.Invoke(SapRfcDestination);


                    lt_DTE_SII = BapiGetUser.GetTable("DTE_SII");

                    for (int i = 0; i < lt_DTE_SII.RowCount; i++)
                    {
                        lt_DTE_SII.CurrentIndex = i;
                        DTE_SII_resp            = new DTE_SII();
                        DTE_SII_resp.VBELN      = lt_DTE_SII[i].GetString("VBELN");
                        DTE_SII_resp.BUKRS      = lt_DTE_SII[i].GetString("BUKRS");
                        DTE_SII_resp.FECIMP     = lt_DTE_SII[i].GetString("FECIMP");
                        DTE_SII_resp.FODOC      = lt_DTE_SII[i].GetString("FODOC");
                        DTE_SII_resp.HORIM      = lt_DTE_SII[i].GetString("HORIM");
                        DTE_SII_resp.KONDA      = lt_DTE_SII[i].GetString("KONDA");
                        DTE_SII_resp.TDSII      = lt_DTE_SII[i].GetString("TDSII");
                        DTE_SII_resp.URLSII     = lt_DTE_SII[i].GetString("URLSII");
                        DTE_SII_resp.WAERS      = lt_DTE_SII[i].GetString("WAERS");
                        DTE_SII_resp.XBLNR      = lt_DTE_SII[i].GetString("XBLNR");
                        DTE_SII_resp.ZUONR      = lt_DTE_SII[i].GetString("ZUONR");
                        reimprFiscal2.Add(DTE_SII_resp);
                    }
                    //url = BapiGetUser.GetString("URL");
                    //GC.Collect();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message + ex.StackTrace);
                    System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                }
            }
            else
            {
                errormessage = retval;
                GC.Collect();
            }
        }
示例#18
0
 public static void ZARFC_DEST_SHIP(RfcServerContext context, IRfcFunction function)
 {
     IRfcTable DATA = function.GetTable("DATA");
     DataTable dt = GetDataTableFromRfcTable(DATA);
 }
示例#19
0
        public void docsanulacion(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_DOCUMENTO, string P_RUT,
                                  string P_SOCIEDAD, string P_LAND, string P_IDCAJA, string P_TP_DOC)
        {
            CabeceraDocs.Clear();
            DetalleDocs.Clear();
            Retorno.Clear();
            IRfcTable      lt_h_documentos;
            IRfcTable      lt_d_documentos;
            IRfcTable      lt_retorno;
            FormatoMonedas FM = new FormatoMonedas();
            //  PART_ABIERTAS  PART_ABIERTAS_resp;
            CAB_COMP DOCS_CABECERA_resp;
            DET_COMP DOCS_DETALLES_resp;
            RETORNO  retorno_resp;

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

            string retval = connectorSap.connectionsSAP();

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

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

                BapiGetUser.SetValue("ID_COMPROBANTE", P_DOCUMENTO);
                BapiGetUser.SetValue("RUT", P_RUT);
                BapiGetUser.SetValue("LAND", P_LAND);
                BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD);
                BapiGetUser.SetValue("ID_CAJA", P_IDCAJA);
                BapiGetUser.SetValue("TP_DOC", P_TP_DOC);
                BapiGetUser.Invoke(SapRfcDestination);

                lt_h_documentos = BapiGetUser.GetTable("CAB_COMP");
                lt_d_documentos = BapiGetUser.GetTable("DET_COMP");
                lt_retorno      = BapiGetUser.GetTable("RETORNO");

                if (lt_h_documentos.Count > 0)
                {
                    //LLenamos la tabla de salida lt_DatGen
                    for (int i = 0; i < lt_h_documentos.RowCount; i++)
                    {
                        try
                        {
                            lt_h_documentos.CurrentIndex      = i;
                            DOCS_CABECERA_resp                = new CAB_COMP();
                            DOCS_CABECERA_resp.LAND           = P_LAND;
                            DOCS_CABECERA_resp.ID_CAJA        = P_IDCAJA;
                            DOCS_CABECERA_resp.ID_COMPROBANTE = lt_h_documentos[i].GetString("ID_COMPROBANTE");
                            DOCS_CABECERA_resp.TIPO_DOCUMENTO = lt_h_documentos[i].GetString("TIPO_DOCUMENTO");
                            DOCS_CABECERA_resp.DESCRIPCION    = lt_h_documentos[i].GetString("DESCRIPCION");
                            DOCS_CABECERA_resp.NRO_REFERENCIA = lt_h_documentos[i].GetString("NRO_REFERENCIA");
                            DOCS_CABECERA_resp.FECHA_COMP     = lt_h_documentos[i].GetString("FECHA_COMP");
                            DOCS_CABECERA_resp.FECHA_VENC_DOC = lt_h_documentos[i].GetString("FECHA_VENC_DOC");
                            if (lt_h_documentos[i].GetString("MONEDA") == "CLP")
                            {
                                DOCS_CABECERA_resp.MONTO_DOC = FM.FormatoMonedaChilena(lt_h_documentos[i].GetString("MONTO_DOC").Trim(), "2");
                            }
                            else
                            {
                                //string moneda = Convert.ToString(lt_h_documentos[i].GetString("MONTO_DOC"));
                                //decimal ValorAux = Convert.ToDecimal(moneda);
                                DOCS_CABECERA_resp.MONTO_DOC = FM.FormatoMonedaExtranjera(lt_h_documentos[i].GetString("MONTO_DOC").Trim());
                            }
                            //DOCS_CABECERA_resp.MONTO_DOC = lt_h_documentos[i].GetString("MONTO_DOC");
                            DOCS_CABECERA_resp.TEXTO_EXCEPCION = lt_h_documentos[i].GetString("TEXTO_EXCEPCION");
                            DOCS_CABECERA_resp.CLIENTE         = lt_h_documentos[i].GetString("CLIENTE");
                            DOCS_CABECERA_resp.MONEDA          = lt_h_documentos[i].GetString("MONEDA");
                            DOCS_CABECERA_resp.CLASE_DOC       = lt_h_documentos[i].GetString("CLASE_DOC");
                            DOCS_CABECERA_resp.TXT_CLASE_DOC   = lt_h_documentos[i].GetString("TXT_CLASE_DOC");
                            DOCS_CABECERA_resp.NUM_CANCELACION = lt_h_documentos[i].GetString("NUM_CANCELACION");
                            DOCS_CABECERA_resp.AUT_JEF         = lt_h_documentos[i].GetString("AUT_JEF");
                            CabeceraDocs.Add(DOCS_CABECERA_resp);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message + ex.StackTrace);
                            System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                        }
                    }
                }
                else
                {
                    System.Windows.MessageBox.Show("No existe(n) registro(s)");
                }

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

                            DOCS_DETALLES_resp.ID_COMPROBANTE = lt_d_documentos[i].GetString("ID_COMPROBANTE");
                            DOCS_DETALLES_resp.ID_DETALLE     = lt_d_documentos[i].GetString("ID_DETALLE");
                            DOCS_DETALLES_resp.VIA_PAGO       = lt_d_documentos[i].GetString("VIA_PAGO");
                            DOCS_DETALLES_resp.DESCRIP_VP     = lt_d_documentos[i].GetString("DESCRIP_VP");
                            DOCS_DETALLES_resp.NUM_CHEQUE     = lt_d_documentos[i].GetString("NUM_CHEQUE");
                            DOCS_DETALLES_resp.FECHA_VENC     = lt_d_documentos[i].GetString("FECHA_VENC");
                            if (lt_d_documentos[i].GetString("MONEDA") == "CLP")
                            {
                                DOCS_DETALLES_resp.MONTO = FM.FormatoMonedaChilena(lt_d_documentos[i].GetString("MONTO").Trim(), "1");
                            }
                            else
                            {
                                DOCS_DETALLES_resp.MONTO = FM.FormatoMonedaExtranjera(lt_d_documentos[i].GetString("MONTO").Trim());
                            }
                            //DOCS_DETALLES_resp.MONTO = lt_d_documentos[i].GetString("MONTO");
                            DOCS_DETALLES_resp.MONEDA     = lt_d_documentos[i].GetString("MONEDA");
                            DOCS_DETALLES_resp.NUM_CUOTAS = lt_d_documentos[i].GetString("NUM_CUOTAS");
                            DOCS_DETALLES_resp.EMISOR     = lt_d_documentos[i].GetString("EMISOR");
                            DetalleDocs.Add(DOCS_DETALLES_resp);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message + ex.StackTrace);
                            System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                        }
                    }
                }

                String Mensaje = "";
                if (lt_retorno.Count > 0)
                {
                    for (int i = 0; i < lt_retorno.Count(); i++)
                    {
                        lt_retorno.CurrentIndex = i;
                        retorno_resp            = new RETORNO();
                        retorno_resp.TYPE       = lt_retorno.GetString("TYPE");
                        retorno_resp.ID         = lt_retorno.GetString("ID");
                        retorno_resp.NUMBER     = lt_retorno.GetString("NUMBER");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.LOG_NO     = lt_retorno.GetString("LOG_NO");
                        retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1");
                        Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1");
                        retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2");
                        retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3");
                        retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4");
                        retorno_resp.PARAMETER  = lt_retorno.GetString("PARAMETER");
                        retorno_resp.ROW        = lt_retorno.GetString("ROW");
                        retorno_resp.FIELD      = lt_retorno.GetString("FIELD");
                        retorno_resp.SYSTEM     = lt_retorno.GetString("SYSTEM");
                        Retorno.Add(retorno_resp);
                    }
                    System.Windows.MessageBox.Show(Mensaje);
                }
                //else
                //{
                //    System.Windows.MessageBox.Show("No existe(n) registro(s)");
                //}
            }
            else
            {
                errormessage = retval;
            }
            GC.Collect();
        }
示例#20
0
        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);
        }
示例#21
0
        public void StfcConnection(RfcServerContext context, IRfcFunction function)
        {
            IRfcTable     IdocControlRec40;
            IRfcStructure structureIdocControlRec40;
            IRfcTable     IdocDataRec40;
            IRfcStructure structureIdocDataRec40;

            string field = string.Empty;

            try
            {
                IdocControlRec40 = function.GetTable("IDOC_CONTROL_REC_40");

                for (int i = 0; i < IdocControlRec40.RowCount; i++)
                {
                    IdocControlRec40.CurrentIndex = i;
                    structureIdocControlRec40     = IdocControlRec40.Metadata.LineType.CreateStructure();

                    for (int j = 0; j < structureIdocControlRec40.ElementCount; j++)
                    {
                        switch (structureIdocControlRec40[j].Metadata.DataType)
                        {
                        case RfcDataType.DATE:

                            string dateField = IdocControlRec40.GetValue(structureIdocControlRec40[j].Metadata.Name).ToString().PadRight(structureIdocControlRec40[j].Metadata.NucLength, ' ');
                            dateField = dateField.Replace("-", "");

                            field = field + dateField;

                            break;

                        case RfcDataType.TIME:

                            string timeField = IdocControlRec40.GetValue(structureIdocControlRec40[j].Metadata.Name).ToString().PadRight(structureIdocControlRec40[j].Metadata.NucLength, ' ');
                            timeField = timeField.Replace(":", "");

                            field = field + timeField;

                            break;

                        default:

                            field = field + IdocControlRec40.GetValue(structureIdocControlRec40[j].Metadata.Name).ToString().PadRight(structureIdocControlRec40[j].Metadata.NucLength, ' ');

                            break;
                        }
                    }

                    field += "\r\n";
                }
                //field = ;

                IdocDataRec40 = function.GetTable("IDOC_DATA_REC_40");

                for (int i = 0; i < IdocDataRec40.RowCount; i++)
                {
                    IdocDataRec40.CurrentIndex = i;
                    structureIdocDataRec40     = IdocDataRec40.Metadata.LineType.CreateStructure();


                    for (int j = 0; j < structureIdocDataRec40.ElementCount; j++)
                    {
                        Type dataType = structureIdocDataRec40[j].GetType();

                        field = field + IdocDataRec40.GetValue(structureIdocDataRec40[j].Metadata.Name).ToString().PadRight(structureIdocDataRec40[j].Metadata.NucLength, ' ');
                    }

                    field += "\r\n";

                    //Console.WriteLine(field);
                }

                File.WriteAllText(@"c:\testIDocBytes.txt", field);
            }
            catch (Exception e)
            {
            }
        }
        //类型赋值
        private List<CParams> Get_Params_list(IRfcFunction pFunction)
        {
            List<CParams> _Params_list = new List<CParams>();
            IRfcTable rfctable_Params = pFunction.GetTable("Params");

            // C${rfctable.Name} _C${rfctable.Name};
            for (int i = 0; i < rfctable_Params.RowCount; i++)
            {
                var _Params = new CParams();
                _Params.paramclass = rfctable_Params[i].GetString("PARAMCLASS"); // 参数类型
                _Params.parameter = rfctable_Params[i].GetString("PARAMETER"); // 参数名称
                _Params.tabname = rfctable_Params[i].GetString("TABNAME"); // 表名
                _Params.fieldname = rfctable_Params[i].GetString("FIELDNAME"); // 字段名
                _Params.exid = rfctable_Params[i].GetString("EXID"); // Typ
                _Params.position = rfctable_Params[i].GetInt("POSITION"); //
                _Params.offset = rfctable_Params[i].GetInt("OFFSET"); //
                _Params.intlength = rfctable_Params[i].GetInt("INTLENGTH"); //
                _Params.decimals = rfctable_Params[i].GetInt("DECIMALS"); //
                _Params.defaultv = rfctable_Params[i].GetString("DEFAULT"); // 输入参数的缺省值
                _Params.paramtext = rfctable_Params[i].GetString("PARAMTEXT"); // 短文本
                _Params.optional = rfctable_Params[i].GetString("OPTIONAL"); // 可选参数
                _Params_list.Add(_Params);
            }
            return _Params_list;
        }
        //MGV - funcion llamando SAPConn
        public List <PEntidades.PAbiertasYPago> getfacturasAbiertasConn(string fecha1, string fecha2, List <string[]> listaDiferentesInstancias)
        {
            List <PEntidades.PAbiertasYPago> list = new List <PEntidades.PAbiertasYPago>();

            PEntidades.SrvSAPUProv.Z_UPARTIDAS_ABIERTAS   abiertas = new PEntidades.SrvSAPUProv.Z_UPARTIDAS_ABIERTAS();
            PEntidades.SrvSAPUProv.ZWS_UPROVEEDORESClient srv;
            status = new string[listaDiferentesInstancias.Count];
            for (int j = 0; j < listaDiferentesInstancias.Count; j++) // listaDiferentesInstancias contiene idInstacia, endpoint, y las sociedades separadas por "," ;
            {
                try
                {
                    srv = new PPersistencia.WebServices().getZWS_UPROVEEDORESInstanceNew(
                        listaDiferentesInstancias[j][1].ToString().Trim(),
                        listaDiferentesInstancias[j][4].Split(new Char[] { ',' })
                        );
                    srv.Open();
                    srv.InnerChannel.OperationTimeout = new TimeSpan(0, 10, 0);
                    //PEntidades.SrvSAPUProv.ZEPLANT_PROV[] objetoSoc;
                    //PEntidades.SrvSAPUProv.ZELIFNR_PROV[] objLifnr;
                    //string[] splitSoc = listaDiferentesInstancias[j][2].Split(new Char[] { ',' });
                    //string[] splitLifnr = listaDiferentesInstancias[j][3].Split(new Char[] { ',' });
                    //abiertas.PROVEEDOR = PEntidades.Utiles.objetoLifnr(splitLifnr);
                    //abiertas.SOCIEDAD = PEntidades.Utiles.objetoSociedad(splitSoc);
                    PPersistencia.SAPConn psc    = new PPersistencia.SAPConn();             //cambio llamado hacia SAP
                    List <ParamsCallSAP>  listPA = new List <ParamsCallSAP>();
                    ParamsCallSAP         pr     = new ParamsCallSAP();

                    pr         = new ParamsCallSAP(); //abiertas.DATE1 = Gen.Util.CS.Gen.convertirFecha_SAP(fecha1);
                    pr.NameVar = "DATE1";
                    pr.ValVar  = Gen.Util.CS.Gen.convertirFecha_SAP(fecha1);
                    pr.TipVar  = "S";
                    listPA.Add(pr);

                    pr         = new ParamsCallSAP(); // abiertas.DATE2 = Gen.Util.CS.Gen.convertirFecha_SAP(fecha2);
                    pr.NameVar = "DATE2";
                    pr.ValVar  = Gen.Util.CS.Gen.convertirFecha_SAP(fecha2);
                    pr.TipVar  = "S";
                    listPA.Add(pr);

                    List <TablasCallSAP> listT      = new List <TablasCallSAP>();
                    TablasCallSAP        tr         = new TablasCallSAP();
                    List <ParamsCallSAP> listTb     = new List <ParamsCallSAP>();
                    string[]             splitLifnr = listaDiferentesInstancias[j][3].Split(new Char[] { ',' });
                    for (int i = 1; i <= splitLifnr.Length; i++)
                    {
                        pr         = new ParamsCallSAP();
                        pr.NameVar = "LIFNR";
                        pr.ValVar  = splitLifnr[i - 1].ToString().Trim();
                        pr.TipVar  = "S";
                        listTb.Add(pr);
                    }
                    tr.TablaVar  = "PROVEEDOR_TB";
                    tr.CamposVar = listTb;
                    listT.Add(tr);

                    string[]             splitSoc = listaDiferentesInstancias[j][2].Split(new Char[] { ',' });
                    List <TablasCallSAP> listTC   = new List <TablasCallSAP>();
                    TablasCallSAP        trC      = new TablasCallSAP();
                    List <ParamsCallSAP> listTc   = new List <ParamsCallSAP>();
                    for (int i = 1; i <= splitSoc.Length; i++)
                    {
                        pr         = new ParamsCallSAP();
                        pr.NameVar = "WERKS";
                        pr.ValVar  = splitSoc[i - 1].ToString().Trim();
                        pr.TipVar  = "S";
                        listTc.Add(pr);
                    }
                    trC.TablaVar  = "SOCIEDAD_TB";
                    trC.CamposVar = listTc;
                    listT.Add(trC);

                    IRfcFunction rescon = psc.conSAP("Z_DPARTIDAS_ABIERTAS", listPA, listT);
                    //var resultado = srv.Z_UPARTIDAS_ABIERTAS(abiertas);
                    //int cantidad = resultado.PARTIDAS_ABIERTAS.Length;

                    PEntidades.PAbiertasYPago objPabYPag;
                    IRfcTable tb = rescon.GetTable(0);
                    for (int o = 0; o < tb.Count; o++)
                    {
                        tb.CurrentIndex = o;
                        objPabYPag      = new PEntidades.PAbiertasYPago();
                        float DMSHB = float.Parse(tb.CurrentRow.GetString("DMSHB"));
                        objPabYPag.IDINSTANCIA = int.Parse(listaDiferentesInstancias[j][0]);
                        objPabYPag.ZUONR1      = tb.CurrentRow.GetString("ZUONR");
                        objPabYPag.BELNR1      = tb.CurrentRow.GetString("BELNR");
                        objPabYPag.BLART1      = tb.CurrentRow.GetString("BLART");
                        objPabYPag.BLDAT1      = tb.CurrentRow.GetString("BLDAT");
                        objPabYPag.DMSHB1      = DMSHB;
                        objPabYPag.HWAER1      = tb.CurrentRow.GetString("HWAER");
                        objPabYPag.XBLNR       = tb.CurrentRow.GetString("XBLNR");
                        objPabYPag.NAME1       = tb.CurrentRow.GetString("NAME1");
                        objPabYPag.EBELN       = tb.CurrentRow.GetString("EBELN");
                        objPabYPag.F_BASE      = tb.CurrentRow.GetString("F_BASE");
                        objPabYPag.F_VENCIM    = tb.CurrentRow.GetString("F_VENCIM");
                        list.Add(objPabYPag);
                    }
                    srv.Close();
                }
                catch (Exception e)
                {
                    status[j] = "Error al cargar datos, reintente o vuelva a intentarlo más tarde.";
                }
            }
            return(list);
        }
示例#24
0
            // 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
            }
示例#25
0
            // 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);
            }
示例#26
0
            // SD01 - Inteface de cliente - Comunicação
            // funcao - ZFXI_SD01C
            //[RfcServerFunction(Name = "ZFXI_SD01C")]
            public static void StfcInterfaceCliente(RfcServerContext context,
            IRfcFunction function)
            {
                //
                // CLIENTE
                //

                // Exibe no console a interface que será executada
                Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID);
                // Flag da interface que de Limpar tabela de dados
                Char deletar = function.GetChar("I_REFRESH");
                // exibe se o mesmo foi flegado 
                Console.WriteLine(deletar);

                // Implementa repositorio antes do Foreach para evitar duplicações
                ClienteRepository clienteRepository = new ClienteRepository();
                Cliente cliente = new Cliente();
                ClienteVendasRepository clienteVendasRepository = new ClienteVendasRepository();
                ClienteVendas clienteVendas = new ClienteVendas();
                ClienteCondicaoLiberadaRepository clienteCondicaoLiberadaRepository = new ClienteCondicaoLiberadaRepository();
                ClienteCondicaoLiberada clienteCondicaoLiberada = new ClienteCondicaoLiberada();
                ClienteTransportadoraLiberadaRepository clienteTransportadoraLiberadaRepository = new ClienteTransportadoraLiberadaRepository();
                ClienteTransportadoraLiberada clienteTransportadoraLiberada = new ClienteTransportadoraLiberada();

                // ZTBSD056 - ZTBXI_101
                IRfcTable it_cliente = function.GetTable("IT_CLIENTE");

                // Implementa Repositorio Rfc de resposta
                RfcRepository rep = context.Repository;

                // RETORNO
                RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno = bapiret2.CreateStructure();


                // ZTBSD057 - ZTBXI_101
                IRfcTable it_cliente_vendas = function.GetTable("IT_CLIENTE_AV");

                // Implementa Repositorio Rfc de resposta
                RfcRepository repVendas = context.Repository;

                // RETORNO
                RfcStructureMetadata bapiret2Vendas = repVendas.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno_vendas = bapiret2Vendas.CreateStructure();


                // ZTBSD058 - ZTBXI_101
                IRfcTable it_cliente_condicao = function.GetTable("IT_CLIENTE_CP");

                // Implementa Repositorio Rfc de resposta
                RfcRepository repcondicao = context.Repository;

                // RETORNO
                RfcStructureMetadata bapiret2Condicao = repcondicao.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno_condicao  = bapiret2Condicao.CreateStructure();

                
                // ZTBSD085 - ZTBXI_101
                IRfcTable it_cliente_trans_lib = function.GetTable("IT_CLIENTE_TL");

                // Implementa Repositorio Rfc de resposta
                RfcRepository repclienteTrans = context.Repository;

                // RETORNO
                RfcStructureMetadata bapiret2Trans = repclienteTrans.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno_trans  = bapiret2Trans.CreateStructure();

                // Se estiver espaco em branco na variavel, não limpa a tabela da interface.
                if (deletar != ' ')
                {
                    int count = 0;
                    // Se a interface de cliente estiver marcada para Reiniciar "X" marca os registros das 3 tabebas como Eliminados.
                    IList<Cliente> fromDBcliente = clienteRepository.ObterTodos();
                    IList<ClienteVendas> fromDBclienteV = clienteVendasRepository.ObterTodos();
                    IList<ClienteCondicaoLiberada> fromDBclienteCond = clienteCondicaoLiberadaRepository.ObterTodos();

                    foreach (Cliente dados in fromDBcliente)
                    {
                        count = count + 1;
                        if (count == 1)
                        {
                            foreach (IRfcStructure row in it_cliente)
                            {
                                dados.Pacote = row.GetString("PACOTE");
                                dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                                dados.Hora_criacao = row.GetString("ERZET");
                                break;
                            }
                        }
                        dados.Eliminacao = "X";
                        clienteRepository.Alterar(dados);
                    }

                    count = 0;
                    foreach (ClienteVendas dados in fromDBclienteV)
                    {
                        count = count + 1;
                        if (count == 1)
                        {
                            foreach (IRfcStructure row in it_cliente_vendas)
                            {
                                dados.Pacote = row.GetString("PACOTE");
                                dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                                dados.Hora_criacao = row.GetString("ERZET");
                                break;
                            }
                        }
                        dados.Eliminacao = "X";
                        clienteVendasRepository.Alterar(dados);
                    }

                    count = 0;
                    foreach (ClienteCondicaoLiberada dados in fromDBclienteCond)
                    {
                        count = count + 1;
                        if (count == 1)
                        {
                            foreach (IRfcStructure row in it_cliente_condicao)
                            {
                                dados.Pacote = row.GetString("PACOTE");
                                dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                                dados.Hora_criacao = row.GetString("ERZET");
                                break;
                            }
                        }
                        dados.Eliminacao = "X";
                        clienteCondicaoLiberadaRepository.Alterar(dados);
                    }
                }

                int v_cont = 0;
                foreach (IRfcStructure row in it_cliente)
                {
                    cliente.Id_cliente = row.GetString("KUNNR");
                    cliente.Nome = row.GetString("NAME1");
                    cliente.Cpf = row.GetString("STCD2");
                    cliente.Cnpj = row.GetString("STCD1");
                    cliente.Nr_ie_cli = row.GetString("STCD3");
                    cliente.Cep = row.GetString("POST_CODE");
                    cliente.Endereco = row.GetString("STREET");
                    cliente.Numero = row.GetString("HOUSE_NUM1");
                    cliente.Complemento = row.GetString("HOUSE_NUM2");
                    cliente.Municipio = row.GetString("CITY1");
                    cliente.Bairro = row.GetString("CITY2");
                    cliente.Uf = row.GetString("UF");
                    cliente.Pais = row.GetString("COUNTRY");
                    cliente.Tel_res = row.GetString("TELF1");
                    cliente.Tel_cel = row.GetString("TELF2");
                    cliente.Fax = row.GetString("TELFX");
                    cliente.Email = row.GetString("EMAIL");
                    cliente.Pacote = row.GetString("PACOTE");
                    cliente.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    cliente.Hora_criacao = row.GetString("ERZET");
                    cliente.Eliminacao = row.GetString("LOEVM");

                    // Obtem todas as condicoes do banco para o cliente que esta sendo processado
                    IList<ClienteCondicaoLiberada> fromCondicao = clienteCondicaoLiberadaRepository.ObterRegistrosUmCampo("Id_cliente", cliente.Id_cliente);
                    // Atualiza para Eliminado todas as condicoes do cliente
                    foreach (ClienteCondicaoLiberada dados in fromCondicao)
                    {
                        dados.Pacote = row.GetString("PACOTE");
                        dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                        dados.Hora_criacao = row.GetString("ERZET");
                        dados.Eliminacao = "X";
                        clienteCondicaoLiberadaRepository.Alterar(dados);
                    }

                    v_cont = v_cont + 1;
                    try
                    {
                        // Se o registro existir, ele é atualizado, se não ele é inserido.                                                            
                        IList<Cliente> fromDB = clienteRepository.ObterRegistrosUmCampo("Id_cliente", cliente.Id_cliente);
                        if (fromDB.Count == 0)
                        {
                            clienteRepository.Salvar(cliente);
                        }
                        else
                        {
                            clienteRepository.Alterar(cliente);
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro
                        Console.Write("Erro ao inserir o Cliente, Mensagem: " + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retorno.SetValue("TYPE", "E");
                        linha_retorno.SetValue("MESSAGE", ex.Message);
                        linha_retorno.SetValue("MESSAGE", "Erro ao inserir o Cliente Dados Gerais: " + cliente.Nome + " - Id: " + cliente.Id_cliente);
                        retorno.Insert(linha_retorno);
                    }
                }

                // FIM CLIENTE

                //
                // CLIENTE VENDAS
                //                                

                int v_cont_vendas = 0;
                foreach (IRfcStructure row in it_cliente_vendas)
                {
                    clienteVendas.Id_cliente = row.GetString("KUNNR");
                    clienteVendas.Org_vendas = row.GetString("VKORG");
                    clienteVendas.Can_dist = row.GetString("VTWEG");
                    clienteVendas.Set_ativ = row.GetString("SPART");
                    clienteVendas.Grupo_cli = row.GetString("KDGRP");
                    clienteVendas.Id_fornecedor = row.GetString("LIFNR");
                    clienteVendas.Denominacao = row.GetString("VKORG_TXT");
                    clienteVendas.Pacote = row.GetString("PACOTE");
                    clienteVendas.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    clienteVendas.Hora_criacao = row.GetString("ERZET");
                    clienteVendas.Eliminacao = row.GetString("LOEVM");

                    v_cont_vendas = v_cont_vendas + 1;
                    try
                    {
                        IList<ClienteVendas> fromDB = clienteVendasRepository.ObterRegistrosQuatroCampos("Id_cliente", clienteVendas.Id_cliente, "Org_vendas", clienteVendas.Org_vendas, "Can_dist", clienteVendas.Can_dist, "Set_ativ", clienteVendas.Set_ativ);
                        if (fromDB.Count == 0)
                        {
                            clienteVendasRepository.Salvar(clienteVendas);
                        }
                        else
                        {
                            foreach (ClienteVendas dados in fromDB)
                            {
                                clienteVendas.pro_id_cliente_vendas = dados.pro_id_cliente_vendas;
                            }
                            clienteVendasRepository.Alterar(clienteVendas);
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro
                        Console.Write("Erro ao inserir o Cliente Vendas, Mensagem: " + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retorno_vendas.SetValue("TYPE", "E");
                        linha_retorno_vendas.SetValue("MESSAGE", ex.Message);
                        linha_retorno_vendas.SetValue("MESSAGE", "Erro ao inserir o Cliente Área de Vendas: " + cliente.Nome + " - Id: " + cliente.Id_cliente);
                        retorno.Insert(linha_retorno_vendas);
                    }
                }

                // FIM CLIENTE VENDAS

                //
                // CLIENTE CONDICAO
                //                                

                int v_cont_condicao = 0;
                foreach (IRfcStructure row in it_cliente_condicao)
                {
                    clienteCondicaoLiberada.Id_cliente        = row.GetString("KUNNR");
                    clienteCondicaoLiberada.Chave_condicao    = row.GetString("ZTERM");
                    clienteCondicaoLiberada.Data_fim_condicao = Convert.ToDateTime(row.GetString("DATBI"));
                    clienteCondicaoLiberada.Pacote            = row.GetString("PACOTE");
                    clienteCondicaoLiberada.Data_criacao      = Convert.ToDateTime(row.GetString("ERDAT"));
                    clienteCondicaoLiberada.Hora_criacao      = row.GetString("ERZET");

                    v_cont_condicao = v_cont_condicao + 1;
                    try
                    {
                        IList<ClienteCondicaoLiberada> fromDB = clienteCondicaoLiberadaRepository.ObterRegistrosDoisCampos("Id_cliente", clienteCondicaoLiberada.Id_cliente, "Chave_condicao", clienteCondicaoLiberada.Chave_condicao);
                        if (fromDB.Count == 0)
                        {
                            clienteCondicaoLiberadaRepository.Salvar(clienteCondicaoLiberada);
                        }
                        else
                        {
                            clienteCondicaoLiberadaRepository.Alterar(clienteCondicaoLiberada);
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro
                        Console.Write("Erro ao inserir a Condicao do Cliente, Mensagem: " + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retorno_condicao.SetValue("TYPE", "E");
                        linha_retorno_condicao.SetValue("MESSAGE", ex.Message);
                        linha_retorno_condicao.SetValue("MESSAGE", "Erro ao inserir o Cliente Condições Pagto " + clienteCondicaoLiberada.Id_cliente + " - Condicao: " + clienteCondicaoLiberada.Chave_condicao);
                        retorno.Insert(linha_retorno_condicao);
                    }
                }
                // FIM CLIENTE CONDICAO


                //
                // CLIENTE TRANSPORTADORAS LIBERADAS
                //                                

                int v_cont_tras_lib = 0;
                foreach (IRfcStructure row in it_cliente_trans_lib)
                {
                    clienteTransportadoraLiberada.Id_cliente          = row.GetString("KUNNR");
                    clienteTransportadoraLiberada.Funcao_parceiro     = row.GetString("PARVW");
                    clienteTransportadoraLiberada.Numero_agente_frete = row.GetString("TDLNR");
                    String v_padrao                                   = row.GetString("PADRAO");
                    if (v_padrao != "")
                    {
                        clienteTransportadoraLiberada.Padrao = Convert.ToBoolean(1);
                    }
                    clienteTransportadoraLiberada.Pacote       = row.GetString("PACOTE");
                    clienteTransportadoraLiberada.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    clienteTransportadoraLiberada.Hora_criacao = row.GetString("ERZET");

                    v_cont_tras_lib = v_cont_tras_lib + 1;
                    try
                    {
                        IList<ClienteTransportadoraLiberada> fromDB = clienteTransportadoraLiberadaRepository.ObterRegistrosDoisCampos("Id_cliente", clienteTransportadoraLiberada.Id_cliente, "Numero_agente_frete", clienteTransportadoraLiberada.Numero_agente_frete);
                        if (fromDB.Count == 0)
                        {
                            clienteTransportadoraLiberadaRepository.Salvar(clienteTransportadoraLiberada);
                        }
                        else
                        {
                            foreach (ClienteTransportadoraLiberada dados in fromDB)
                            {
                                clienteTransportadoraLiberada.Id = dados.Id;
                            }
                            clienteTransportadoraLiberadaRepository.Alterar(clienteTransportadoraLiberada);
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro
                        Console.Write("Erro ao inserir a Tranpostadora do Cliente, Mensagem: " + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retorno_trans.SetValue("TYPE", "E");
                        linha_retorno_trans.SetValue("MESSAGE", ex.Message);
                        linha_retorno_trans.SetValue("MESSAGE", "Erro ao inserir a Tranpostadora do Cliente " + clienteTransportadoraLiberada.Id_cliente + " - Numero Agente Frete: " + clienteTransportadoraLiberada.Numero_agente_frete);
                        retorno.Insert(linha_retorno_trans);
                    }
                }
                // FIM CLIENTE TRANSPORTADORAS LIBERADAS

                // Envia o retorno dos registros inseridos com sucesso Cliente Transportadoras
                IRfcTable retornoSucessoTrans = function.GetTable("IT_RETURN");
                linha_retorno_trans.SetValue("TYPE", "S");
                linha_retorno_trans.SetValue("MESSAGE", "Registros com Sucesso Tranpostadora Cliente: " + v_cont_tras_lib);
                retornoSucessoTrans.Insert(linha_retorno_trans);         

                // Envia o retorno dos registros inseridos com sucesso Condicoes Pagto
                IRfcTable retornoSucessoCondicao = function.GetTable("IT_RETURN");
                linha_retorno_condicao.SetValue("TYPE", "S");
                linha_retorno_condicao.SetValue("MESSAGE", "Registros com Sucesso Condições Pagto: " + v_cont_condicao);
                retornoSucessoCondicao.Insert(linha_retorno_condicao);

                // Envia o retorno dos registros inseridos com sucesso Area de Vendas
                IRfcTable retornoSucessoVendas = function.GetTable("IT_RETURN");
                linha_retorno_vendas.SetValue("TYPE", "S");
                linha_retorno_vendas.SetValue("MESSAGE", "Registros com Sucesso Área de Vendas: " + v_cont_vendas);
                retornoSucessoVendas.Insert(linha_retorno_vendas);

                // Envia o retorno dos registros inseridos com sucesso Geral
                IRfcTable retornoSucesso = function.GetTable("IT_RETURN");
                linha_retorno.SetValue("TYPE", "S");
                linha_retorno.SetValue("MESSAGE", "Registros com Sucesso Dados Gerais: " + v_cont);
                retornoSucesso.Insert(linha_retorno);
            }
        private void ProcessRetrievdData(ref DataTable t, IRfcFunction f)
        {
            SendMessage("开始解析数据");
            //this.con.Log("Enter ProcessRetrievdData; LastPrimaryKey=" + this._LastPrimaryKey);
            string str = "";
            IRfcTable table = f.GetTable("FIELDS");
            var lines = f.GetTable("DATA").RowCount;
            for (int i = 0; i < lines; i++)
            {

                string str2 = (string)f.GetTable("DATA")[i].GetValue(0);
                var ii = str2.Length;
                var iii = ii > 20 ? 20 : ii;

                SendMessage(string.Format("行:{0} 内容:{1}", i, str2.Substring(0, iii)));

                str2 = str2.PadRight(f.GetTable("DATA").Metadata.LineType[0].NucLength);
                string[] strArray = null;
                if (this.UsePrimaryKeyPackaging)
                {
                    str = str2.Substring(0, this._PrimaryKeys.GetOverallLength());
                    if (i >= (f.GetTable("DATA").RowCount - 1))
                    {
                        int startIndex = 0;
                        foreach (ReadTableField field in this._PrimaryKeys)
                        {
                            field.LastKeyValue = str.Substring(startIndex, field.Length);
                            startIndex += field.Length;
                        }
                    }
                }
                if (!this.UsePrimaryKeyPackaging || (this._LastPrimaryKey != str))
                {
                    DataRow row = t.NewRow();
                    if (!this._Delimiter.Equals(""))
                    {
                        //strArray = str2.Split(this._Delimiter.ToCharArray());
                        strArray = Regex.Split(str2, this._Delimiter, RegexOptions.IgnoreCase);

                    }
                    if (this._UsePrimaryKeyPackaging)
                    {
                        for (int j = this._PrimaryKeys.Count; j < table.RowCount; j++)
                        {
                            if (this._Delimiter.Equals(""))
                            {
                                String value = str2.Substring(Convert.ToInt32(table[j].GetValue("OFFSET").ToString()), Convert.ToInt32(table[j].GetValue("LENGTH").ToString()));
                                value = value.TrimEnd(' ');
                                String type = table[j].GetValue("TYPE").ToString();
                                row[table[j].GetValue(0).ToString()] = Converts.RfcValueToObject(value, type);
                            }
                            else if (strArray.Length > j)
                            {
                                String value = strArray[j];
                                // value = value.TrimStart(' ').TrimEnd(' ');//去除前导零。
                                value = value.TrimEnd(' ');
                                row[table[j].GetValue(0).ToString()] = value;
                            }
                        }
                    }
                    else
                    {
                        for (int k = 0; k < table.RowCount; k++)
                        {
                            if (this._Delimiter.Equals(""))
                            {
                                //// Console.WriteLine(str2.Length);
                                // Console.WriteLine("OFFSET:" + table[k]["OFFSET"].GetValue().ToString());
                                // Console.WriteLine("LENGTH:" + table[k]["LENGTH"].GetValue().ToString());
                                String value = str2.Substring(Convert.ToInt32(table[k]["OFFSET"].GetValue().ToString()), Convert.ToInt32(table[k]["LENGTH"].GetValue().ToString()));
                                value = value.TrimEnd(' ');
                                //Console.WriteLine(value);
                                String type = table[k].GetValue("TYPE").ToString();
                                //Console.WriteLine("TYPE:" + type);

                                row[table[k][0].GetValue().ToString()] = Converts.RfcValueToObject(value, type);
                            }
                            else if (strArray.Length > k)
                            {
                                String value = strArray[k];
                                //value = value.TrimStart(' ').TrimEnd(' ');//去除前导零。
                                //value.Trim();
                                value = value.TrimEnd(' ');
                                row[table[k][0].GetValue().ToString()] = value;
                            }
                        }
                    }
                    t.Rows.Add(row);
                }
                this._LastPrimaryKey = str;
            }
            this._FetchedRows += f.GetTable("DATA").RowCount;
            if (this._RaiseIncomingPackageEvent)
            {
                if (this.IncomingPackage != null)
                {
                    this.IncomingPackage(this, t);
                    t.Rows.Clear();
                    t.AcceptChanges();
                }
            }
            else if (this.PackageProgress != null)
            {
                this.PackageProgress(this, t.Rows.Count);
            }
            SendMessage("解析数据完成");
        }
示例#28
0
            // 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);
            }
示例#29
0
        ///// <summary>
        ///// 获取物料状态
        ///// </summary>
        ///// <param name="MatCode">物料编号</param>
        ///// <param name="rList"></param>
        ///// <returns></returns>
        //public List<MaterialStatus> ZRFC_GETMATORDER(string MatCode)
        //{
        //    List<MaterialStatus> rList = new List<MaterialStatus>();
        //    try
        //    {
        //        RfcRepository repo = Conn.Repository;
        //        IRfcFunction rfcfunc = repo.CreateFunction("ZRFC_GETMATORDER");
        //        rfcfunc.SetValue("MATNR", MatCode);
        //        rfcfunc.Invoke(Conn);

        //        IRfcTable RfcTable = rfcfunc.GetTable("MATNRDATA");
        //        for (int i = 0; i < RfcTable.Count(); i++)
        //        {
        //            MaterialStatus model = new MaterialStatus();
        //            //model.MATNR = RfcTable[i].GetValue("MATNR").ToString();
        //            //model.ZCANORDER = RfcTable[i].GetValue("ZCANORDER").ToString();
        //            //model.ZREPROD = RfcTable[i].GetValue("ZREPROD").ToString();
        //            rList.Add(model);
        //        }
        //    }
        //    catch
        //    {
        //        rList = null;
        //    }
        //    return rList;
        //}


        public SapRetrun CREATE_BAPI_ACC_DOCUMENT_POST(SapUpload model)
        {
            try
            {
                RfcRepository repo = Conn.Repository;
                IRfcFunction  Fun  = repo.CreateFunction("ZBAPI_ACC_DOCUMENT_POST");

                //结构体doc
                IRfcStructure  tb  = Fun.GetStructure("DOCUMENTHEADER");
                DOCUMENTHEADER doc = model.结构体DOC;
                tb.SetValue("USERNAME", doc.USERNAME);
                tb.SetValue("HEADER_TXT", doc.HEADER_TXT);
                tb.SetValue("COMP_CODE", doc.COMP_CODE);
                tb.SetValue("DOC_DATE", doc.DOC_DATE);
                tb.SetValue("PSTNG_DATE", doc.PSTNG_DATE);
                tb.SetValue("TRANS_DATE", doc.TRANS_DATE);
                tb.SetValue("DOC_TYPE", doc.DOC_TYPE);
                tb.SetValue("BUS_ACT", doc.BUS_ACT);
                tb.SetValue("OBJ_TYPE", doc.OBJ_TYPE);
                tb.SetValue("REF_DOC_NO", doc.REF_DOC_NO);

                //一般性总账科目
                if (model.一般性总账 != null && model.一般性总账.Count > 0)
                {
                    IRfcTable tb1 = Fun.GetTable("ACCOUNTGL");
                    foreach (var item in model.一般性总账)
                    {
                        tb1.Insert();
                        tb1.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC);
                        tb1.CurrentRow.SetValue("GL_ACCOUNT", item.GL_ACCOUNT);
                        tb1.CurrentRow.SetValue("ITEM_TEXT", item.ITEM_TEXT);
                        tb1.CurrentRow.SetValue("ALLOC_NMBR", item.ALLOC_NMBR);
                        tb1.CurrentRow.SetValue("COSTCENTER", item.COSTCENTER);
                        tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR);
                        tb1.CurrentRow.SetValue("ACCT_TYPE", item.ACCT_TYPE);
                        if (!string.IsNullOrEmpty(item.ASSET_NO))
                        {
                            tb1.CurrentRow.SetValue("ASSET_NO", item.ASSET_NO);
                            tb1.CurrentRow.SetValue("SUB_NUMBER", "0000");
                            tb1.CurrentRow.SetValue("ACCT_TYPE", "A");
                        }
                    }
                }

                //科目D
                if (model.科目D != null && model.科目D.Count > 0)
                {
                    IRfcTable tb1 = Fun.GetTable("ACCOUNTRECEIVABLE");
                    foreach (var item in model.科目D)
                    {
                        tb1.Insert();
                        tb1.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC);
                        tb1.CurrentRow.SetValue("CUSTOMER", item.CUSTOMER);
                        tb1.CurrentRow.SetValue("ITEM_TEXT", item.ITEM_TEXT);
                        tb1.CurrentRow.SetValue("ALLOC_NMBR", item.ALLOC_NMBR);
                        tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR);
                    }
                }

                //科目K
                if (model.科目K != null && model.科目K.Count > 0)
                {
                    IRfcTable tb1 = Fun.GetTable("ACCOUNTPAYABLE");
                    foreach (var item in model.科目K)
                    {
                        tb1.Insert();
                        tb1.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC);
                        tb1.CurrentRow.SetValue("VENDOR_NO", item.VENDOR_NO);
                        tb1.CurrentRow.SetValue("ITEM_TEXT", item.ITEM_TEXT);
                        tb1.CurrentRow.SetValue("ALLOC_NMBR", item.ALLOC_NMBR);
                        if (!string.IsNullOrEmpty(item.PO_NUMBER))
                        {
                            tb1.CurrentRow.SetValue("SP_GL_IND", item.UMSKZ);
                            tb1.CurrentRow.SetValue("GL_ACCOUNT", item.GL_ACCOUNT);
                            tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR);
                        }
                        else if (!string.IsNullOrEmpty(item.PROFIT_CTR))
                        {
                            tb1.CurrentRow.SetValue("GL_ACCOUNT", item.GL_ACCOUNT);
                            tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR);
                        }
                    }
                }

                if (model.币种 != null && model.币种.Count > 0)
                {
                    IRfcTable tb2 = Fun.GetTable("CURRENCYAMOUNT");
                    foreach (var item in model.币种)
                    {
                        tb2.Insert();
                        tb2.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC);
                        tb2.CurrentRow.SetValue("CURRENCY", item.CURRENCY);
                        tb2.CurrentRow.SetValue("AMT_DOCCUR", item.AMT_DOCCUR);
                        tb2.CurrentRow.SetValue("EXCH_RATE", item.EXCH_RATE);
                    }
                }


                if (model.行项目 != null && model.行项目.Count > 0)
                {
                    IRfcTable tb3 = Fun.GetTable("EXTENSION2");
                    foreach (var item in model.行项目)
                    {
                        tb3.Insert();
                        tb3.CurrentRow.SetValue("STRUCTURE", item.STRUCTURE);
                        tb3.CurrentRow.SetValue("VALUEPART1", item.VALUEPART1);
                        tb3.CurrentRow.SetValue("VALUEPART2", item.VALUEPART2);
                        tb3.CurrentRow.SetValue("VALUEPART3", item.VALUEPART3);
                        tb3.CurrentRow.SetValue("VALUEPART4", item.VALUEPART4);
                    }
                }

                Fun.Invoke(Conn);

                SapRetrun result = new SapRetrun();

                var voucher = Fun.GetValue("OBJ_KEY").ToString();
                if (!string.IsNullOrEmpty(voucher) && voucher != "$")
                {
                    result.TYPE    = "S";
                    result.MESSAGE = "凭证上传成功";
                    result.VOUCHER = voucher;
                }
                else
                {
                    var Return = Fun.GetTable("RETURN");
                    if (Return.RowCount >= 2)
                    {
                        result.TYPE    = Return[1].GetValue("TYPE").ToString();
                        result.MESSAGE = Return[1].GetValue("MESSAGE").ToString();
                        result.VOUCHER = Return[1].GetValue("MESSAGE_V2").ToString();
                    }
                    else
                    {
                        result.TYPE    = Return[0].GetValue("TYPE").ToString();
                        result.MESSAGE = Return[0].GetValue("MESSAGE").ToString();
                        result.VOUCHER = Return[0].GetValue("MESSAGE_V2").ToString();
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
示例#30
0
            // 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;
                }
            }
示例#31
0
        public void Excute()
        {
            if (this.Variant.Trim().Equals(""))
            {
                foreach (QuerySelectionParameter parameter in this.SelectionParameters)
                {
                    if ((parameter.Obligatory && (parameter.Ranges.Count == 0)) && !parameter.NoDisplay)
                    {
                        throw new SAPException(string.Format(Messages.Theselectionparameter_0_isobligatoryandthereisnovalueprovided, parameter.Name));
                        //throw new Exception();
                    }
                }
            }
            IRfcFunction function = this._des.Repository.CreateFunction("RSAQ_REMOTE_QUERY_CALL");

            if (this._WorkArea == WorkSpace.StandardArea)
            {
                function["WORKSPACE"].SetValue(" ");
            }
            else
            {
                function["WORKSPACE"].SetValue("X");
            }
            function["QUERY"].SetValue(this._Name);
            function["USERGROUP"].SetValue(this._UserGroup);
            function["VARIANT"].SetValue(this._Variant);
            function["SKIP_SELSCREEN"].SetValue("X");
            function["DATA_TO_MEMORY"].SetValue("X");
            function["DBACC"].SetValue(this._MaxRows);
            foreach (QuerySelectionParameter parameter2 in this._SelectionParameters)
            {
                for (int j = 0; j < parameter2.Ranges.Count; j++)
                {
                    IRfcTable table = function.GetTable("SELECTION_TABLE");
                    table.Append();
                    IRfcStructure structure = table.CurrentRow;
                    structure["SELNAME"].SetValue(parameter2.Name);
                    structure["KIND"].SetValue((parameter2.Kind == Kind.Parameter) ? "P" : "S");
                    structure["SIGN"].SetValue((parameter2.Ranges[j].Sign == Sign.Include) ? "I" : "E");
                    switch (parameter2.Ranges[j].Option)
                    {
                    case RangeOption.Equals:
                        structure["OPTION"].SetValue("EQ");
                        break;

                    case RangeOption.NotEquals:
                        structure["OPTION"].SetValue("NE");
                        break;

                    case RangeOption.GreaterThan:
                        structure["OPTION"].SetValue("GT");
                        break;

                    case RangeOption.LessThan:
                        structure["OPTION"].SetValue("LT");
                        break;

                    case RangeOption.GreaterThanOrEqualTo:
                        structure["OPTION"].SetValue("GE");
                        break;

                    case RangeOption.LessThanOrEqualTo:
                        structure["OPTION"].SetValue("LE");
                        break;

                    case RangeOption.Between:
                        structure["OPTION"].SetValue("BT");
                        break;

                    case RangeOption.NotBetween:
                        structure["OPTION"].SetValue("NB");
                        break;

                    case RangeOption.MatchesPattern:
                        structure["OPTION"].SetValue("CP");
                        break;

                    case RangeOption.NotMatchesPattern:
                        structure["OPTION"].SetValue("NP");
                        break;

                    default:
                        throw new Exception(string.Format(Messages.Unabletoconvert_0, parameter2.Ranges[j].Option.ToString()));
                        //throw new Exception();
                    }
                    structure["LOW"].SetValue(parameter2.Ranges[j].LowValue);
                    structure["HIGH"].SetValue(parameter2.Ranges[j].HighValue);
                }
            }
            try
            {
                function.Invoke(_des);
            }
            catch (RfcAbapException exception)
            {
                if (exception.Message.Equals("NO_USERGROUP"))
                {
                    throw new SAPException(Messages.Usergroupdoesnotexist, exception);
                }
                if (exception.Message.Equals("NO_QUERY"))
                {
                    throw new SAPException(Messages.Querydoesnotexists, exception);
                }
                if (exception.Message.Equals("QUERY_LOCKED"))
                {
                    throw new SAPException(Messages.Querylocked, exception);
                }
                if (exception.Message.Equals("NO_SELECTION"))
                {
                    throw new SAPException(Messages.PleasedefineaselectionorusetheMaxRowsproperty, exception);
                }
                if (exception.Message.Equals("NO_VARIANT"))
                {
                    throw new SAPException(Messages.Novariantorvariantinvalid, exception);
                }
                if (exception.Message.Equals("JUST_VIA_VARIANT"))
                {
                    throw new SAPException(Messages.Querymusthaveavariant, exception);
                }
                if (exception.Message.Equals("NO_SUBMIT_AUTH"))
                {
                    throw new SAPException(Messages.Badauthentication, exception);
                }
                if (exception.Message.Equals("NO_DATA_SELECTED"))
                {
                    throw new SAPException(Messages.Nodatacouldbeselected, exception);
                }
                if (exception.Message.Equals("DATA_TO_MEMORY_NOT_POSSIBLE"))
                {
                    throw new SAPException(Messages.ErrorduringSAPmemoryallocation, exception);
                }
                throw new SAPException(exception.Key + exception.Message);
            }
            this._Fields.Clear();
            string str = "";

            foreach (IRfcStructure structure2 in function.GetTable("LISTDESC").ToList())
            {
                if (str == "")
                {
                    str = structure2["LID"].GetValue().ToString();
                }
                if (structure2["LID"].GetValue().ToString() == str)
                {
                    bool flag = false;
                    for (int k = 0; k < this._Fields.Count; k++)
                    {
                        if (this._Fields[k].Name.Equals(structure2["FNAMEINT"].GetValue().ToString()))
                        {
                            flag = true;
                        }
                    }
                    if (!flag)
                    {
                        this._Fields.Add(new QueryField(structure2["FNAMEINT"].GetValue().ToString(), structure2["FTYP"].GetValue().ToString(), Convert.ToInt32(structure2["FLEN"].GetValue().ToString()), Convert.ToInt32(structure2["FDEC"].GetValue().ToString()), structure2["FDESC"].GetValue().ToString()));
                    }
                }
            }
            DataTable dt = new DataTable();

            dt.BeginInit();
            for (int i = 0; i < this._Fields.Count; i++)
            {
                string     name   = this._Fields[i].Name;
                DataColumn column = new DataColumn(name)
                {
                    Caption = this._Fields[i].Description
                };
                if (this._Fields[i].ABAPType.Equals("I"))
                {
                    column.DataType = Type.GetType("System.Int32");
                }
                else if (this._Fields[i].ABAPType.Equals("F"))
                {
                    column.DataType = Type.GetType("System.Double");
                }
                else if (this._Fields[i].ABAPType.Equals("P"))
                {
                    column.DataType = Type.GetType("System.Decimal");
                }
                else
                {
                    column.DataType = Type.GetType("System.String");
                }
                if (!this.SpalteVorhanden(dt, name))
                {
                    dt.Columns.Add(column);
                }
            }
            dt.EndInit();
            int           startIndex = 0;
            int           num5       = 0;
            int           length     = 0;
            int           num7       = 0;
            string        str3       = "";
            string        str4       = "";
            bool          flag2      = true;
            IRfcStructure structure3 = null;

            if (function.GetTable("LDATA").RowCount > 0)
            {
                DataRow row = dt.NewRow();
                while (flag2)
                {
                    IRfcTable tb = function.GetTable("LDATA");
                    structure3 = function.GetTable("LDATA")[num7];
                    str3       = structure3["LINE"].GetValue().ToString().PadRight(0x41a);
                    string str5 = str3.Substring(startIndex, 3);
                    if (str5.Contains(":") && (startIndex > 1))
                    {
                        startIndex--;
                        str5 = str3.Substring(startIndex, 3);
                    }
                    if (str5.Contains(":") && (startIndex > 1))
                    {
                        startIndex--;
                        str5 = str3.Substring(startIndex, 3);
                    }
                    if (str5.Equals("   "))
                    {
                        if (num7 < (function.GetTable("LDATA").RowCount - 1))
                        {
                            num7++;
                            startIndex = 0;
                        }
                        else
                        {
                            flag2 = false;
                        }
                        continue;
                    }
                    if (str5.Equals("/  "))
                    {
                        flag2 = false;
                        continue;
                    }
                    length      = Convert.ToInt32(str5);
                    startIndex += 4;
                    str4        = str3.Substring(startIndex, length);
                    if (this._Fields[num5].ABAPType.Equals("I"))
                    {
                        try
                        {
                            bool flag3 = false;
                            if (str4.EndsWith("-"))
                            {
                                flag3 = true;
                                str4  = str4.Substring(0, str4.Length - 1);
                            }
                            int num8 = Convert.ToInt32(str4);
                            if (flag3)
                            {
                                num8 *= -1;
                            }
                            row[num5] = num8;
                            goto Label_0B7C;
                        }
                        catch (Exception exception2)
                        {
                            throw new SAPException("Unable to convert '" + str4 + "' to data type Int32", exception2);
                            //throw exception2;
                        }
                    }
                    if (this._Fields[num5].ABAPType.Equals("P"))
                    {
                        str4 = str4.Replace(".", "").Replace(",", "");
                        bool flag4 = false;
                        try
                        {
                            if (str4.EndsWith("-"))
                            {
                                flag4 = true;
                                str4  = str4.Substring(0, str4.Length - 1);
                            }
                            int    num9 = str4.Length;
                            string str6 = str4.Substring(num9 - this._Fields[num5].Decimals, this._Fields[num5].Decimals);
                            string str7 = str4.Substring(0, num9 - this._Fields[num5].Decimals);
                            if (str6.Equals(""))
                            {
                                str6 = "0";
                            }
                            decimal num10 = Convert.ToDecimal(str7) + (Convert.ToDecimal(str6) / Convert.ToDecimal(Math.Pow(10.0, (double)this._Fields[num5].Decimals)));
                            if (flag4)
                            {
                                num10 *= -1M;
                            }
                            row[num5] = num10;
                            goto Label_0B7C;
                        }
                        catch (Exception exception3)
                        {
                            throw new SAPException("Unable to convert '" + str4 + "' to data type Decimal", exception3);
                        }
                    }
                    if (this._Fields[num5].ABAPType.Equals("F"))
                    {
                        try
                        {
                            row[num5] = Convert.ToDouble(str4);
                            goto Label_0B7C;
                        }
                        catch (Exception exception4)
                        {
                            throw new SAPException("Unable to convert '" + str4 + "' to data type Double", exception4);
                        }
                    }
                    try
                    {
                        row[num5] = str4;
                    }
                    catch (Exception exception5)
                    {
                        throw new SAPException("Unable to process value '" + str4 + "'", exception5);
                    }
Label_0B7C:
                    startIndex += length + 1;
                    if (num5 == (this._Fields.Count - 1))
                    {
                        dt.Rows.Add(row);
                        row  = dt.NewRow();
                        num5 = 0;
                    }
                    else
                    {
                        num5++;
                    }
                }
                this._Result = dt;
            }
        }
示例#32
0
            // SD02 - Inteface de fornecedor - Comunicação
            // funcao - ZFXI_SD02C
            //[RfcServerFunction(Name = "ZGXI_SD02")]
            public static void StfcInterfaceFornecedor(RfcServerContext context,
            IRfcFunction function)
            {
                // Exibe no console a interface que será executada
                Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID);
                // Flag da interface que de Limpar tabela de dados
                Char deletar = function.GetChar("I_REFRESH");
                // exibe se o mesmo foi flegado
                Console.WriteLine(deletar);

                // Implementa Repositório dos dados
                FornecedorRepository fornecedorRepository = new FornecedorRepository();
                Fornecedor fornecedor = new Fornecedor();
                FornecedorEmpresaRepository fornecedorEmpresaRepository = new FornecedorEmpresaRepository();
                FornecedorEmpresa fornecedorEmpresa = new FornecedorEmpresa();

                FornecedorTransportadoraLiberadaRepository fornecedorTransportadoraLiberadaRepository = new FornecedorTransportadoraLiberadaRepository();
                FornecedorTransportadoraLiberada fornecedorTransportadoraLiberada = new FornecedorTransportadoraLiberada();


                // ZTBSD060
                IRfcTable it_fornecedor = function.GetTable("IT_FORNECEDOR");

                // Implementa Repositorio Rfc de resposta
                RfcRepository rep = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno = bapiret2.CreateStructure();

                // ZTBSD079
                IRfcTable it_fornecedor_emp = function.GetTable("IT_FORNECEDOR_EMP");

                // Implementa Repositorio Rfc de resposta
                RfcRepository repEmp = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2emp = repEmp.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno_emp = bapiret2emp.CreateStructure();

                // ZTBSD086 - ZTBXI_101
                IRfcTable it_fornecedor_trans_lib = function.GetTable("IT_FORNECEDOR_TL");

                // Implementa Repositorio Rfc de resposta
                RfcRepository repfornecedorTrans = context.Repository;

                // RETORNO
                RfcStructureMetadata bapiret2Trans = repfornecedorTrans.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno_trans = bapiret2Trans.CreateStructure();

                // Se a interface de Fornecedor estiver marcada para Reiniciar "X" marca os registros das 2 tabebas como Eliminados.
                if (deletar != ' ')
                {
                    // Apaga todos os registros da tabela pro_fornecedor
                    IList<Fornecedor> fromDB = fornecedorRepository.ObterTodos();
                    IList<FornecedorEmpresa> fromDBemp = fornecedorEmpresaRepository.ObterTodos();
                    foreach (Fornecedor dados in fromDB)
                    {
                        foreach (IRfcStructure row in it_fornecedor)
                        {
                            dados.Pacote = row.GetString("PACOTE");
                            dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                            dados.Hora_criacao = row.GetString("ERZET");
                        }
                        dados.Eliminacao = "X";
                        fornecedorRepository.Alterar(dados);
                    }

                    foreach (FornecedorEmpresa dados in fromDBemp)
                    {
                        foreach (IRfcStructure row in it_fornecedor_emp)
                        {
                            dados.Pacote = row.GetString("PACOTE");
                            dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                            dados.Hora_criacao = row.GetString("ERZET");
                        }
                        dados.Eliminacao = "X";
                        fornecedorEmpresaRepository.Alterar(dados);
                    }
                }

                //
                // FORNECEDOR
                //                 

                //Char deletar = function.GetChar("I_REFRESH");                              

                int v_cont = 0;
                foreach (IRfcStructure row in it_fornecedor)
                {
                    fornecedor.Codigo = row.GetString("LIFNR");
                    fornecedor.Nome = row.GetString("NAME1");
                    fornecedor.Cpf = row.GetString("STCD2");
                    fornecedor.Cnpj = row.GetString("STCD1");
                    fornecedor.Nr_ie_for = row.GetString("STCD3");
                    fornecedor.Cep = row.GetString("POST_CODE");
                    fornecedor.Endereco = row.GetString("STREET");
                    fornecedor.Numero = row.GetString("HOUSE_NUM1");
                    fornecedor.Municipio = row.GetString("CITY1");
                    fornecedor.Bairro = row.GetString("CITY2");
                    fornecedor.Uf = row.GetString("UF");
                    fornecedor.Pais = row.GetString("COUNTRY");
                    fornecedor.Tel_res = row.GetString("TELF1");
                    fornecedor.Tel_res = row.GetString("TELF2");
                    fornecedor.Tel_cel = row.GetString("TELF1");
                    fornecedor.Fax = row.GetString("TELFX");
                    fornecedor.Email = row.GetString("EMAIL");
                    fornecedor.Grupo_contas = row.GetString("KTOKK");
                    fornecedor.Pacote = row.GetString("PACOTE");
                    fornecedor.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    fornecedor.Hora_criacao = row.GetString("ERZET");
                    fornecedor.Eliminacao = row.GetString("LOEVM");

                    v_cont = v_cont + 1;
                    try
                    {
                        IList<Fornecedor> fromDB = fornecedorRepository.ObterRegistrosUmCampo("Codigo", fornecedor.Codigo);
                        if (fromDB.Count == 0)
                        {
                            fornecedorRepository.Salvar(fornecedor);
                        }
                        else
                        {
                            fornecedorRepository.Alterar(fornecedor);
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro e a descricao do material
                        Console.Write("Erro ao inserir o Fornecedor, Mensagem:" + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retorno.SetValue("TYPE", "E");
                        linha_retorno.SetValue("MESSAGE", ex.Message);
                        linha_retorno.SetValue("MESSAGE", "Erro ao inserir o Fornecedor: " + fornecedor.Nome);
                        retorno.Insert(linha_retorno);
                    }
                }
               
                //
                // FIM FORNECEDOR

                //
                // FORNECEDOR EMPRESA
                //                 

                int v_cont_emp = 0;
                foreach (IRfcStructure row in it_fornecedor_emp)
                {
                    fornecedorEmpresa.Empresa = row.GetString("BUKRS");
                    fornecedorEmpresa.Codigo = row.GetString("LIFNR");
                    fornecedorEmpresa.Pacote = row.GetString("PACOTE");
                    fornecedorEmpresa.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    fornecedorEmpresa.Hora_criacao = row.GetString("ERZET");
                    fornecedorEmpresa.Eliminacao = row.GetString("LOEVM");

                    v_cont_emp = v_cont_emp + 1;
                    try
                    {
                        IList<FornecedorEmpresa> fromDB = fornecedorEmpresaRepository.ObterRegistrosDoisCampos("Empresa", fornecedorEmpresa.Empresa, "Codigo", fornecedorEmpresa.Codigo);
                        if (fromDB.Count == 0)
                        {
                            fornecedorEmpresaRepository.Salvar(fornecedorEmpresa);
                        }
                        else
                        {
                            fornecedorEmpresaRepository.Alterar(fornecedorEmpresa);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.Write("Erro ao inserir o Fornecedor Empresa, Mensagem:" + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retorno_emp.SetValue("TYPE", "E");
                        linha_retorno_emp.SetValue("MESSAGE", ex.Message);
                        linha_retorno_emp.SetValue("MESSAGE", "Erro ao inserir o Forn. Empresa: " + fornecedorEmpresa.Empresa + "Fornecedor: " + fornecedorEmpresa.Codigo);
                        retorno.Insert(linha_retorno_emp);
                    }
                }

                //
                // FIM FORNECEDOR EMPRESA

                //
                // FORNECEDOR TRANSPORTADORAS LIBERADAS
                //                                

                int v_cont_tras_lib = 0;
                foreach (IRfcStructure row in it_fornecedor_trans_lib)
                {
                    fornecedorTransportadoraLiberada.Codigo = row.GetString("LIFNR");
                    fornecedorTransportadoraLiberada.Funcao_parceiro = row.GetString("PARVW");
                    fornecedorTransportadoraLiberada.Numero_agente_frete = row.GetString("TDLNR");
                    String v_padrao = row.GetString("PADRAO");
                    if (v_padrao != "")
                    {
                        fornecedorTransportadoraLiberada.Padrao = Convert.ToBoolean(1);
                    }
                    fornecedorTransportadoraLiberada.Pacote = row.GetString("PACOTE");
                    fornecedorTransportadoraLiberada.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    fornecedorTransportadoraLiberada.Hora_criacao = row.GetString("ERZET");

                    v_cont_tras_lib = v_cont_tras_lib + 1;
                    try
                    {
                        IList<FornecedorTransportadoraLiberada> fromDB = fornecedorTransportadoraLiberadaRepository.ObterRegistrosDoisCampos("Codigo", fornecedorTransportadoraLiberada.Codigo, "Numero_agente_frete", fornecedorTransportadoraLiberada.Numero_agente_frete);
                        if (fromDB.Count == 0)
                        {
                            fornecedorTransportadoraLiberadaRepository.Salvar(fornecedorTransportadoraLiberada);
                        }
                        else
                        {
                            foreach (FornecedorTransportadoraLiberada dados in fromDB)
                            {
                                fornecedorTransportadoraLiberada.Id = dados.Id;
                            }
                            fornecedorTransportadoraLiberadaRepository.Alterar(fornecedorTransportadoraLiberada);
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro
                        Console.Write("Erro ao inserir a Tranpostadora do Fornecedor, Mensagem: " + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retorno_trans.SetValue("TYPE", "E");
                        linha_retorno_trans.SetValue("MESSAGE", ex.Message);
                        linha_retorno_trans.SetValue("MESSAGE", "Erro ao inserir a Tranpostadora do Fornecedor " + fornecedorTransportadoraLiberada.Codigo + " - Numero Agente Frete: " + fornecedorTransportadoraLiberada.Numero_agente_frete);
                        retorno.Insert(linha_retorno_trans);
                    }
                }
                // FIM FORNECEDOR TRANSPORTADORAS LIBERADAS


                IRfcTable retornoSucesso = function.GetTable("IT_RETURN");
                linha_retorno.SetValue("TYPE", "S");
                linha_retorno.SetValue("MESSAGE", "Registros com Sucesso Fornecedor: " + v_cont);
                retornoSucesso.Insert(linha_retorno);

                IRfcTable retornoSucessoEmp = function.GetTable("IT_RETURN");
                linha_retorno_emp.SetValue("TYPE", "S");
                linha_retorno_emp.SetValue("MESSAGE", "Registros com Sucesso Forn. Empresa: " + v_cont_emp);
                retornoSucessoEmp.Insert(linha_retorno_emp);
            }
        public string SAPData()
        {
            try
            {
                /* System.Data.DataTable dt = new System.Data.DataTable();
                 * dt.Columns.AddRange(new DataColumn[14] { new DataColumn("LIFNR", typeof(string)),
                 *                                  new DataColumn("BELNR", typeof(string)),
                 *                                  new DataColumn("BUZEI", typeof(string)),
                 *                                  new DataColumn("GJAHR", typeof(string)),
                 *                                  new DataColumn("BUDAT", typeof(string)),
                 *                                  new DataColumn("BWART", typeof(string)),
                 *                                  new DataColumn("MATNR", typeof(string)),
                 *                                  new DataColumn("SGTXT", typeof(string)),
                 *                                  new DataColumn("EBELN", typeof(string)),
                 *                                  new DataColumn("AEDAT", typeof(string)),
                 *                                  new DataColumn("MAKTX", typeof(string)),
                 *                                  new DataColumn("MENGE", typeof(string)),
                 *                                  new DataColumn("MEINS", typeof(string)),
                 *                                  new DataColumn("DMBTR", typeof(string)),}); */

                String username         = (string)(Session["username"]);
                RfcConfigParameters rfc = new RfcConfigParameters();////Assign values in rfcconfigparameters
                rfc.Add(RfcConfigParameters.Name, ConfigurationManager.AppSettings["Name"].ToString());
                rfc.Add(RfcConfigParameters.AppServerHost, ConfigurationManager.AppSettings["ServerHost"].ToString());
                rfc.Add(RfcConfigParameters.Client, ConfigurationManager.AppSettings["Client"].ToString());
                rfc.Add(RfcConfigParameters.User, ConfigurationManager.AppSettings["User"].ToString());
                rfc.Add(RfcConfigParameters.Password, ConfigurationManager.AppSettings["Password"].ToString());
                rfc.Add(RfcConfigParameters.SystemNumber, ConfigurationManager.AppSettings["SystemNumber"].ToString());
                rfc.Add(RfcConfigParameters.Language, ConfigurationManager.AppSettings["Language"].ToString());;
                rfc.Add(RfcConfigParameters.PoolSize, ConfigurationManager.AppSettings["PoolSize"].ToString());

                RfcDestination mydestination = RfcDestinationManager.GetDestination(rfc);
                RfcRepository  myrepository  = mydestination.Repository;
                IRfcFunction   myfunction    = myrepository.CreateFunction("ZSP_VEND_MOVEMENT");
                username = vendor_code.Value;
                myfunction.SetValue("I_LIFNR", username);
                String ponumber = po_number.Value;
                myfunction.SetValue("I_EBELN", ponumber);
                myfunction.Invoke(mydestination);

                IRfcTable messageTable = myfunction.GetTable("ITAB", true);
                int       rowIndex     = 0;
                foreach (IRfcStructure row in messageTable)
                {
                    String LIFNR = row.GetString("LIFNR");
                    String BELNR = row.GetString("BELNR");
                    String BUZEI = row.GetString("BUZEI");
                    String GJAHR = row.GetString("GJAHR");
                    String BUDAT = row.GetString("BUDAT");
                    String BWART = row.GetString("BWART");
                    String MATNR = row.GetString("MATNR");
                    String SGTXT = row.GetString("SGTXT");
                    String EBELN = row.GetString("EBELN");
                    String AEDAT = row.GetString("AEDAT");
                    String MAKTX = row.GetString("MAKTX");
                    String MENGE = row.GetString("MENGE");
                    String MEINS = row.GetString("MEINS");
                    String DMBTR = row.GetString("DMBTR");
                    block2  += "<tr>";
                    block2  += "<td>" + LIFNR + "</td>";
                    block2  += "<td>" + BELNR + "</td>";
                    block2  += "<td>" + BUZEI + "</td>";
                    block2  += "<td>" + GJAHR + "</td>";
                    block2  += "<td>" + BUDAT + "</td>";
                    block2  += "<td>" + BWART + "</td>";
                    block2  += "<td>" + MATNR + "</td>";
                    block2  += "<td>" + SGTXT + "</td>";
                    block2  += "<td>" + EBELN + "</td>";
                    block2  += "<td>" + AEDAT + "</td>";
                    block2  += "<td>" + MAKTX + "</td>";
                    block2  += "<td>" + MENGE + "</td>";
                    block2  += "<td>" + MEINS + "</td>";
                    block2  += "<td>" + DMBTR + "</td>";
                    block2  += "</tr>";
                    rowIndex = rowIndex + 1;
                }
                return(block2);
            }
            catch (Exception ex)
            {
            }
            return(block2);
        }
示例#34
0
            // 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);
            }
示例#35
0
        //MGV    getListFacturasNewConSAP
        public List <PEntidades.FacturasXVerificar> getListFacturasNewConSAP(
            List <string[]> listaDiferentesInstancias,
            string ordenarOrden, string ordenarRef,
            string fhigh, string flow,
            string facthig, string factlow,
            string monedahig, string monedalow,
            string refhig, string refLow, ref string mensaje
            )
        {
            List <PEntidades.FacturasXVerificar> lstResul = new List <PEntidades.FacturasXVerificar>(); // objeto lista

            //PEntidades.SrvSAPUProv.Z_UFAC_VERIFICAR verificar = new PEntidades.SrvSAPUProv.Z_UFAC_VERIFICAR();
            //PEntidades.FacturasNE verificar = new PEntidades.FacturasNE();  //-- se necesita o se pasan directo los campos a la llamada?

            status = new string[listaDiferentesInstancias.Count];
            for (int j = 0; j < listaDiferentesInstancias.Count; j++) //contiene idInstacia, endpoint, y sociedades separadas por "," ;
            {
                try
                {
                    PEntidades.SrvSAPUProv.ZWS_UPROVEEDORESClient srv = new PPersistencia.WebServices().getZWS_UPROVEEDORESInstanceNew(
                        listaDiferentesInstancias[j][1].ToString().Trim(),
                        listaDiferentesInstancias[j][4].Split(new Char[] { ',' })
                        );

                    srv.Open();
                    srv.InnerChannel.OperationTimeout = new TimeSpan(0, 10, 0);    //cambio llamado hacia SAP
                    PPersistencia.SAPConn psc  = new PPersistencia.SAPConn();
                    List <ParamsCallSAP>  list = new List <ParamsCallSAP>();
                    ParamsCallSAP         pr   = new ParamsCallSAP();

                    pr         = new ParamsCallSAP();           //verificar.REFERENCIA_LOW = refLow;
                    pr.NameVar = "REFERENCIA_LOW";
                    pr.ValVar  = refLow;
                    pr.TipVar  = "S";
                    list.Add(pr);

                    pr         = new ParamsCallSAP();          //verificar.REFERENCIA_HIGH = refhig;
                    pr.NameVar = "REFERENCIA_HIGH";
                    pr.ValVar  = refhig;
                    pr.TipVar  = "S";
                    list.Add(pr);

                    pr         = new ParamsCallSAP();          //verificar.MONEDA_LOW = monedalow;
                    pr.NameVar = "MONEDA_LOW";
                    pr.ValVar  = monedalow;
                    pr.TipVar  = "S";
                    list.Add(pr);

                    pr         = new ParamsCallSAP();         //verificar.MONEDA_HIGH = monedahig;
                    pr.NameVar = "MONEDA_HIGH";
                    pr.ValVar  = monedahig;
                    pr.TipVar  = "S";
                    list.Add(pr);

                    pr         = new ParamsCallSAP();        //verificar.F_COMPRA_LOW = flow;
                    pr.NameVar = "F_COMPRA_LOW";
                    pr.ValVar  = flow;
                    pr.TipVar  = "S";
                    list.Add(pr);

                    pr         = new ParamsCallSAP();        //verificar.F_COMPRA_HIGH = fhigh;
                    pr.NameVar = "F_COMPRA_HIGH";
                    pr.ValVar  = fhigh;
                    pr.TipVar  = "S";
                    list.Add(pr);

                    pr         = new ParamsCallSAP();         //verificar.FACTURA_LOW = factlow;
                    pr.NameVar = "F_FAC_LOW";
                    pr.ValVar  = factlow;
                    pr.TipVar  = "S";
                    list.Add(pr);

                    pr         = new ParamsCallSAP();         //verificar.FACTURA_HIGH = facthig;
                    pr.NameVar = "F_FAC_HIGH";
                    pr.ValVar  = facthig;
                    pr.TipVar  = "S";
                    list.Add(pr);

                    pr         = new ParamsCallSAP();         //verificar.P_ORDREF = ordenarRef;
                    pr.NameVar = "P_ORDREF";
                    pr.ValVar  = ordenarRef;
                    pr.TipVar  = "S";
                    list.Add(pr);

                    pr         = new ParamsCallSAP();        //verificar.P_ORDPED = ordenarOrden;
                    pr.NameVar = "P_ORDPED";
                    pr.ValVar  = ordenarOrden;
                    pr.TipVar  = "S";
                    list.Add(pr);

                    pr         = new ParamsCallSAP();        //verificar.P_BLOCK = "X";
                    pr.NameVar = "P_BLOCK";
                    pr.ValVar  = "X";
                    pr.TipVar  = "S";
                    list.Add(pr);

                    List <TablasCallSAP> listT      = new List <TablasCallSAP>();
                    TablasCallSAP        tr         = new TablasCallSAP();
                    List <ParamsCallSAP> listTb     = new List <ParamsCallSAP>();
                    string[]             splitLifnr = listaDiferentesInstancias[j][3].Split(new Char[] { ',' });
                    for (int i = 1; i <= splitLifnr.Length; i++)        //verificar.PROVEEDOR = PEntidades.Utiles.objetoLifnr(splitLifnr);
                    {
                        pr         = new ParamsCallSAP();
                        pr.NameVar = "LIFNR";
                        pr.ValVar  = splitLifnr[i - 1].ToString().Trim(); //pr.ValVar = "1000000";
                        pr.TipVar  = "S";
                        listTb.Add(pr);
                    }
                    tr.TablaVar  = "PROVEEDOR_TB";
                    tr.CamposVar = listTb;
                    listT.Add(tr);

                    string[]             splitSoc = listaDiferentesInstancias[j][2].Split(new Char[] { ',' });
                    List <TablasCallSAP> listTC   = new List <TablasCallSAP>();
                    TablasCallSAP        trC      = new TablasCallSAP();
                    List <ParamsCallSAP> listTc   = new List <ParamsCallSAP>();
                    for (int i = 1; i <= splitSoc.Length; i++)          //verificar.CENTRO = PEntidades.Utiles.objetoSociedad(splitSoc);
                    {
                        pr         = new ParamsCallSAP();
                        pr.NameVar = "WERKS";
                        pr.ValVar  = splitSoc[i - 1].ToString().Trim();
                        pr.TipVar  = "S";
                        listTc.Add(pr);
                    }

                    trC.TablaVar  = "CENTRO_TB";
                    trC.CamposVar = listTc;
                    listT.Add(trC);

                    //PEntidades.SrvSAPUProv.Z_UFAC_VERIFICARResponse resul = srv.Z_UFAC_VERIFICAR(verificar);
                    IRfcFunction rescon = psc.conSAP("Z_DFAC_VERIFICAR", list, listT);

                    mensaje = psc.mensaje;              //mensaje = resul.MENSAJE;
                    IRfcTable tb = rescon.GetTable(0);
                    for (int o = 0; o < tb.Count; o++)  //for (int i = 0; i < resul.IT_F_VERIFICAR.Length; i++)
                    {
                        tb.CurrentIndex = o;
                        PEntidades.FacturasXVerificar tmpFac = new PEntidades.FacturasXVerificar(); // objeto de la lista
                        tmpFac.IDINSTANCIA = int.Parse(listaDiferentesInstancias[j][0]);

                        tmpFac.TIPO                = tb.CurrentRow.GetString("TIPO");             //tmpFac.TIPO = resul.IT_F_VERIFICAR[i].TIPO;
                        tmpFac.EBELN               = tb.CurrentRow.GetString("EBELN");            //resul.IT_F_VERIFICAR[i].EBELN;
                        tmpFac.RFCCorrespon        = tb.CurrentRow.GetString("RFC_PROVEEDOR");    //resul.IT_F_VERIFICAR[i].RFC_PROVEEDOR;
                        tmpFac.RFCSociedad         = tb.CurrentRow.GetString("RFC_SOC");          //resul.IT_F_VERIFICAR[i].RFC_SOC;
                        tmpFac.DescripcionErrorSAP = tb.CurrentRow.GetString("FACT_SAP");         //resul.IT_F_VERIFICAR[i].FACT_SAP;
                        tmpFac.DescripcionErrorSAT = tb.CurrentRow.GetString("FACT_SAT");         // resul.IT_F_VERIFICAR[i].FACT_SAT;
                        tmpFac.InsidenciaPersonal  = tb.CurrentRow.GetString("INCIDENCIA");       //resul.IT_F_VERIFICAR[i].INCIDENCIA;
                        tmpFac.XBLNR2              = tb.CurrentRow.GetString("XBLNR2");           //resul.IT_F_VERIFICAR[i].XBLNR2;
                        tmpFac.LIFNR               = tb.CurrentRow.GetString("LIFNR");            //resul.IT_F_VERIFICAR[i].LIFNR;
                        tmpFac.BUKRS               = tb.CurrentRow.GetString("BUKRS");            //resul.IT_F_VERIFICAR[i].BUKRS;
                        tmpFac.WERKS               = tb.CurrentRow.GetString("WERKS").ToString(); //resul.IT_F_VERIFICAR[i].WERKS.ToString();
                        tmpFac.BUDAT               = tb.CurrentRow.GetString("BUDAT");            //resul.IT_F_VERIFICAR[i].BUDAT;
                        tmpFac.BLDAT               = tb.CurrentRow.GetString("BLDAT");            //resul.IT_F_VERIFICAR[i].BLDAT;
                        tmpFac.WRBTR               = tb.CurrentRow.GetString("WRBTR").ToString(); //resul.IT_F_VERIFICAR[i].WRBTR.ToString();//Decimal
                        tmpFac.IVA          = tb.CurrentRow.GetString("IVA").ToString();          //resul.IT_F_VERIFICAR[i].IVA.ToString();
                        tmpFac.MWSKZ        = tb.CurrentRow.GetString("MWSKZ").ToString();        //resul.IT_F_VERIFICAR[i].MWSKZ.ToString();//Decimal
                        tmpFac.IMP_TOTAL    = tb.CurrentRow.GetString("IMP_TOTAL").ToString();    //resul.IT_F_VERIFICAR[i].IMP_TOTAL.ToString();//Decimal
                        tmpFac.RETENCION    = tb.CurrentRow.GetString("RETENCION").ToString();    //resul.IT_F_VERIFICAR[i].RETENCION.ToString();//Decimal
                        tmpFac.WAERS        = tb.CurrentRow.GetString("WAERS").ToString();        //resul.IT_F_VERIFICAR[i].WAERS.ToString();//Decimal
                        tmpFac.SALDO        = tb.CurrentRow.GetString("SALDO").ToString();        //resul.IT_F_VERIFICAR[i].SALDO.ToString();
                        tmpFac.descMaterial = tb.CurrentRow.GetString("TXZ01").ToString();        //resul.IT_F_VERIFICAR[i].TXZ01.ToString();
                        tmpFac.LIGHTS       = tb.CurrentRow.GetString("LIGHTS").ToString();       //resul.IT_F_VERIFICAR[i].LIGHTS.ToString();
                        tmpFac.posicion     = tb.CurrentRow.GetString("POSICION").ToString();     //resul.IT_F_VERIFICAR[i].POSICION.ToString();
                        tmpFac.tipoLinea    = tb.CurrentRow.GetString("TIPOLINEA").ToString();    //resul.IT_F_VERIFICAR[i].TIPOLINEA.ToString();
                        tmpFac.BWTAR        = tb.CurrentRow.GetString("BWTAR").ToString();        //resul.IT_F_VERIFICAR[i].BWTAR.ToString();
                        tmpFac.cantidadXML  = tb.CurrentRow.GetInt("ZCOUNT");                     //resul.IT_F_VERIFICAR[i].ZCOUNT;
                        tmpFac.MATNR        = tb.CurrentRow.GetString("MATNR");                   //resul.IT_F_VERIFICAR[i].MATNR;
                        tmpFac.GJAHR        = tb.CurrentRow.GetString("GJAHR");                   //resul.IT_F_VERIFICAR[i].GJAHR;
                        if (tb.CurrentRow.GetString("KSCHL") == null)                             //.resul.IT_F_VERIFICAR[i].KSCHL
                        {
                            tmpFac.KSCHL = "";
                        }
                        else
                        {
                            tmpFac.KSCHL = tb.CurrentRow.GetString("KSCHL");                //resul.IT_F_VERIFICAR[i].KSCHL.ToString();
                        }

                        tmpFac.BELNR = tb.CurrentRow.GetString("BELNR");                    //resul.IT_F_VERIFICAR[i].BELNR.ToString();

                        if (tb.CurrentRow.GetString("MSG_VARIOS") == null)                  //resul.IT_F_VERIFICAR[i]. == null)
                        {
                            tmpFac.msgVarios = "";
                        }
                        else
                        {
                            tmpFac.msgVarios = tb.CurrentRow.GetString("MSG_VARIOS");        //resul.IT_F_VERIFICAR[i].MSG_VARIOS;
                        }

                        tmpFac.esPrimerCarga = false;
                        lstResul.Add(tmpFac);
                    } // for result
                    srv.Close();
                }     // try
                catch (Exception e)
                {
                    status[j] = "Error al cargar en la instancia: " + listaDiferentesInstancias[j][6];
                }
            } // for

            return(lstResul);
        }
示例#36
0
        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);
        }
示例#37
0
        /// <summary>
        /// 取得供應商(藝術家)主檔
        /// </summary>
        /// <param name="P_DATE_from">異動日期起始,yyyyMMdd</param>
        /// <param name="P_DATE_TO">異動日期迄止,yyyyMMdd</param>
        /// <param name="P_NAME1">藝術家名</param>
        /// <returns></returns>
        public static List <ET_VENDOR> GetSap_Z_MM_ZHAW_CUBE2(string P_DATE_from, string P_DATE_TO, string P_NAME1)
        {
            IDestinationConfiguration ID = new MyBackendConfig();
            IRfcTable IRetTable          = null;

            bool             bRegistered   = false;
            List <ET_VENDOR> ET_VENDORList = new List <ET_VENDOR>();

            try
            {
                RfcDestination rfcDest = null;
                try
                {
                    rfcDest     = RfcDestinationManager.GetDestination("PRD");
                    bRegistered = true;
                }
                catch (Exception ex)
                {
                    if (ex.GetType().Name == "RfcInvalidStateException")
                    {
                    }
                }
                finally
                {
                    if (rfcDest == null && bRegistered == false)
                    {
                        bRegistered = true;
                        RfcDestinationManager.RegisterDestinationConfiguration(ID);
                        rfcDest = RfcDestinationManager.GetDestination("PRD");
                    }
                }
                RfcRepository rfcRepo = rfcDest.Repository;
                IRfcFunction  IReader = rfcRepo.CreateFunction("Z_MM_ZHAW_CUBE2");
                IReader.SetValue("P_DATE_from", P_DATE_from);
                IReader.SetValue("P_DATE_TO", P_DATE_TO);
                IReader.SetValue("P_NAME1", P_NAME1);
                //每幾筆資料切成一個檔案
                //IReader.SetValue("COUNT", "1000");
                //執行查詢
                IReader.Invoke(rfcDest);
                IRetTable = IReader.GetTable("ET_VENDOR");

                ET_VENDORList = IRetTable.AsEnumerable().Select(x =>
                                                                new ET_VENDOR()
                {
                    NAME1 = x.GetString("NAME1"),
                    LIFNR = x.GetString("LIFNR"),
                    SORTL = x.GetString("SORTL"),
                    LAND1 = x.GetString("LAND1"),
                    ERDAT = x.GetString("ERDAT"),
                    UDATE = x.GetString("UDATE") ?? ""
                }).ToList();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (bRegistered)
                {
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
                }
            }

            return(ET_VENDORList);
        }
示例#38
0
        public static void ValidateSAPData(PlanningFunctionGroup activityPlanGroup, int functionCount)
        {
            lock (m_syncObject)
            {
                if (activityPlanGroup.FunctionList.Count > 0)
                {
                    IRfcFunction sapValidateCostPlanFunction = SapConnection.GetObject().CurrentDestination.Repository.CreateFunction("BAPI_ACT_PRICE_CHECK_AND_POST");
                    IRfcTable    returnTable = null;

                    try
                    {
                        ///*** --- IMPORT (SAP TAB) -------------------------------***//

                        IRfcStructure headerInfoStructure = sapValidateCostPlanFunction.GetStructure("HEADER_INFO"); // HEADER_INFO


                        headerInfoStructure.SetValue("CO_AREA", ((ActivityPlan)activityPlanGroup.FunctionList[0]).ControllingArea);           // 3
                        headerInfoStructure.SetValue("FISC_YEAR", ((ActivityPlan)activityPlanGroup.FunctionList[0]).FiscalYear);              // 4
                        headerInfoStructure.SetValue("PERIOD_FROM", ((ActivityPlan)activityPlanGroup.FunctionList[0]).PeriodFrom);            // 5
                        headerInfoStructure.SetValue("PERIOD_TO", ((ActivityPlan)activityPlanGroup.FunctionList[0]).PeriodTo);                // 6
                        headerInfoStructure.SetValue("VERSION", ((ActivityPlan)activityPlanGroup.FunctionList[0]).Version);                   // 8
                        headerInfoStructure.SetValue("DOC_HDR_TX", ((ActivityPlan)activityPlanGroup.FunctionList[0]).DocumentHeaderText);     // 9
                        headerInfoStructure.SetValue("PLAN_CURRTYPE", ((ActivityPlan)activityPlanGroup.FunctionList[0]).PlanningCurrency);    // 10

                        sapValidateCostPlanFunction.SetValue("DELTA", ((ActivityPlan)activityPlanGroup.FunctionList[0]).Delta);               // 11
                        sapValidateCostPlanFunction.SetValue("TESTRUN", "X");                                                                 // "X" - Validate Only, " " - Post

                        foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                        {
                            try
                            {
                                /*** --- IDX_STRUCTURE -- CO Planning: Plan Activity BAPIs -------------- ***/

                                IRfcTable indexTable = sapValidateCostPlanFunction.GetTable("IDX_STRUCTURE");
                                indexTable.Append();

                                indexTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000"));
                                indexTable.SetValue("VALUE_INDEX", ((ActivityPlan)myFunction).ValueIndex.ToString("000000"));
                                indexTable.SetValue("ATTRIB_INDEX", "000000");


                                /*** --- OBJECT -- CO Planning: Objects for Plan Activity BAPIs --------- ***/

                                IRfcTable coObjectTable = sapValidateCostPlanFunction.GetTable("OBJECT");
                                coObjectTable.Append();

                                string objectIndex = ((ActivityPlan)myFunction).ObjectIndex.ToString("000000");
                                string valueIndex  = ((ActivityPlan)myFunction).ValueIndex.ToString("000000");

                                try
                                {
                                    if (coObjectTable.GetValue("OBJECT_INDEX") != null)
                                    {
                                        if (coObjectTable.GetValue("OBJECT_INDEX").ToString() != objectIndex)
                                        {
                                            coObjectTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000"));  // Calculated
                                        }
                                    }
                                    else
                                    {
                                        coObjectTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000"));      // Calculated
                                    }
                                }
                                catch (Exception ex)
                                {
                                    coObjectTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000"));
                                }

                                coObjectTable.SetValue("COSTCENTER", ((ActivityPlan)myFunction).CostCenter);                                    // 12
                                coObjectTable.SetValue("ACTTYPE", ((ActivityPlan)myFunction).ActivityType);                                     // 13


                                /*** --- ACCOUNT_PLAN_TOTVALUE -- CO Planning: Objects for Primary Cost BAPIs --------- ***/

                                IRfcTable totValueTable = sapValidateCostPlanFunction.GetTable("TOT_VALUE");
                                totValueTable.Append();

                                totValueTable.SetValue("VALUE_INDEX", ((ActivityPlan)myFunction).ValueIndex.ToString("000000"));              // Calculated

                                if (((ActivityPlan)myFunction).Price != string.Empty)
                                {
                                    totValueTable.SetValue("PRICE_FIX", ((ActivityPlan)myFunction).Price);                            // 2
                                    totValueTable.SetValue("DIST_KEY_PRICE_FIX", ((ActivityPlan)myFunction).DistributionKey);
                                    totValueTable.SetValue("PRICE_UNIT", "00001");
                                }
                                else
                                {
                                    totValueTable.SetValue("PRICE_FIX", "0");
                                }

                                totValueTable.SetValue("ACTVTY_QTY", ((ActivityPlan)myFunction).Quantity);                            // 1
                                totValueTable.SetValue("DIST_KEY_QUAN", ((ActivityPlan)myFunction).DistributionKey);                  // 7

                                //// ToDo

                                totValueTable.SetValue("CURRENCY", ((ActivityPlan)myFunction).TransactionCurrency);                   // 14


                                myFunction.Updated = true;
                            }
                            catch (Exception ex)
                            {
                                myFunction.ValidationResult = ex.Message;
                            }
                        }
                    }
                    catch (Exception exp)
                    {
                        foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                        {
                            myFunction.ValidationResult = exp.Message;
                        }
                    }

                    try
                    {
                        sapValidateCostPlanFunction.Invoke(SapConnection.GetObject().CurrentDestination);
                    }
                    catch (Exception ex)
                    {
                        DialogResult r = MessageBox.Show("SAP Authorization Error: " + ex.Message, "Error",
                                                         System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                        if (r == DialogResult.OK)
                        {
                        }

                        ReturnProgressDataForm.CancelProcess();

                        return;
                    }


                    returnTable = sapValidateCostPlanFunction.GetTable("RETURN");


                    foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                    {
                        if (!SAPRequest.ReturnValuesList.ContainsKey(myFunction.Signature))
                        {
                            SAPRequest.ReturnValuesList.Add(myFunction.Signature, myFunction);
                        }
                    }

                    if (returnTable.RowCount > 0)
                    {
                        try
                        {
                            string logPath = LogFile.CheckCreateLogFolder() + "\\PWLogValOnly" + DateTime.Now.ToString("(dd-MMM-yyyy-HH-mm-ss-f)") + ".txt";
                            if (!File.Exists(logPath))
                            {
                                using (TextWriter writer = File.CreateText(logPath))
                                {
                                    writer.WriteLine("VALIDATION ONLY: " + DateTime.Now.ToString("(dd-MMM-yyyy-HH-mm-ss-f)"));
                                    writer.WriteLine(" ");
                                    for (int y = 0; y <= (returnTable.RowCount - 1); y += 1)
                                    {
                                        for (int z = 0; z <= (returnTable[y].ElementCount - 1); z += 1)
                                        {
                                            string par = returnTable[y][z].Metadata.Name;
                                            string val = returnTable[y].GetString(z);

                                            string messageLine = par + " : " + val;
                                            writer.WriteLine(messageLine);
                                        }
                                        writer.WriteLine(" ");
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            //MessageBox.Show(ex.Message)
                        }

                        for (int j = 0; j <= (returnTable.RowCount - 1); j++)
                        {
                            int    row     = Convert.ToInt32(returnTable[j].GetString("ROW")) - 1;
                            string message = returnTable[j].GetString("MESSAGE");

                            if (row < 0)
                            {
                                row = 0;
                            }

                            string rType     = string.Empty;
                            string messageV1 = string.Empty;
                            string messageV2 = string.Empty;
                            string messageV3 = string.Empty;
                            string messageV4 = string.Empty;
                            string rNumber   = string.Empty;

                            rType     = returnTable[j].GetString("TYPE");
                            messageV1 = returnTable[j].GetString("MESSAGE_V1");
                            messageV2 = returnTable[j].GetString("MESSAGE_V2");

                            for (int i = 0; i <= (activityPlanGroup.FunctionList.Count - 1); i++)
                            {
                                int elementLocation = SAPRequest.GetObject().TotalProcessedBySAP + i;
                                if (elementLocation < 0)
                                {
                                    elementLocation = 0;
                                }

                                string activityType = ((ActivityPlan)SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation)).ActivityType;
                                string costCenter   = ((ActivityPlan)SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation)).CostCenter;

                                try
                                {
                                    messageV1 = messageV1.TrimStart('0');
                                    messageV2 = messageV2.TrimStart('0');
                                }
                                catch (Exception ex)
                                {
                                }

                                try
                                {
                                    if (i == row && !string.IsNullOrEmpty(message))
                                    {
                                        SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation).Result = message;
                                    }
                                    else if (i != row && rType == "E")
                                    {
                                        try
                                        {
                                            if (messageV1 == activityType || messageV2 == activityType)
                                            {
                                                // account for incrementing batch number
                                                SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation).Result = message;
                                            }
                                            else if (messageV1 != activityType && messageV1 != costCenter && row == 0)
                                            {
                                                rNumber = returnTable[j].GetString("NUMBER");
                                                if (rNumber != string.Empty)
                                                {
                                                    SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation).Result = message;
                                                    if (ReturnProgressDataForm.OperationCancelled)
                                                    {
                                                        break;
                                                    }
                                                }
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                        }
                                    }
                                    else if (rType == "I")
                                    {
                                        foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                                        {
                                            SAPRequest.ReturnValuesList[myFunction.Signature].Result = message;
                                            if (ReturnProgressDataForm.OperationCancelled)
                                            {
                                                break;
                                            }
                                        }
                                        return;
                                    }
                                }
                                catch (Exception ex)
                                {
                                }
                                if (ReturnProgressDataForm.OperationCancelled)
                                {
                                    break;
                                }
                            }
                            if (ReturnProgressDataForm.OperationCancelled)
                            {
                                break;
                            }
                        }


                        foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                        {
                            if ((SAPRequest.ReturnValuesList[myFunction.Signature].Result == null) || (SAPRequest.ReturnValuesList[myFunction.Signature].Result == string.Empty))
                            {
                                SAPRequest.ReturnValuesList[myFunction.Signature].Result = "pwValidated";
                            }
                            if (ReturnProgressDataForm.OperationCancelled)
                            {
                                break;
                            }
                        }
                    }
                    else
                    {
                        foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                        {
                            SAPRequest.ReturnValuesList[myFunction.Signature].Result = "pwValidated";
                            if (ReturnProgressDataForm.OperationCancelled)
                            {
                                break;
                            }
                        }
                    }
                }
            }
        }
        public void anulacioncomprobantes(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_ID_COMPROBANTE, string P_APROBADOR_ANULACION,
                                          string P_TXT_ANULACION, string P_USUARIO, string P_IDCAJA)
        {
            Retorno.Clear();
            errormessage = "";
            IRfcTable lt_retorno;

            RETORNO retorno_resp;

            //Conexion a SAP

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

            string retval = connectorSap.connectionsSAP();

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

                IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_ANULA_REC_CAJA");
                BapiGetUser.SetValue("ID_COMPROBANTE", P_ID_COMPROBANTE);
                BapiGetUser.SetValue("APROBADOR_ANULACION", P_APROBADOR_ANULACION);
                BapiGetUser.SetValue("TXT_ANULACION", P_TXT_ANULACION);
                BapiGetUser.SetValue("ID_CAJA", P_IDCAJA);
                BapiGetUser.SetValue("USUARIO", P_USUARIO);

                BapiGetUser.Invoke(SapRfcDestination);

                //lt_h_documentos = BapiGetUser.GetTable("CAB_COMP");
                //lt_d_documentos = BapiGetUser.GetTable("DET_COMP");
                lt_retorno = BapiGetUser.GetTable("RETORNO");


                if (lt_retorno.Count > 0)
                {
                    for (int i = 0; i < lt_retorno.Count(); i++)
                    {
                        lt_retorno.CurrentIndex = i;
                        retorno_resp            = new RETORNO();
                        retorno_resp.TYPE       = lt_retorno.GetString("TYPE");
                        retorno_resp.ID         = lt_retorno.GetString("ID");
                        retorno_resp.NUMBER     = lt_retorno.GetString("NUMBER");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.LOG_NO     = lt_retorno.GetString("LOG_NO");
                        retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1");
                        if (lt_retorno.GetString("TYPE") == "S")
                        {
                            Mensaje        = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V4");
                            NumComprobante = lt_retorno.GetString("MESSAGE_V4");
                        }
                        if (lt_retorno.GetString("TYPE") == "E")
                        {
                            errormessage = errormessage + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1");
                        }
                        retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2");
                        retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3");
                        retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4");
                        retorno_resp.PARAMETER  = lt_retorno.GetString("PARAMETER");
                        retorno_resp.ROW        = lt_retorno.GetString("ROW");
                        retorno_resp.FIELD      = lt_retorno.GetString("FIELD");
                        retorno_resp.SYSTEM     = lt_retorno.GetString("SYSTEM");
                        Retorno.Add(retorno_resp);
                    }
                    // System.Windows.MessageBox.Show(Mensaje);
                }
            }
            else
            {
                errormessage = retval;
            }
            GC.Collect();
        }
示例#40
0
        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));
        }
示例#41
0
        public DataTable ObtenerStock()
        {
            DataTable dt = new DataTable("");

            RfcConfigParameters rfc = new RfcConfigParameters();

            rfc.Add(RfcConfigParameters.Name, ConfigurationManager.AppSettings["Name"]);
            rfc.Add(RfcConfigParameters.AppServerHost, ConfigurationManager.AppSettings["AppServerHost"]);
            rfc.Add(RfcConfigParameters.Client, ConfigurationManager.AppSettings["Client"]);
            rfc.Add(RfcConfigParameters.User, ConfigurationManager.AppSettings["User"]);
            rfc.Add(RfcConfigParameters.Password, ConfigurationManager.AppSettings["Password"]);
            rfc.Add(RfcConfigParameters.SystemNumber, "00");
            rfc.Add(RfcConfigParameters.Language, "ES");
            rfc.Add(RfcConfigParameters.PoolSize, "5");
            rfc.Add(RfcConfigParameters.MaxPoolSize, "100");
            rfc.Add(RfcConfigParameters.IdleTimeout, "900");


            RfcDestination rfcDest = null;
            RfcRepository  rfcRep  = null;

            try
            {
                rfcDest = RfcDestinationManager.GetDestination(rfc);
                rfcRep  = rfcDest.Repository;
            }
            catch (Exception e)
            {
                e.ToString();
            }

            IRfcFunction function = rfcRep.CreateFunction("ZSD_REXSAP_006");



            IRfcTable material;

            material = function.GetTable("TI_MATNR");

            BdConnection bd = new BdConnection();

            foreach (TI_MATNR mat in bd.GetMaterial())
            {
                material.Append();
                material.SetValue("SIGN", mat.SIGN);
                material.SetValue("OPTION", mat.OPTION);
                material.SetValue("LOW", mat.LOW);
                material.SetValue("HIGH", "");
            }


            try
            {
                function.Invoke(rfcDest);
                IRfcTable doc   = function.GetTable("MSTOCKS");
                DataTable table = IRfcTable_To_DataTable(doc, "MSTOCKS");
                dt = table;

                return(dt);
            }
            catch (RfcBaseException e)
            {
                return(null);
            }
        }
示例#42
0
        public void partidasopen(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_CODCLIENTE, string P_DOCUMENTO, string P_RUT,
                                 string P_SOCIEDAD, DateTime P_FECHA_VENC, string P_LAND, string P_FACT_SAP, string TipoBusqueda)
        {
            ObjDatosPartidasOpen.Clear();
            Retorno.Clear();
            IRfcTable     lt_t_documentos;
            IRfcStructure lt_retorno;

            //  PART_ABIERTAS  PART_ABIERTAS_resp;
            T_DOCUMENTOS PART_ABIERTAS_resp;
            ESTADO       retorno_resp;

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

            string retval = connectorSap.connectionsSAP();

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

                IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_GET_DOC");
                BapiGetUser.SetValue("CODCLIENTE", P_CODCLIENTE);
                BapiGetUser.SetValue("DOCUMENTO", P_DOCUMENTO);
                BapiGetUser.SetValue("RUT", P_RUT);
                BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD);
                BapiGetUser.SetValue("LAND", P_LAND);
                BapiGetUser.SetValue("FACTURA_SAP", P_DOCUMENTO);
                BapiGetUser.SetValue("FECHA_VENC", P_FECHA_VENC);
                BapiGetUser.Invoke(SapRfcDestination);

                protesto        = BapiGetUser.GetString("PE_PROTESTADO");
                lt_t_documentos = BapiGetUser.GetTable("T_DOCUMENTOS");
                lt_retorno      = BapiGetUser.GetStructure("SE_ESTATUS");

                //lt_PART_ABIERTAS = BapiGetUser.GetTable("ZCLSP_TT_LISTA_DOCUMENTOS");
                try
                {
                    if (lt_t_documentos.Count > 0)
                    {
                        //LLenamos la tabla de salida lt_DatGen
                        for (int i = 0; i < lt_t_documentos.RowCount; i++)
                        {
                            try
                            {
                                lt_t_documentos.CurrentIndex = i;
                                PART_ABIERTAS_resp           = new T_DOCUMENTOS();

                                PART_ABIERTAS_resp.SOCIEDAD     = lt_t_documentos[i].GetString("SOCIEDAD");
                                PART_ABIERTAS_resp.NDOCTO       = lt_t_documentos[i].GetString("NDOCTO");
                                PART_ABIERTAS_resp.NREF         = lt_t_documentos[i].GetString("NREF");
                                PART_ABIERTAS_resp.CLASE_CUENTA = lt_t_documentos[i].GetString("CLASE_CUENTA");
                                PART_ABIERTAS_resp.CLASE_DOC    = lt_t_documentos[i].GetString("CLASE_DOC");
                                PART_ABIERTAS_resp.COD_CLIENTE  = lt_t_documentos[i].GetString("COD_CLIENTE");
                                PART_ABIERTAS_resp.RUTCLI       = lt_t_documentos[i].GetString("RUTCLI");
                                PART_ABIERTAS_resp.NOMCLI       = lt_t_documentos[i].GetString("NOMCLI");
                                PART_ABIERTAS_resp.CEBE         = lt_t_documentos[i].GetString("CEBE");
                                //PART_ABIERTAS_resp.FECHA_DOC = lt_t_documentos[i].GetString("FECHA_DOC");
                                DateTime fec_doc = Convert.ToDateTime(lt_t_documentos[i].GetString("FECHA_DOC"));
                                PART_ABIERTAS_resp.FECHA_DOC = fec_doc.ToString("dd/MM/yyyy");

                                //PART_ABIERTAS_resp.FECVENCI = lt_t_documentos[i].GetString("FECVENCI");
                                DateTime fec_venc = Convert.ToDateTime(lt_t_documentos[i].GetString("FECVENCI"));
                                PART_ABIERTAS_resp.FECVENCI = fec_venc.ToString("dd/MM/yyyy");

                                PART_ABIERTAS_resp.DIAS_ATRASO     = lt_t_documentos[i].GetString("DIAS_ATRASO");
                                PART_ABIERTAS_resp.ESTADO          = lt_t_documentos[i].GetString("ESTADO");
                                PART_ABIERTAS_resp.ICONO           = lt_t_documentos[i].GetString("ICONO");
                                PART_ABIERTAS_resp.MONEDA          = lt_t_documentos[i].GetString("MONEDA");
                                PART_ABIERTAS_resp.ACC             = lt_t_documentos[i].GetString("ACC");
                                PART_ABIERTAS_resp.CLASE_CUENTA    = lt_t_documentos[i].GetString("CLASE_CUENTA");
                                PART_ABIERTAS_resp.COND_PAGO       = lt_t_documentos[i].GetString("COND_PAGO");
                                PART_ABIERTAS_resp.CME             = lt_t_documentos[i].GetString("CME");
                                PART_ABIERTAS_resp.CONTROL_CREDITO = lt_t_documentos[i].GetString("CONTROL_CREDITO");
                                //string.Format("{0:0.##}", lvatend)
                                //decimal lvNetoAbo2 = Convert.ToDecimal(t_REPORTE_CONTACTOS[i].GetString("NETO_ABONO2"));
                                //REPORTE_CONTACTOS_resp.NETO_ABONO2 = string.Format("{0:#,0}", lvNetoAbo2);
                                //decimal Cualquiernombre = Convert.ToDecimal(lt_t_documentos[i].GetString("MONTOF"));


                                //****
                                // if (lt_t_documentos[i].GetString("MONTOF") == "")
                                // {
                                //     PART_ABIERTAS_resp.MONTOF = "0";
                                // }
                                // else
                                // {
                                //     PART_ABIERTAS_resp.MONTOF = lt_t_documentos[i].GetString("MONTOF");
                                // }
                                // //PART_ABIERTAS_resp.MONTOF = string.Format("{0:0.##}", Cualquiernombre);
                                // //Cualquiernombre = Convert.ToDecimal(lt_t_documentos[i].GetString("MONTOF_ABON"));
                                //// PART_ABIERTAS_resp.MONTOF_ABON = string.Format("{0:0.##}", Cualquiernombre);
                                // if (lt_t_documentos[i].GetString("MONTOF_ABON") == "")
                                // {
                                //     PART_ABIERTAS_resp.MONTOF_ABON = "0";
                                // }
                                // else
                                // {
                                //     PART_ABIERTAS_resp.MONTOF_ABON = lt_t_documentos[i].GetString("MONTOF_ABON");
                                // }
                                // //Cualquiernombre = Convert.ToDecimal(lt_t_documentos[i].GetString("MONTOF_PAGAR"));
                                // //PART_ABIERTAS_resp.MONTOF_PAGAR = string.Format("{0:0.##}", Cualquiernombre);
                                // if (lt_t_documentos[i].GetString("MONTOF_PAGAR") == "")
                                // {
                                //     PART_ABIERTAS_resp.MONTOF_PAGAR = "0";
                                // }
                                // else
                                // {
                                // PART_ABIERTAS_resp.MONTOF_PAGAR = lt_t_documentos[i].GetString("MONTOF_PAGAR");
                                // }
                                //MONTOF

                                string Monto = "";

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

                                    //PART_ABIERTAS_resp.MONTOF =  Cualquiernombre;
                                    //PART_ABIERTAS_resp.MONTOF = lt_t_documentos[i].GetString("MONTOF");
                                    //PART_ABIERTAS_resp.MONTOF = Convert.ToDouble( Convert.ToDouble( lt_t_documentos[i].GetString("MONTO"))*100).ToString("0,0",elGR) ;
                                    if (lt_t_documentos[i].GetString("MONEDA") == "CLP")
                                    {
                                        string Valor = lt_t_documentos[i].GetString("MONTOF").Trim();
                                        if (Valor.Contains("-"))
                                        {
                                            Valor = "-" + Valor.Replace("-", "");
                                        }
                                        Valor = Valor.Replace(".", "");
                                        Valor = Valor.Replace(",", "");
                                        decimal ValorAux        = Convert.ToDecimal(Valor);
                                        string  Cualquiernombre = string.Format("{0:0,0}", ValorAux);
                                        PART_ABIERTAS_resp.MONTOF = Cualquiernombre.Replace(",", ".");
                                    }
                                    else
                                    {
                                        //PART_ABIERTAS_resp.MONTOF = lt_t_documentos[i].GetString("MONTOF");
                                        string  moneda   = Convert.ToString(lt_t_documentos[i].GetString("MONTOF"));
                                        decimal ValorAux = Convert.ToDecimal(moneda);
                                        PART_ABIERTAS_resp.MONTOF = string.Format("{0:0,0.##}", ValorAux).Replace(",", ".");
                                    }
                                }
                                //MONTO
                                //if (lt_t_documentos[i].GetString("MONTO") == "")
                                //{
                                //    indice = lt_t_documentos[i].GetString("MONTO").IndexOf(',');
                                //    Monto = lt_t_documentos[i].GetString("MONTO").Substring(0, indice - 1);
                                //    PART_ABIERTAS_resp.MONTO = Monto;
                                //}
                                //else
                                //{
                                //    PART_ABIERTAS_resp.MONTO = lt_t_documentos[i].GetString("MONTOF");
                                //}
                                if (lt_t_documentos[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_t_documentos[i].GetString("MONTO").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux        = Convert.ToDecimal(Valor);
                                    string  Cualquiernombre = string.Format("{0:0,0}", ValorAux);
                                    PART_ABIERTAS_resp.MONTO = Cualquiernombre.Replace(",", ".");
                                }
                                else
                                {
                                    //PART_ABIERTAS_resp.MONTO = lt_t_documentos[i].GetString("MONTO");
                                    string  moneda   = Convert.ToString(lt_t_documentos[i].GetString("MONTO"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    PART_ABIERTAS_resp.MONTO = string.Format("{0:0,0.##}", ValorAux).Replace(",", ".");
                                }
                                //MONTO ABONADO
                                //if (lt_t_documentos[i].GetString("MONTOF_ABON") == "")
                                //{
                                //    indice = lt_t_documentos[i].GetString("MONTO_ABONADO").IndexOf(',');
                                //    Monto = lt_t_documentos[i].GetString("MONTO_ABONADO").Substring(0, indice - 1);
                                //    PART_ABIERTAS_resp.MONTOF_ABON = Monto;
                                //}
                                //else
                                //{
                                //    PART_ABIERTAS_resp.MONTOF_ABON = lt_t_documentos[i].GetString("MONTOF_ABON");
                                //    //PART_ABIERTAS_resp.MONTOF_ABON = Convert.ToDouble(Convert.ToDouble(lt_t_documentos[i].GetString("MONTO_ABONADO")) * 100).ToString("0,0", elGR);
                                //}
                                if (lt_t_documentos[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_t_documentos[i].GetString("MONTOF_ABON").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux        = Convert.ToDecimal(Valor);
                                    string  Cualquiernombre = string.Format("{0:0,0}", ValorAux);
                                    PART_ABIERTAS_resp.MONTOF_ABON = Cualquiernombre.Replace(",", ".");
                                }
                                else
                                {
                                    //PART_ABIERTAS_resp.MONTOF_ABON = lt_t_documentos[i].GetString("MONTOF_ABON");
                                    string  moneda   = Convert.ToString(lt_t_documentos[i].GetString("MONTOF_ABON"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    PART_ABIERTAS_resp.MONTOF_ABON = string.Format("{0:0,0.##}", ValorAux).Replace(",", ".");
                                }
                                //MONTO A PAGAR
                                if (lt_t_documentos[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_t_documentos[i].GetString("MONTOF_PAGAR").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux   = Convert.ToDecimal(Valor);
                                    string  monedachil = string.Format("{0:0,0}", ValorAux);
                                    PART_ABIERTAS_resp.MONTOF_PAGAR = monedachil.Replace(",", ".");
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_t_documentos[i].GetString("MONTOF_PAGAR"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    PART_ABIERTAS_resp.MONTOF_PAGAR = string.Format("{0:0,0.##}", ValorAux).Replace(",", ".");
                                }
                                ObjDatosPartidasOpen.Add(PART_ABIERTAS_resp);
                            }



                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message + ex.StackTrace);
                                System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("No existe(n) registro(s) para este número de " + TipoBusqueda);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message + ex.StackTrace);
                    System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                }
                String Mensaje = "";
                if (lt_retorno.Count > 0)
                {
                    string returning = "";
                    retorno_resp = new ESTADO();
                    for (int i = 0; i < lt_retorno.Count(); i++)
                    {
                        // lt_retorno.CurrentIndex = i;
                        if (i == 0)
                        {
                            returning = retorno_resp.TYPE = lt_retorno.GetString("TYPE");
                        }
                        retorno_resp.TYPE       = lt_retorno.GetString("TYPE");
                        retorno_resp.ID         = lt_retorno.GetString("ID");
                        retorno_resp.NUMBER     = lt_retorno.GetString("NUMBER");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.LOG_NO     = lt_retorno.GetString("LOG_NO");
                        retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1");
                        if (i == 0)
                        {
                            Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1");
                        }
                        retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2");
                        retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3");
                        retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4");
                        retorno_resp.PARAMETER  = lt_retorno.GetString("PARAMETER");
                        retorno_resp.ROW        = lt_retorno.GetString("ROW");
                        retorno_resp.FIELD      = lt_retorno.GetString("FIELD");
                        retorno_resp.SYSTEM     = lt_retorno.GetString("SYSTEM");
                        Retorno.Add(retorno_resp);
                    }
                    if (returning != "")
                    {
                        System.Windows.MessageBox.Show(Mensaje);
                    }
                }
                GC.Collect();
            }
            else
            {
                errormessage = retval;
                GC.Collect();
            }
        }
示例#43
0
        public String FechaOrdem(string NUM_ORDEM, string DESC_ORDEM, string DT_INICIO, string DT_FIM, string DT_REFER, string DESC_BREVE_ORDEM, string FECHA_ORDEM, string MODIFICA_ORDEM, string Exclui_Operacao, string Exclui_Componente, string Operacao, string Complemento_ChavePM03, string Componente_L, string Componente_N)
        {
            // IRfcFunction objRfc = repo.CreateFunction("ZRFC_FROTAWEB_FECHAORDEM");
            IRfcFunction objRfc = repo.CreateFunction("ZRFC_FROTAWEB_FECHAORDEM_NEW");

            /*CABEÇALHO*/
            IRfcStructure objEstrutura = objRfc.GetStructure("I_CAB");

            objEstrutura.SetValue("NUM_ORDEM", NUM_ORDEM);
            objEstrutura.SetValue("DESC_ORDEM", DESC_ORDEM);
            objEstrutura.SetValue("DT_INICIO", DT_INICIO);
            objEstrutura.SetValue("DT_FIM", DT_FIM);
            objEstrutura.SetValue("DT_REFER", DT_REFER);
            // objEstrutura.SetValue("DESC_BREVE_ORDEM", DESC_BREVE_ORDEM);
            objEstrutura.SetValue("FECHA_ORDEM", FECHA_ORDEM);
            objEstrutura.SetValue("MODIFICA_ORDEM", MODIFICA_ORDEM);



            /* OPERAÇÃO  */

            /*LAY-OUT:
             * CASO A CHAVE SEJA PM01(SERVIÇOS INTERNO/PRÓPRIO), BASTA CHAMAR ESTE BLOCO, CASO SEJA PM03(SERVIÇOS DE TERCEIROS, DEVE-SE CHAMAR ESTE BLOCO E O BLOCO LOGO ABAIXO DE COMPLEMENTO EM CASO DE PM03)
             * COMO PODEM TER DIVERSAS OPERAÇÕES, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO:
             * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;)
             * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (])
             * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(])
             * OPERACAO;CENTRO_TRABALHO; CHAVE_CONTROLE;TEXTO_BREVE;TEXTO_DESC;CENTRO
             */

            if (!String.IsNullOrEmpty(Operacao))
            {
                string   valor  = Operacao;
                string[] linhas = Regex.Split(valor, "]");
                string[] Colunas;
                string   OPERACAO, CENTRO_TRABALHO, CHAVE_CONTROLE, TEXTO_BREVE, TEXTO_DESC, CENTRO;

                for (int i = 0; i <= linhas.Length - 1; i++)
                {
                    Colunas         = Regex.Split(linhas[i], ";");
                    OPERACAO        = Colunas[0];
                    CENTRO_TRABALHO = Colunas[1];
                    CHAVE_CONTROLE  = Colunas[2];
                    TEXTO_BREVE     = Colunas[3];
                    TEXTO_DESC      = Colunas[4];
                    CENTRO          = Colunas[5];

                    IRfcTable objPM01 = objRfc.GetTable("T_PM01");
                    objPM01.Append();
                    objPM01.SetValue("OPERACAO", OPERACAO);
                    objPM01.SetValue("CENTRO_TRABALHO", CENTRO_TRABALHO);
                    objPM01.SetValue("CHAVE_CONTROLE", CHAVE_CONTROLE);
                    objPM01.SetValue("TEXTO_BREVE", TEXTO_BREVE);
                    objPM01.SetValue("TEXTO_DESC", TEXTO_DESC);
                    objPM01.SetValue("CENTRO", CENTRO);
                }
            }
/**/

            /* EXCLUIR OPERAÇÃO  */

            /*LAY-OUT:
             * COMO PODEM EXCLUIR DIVERSAS OPERAÇÕES, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO:
             * AS OPERAÇÕES DEVEM SER SEPARADOS POR PONTO E VÍGULA (;)
             * OPERACAO
             */

            if (!String.IsNullOrEmpty(Exclui_Operacao))
            {
                string   valor  = Exclui_Operacao;
                string[] linhas = Regex.Split(valor, ";");
                // string[] Colunas;
                string OPERACAO;

                for (int i = 0; i <= linhas.Length - 1; i++)
                {
                    OPERACAO = linhas[i];

                    IRfcTable objPM01 = objRfc.GetTable("T_EXCLUI_OPER");
                    objPM01.Append();
                    objPM01.SetValue("OPERACAO", OPERACAO);
                }
            }


            /* EXCLUIR COMPONENTE  */

            /*LAY-OUT:
             * COMO PODEM EXCLUIR DIVERSAS OPERAÇÕES, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO:
             * AS OPERAÇÕES DEVEM SER SEPARADOS POR PONTO E VÍGULA (;)
             * OPERACAO
             */

            if (!String.IsNullOrEmpty(Exclui_Componente))
            {
                string   valor  = Exclui_Componente;
                string[] linhas = Regex.Split(valor, ";");
                // string[] Colunas;
                string COMPONENTE;

                for (int i = 0; i <= linhas.Length - 1; i++)
                {
                    COMPONENTE = linhas[i];

                    IRfcTable objPM01 = objRfc.GetTable("T_EXCLUI_COMP");
                    objPM01.Append();
                    objPM01.SetValue("ITEM_EXCLUIR", COMPONENTE);
                }
            }



            /**/


            /* COMPLEMENTO EM CASO DE CHAVE PM03 - SERVIÇO EXTERNO/TERCEIRO  */

            /*LAY-OUT:
             * CASO A CHAVE SEJA PM03(SERVIÇOS EXTERNOS/TERCEIRO) NO BLOCO ACIMA, É PRECISO CHAMAR ESTE BLOCO)
             * COMO PODEM TER DIVERSOS COMPLEMENTOS OPERAÇÕES DE OPERAÇÃO COM CHAVE PM03, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO:
             * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;)
             * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (])
             * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(])
             * OPERACAO; CENTRO_TRABALHO; CHAVE_CONTROLE; TEXTO_BREVE; PRECO; TEXTO_DESC; CENTRO; GRUPO_MERCADORIAS; GRUPO_COMPRAS; REQUISITANTE; FORNECEDOR; ACOMPANHAMENTO; SERVICO; QUANTIDADE; UN_MEDIDA; RECEBEDOR;
             */
            if (!String.IsNullOrEmpty(Complemento_ChavePM03))
            {
                string   valor  = Complemento_ChavePM03;
                string[] linhas = Regex.Split(valor, "]");
                string[] Colunas;
                string   OPERACAO, CENTRO_TRABALHO, CHAVE_CONTROLE, TEXTO_BREVE, PRECO, TEXTO_DESC, CENTRO, GRUPO_MERCADORIAS, GRUPO_COMPRAS, REQUISITANTE, FORNECEDOR, ACOMPANHAMENTO, SERVICO, QUANTIDADE, UN_MEDIDA, RECEBEDOR, ORG_COMPRAS;

                for (int i = 0; i <= linhas.Length - 1; i++)
                {
                    Colunas           = Regex.Split(linhas[i], ";");
                    OPERACAO          = Colunas[0];
                    CENTRO_TRABALHO   = Colunas[1];
                    CHAVE_CONTROLE    = Colunas[2];
                    TEXTO_BREVE       = Colunas[3];
                    PRECO             = Colunas[4];
                    TEXTO_DESC        = Colunas[5];
                    CENTRO            = Colunas[6];
                    GRUPO_MERCADORIAS = Colunas[7];
                    GRUPO_COMPRAS     = Colunas[8];
                    REQUISITANTE      = Colunas[9];
                    FORNECEDOR        = Colunas[10];
                    ACOMPANHAMENTO    = Colunas[11];
                    SERVICO           = Colunas[12];
                    QUANTIDADE        = Colunas[13];
                    UN_MEDIDA         = Colunas[14];
                    RECEBEDOR         = Colunas[15];
                    ORG_COMPRAS       = Colunas[16];

                    IRfcTable objPM03 = objRfc.GetTable("T_PM03");
                    objPM03.Append();
                    objPM03.SetValue("OPERACAO", OPERACAO);
                    objPM03.SetValue("CENTRO_TRABALHO", CENTRO_TRABALHO);
                    objPM03.SetValue("CHAVE_CONTROLE", CHAVE_CONTROLE);
                    objPM03.SetValue("TEXTO_BREVE", TEXTO_BREVE);
                    objPM03.SetValue("PRICE", (Convert.ToDouble(PRECO) / Convert.ToDouble(QUANTIDADE)));
                    objPM03.SetValue("TEXTO_DESC", TEXTO_DESC);
                    objPM03.SetValue("CENTRO", CENTRO);
                    objPM03.SetValue("GRUPO_MERCADORIAS", GRUPO_MERCADORIAS);
                    objPM03.SetValue("GRUPO_COMPRAS", GRUPO_COMPRAS);
                    objPM03.SetValue("ORG_COMPRAS", ORG_COMPRAS);
                    objPM03.SetValue("REQUISITANTE", REQUISITANTE);
                    objPM03.SetValue("FORNECEDOR", FORNECEDOR);
                    objPM03.SetValue("ACOMPANHAMENTO", ACOMPANHAMENTO);
                    objPM03.SetValue("SERVICO", SERVICO);
                    objPM03.SetValue("QUANTIDADE", QUANTIDADE);
                    objPM03.SetValue("UN_MEDIDA", UN_MEDIDA);
                    objPM03.SetValue("RECEBEDOR", RECEBEDOR);
                }
            }


            /*COMPONENTE L - PEÇAS PRÓPRIAS/ESTOQUE*/

            /*COMPONENTES/PEÇAS DO ESTOQUE DA ORDEM DE MANUTENÇÃO*/

            /*LAY-OUT:
             * COMO PODEM TER DIVERSAS PEÇAS, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO:
             * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;)
             * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (])
             * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(])
             * OPERACAO;TEXTO_DESC; UN_MEDIDA;COMPONENTE;QUANT_NECESSARIA;TP_ITEM;DEPOSITO;CENTRO]TEXTO_DESC; UN_MEDIDA;COMPONENTE;QUANT_NECESSARIA;TP_ITEM;DEPOSITO;CENTRO
             */

            if (!String.IsNullOrEmpty(Componente_L))
            {
                string   valor  = Componente_L;
                string[] linhas = Regex.Split(valor, "]");
                string[] Colunas;
                // string ITEM;/*Valor Fixo*/

                string OPERACAO, ITEM, TEXTO_DESC, UN_MEDIDA, COMPONENTE, QUANT_NECESSARIA, TP_ITEM, DEPOSITO, CENTRO;

                for (int i = 0; i <= linhas.Length - 1; i++)
                {
                    Colunas          = Regex.Split(linhas[i], ";");
                    OPERACAO         = Colunas[0];
                    ITEM             = Colunas[1];
                    TEXTO_DESC       = Colunas[2];
                    UN_MEDIDA        = Colunas[3];
                    COMPONENTE       = Colunas[4];
                    QUANT_NECESSARIA = Colunas[5];
                    TP_ITEM          = Colunas[7];
                    DEPOSITO         = Colunas[8];
                    CENTRO           = Colunas[9];

                    IRfcTable objCompL = objRfc.GetTable("T_COMPL");
                    objCompL.Append();
                    objCompL.SetValue("OPERACAO", OPERACAO);
                    objCompL.SetValue("ITEM", ITEM);
                    objCompL.SetValue("TEXTO_DESC", TEXTO_DESC);
                    objCompL.SetValue("UN_MEDIDA", UN_MEDIDA);
                    objCompL.SetValue("COMPONENTE", COMPONENTE);
                    objCompL.SetValue("QUANT_NECESSARIA", QUANT_NECESSARIA);
                    objCompL.SetValue("TP_ITEM", TP_ITEM);
                    objCompL.SetValue("DEPOSITO", DEPOSITO);
                    objCompL.SetValue("CENTRO", CENTRO);
                }
            }

            /*COMPONENTE N - PEÇAS COMPRADAS/DÉBITO DIRETO*/

            /*COMPONENTES/PEÇAS COMPRA DIRETA DA ORDEM DE MANUTENÇÃO*/

            /*LAY-OUT:
             * COMO PODEM TER DIVERSAS PEÇAS, ESSE CAMPO DEVERÁ RECEBER DADOS ESTRUTURADOS, CONFORME O LAY-OUT ABAIXO:
             * OS CAMPOS DEVEM SER SEPARADOS POR PONTO E VÍGULA (;)
             * OS REGISTROS DEVEM SER SEPARDOS POR COCHETE DE FECHAMENTO (])
             * O ÚLTIMO REGISTRO NÃO DEVE SER FECHADO COM COCHETE(])
             * OPERACAO;OPERACAO, GRUPO_COMPRAS; REQUISITANTE; FORNECEDOR; ACOMPANHAMENTO; UN_MEDIDA; COMPONENTE; QUANT_NECESSARIA; TP_ITEM; DEPOSITO; CENTRO; RECEBEDOR; MAT_FORNECEDOR]
             */

            if (!String.IsNullOrEmpty(Componente_N))
            {
                string   valor  = Componente_N;
                string[] linhas = Regex.Split(valor, "]");
                string[] Colunas;
                string   OPERACAO, ITEM, TEXTO_DESC, GRUPO_COMPRAS, REQUISITANTE, FORNECEDOR, ACOMPANHAMENTO, UN_MEDIDA, COMPONENTE, QUANT_NECESSARIA, PRECO, TP_ITEM, DEPOSITO, CENTRO, RECEBEDOR, MAT_FORNECEDOR, ORG_COMPRAS;

                for (int i = 0; i <= linhas.Length - 1; i++)
                {
                    Colunas = Regex.Split(linhas[i], ";");

                    //Double val = (Convert.ToDouble(Colunas[10]) / Convert.ToDouble(Colunas[9]) / 100);

                    OPERACAO         = Colunas[0];
                    ITEM             = Colunas[1];
                    TEXTO_DESC       = Colunas[2];
                    GRUPO_COMPRAS    = Colunas[3];
                    REQUISITANTE     = Colunas[4];
                    FORNECEDOR       = Colunas[5];
                    ACOMPANHAMENTO   = Colunas[6];
                    UN_MEDIDA        = Colunas[7];
                    COMPONENTE       = Colunas[8];
                    QUANT_NECESSARIA = Colunas[9];
                    // PRECO             = Convert.ToString(val).Replace(",", ".");
                    PRECO    = Colunas[10];
                    TP_ITEM  = Colunas[11];
                    DEPOSITO = Colunas[12];
                    if (Colunas[13] == "0301" || Colunas[13] == "301")
                    {
                        Colunas[13] = "B301";
                    }
                    if (Colunas[13] == "0201" || Colunas[13] == "201")
                    {
                        Colunas[13] = "B201";
                    }
                    CENTRO         = Colunas[13];
                    RECEBEDOR      = Colunas[14];
                    MAT_FORNECEDOR = Colunas[15];
                    ORG_COMPRAS    = Colunas[16];

                    IRfcTable objCompN = objRfc.GetTable("T_COMPN");
                    objCompN.Append();
                    objCompN.SetValue("OPERACAO", OPERACAO);
                    objCompN.SetValue("ITEM", ITEM);
                    objCompN.SetValue("TEXTO_DESC", TEXTO_DESC);
                    objCompN.SetValue("GRUPO_COMPRAS", GRUPO_COMPRAS);
                    objCompN.SetValue("REQUISITANTE", REQUISITANTE);
                    objCompN.SetValue("FORNECEDOR", FORNECEDOR);
                    objCompN.SetValue("ACOMPANHAMENTO", ACOMPANHAMENTO);
                    objCompN.SetValue("UN_MEDIDA", UN_MEDIDA);
                    objCompN.SetValue("COMPONENTE", COMPONENTE);
                    objCompN.SetValue("QUANT_NECESSARIA", QUANT_NECESSARIA);

                    Decimal val_ = 0;
                    PRECO = PRECO.Replace(".", ",");
                    val_  = Convert.ToDecimal(PRECO);

                    objCompN.SetValue("PRICE", Convert.ToString(val_).Replace(",", "."));
                    //objCompN.SetValue("PRICE", PRECO);
                    objCompN.SetValue("TP_ITEM", TP_ITEM);
                    objCompN.SetValue("DEPOSITO", DEPOSITO);
                    objCompN.SetValue("CENTRO", CENTRO);
                    objCompN.SetValue("RECEBEDOR", RECEBEDOR);
                    objCompN.SetValue("MAT_FORNECEDOR", MAT_FORNECEDOR);
                    // objCompN.SetValue("ORG_COMPRAS", ORG_COMPRAS);
                }
            }

            objRfc.Invoke(dest);

            IRfcTable tabelaSAP = objRfc.GetTable("T_RETURN_REQ");

            return(tabelaSAP.ToString() + " / " + objRfc.GetTable("T_RETURN_BAPI").ToString());
        }
示例#44
0
        public void GetCustomerDetails(RfcDestination destination)
        {
            try
            {
                RfcRepository repo         = destination.Repository;
                IRfcFunction  customerBapi = repo.CreateFunction("BAPI_CUSTOMER_GETLIST");


                customerBapi.Invoke(destination);

                IRfcTable idRange = customerBapi.GetTable("IdRange");
                idRange.SetValue("SIGN", "I");
                idRange.SetValue("OPTION", "BT");
                idRange.SetValue("LOW", "");        //customer number range - smallest value
                idRange.SetValue("HIGH", "999999"); //customer number range - largest value


                //add selection range to customerBapi function to search for all customers
                customerBapi.SetValue("idrange", idRange);


                IRfcTable addressData = customerBapi.GetTable("AddressData");
                customerBapi.Invoke(destination);//execute query

                for (int cuIndex = 0; cuIndex < addressData.RowCount; cuIndex++)
                {
                    addressData.CurrentIndex = cuIndex;
                    IRfcFunction customerHierachy = repo.CreateFunction("BAPI_CUSTOMER_GETSALESAREAS");
                    IRfcFunction customerDetail1  = repo.CreateFunction("BAPI_CUSTOMER_GETDETAIL1");
                    IRfcFunction customerDetail2  = repo.CreateFunction("BAPI_CUSTOMER_GETDETAIL2");
                    Customers    cust             = new Customers();;



                    cust.CustomerNo    = addressData.GetString("Customer");
                    cust.CustomerName  = addressData.GetString("Name");
                    cust.Address       = addressData.GetString("Street");
                    cust.City          = addressData.GetString("City");
                    cust.StateProvince = addressData.GetString("Region");
                    cust.CountryCode   = addressData.GetString("CountryISO");
                    cust.PostalCode    = addressData.GetString("Postl_Cod1");

                    customerDetail2.SetValue("CustomerNo", cust.CustomerNo);
                    customerDetail2.Invoke(destination);
                    IRfcStructure generalDetail = customerDetail2.GetStructure("CustomerGeneralDetail");

                    cust.Region   = generalDetail.GetString("Reg_Market");
                    cust.Industry = generalDetail.GetString("Industry");


                    customerDetail1.Invoke(destination);
                    IRfcStructure detail1 = customerDetail1.GetStructure("PE_CompanyData");
                    cust.District = detail1.GetString("District");


                    customerHierachy.Invoke(destination);
                    customerHierachy.SetValue("CustomerNo", cust.CustomerNo);
                    customerHierachy.Invoke(destination);

                    IRfcTable otherDetail = customerHierachy.GetTable("SalesAreas");

                    if (otherDetail.RowCount > 0)
                    {
                        cust.SalesOrg            = otherDetail.GetString("SalesOrg");
                        cust.DistributionChannel = otherDetail.GetString("DistrChn");
                        cust.Division            = otherDetail.GetString("Division");
                    }

                    customerHierachy = null;
                    customerDetail1  = null;
                    customerDetail2  = null;
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }
            }
            catch (RfcCommunicationException e)
            {
            }
            catch (RfcLogonException e)
            {
                // user could not logon...
            }
            catch (RfcAbapRuntimeException e)
            {
                // serious problem on ABAP system side...
            }
            catch (RfcAbapBaseException e)
            {
                // The function module returned an ABAP exception, an ABAP message
                // or an ABAP class-based exception...
            }
        }
示例#45
0
        public InvoiceValueModel GetInvoiceValue(RfcDestination rfcDest, string InvoiceDocNumber, string FISCALYEAR)
        {
            List <InvoiceValueModel> lstInvoiceValueDet = new List <InvoiceValueModel>();
            InvoiceValueModel        invoiceValueModel  = new InvoiceValueModel();
            RfcDestination           SAPRfcDestination  = RfcDestinationManager.GetDestination("accelyides");

            RfcRepository rfcrep = SAPRfcDestination.Repository;
            IRfcFunction  BapiGetCompanyDetail = null;


            BapiGetCompanyDetail = rfcrep.CreateFunction("BAPI_INCOMINGINVOICE_GETDETAIL");
            BapiGetCompanyDetail.SetValue("INVOICEDOCNUMBER", InvoiceDocNumber);
            BapiGetCompanyDetail.SetValue("FISCALYEAR", FISCALYEAR);
            BapiGetCompanyDetail.Invoke(rfcDest);
            IRfcTable tblReturn = BapiGetCompanyDetail.GetTable("ITEMDATA");
            DataTable TBL       = tblReturn.ToDataTable("TBL");

            IRfcTable tblTAXReturn = BapiGetCompanyDetail.GetTable("TAXDATA");
            DataTable TBLTaxReturn = tblTAXReturn.ToDataTable("TBL");

            IRfcTable tblWithTAXReturn = BapiGetCompanyDetail.GetTable("WITHTAXDATA");
            DataTable DtWithTAXReturn  = tblWithTAXReturn.ToDataTable("TBL");

            IRfcTable tblVendorSplitData = BapiGetCompanyDetail.GetTable("VENDORITEMSPLITDATA");
            DataTable DtVendorSplitData  = tblVendorSplitData.ToDataTable("TBL");

            //for (int i = 0; i < TBL.Rows.Count; i++)
            //{
            //    InvoiceValueModel InvoiceValueModel = new InvoiceValueModel();

            //    InvoiceValueModel.REF_DOC = TBL.Rows[i]["REF_DOC"].ToString();
            //   // invoiceValueModel.lstInvoiceValue.Add(InvoiceValueModel);
            //}
            invoiceValueModel.lstItemInvoiceDet = (from DataRow row in TBL.Rows
                                                   select new InvoiceValueModel
            {
                INVOICE_DOC_ITEM = row["INVOICE_DOC_ITEM"].ToString(),
                PO_NUMBER = row["INVOICE_DOC_ITEM"].ToString(),
                PO_ITEM = row["PO_ITEM"].ToString(),
                SERIAL_NO = row["SERIAL_NO"].ToString(),
                REF_DOC = row["REF_DOC"].ToString(),
                REF_DOC_YEAR = row["REF_DOC_YEAR"].ToString(),
                REF_DOC_IT = row["REF_DOC_IT"].ToString(),
                TAX_CODE = row["TAX_CODE"].ToString(),
                ITEM_AMOUNT = row["ITEM_AMOUNT"].ToString(),
                QUANTITY = row["QUANTITY"].ToString(),
                PO_UNIT = row["PO_UNIT"].ToString(),
                PO_UNIT_ISO = row["PO_UNIT_ISO"].ToString()
            }).ToList();

            invoiceValueModel.lstInvoiceTAXDet = (from DataRow row in TBLTaxReturn.Rows
                                                  select new InvoiceValueModel
            {
                TAX_CODE = row["TAX_CODE"].ToString(),
                TAX_AMOUNT = row["TAX_AMOUNT"].ToString(),
                VEND_ERROR = row["VEND_ERROR"].ToString(),
                TAX_ERROR = row["TAX_ERROR"].ToString(),
            }).ToList();

            invoiceValueModel.lstWithTAXInvoiceDet = (from DataRow row in DtWithTAXReturn.Rows
                                                      select new InvoiceValueModel
            {
                SPLIT_KEY = row["SPLIT_KEY"].ToString(),
                WI_TAX_TYPE = row["WI_TAX_TYPE"].ToString()
            }).ToList();

            invoiceValueModel.lstVEndorItemSolitData = (from DataRow row in DtVendorSplitData.Rows
                                                        select new InvoiceValueModel
            {
                SPLIT_KEY = row["SPLIT_KEY"].ToString(),
                SPLIT_AMOUNT = row["SPLIT_AMOUNT"].ToString()
            }).ToList();

            IRfcStructure IRS_OS_HEADER = BapiGetCompanyDetail.GetStructure("HEADERDATA");

            invoiceValueModel.INV_DOC_NO     = IRS_OS_HEADER.GetValue("INV_DOC_NO").ToString();
            invoiceValueModel.USERNAME       = IRS_OS_HEADER.GetValue("FISC_YEAR").ToString();
            invoiceValueModel.FISC_YEAR      = IRS_OS_HEADER.GetValue("USERNAME").ToString();
            invoiceValueModel.INVOICEE_IND   = IRS_OS_HEADER.GetValue("INVOICE_IND").ToString();
            invoiceValueModel.DOC_TYPE       = IRS_OS_HEADER.GetValue("DOC_TYPE").ToString();
            invoiceValueModel.DOC_DATE       = DateTime.Parse(IRS_OS_HEADER.GetValue("DOC_DATE").ToString());
            invoiceValueModel.PSTNG_DATE     = DateTime.Parse(IRS_OS_HEADER.GetValue("PSTNG_DATE").ToString());
            invoiceValueModel.USERNAME       = IRS_OS_HEADER.GetValue("USERNAME").ToString();
            invoiceValueModel.REF_DOC_NO     = IRS_OS_HEADER.GetValue("REF_DOC_NO").ToString();
            invoiceValueModel.COMP_CODE      = IRS_OS_HEADER.GetValue("COMP_CODE").ToString();
            invoiceValueModel.DIFF_INV       = IRS_OS_HEADER.GetValue("DIFF_INV").ToString();
            invoiceValueModel.CURRENCY       = IRS_OS_HEADER.GetValue("CURRENCY").ToString();
            invoiceValueModel.CURRENCY_ISO   = IRS_OS_HEADER.GetValue("CURRENCY_ISO").ToString();
            invoiceValueModel.EXCH_RATE      = IRS_OS_HEADER.GetValue("EXCH_RATE").ToString();
            invoiceValueModel.EXCH_RATE_V    = IRS_OS_HEADER.GetValue("EXCH_RATE_V").ToString();
            invoiceValueModel.GROSS_AMT      = IRS_OS_HEADER.GetValue("GROSS_AMNT").ToString();
            invoiceValueModel.BLINE_DATE     = DateTime.Parse(IRS_OS_HEADER.GetValue("BLINE_DATE").ToString());
            invoiceValueModel.ENTRY_DATE     = DateTime.Parse(IRS_OS_HEADER.GetValue("ENTRY_DATE").ToString());
            invoiceValueModel.ENTRY_TIME     = DateTime.Parse(IRS_OS_HEADER.GetValue("ENTRY_TIME").ToString());
            invoiceValueModel.DISCNT         = IRS_OS_HEADER.GetValue("DISCNT").ToString();
            invoiceValueModel.INVOICE_STATUS = IRS_OS_HEADER.GetValue("INVOICE_STATUS").ToString();

            //Console.WriteLine(invoiceValueModel.Value);
            //Console.ReadKey();
            RfcSessionManager.EndContext(rfcDest);

            return(invoiceValueModel);
        }
示例#46
0
        public void reportescaja(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER
                                 , string P_IDIOMA, string P_ID_CAJA, string P_DATUMDESDE, string P_DATUMHASTA, string P_USUARIO
                                 , string P_PAIS, string P_SOCIEDAD, string P_ID_APERTURA, string P_ID_CIERRE, string P_ID_REPORT)
        {
            try
            {
                T_Retorno.Clear();
                resumen_viapago.Clear();
                detalle_rend.Clear();
                cab_arqueo.Clear();
                detalle_arqueo.Clear();
                resumen_caja.Clear();
                rendicion_caja.Clear();
                resumen_mensual.Clear();
                info_soc.Clear();
                RETORNO retorno;
                CajaIndigo.AppPersistencia.Class.RendicionCaja.Estructura.RESUMEN_VP resumenvp;
                DETALLE_REND    detallerend;
                CAB_ARQUEO      cabarqueo;
                DET_ARQUEO      detallearqueo;
                RESUMEN_CAJA    resumencaja;
                RESUMEN_MENSUAL resumenmensual;
                RENDICION_CAJA  rendicioncaja;
                INFO_SOC        infosoc;

                errormessage     = "";
                message          = "";
                IdCaja           = "";
                FechArqueo       = "";
                FechaArqueoHasta = "";
                CajeroResp       = "";
                RUT              = "";
                Sucursal         = "";
                Sociedad         = "";
                SociedadR        = "";
                Empresa          = "";
                NombreCaja       = "";
                Tipo             = "";
                MontoIngresos    = 0;
                MontoEfect       = 0;
                MontoChqDia      = 0;
                MontoChqFech     = 0;
                MontoTransf      = 0;
                MontoValeV       = 0;
                MontoDepot       = 0;
                MontoTarj        = 0;
                MontoFinanc      = 0;
                MontoApp         = 0;
                MontoCredit      = 0;
                MontoEgresos     = 0;
                MontoFondosFijos = 0;
                SaldoTotal       = 0;
                IRfcStructure ls_RETORNO;
                IRfcTable     lt_RESUMEN_VP;
                IRfcTable     lt_DETALLE_REND;
                IRfcTable     lt_CAB_ARQUEO;
                IRfcTable     lt_DET_ARQUEO;
                IRfcTable     lt_RESUMEN_CAJA;
                IRfcTable     lt_RENDICION_CAJA;
                IRfcTable     lt_RESUMEN_MENSUAL;
                IRfcTable     lt_INFOSOC;

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

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

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

                    BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA);

                    BapiGetUser.SetValue("DATE_DOC_FROM", Convert.ToDateTime(P_DATUMDESDE));
                    BapiGetUser.SetValue("DATE_DOC_TO", Convert.ToDateTime(P_DATUMHASTA));

                    BapiGetUser.SetValue("USUARIO", P_USUARIO);
                    BapiGetUser.SetValue("ID_CIERRE", P_ID_CIERRE);
                    BapiGetUser.SetValue("ID_APERTURA", P_ID_APERTURA);
                    BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD);
                    BapiGetUser.SetValue("ID_REPORT", P_ID_REPORT);
                    BapiGetUser.SetValue("LAND", P_PAIS);
                    Tipo             = P_ID_REPORT;
                    FechArqueo       = P_DATUMDESDE;
                    FechaArqueoHasta = P_DATUMHASTA;

                    BapiGetUser.Invoke(SapRfcDestination);

                    Caja       = BapiGetUser.GetString("ID_CAJA_OUT");
                    CajeroResp = BapiGetUser.GetString("CAJERO_RESP_OUT");
                    Sucursal   = BapiGetUser.GetString("SUCURSAL");
                    NombreCaja = BapiGetUser.GetString("NOM_CAJA");
                    Sociedad   = BapiGetUser.GetString("SOCIEDAD_OUT");
                    Pais       = BapiGetUser.GetString("LAND_OUT");


                    lt_INFOSOC = BapiGetUser.GetTable("INFO_SOC");
                    try
                    {
                        for (int i = 0; i < lt_INFOSOC.Count(); i++)
                        {
                            lt_INFOSOC.CurrentIndex = i;
                            infosoc       = new INFO_SOC();
                            SociedadR     = lt_INFOSOC.GetString("BUKRS");
                            infosoc.BUKRS = lt_INFOSOC.GetString("BUKRS");
                            Empresa       = lt_INFOSOC.GetString("BUTXT");
                            infosoc.BUTXT = lt_INFOSOC.GetString("BUTXT");
                            RUT           = lt_INFOSOC.GetString("STCD1");
                            infosoc.STCD1 = lt_INFOSOC.GetString("STCD1");


                            info_soc.Add(infosoc);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    lt_RESUMEN_VP = BapiGetUser.GetTable("RESUMEN_VP");
                    try
                    {
                        for (int i = 0; i < lt_RESUMEN_VP.Count(); i++)
                        {
                            lt_RESUMEN_VP.CurrentIndex = i;
                            resumenvp              = new CajaIndigo.AppPersistencia.Class.RendicionCaja.Estructura.RESUMEN_VP();
                            resumenvp.LAND         = lt_RESUMEN_VP.GetString("LAND");
                            resumenvp.ID_CAJA      = lt_RESUMEN_VP.GetString("ID_CAJA");
                            SociedadR              = lt_RESUMEN_VP.GetString("SOCIEDAD");
                            resumenvp.SOCIEDAD     = lt_RESUMEN_VP.GetString("SOCIEDAD");
                            Empresa                = lt_RESUMEN_VP.GetString("SOCIEDAD_TXT");
                            resumenvp.SOCIEDAD_TXT = lt_RESUMEN_VP.GetString("SOCIEDAD_TXT");
                            resumenvp.VIA_PAGO     = lt_RESUMEN_VP.GetString("VIA_PAGO");
                            if (lt_RESUMEN_VP.GetString("VIA_PAGO") == "N" || lt_RESUMEN_VP.GetString("VIA_PAGO") == "0")
                            {
                                MontoEgresos = MontoEgresos + Convert.ToDouble(lt_RESUMEN_VP.GetString("MONTO"));
                            }
                            resumenvp.TEXT1     = lt_RESUMEN_VP.GetString("TEXT1");
                            resumenvp.MONEDA    = lt_RESUMEN_VP.GetString("MONEDA");
                            resumenvp.MONTO     = lt_RESUMEN_VP.GetString("MONTO");
                            resumenvp.CANT_DOCS = lt_RESUMEN_VP.GetString("CANT_DOCS");
                            resumen_viapago.Add(resumenvp);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                    lt_DETALLE_REND = BapiGetUser.GetTable("DETALLE_REND");
                    try
                    {
                        for (int i = 0; i < lt_DETALLE_REND.Count(); i++)
                        {
                            lt_DETALLE_REND.CurrentIndex = i;
                            detallerend              = new DETALLE_REND();
                            detallerend.N_VENTA      = lt_DETALLE_REND.GetString("N_VENTA");
                            detallerend.FEC_EMI      = lt_DETALLE_REND.GetString("FEC_EMI");
                            detallerend.FEC_VENC     = lt_DETALLE_REND.GetString("FEC_VENC");
                            detallerend.MONTO        = lt_DETALLE_REND.GetString("MONTO");
                            detallerend.NAME1        = lt_DETALLE_REND.GetString("NAME1");
                            detallerend.MONTO_EFEC   = lt_DETALLE_REND.GetString("MONTO_EFEC");
                            MontoEfect               = MontoEfect + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_EFEC"));
                            detallerend.NUM_CHEQUE   = lt_DETALLE_REND.GetString("NUM_CHEQUE");
                            detallerend.MONTO_DIA    = lt_DETALLE_REND.GetString("MONTO_DIA");
                            MontoChqDia              = MontoChqDia + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_DIA"));
                            detallerend.MONTO_FECHA  = lt_DETALLE_REND.GetString("MONTO_FECHA");
                            MontoChqFech             = MontoChqFech + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_FECHA"));
                            detallerend.MONTO_TRANSF = lt_DETALLE_REND.GetString("MONTO_TRANSF");
                            MontoTransf              = MontoTransf + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_TRANSF"));
                            detallerend.MONTO_VALE_V = lt_DETALLE_REND.GetString("MONTO_VALE_V");
                            MontoValeV               = MontoValeV + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_VALE_V"));
                            detallerend.MONTO_DEP    = lt_DETALLE_REND.GetString("MONTO_DEP");
                            MontoDepot               = MontoDepot + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_DEP"));
                            detallerend.MONTO_TARJ   = lt_DETALLE_REND.GetString("MONTO_TARJ");
                            MontoTarj = MontoTarj + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_TARJ"));
                            detallerend.MONTO_FINANC = lt_DETALLE_REND.GetString("MONTO_FINANC");
                            MontoFinanc           = MontoFinanc + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_FINANC"));
                            detallerend.MONTO_APP = lt_DETALLE_REND.GetString("MONTO_APP");
                            MontoApp = MontoApp + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_APP"));
                            detallerend.MONTO_CREDITO = lt_DETALLE_REND.GetString("MONTO_CREDITO");
                            MontoCredit               = MontoCredit + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_CREDITO"));
                            detallerend.PATENTE       = lt_DETALLE_REND.GetString("PATENTE");
                            detallerend.MONTO_C_CURSE = lt_DETALLE_REND.GetString("MONTO_C_CURSE");
                            MontoCCurse               = MontoCCurse + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_C_CURSE"));
                            detallerend.DOC_SAP       = lt_DETALLE_REND.GetString("DOC_SAP");
                            detalle_rend.Add(detallerend);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    MontoIngresos = MontoIngresos + MontoEfect + MontoChqDia + MontoChqFech + MontoTransf + MontoValeV +
                                    MontoDepot + MontoTarj + MontoFinanc + MontoApp + MontoCredit + MontoCCurse;
                    SaldoTotal = MontoIngresos; // +MontoEgresos;

                    lt_CAB_ARQUEO = BapiGetUser.GetTable("CAB_ARQUEO");
                    try
                    {
                        for (int i = 0; i < lt_CAB_ARQUEO.Count(); i++)
                        {
                            lt_CAB_ARQUEO.CurrentIndex = i;
                            cabarqueo                = new CAB_ARQUEO();
                            cabarqueo.MANDT          = lt_CAB_ARQUEO.GetString("MANDT");
                            cabarqueo.LAND           = lt_CAB_ARQUEO.GetString("LAND");
                            cabarqueo.ID_ARQUEO      = lt_CAB_ARQUEO.GetString("ID_ARQUEO");
                            cabarqueo.ID_REGISTRO    = lt_CAB_ARQUEO.GetString("ID_DENOMINACION");
                            cabarqueo.ID_CAJA        = lt_CAB_ARQUEO.GetString("CANTIDAD");
                            cabarqueo.MONTO_CIERRE   = lt_CAB_ARQUEO.GetString("MONTO_TOTAL");
                            cabarqueo.MONTO_DIF      = lt_CAB_ARQUEO.GetString("ID_DENOMINACION");
                            cabarqueo.COMENTARIO_DIF = lt_CAB_ARQUEO.GetString("CANTIDAD");
                            cabarqueo.NULO           = lt_CAB_ARQUEO.GetString("MONTO_TOTAL");
                            cab_arqueo.Add(cabarqueo);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    lt_DET_ARQUEO = BapiGetUser.GetTable("DET_ARQUEO");
                    try
                    {
                        for (int i = 0; i < lt_DET_ARQUEO.Count(); i++)
                        {
                            lt_DET_ARQUEO.CurrentIndex = i;
                            detallearqueo                 = new DET_ARQUEO();
                            detallearqueo.MANDT           = lt_DET_ARQUEO.GetString("MANDT");
                            detallearqueo.LAND            = lt_DET_ARQUEO.GetString("LAND");
                            detallearqueo.ID_ARQUEO       = lt_DET_ARQUEO.GetString("ID_ARQUEO");
                            detallearqueo.ID_DENOMINACION = lt_DET_ARQUEO.GetString("ID_DENOMINACION");
                            detallearqueo.CANTIDAD        = lt_DET_ARQUEO.GetString("CANTIDAD");
                            detallearqueo.MONTO_TOTAL     = lt_DET_ARQUEO.GetString("MONTO_TOTAL");
                            detalle_arqueo.Add(detallearqueo);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    lt_RESUMEN_CAJA = BapiGetUser.GetTable("RESUMEN_CAJA");
                    try
                    {
                        for (int i = 0; i < lt_RESUMEN_CAJA.Count(); i++)
                        {
                            lt_RESUMEN_CAJA.CurrentIndex = i;
                            resumencaja             = new RESUMEN_CAJA();
                            resumencaja.ID_SUCURSAL = lt_RESUMEN_CAJA.GetString("ID_SUCURSAL");
                            resumencaja.SUCURSAL    = lt_RESUMEN_CAJA.GetString("SUCURSAL");
                            resumencaja.ID_CAJA     = lt_RESUMEN_CAJA.GetString("ID_CAJA");
                            resumencaja.NOM_CAJA    = lt_RESUMEN_CAJA.GetString("NOM_CAJA");
                            resumencaja.MONTO_EFEC  = lt_RESUMEN_CAJA.GetString("MONTO_EFEC");
                            MontoEfect               = MontoEfect + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_EFEC"));
                            resumencaja.MONTO_DIA    = lt_RESUMEN_CAJA.GetString("MONTO_DIA");
                            MontoChqDia              = MontoChqDia + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_DIA"));
                            resumencaja.MONTO_FECHA  = lt_RESUMEN_CAJA.GetString("MONTO_FECHA");
                            MontoChqFech             = MontoChqFech + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_FECHA"));
                            resumencaja.MONTO_TRANSF = lt_RESUMEN_CAJA.GetString("MONTO_TRANSF");
                            MontoTransf              = MontoTransf + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_TRANSF"));
                            resumencaja.MONTO_VALE_V = lt_RESUMEN_CAJA.GetString("MONTO_VALE_V");
                            MontoValeV               = MontoValeV + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_VALE_V"));
                            resumencaja.MONTO_DEP    = lt_RESUMEN_CAJA.GetString("MONTO_DEP");
                            MontoDepot               = MontoDepot + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_DEP"));
                            resumencaja.MONTO_TARJ   = lt_RESUMEN_CAJA.GetString("MONTO_TARJ");
                            MontoTarj = MontoTarj + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_TARJ"));
                            resumencaja.MONTO_FINANC = lt_RESUMEN_CAJA.GetString("MONTO_FINANC");
                            MontoFinanc           = MontoFinanc + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_FINANC"));
                            resumencaja.MONTO_APP = lt_RESUMEN_CAJA.GetString("MONTO_APP");
                            MontoApp = MontoApp + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_APP"));
                            resumencaja.MONTO_CREDITO = lt_RESUMEN_CAJA.GetString("MONTO_CREDITO");
                            MontoCredit = MontoCredit + Convert.ToDouble(lt_RESUMEN_CAJA.GetString("MONTO_CREDITO"));
                            //resumencaja.MONEDA = lt_RESUMEN_CAJA.GetString("MONEDA");
                            resumen_caja.Add(resumencaja);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    lt_RENDICION_CAJA = BapiGetUser.GetTable("RENDICION_CAJA");
                    try
                    {
                        for (int i = 0; i < lt_RENDICION_CAJA.Count(); i++)
                        {
                            lt_RENDICION_CAJA.CurrentIndex = i;
                            rendicioncaja            = new RENDICION_CAJA();
                            rendicioncaja.N_VENTA    = lt_RENDICION_CAJA.GetString("N_VENTA");
                            rendicioncaja.DOC_TRIB   = lt_RENDICION_CAJA.GetString("DOC_TRIB");
                            rendicioncaja.CAJERO     = lt_RENDICION_CAJA.GetString("CAJERO");
                            rendicioncaja.FEC_EMI    = lt_RENDICION_CAJA.GetString("FEC_EMI");
                            rendicioncaja.FEC_VENC   = lt_RENDICION_CAJA.GetString("FEC_VENC");
                            rendicioncaja.MONTO      = lt_RENDICION_CAJA.GetString("MONTO");
                            rendicioncaja.NAME1      = lt_RENDICION_CAJA.GetString("NAME1");
                            rendicioncaja.NUM_CHEQUE = lt_RENDICION_CAJA.GetString("NUM_CHEQUE");
                            rendicioncaja.MONTO_DIA  = lt_RENDICION_CAJA.GetString("MONTO_DIA");
                            MontoChqDia = MontoChqDia + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_DIA"));
                            rendicioncaja.MONTO_FECHA = lt_RENDICION_CAJA.GetString("MONTO_FECHA");
                            MontoChqFech             = MontoChqFech + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_FECHA"));
                            rendicioncaja.MONTO_EFEC = lt_RENDICION_CAJA.GetString("MONTO_EFEC");
                            MontoEfect = MontoEfect + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_EFEC"));
                            rendicioncaja.MONTO_TRANSF = lt_RENDICION_CAJA.GetString("MONTO_TRANSF");
                            MontoTransf = MontoTransf + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_TRANSF"));
                            rendicioncaja.MONTO_VALE_V = lt_RENDICION_CAJA.GetString("MONTO_VALE_V");
                            MontoValeV = MontoValeV + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_VALE_V"));
                            rendicioncaja.MONTO_DEP = lt_RENDICION_CAJA.GetString("MONTO_DEP");
                            MontoDepot = MontoDepot + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_DEP"));
                            rendicioncaja.MONTO_TARJ = lt_RENDICION_CAJA.GetString("MONTO_TARJ");
                            MontoTarj = MontoTarj + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_TARJ"));
                            rendicioncaja.MONTO_FINANC = lt_RENDICION_CAJA.GetString("MONTO_FINANC");
                            MontoFinanc             = MontoFinanc + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_FINANC"));
                            rendicioncaja.MONTO_APP = lt_RENDICION_CAJA.GetString("MONTO_APP");
                            MontoApp = MontoApp + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_APP"));
                            rendicioncaja.MONTO_CREDITO = lt_RENDICION_CAJA.GetString("MONTO_CREDITO");
                            MontoCredit = MontoCredit + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_CREDITO"));
                            //rendicioncaja.PATENTE = lt_RENDICION_CAJA.GetString("PATENTE");
                            //rendicioncaja.MONTO_C_CURSE = lt_RENDICION_CAJA.GetString("MONTO_C_CURSE");
                            //MontoCCurse = MontoCCurse + Convert.ToDouble(lt_RENDICION_CAJA.GetString("MONTO_C_CURSE"));
                            rendicioncaja.DOC_SAP = lt_RENDICION_CAJA.GetString("DOC_SAP");
                            rendicioncaja.MONEDA  = lt_RENDICION_CAJA.GetString("MONEDA");
                            rendicion_caja.Add(rendicioncaja);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    lt_RESUMEN_MENSUAL = BapiGetUser.GetTable("RESUMEN_MENSUAL");
                    try
                    {
                        for (int i = 0; i < lt_RESUMEN_MENSUAL.Count(); i++)
                        {
                            lt_RESUMEN_MENSUAL.CurrentIndex = i;
                            resumenmensual             = new RESUMEN_MENSUAL();
                            resumenmensual.ID_SUCURSAL = lt_RESUMEN_MENSUAL.GetString("ID_SUCURSAL");
                            resumenmensual.ID_CAJA     = lt_RESUMEN_MENSUAL.GetString("ID_CAJA");
                            resumenmensual.SUCURSAL    = lt_RESUMEN_MENSUAL.GetString("SUCURSAL");
                            resumenmensual.NOM_CAJA    = lt_RESUMEN_MENSUAL.GetString("NOM_CAJA");
                            resumenmensual.CAJERO      = lt_RESUMEN_MENSUAL.GetString("CAJERO");
                            resumenmensual.AREA_VTAS   = lt_RESUMEN_MENSUAL.GetString("AREA_VTAS");
                            resumenmensual.FLUJO_DOCS  = lt_RESUMEN_MENSUAL.GetString("FLUJO_DOCS");
                            resumenmensual.TOTAL_MOV   = lt_RESUMEN_MENSUAL.GetString("TOTAL_MOV");
                            resumenmensual.TOTAL_INGR  = lt_RESUMEN_MENSUAL.GetString("TOTAL_INGR");
                            resumenmensual.MONTO_EFEC  = lt_RESUMEN_MENSUAL.GetString("MONTO_EFEC");
                            MontoEfect = MontoEfect + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_EFEC"));
                            resumenmensual.MONTO_DIA = lt_RESUMEN_MENSUAL.GetString("MONTO_DIA");
                            MontoChqDia = MontoChqDia + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_DIA"));
                            resumenmensual.MONTO_FECHA = lt_RESUMEN_MENSUAL.GetString("MONTO_FECHA");
                            MontoChqFech = MontoChqFech + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_FECHA"));
                            resumenmensual.MONTO_TRANSF = lt_RESUMEN_MENSUAL.GetString("MONTO_TRANSF");
                            MontoTransf = MontoTransf + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_TRANSF"));
                            resumenmensual.MONTO_VALE_V = lt_RESUMEN_MENSUAL.GetString("MONTO_VALE_V");
                            MontoValeV = MontoValeV + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_VALE_V"));
                            resumenmensual.MONTO_DEP = lt_RESUMEN_MENSUAL.GetString("MONTO_DEP");
                            MontoDepot = MontoDepot + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_DEP"));
                            resumenmensual.MONTO_TARJ = lt_RESUMEN_MENSUAL.GetString("MONTO_TARJ");
                            MontoTarj = MontoTarj + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_TARJ"));
                            resumenmensual.MONTO_FINANC = lt_RESUMEN_MENSUAL.GetString("MONTO_FINANC");
                            MontoFinanc = MontoFinanc + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_FINANC"));
                            resumenmensual.MONTO_APP = lt_RESUMEN_MENSUAL.GetString("MONTO_APP");
                            MontoApp = MontoApp + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_APP"));
                            resumenmensual.MONTO_CREDITO = lt_RESUMEN_MENSUAL.GetString("MONTO_CREDITO");
                            MontoCredit = MontoCredit + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_CREDITO"));
                            //resumenmensual.MONTO_C_CURSE = lt_RESUMEN_MENSUAL.GetString("MONTO_C_CURSE");
                            //MontoCCurse = MontoCCurse + Convert.ToDouble(lt_RESUMEN_MENSUAL.GetString("MONTO_C_CURSE"));
                            resumenmensual.TOTAL_CAJERO = lt_RESUMEN_MENSUAL.GetString("TOTAL_CAJERO");
                            resumenmensual.MONEDA       = lt_RESUMEN_MENSUAL.GetString("MONEDA");
                            resumen_mensual.Add(resumenmensual);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }



                    ls_RETORNO = BapiGetUser.GetStructure("RETORNO");
                    try
                    {
                        for (int i = 0; i < ls_RETORNO.Count(); i++)
                        {
                            //ls_RETORNO.CurrentIndex = i;
                            retorno = new RETORNO();
                            if (ls_RETORNO.GetString("TYPE") == "S")
                            {
                                message = message + " - " + ls_RETORNO.GetString("MESSAGE");
                            }
                            if (ls_RETORNO.GetString("TYPE") == "E")
                            {
                                errormessage = errormessage + " - " + ls_RETORNO.GetString("MESSAGE");
                            }
                            retorno.TYPE       = ls_RETORNO.GetString("TYPE");
                            retorno.ID         = ls_RETORNO.GetString("ID");
                            retorno.NUMBER     = ls_RETORNO.GetString("NUMBER");
                            retorno.MESSAGE    = ls_RETORNO.GetString("MESSAGE");
                            retorno.LOG_NO     = ls_RETORNO.GetString("LOG_NO");
                            retorno.LOG_MSG_NO = ls_RETORNO.GetString("LOG_MSG_NO");
                            retorno.MESSAGE_V1 = ls_RETORNO.GetString("MESSAGE_V1");
                            retorno.MESSAGE_V2 = ls_RETORNO.GetString("MESSAGE_V2");
                            retorno.MESSAGE_V3 = ls_RETORNO.GetString("MESSAGE_V3");
                            retorno.MESSAGE_V4 = ls_RETORNO.GetString("MESSAGE_V4");
                            retorno.PARAMETER  = ls_RETORNO.GetString("PARAMETER");
                            retorno.ROW        = ls_RETORNO.GetString("ROW");
                            retorno.FIELD      = ls_RETORNO.GetString("FIELD");
                            retorno.SYSTEM     = ls_RETORNO.GetString("SYSTEM");
                            T_Retorno.Add(retorno);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                }
                else
                {
                    errormessage = retval;
                    MessageBox.Show("No se pudo conectar a la RFC");
                }
                GC.Collect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message, ex.StackTrace);
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
示例#47
0
        public void checkdocsanulacion(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE
                                       , string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_USUARIO, string P_ID_CAJA, string P_LAND, string P_RUT
                                       , string P_ID_COMPROBANTE, string P_SOCIEDAD, string P_TP_DOC, List <CAB_COMP> P_CAB_COM)
        {
            CabeceraDocs.Clear();
            Retorno.Clear();
            IRfcTable lt_h_documentos;
            //IRfcTable lt_d_documentos;
            IRfcStructure lt_retorno;

            //PART_ABIERTAS  PART_ABIERTAS_resp;
            CAB_COMP DOCS_CABECERA_resp;
            //DET_COMP DOCS_DETALLES_resp;
            RETORNO retorno_resp;

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

            string retval = connectorSap.connectionsSAP();

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

                IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_CHECK_JEFE_CAJA");
                BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA);
                BapiGetUser.SetValue("USUARIO", P_USUARIO);
                IRfcTable GralDat = BapiGetUser.GetTable("CAB_COMP");

                try
                {
                    for (var i = 0; i < P_CAB_COM.Count; i++)
                    {
                        GralDat.Append();
                        GralDat.SetValue("LAND", P_CAB_COM[i].LAND);
                        GralDat.SetValue("ID_CAJA", P_CAB_COM[i].ID_CAJA);
                        GralDat.SetValue("ID_COMPROBANTE", P_CAB_COM[i].ID_COMPROBANTE);
                        GralDat.SetValue("TIPO_DOCUMENTO", P_CAB_COM[i].TIPO_DOCUMENTO);
                        GralDat.SetValue("DESCRIPCION", P_CAB_COM[i].DESCRIPCION);
                        GralDat.SetValue("NRO_REFERENCIA", P_CAB_COM[i].NRO_REFERENCIA);
                        GralDat.SetValue("FECHA_COMP", P_CAB_COM[i].FECHA_COMP);
                        GralDat.SetValue("FECHA_VENC_DOC", P_CAB_COM[i].FECHA_VENC_DOC);
                        GralDat.SetValue("MONTO_DOC", P_CAB_COM[i].MONTO_DOC);
                        GralDat.SetValue("TEXTO_EXCEPCION", P_CAB_COM[i].TEXTO_EXCEPCION);
                        GralDat.SetValue("CLIENTE", Convert.ToDateTime(P_CAB_COM[i].CLIENTE));
                        GralDat.SetValue("MONEDA", P_CAB_COM[i].MONEDA);
                        GralDat.SetValue("CLASE_DOC", P_CAB_COM[i].CLASE_DOC);
                        GralDat.SetValue("TXT_CLASE_DOC", P_CAB_COM[i].TXT_CLASE_DOC);
                        GralDat.SetValue("NUM_CANCELACION", P_CAB_COM[i].NUM_CANCELACION);
                        GralDat.SetValue("AUT_JEF", P_CAB_COM[i].AUT_JEF);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message + ex.StackTrace);
                }
                BapiGetUser.SetValue("CAB_COMP", GralDat);

                BapiGetUser.Invoke(SapRfcDestination);

                valido          = BapiGetUser.GetString("VALIDO");
                lt_h_documentos = BapiGetUser.GetTable("CAB_COMP");
                lt_retorno      = BapiGetUser.GetStructure("ESTADO");

                if (lt_h_documentos.Count > 0)
                {
                    //LLenamos la tabla de salida lt_DatGen
                    for (int i = 0; i < lt_h_documentos.RowCount; i++)
                    {
                        try
                        {
                            lt_h_documentos.CurrentIndex       = i;
                            DOCS_CABECERA_resp                 = new CAB_COMP();
                            DOCS_CABECERA_resp.LAND            = lt_h_documentos[i].GetString("LAND");
                            DOCS_CABECERA_resp.ID_CAJA         = lt_h_documentos[i].GetString("ID_CAJA");
                            DOCS_CABECERA_resp.ID_COMPROBANTE  = lt_h_documentos[i].GetString("ID_COMPROBANTE");
                            DOCS_CABECERA_resp.TIPO_DOCUMENTO  = lt_h_documentos[i].GetString("TIPO_DOCUMENTO");
                            DOCS_CABECERA_resp.DESCRIPCION     = lt_h_documentos[i].GetString("DESCRIPCION");
                            DOCS_CABECERA_resp.NRO_REFERENCIA  = lt_h_documentos[i].GetString("NRO_REFERENCIA");
                            DOCS_CABECERA_resp.FECHA_COMP      = lt_h_documentos[i].GetString("FECHA_COMP");
                            DOCS_CABECERA_resp.FECHA_VENC_DOC  = lt_h_documentos[i].GetString("FECHA_VENC_DOC");
                            DOCS_CABECERA_resp.MONTO_DOC       = lt_h_documentos[i].GetString("MONTO_DOC");
                            DOCS_CABECERA_resp.TEXTO_EXCEPCION = lt_h_documentos[i].GetString("TEXTO_EXCEPCION");
                            DOCS_CABECERA_resp.CLIENTE         = lt_h_documentos[i].GetString("CLIENTE");
                            DOCS_CABECERA_resp.MONEDA          = lt_h_documentos[i].GetString("MONEDA");
                            DOCS_CABECERA_resp.CLASE_DOC       = lt_h_documentos[i].GetString("CLASE_DOC");
                            DOCS_CABECERA_resp.TXT_CLASE_DOC   = lt_h_documentos[i].GetString("TXT_CLASE_DOC");
                            DOCS_CABECERA_resp.NUM_CANCELACION = lt_h_documentos[i].GetString("NUM_CANCELACION");
                            DOCS_CABECERA_resp.AUT_JEF         = lt_h_documentos[i].GetString("AUT_JEF");
                            CabeceraDocs.Add(DOCS_CABECERA_resp);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message + ex.StackTrace);
                            System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                        }
                    }
                }
                else
                {
                    System.Windows.MessageBox.Show("No existe(n) registro(s)");
                }
                String Mensaje = "";
                if (lt_retorno.Count > 0)
                {
                    for (int i = 0; i < lt_retorno.Count(); i++)
                    {
                        //lt_retorno.CurrentIndex = i;
                        retorno_resp            = new RETORNO();
                        retorno_resp.TYPE       = lt_retorno.GetString("TYPE");
                        retorno_resp.ID         = lt_retorno.GetString("ID");
                        retorno_resp.NUMBER     = lt_retorno.GetString("NUMBER");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.LOG_NO     = lt_retorno.GetString("LOG_NO");
                        retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1");
                        if (i == 0)
                        {
                            Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1");
                        }
                        retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2");
                        retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3");
                        retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4");
                        retorno_resp.PARAMETER  = lt_retorno.GetString("PARAMETER");
                        retorno_resp.ROW        = lt_retorno.GetString("ROW");
                        retorno_resp.FIELD      = lt_retorno.GetString("FIELD");
                        retorno_resp.SYSTEM     = lt_retorno.GetString("SYSTEM");
                        Retorno.Add(retorno_resp);
                    }
                    System.Windows.MessageBox.Show(Mensaje);
                }
            }
            else
            {
                errormessage = retval;
            }
            GC.Collect();
        }
示例#48
0
        /// <summary>执行按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 函数执行ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                ttbFunName.Focus();
                //指定函数名称
                dsRFC.DataSetName = ttbFunName.Text.Trim();
                myfun             = SapRfcRepository.CreateFunction(ttbFunName.Text.Trim());//根据输入的函数名获取函数对象
                //传入值赋值
                foreach (DataTable item in dsRFC.Tables)
                {
                    //传入值赋值
                    if (item.Namespace == "IM")
                    {
                        int imrowindex = 0;
                        foreach (DataRow item1 in item.Rows)
                        {
                            if (myfun.Metadata[item1["Code"].ToString()].DataType != RfcDataType.TABLE && myfun.Metadata[item1["Code"].ToString()].DataType != RfcDataType.STRUCTURE)
                            {
                                if (!string.IsNullOrEmpty(item1["Value"].ToString()))
                                {
                                    myfun.SetValue(item1["Code"].ToString(), item1["Value"].ToString());
                                }
                            }
                            if (myfun.Metadata[item1["Code"].ToString()].DataType == RfcDataType.TABLE)
                            {
                                if (dsRFC.Tables.Contains("IMT." + item1["Code"].ToString() + "[R" + (imrowindex + 1).ToString() + ",C3]"))
                                {
                                    //setStructureByFun(myfun, myfun.Metadata[item1["Code"].ToString()].DataType.ToString(), "IMT." + item1["Code"].ToString(), "IMT." + item1["Code"].ToString() + "[R" + (imrowindex + 1).ToString() + ",C3]");
                                    setStructureByFun(myfun,
                                                      myfun.Metadata[item1["Code"].ToString()].DataType.ToString(),
                                                      "IMT." + item1["Code"].ToString() + "[R" + (imrowindex + 1).ToString() + ",C3]",
                                                      "IMT." + item1["Code"].ToString());
                                }
                            }
                            imrowindex++;
                        }
                    }
                    //传入结构赋值
                    if (item.Namespace == "IMS")
                    {
                        if (item.Rows.Count > 0)
                        {
                            setStructureByFun(myfun, "STRUCTURE", item.Namespace, item.TableName);
                        }
                    }
                    //表赋值
                    if (item.Namespace == "Tables")
                    {
                        if (item.Rows.Count > 0)
                        {
                            IRfcStructure import = null;
                            IRfcTable     table  = myfun.GetTable(item.TableName);
                            foreach (DataRow item1 in item.Rows)
                            {
                                import = SapRfcRepository.GetStructureMetadata(myfun.Metadata[item.TableName].ValueMetadataAsTableMetadata.LineType.Name).CreateStructure();
                                foreach (DataColumn item2 in item.Columns)
                                {
                                    item2.Namespace = "String";
                                    if (!string.IsNullOrEmpty(item1[item2.ColumnName].ToString()))
                                    {
                                        import.SetValue(item2.ColumnName, item1[item2.ColumnName]);
                                    }
                                }
                                table.Insert(import);
                            }
                        }
                    }
                }
                Stopwatch = new System.Diagnostics.Stopwatch();
                CWaitForm b = new CWaitForm();
                b._wtVoid = 执行;
                b.ShowDialog();
                toolStripMenuItem1.Text = "SAP端执行时间:" + Stopwatch.Elapsed.ToString();
                int exrowindex = -1;
                //获取返回值
                foreach (DataRow item in dtEX.Rows)
                {
                    exrowindex++;
                    string flag = "";
                    if (item["Value"].ToString().Length >= 4)
                    {
                        flag = item["Value"].ToString().Substring(0, 4);
                    }
                    if (flag == "点击赋值")
                    {
                        if (dsRFC.Tables.Contains("EXT." + item["Code"].ToString()))
                        {
                            DataTable dt = new DataTable();
                            if (!dsRFC.Tables.Contains("EXT." + item["Code"].ToString() + "[R" + (exrowindex + 1).ToString() + ",C3]"))
                            {
                                dt           = dsRFC.Tables["EXT." + item["Code"].ToString()].Clone();
                                dt.Namespace = "EXT." + item["Code"].ToString();
                                dt.TableName = "EXT." + item["Code"].ToString() + "[R" + (exrowindex + 1).ToString() + ",C3]";
                                dsRFC.Tables.Add(dt);
                            }
                            else
                            {
                                dt = dsRFC.Tables["EXT." + item["Code"].ToString() + "[R" + (exrowindex + 1).ToString() + ",C3]"];
                                dt.Clear();
                            }

                            IRfcTable irtb;
                            irtb = (IRfcTable)myfun.GetValue(item["Code"].ToString());
                            if (irtb.RowCount > 0)
                            {
                                for (int i = 0; i < irtb.RowCount; i++)
                                {
                                    DataRow dr = dt.NewRow();
                                    foreach (DataColumn item1 in dt.Columns)
                                    {
                                        item1.Namespace      = "String";
                                        irtb.CurrentIndex    = i;
                                        dr[item1.ColumnName] = irtb.CurrentRow[item1.ColumnName].GetValue();
                                    }
                                    dt.Rows.Add(dr);
                                }
                            }
                        }



                        //if (!dsRFC.Tables.Contains(linetablename))
                        //{
                        //    //不存在则创建
                        //    DataTable dt = new DataTable();
                        //    dt = dsRFC.Tables[linetabletypename].Clone();
                        //    dt.Namespace = linetabletypename;
                        //    dt.TableName = linetablename;
                        //    dsRFC.Tables.Add(dt);
                        //}
                    }
                    else
                    {
                        item["Value"] = myfun.GetValue(item["Code"].ToString());
                    }
                }
                //获取表结果,结构结果
                foreach (DataTable item in dsRFC.Tables)
                {
                    if (item.Namespace == "Tables")
                    {
                        IRfcTable irtb;
                        irtb = (IRfcTable)myfun.GetValue(item.TableName);
                        if (irtb.RowCount > 0)
                        {
                            item.Clear();
                            for (int i = 0; i < irtb.RowCount; i++)
                            {
                                DataRow dr = item.NewRow();
                                foreach (DataColumn item1 in item.Columns)
                                {
                                    item1.Namespace      = "String";
                                    irtb.CurrentIndex    = i;
                                    dr[item1.ColumnName] = irtb.CurrentRow[item1.ColumnName].GetValue();
                                }
                                item.Rows.Add(dr);
                            }
                        }
                    }
                    else if (item.Namespace == "EXS")
                    {
                        IRfcStructure irs;
                        String[]      ssname = item.TableName.Split('.');
                        irs = (IRfcStructure)myfun.GetValue(ssname[1]);
                        if (irs.Count > 0)
                        {
                            item.Clear();
                            DataRow dr = item.NewRow();
                            foreach (DataColumn item1 in item.Columns)
                            {
                                if (item1.Namespace == "STRUCTURE")
                                {
                                    dr[item1.ColumnName.ToString()] = "点击赋值";
                                }
                                else if (item1.Namespace == "TABLE")
                                {
                                    dr[item1.ColumnName.ToString()] = "点击赋值";
                                }
                                else
                                {
                                    dr[item1.ColumnName.ToString()] = irs.GetValue(item1.ColumnName.ToString());
                                }
                            }
                            item.Rows.Add(dr);
                        }
                    }
                }
                string filepath = "";
                filepath = System.Environment.CurrentDirectory +
                           "\\RFCFunConfig\\" +
                           dsRFC.DataSetName.ToString() +
                           "\\" + DateTime.Now.Year.ToString() +
                           DateTime.Now.Month.ToString() +
                           DateTime.Now.Day.ToString() +
                           DateTime.Now.Hour.ToString() +
                           DateTime.Now.Minute.ToString() +
                           DateTime.Now.Second.ToString() +
                           DateTime.Now.Millisecond.ToString() +
                           "\\";
                if (!File.Exists(filepath))
                {
                    FileInfo oInfo = new FileInfo(filepath);
                    if (!Directory.Exists(oInfo.DirectoryName))
                    {
                        Directory.CreateDirectory(oInfo.DirectoryName);
                    }
                }
                dsRFC.WriteXmlSchema(filepath + "\\JieGou.XML");
                dsRFC.WriteXml(filepath + "\\ShuZhi.XML");
                MessageBox.Show("执行成功,结果保存在" + filepath);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
示例#49
0
            // 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);
            }
示例#50
0
        /// <summary>
        /// 给函数深层表结构赋值
        /// </summary>
        /// <param name="IRFCF"></param>
        /// <param name="stype"></param>
        /// <param name="ceng"></param>
        /// <param name="tname"></param>
        /// <returns></returns>
        public DataTable setStructureByFun(IRfcFunction IRFCF, string stype, string ceng, string tname)
        {
            string    linetabletypename = ""; //表结构名称
            string    linetablename     = ""; //表名称
            int       rowindex          = 0;
            int       columnindex       = 0;
            int       r     = 0;
            int       c     = 0;
            string    sname = "";
            DataTable dt    = new DataTable();

            String[] tnames = tname.Split('.');

            String[] snames = tnames[tnames.Count() - 1].Split('[', ']', ',');
            sname = snames[0].ToString();
            //r = int.Parse(snames[1].Substring(1, snames[1].Length - 1).ToString());
            //c = int.Parse(snames[2].Substring(1, snames[2].Length - 1).ToString());
            if (stype == "TABLE")
            {
                IRfcTable table = IRFCF.GetTable(sname);
                dt = dsRFC.Tables[ceng];
                foreach (DataRow item1 in dt.Rows)
                {
                    IRfcStructure structure = null;
                    structure   = SapRfcRepository.GetStructureMetadata(table.Metadata.LineType.Name).CreateStructure();
                    columnindex = 0;
                    foreach (DataColumn item2 in dt.Columns)
                    {
                        if (item2.Namespace == "TABLE")
                        {
                            linetabletypename = tname + "." + item2.ColumnName.ToString();
                            linetablename     = linetabletypename + "[R" + (rowindex + 1).ToString() + ",C" + (columnindex + 1).ToString() + "]";
                            setStructureByStru(structure, item2.Namespace, linetabletypename, linetablename);
                        }
                        else if (item2.Namespace == "STRUCTURE")
                        {
                            linetabletypename = tname + "." + item2.ColumnName.ToString();
                            linetablename     = linetabletypename + "[R" + (rowindex + 1).ToString() + ",C" + (columnindex + 1).ToString() + "]";
                            setStructureByStru(structure, item2.Namespace, linetabletypename, linetablename);
                        }
                        else
                        {
                            structure.SetValue(item2.ColumnName, item1[item2.ColumnName]);
                        }
                        columnindex++;
                    }
                    table.Insert(structure);
                    rowindex++;
                }
            }
            else if (stype == "STRUCTURE")
            {
                IRfcStructure structure = IRFCF.GetStructure(tnames[tnames.Count() - 1]);
                dt = dsRFC.Tables[tname];
                foreach (DataRow item1 in dt.Rows)
                {
                    columnindex = 0;
                    foreach (DataColumn item2 in dt.Columns)
                    {
                        if (item2.Namespace == "TABLE")
                        {
                            linetabletypename = tname + "." + item2.ColumnName.ToString();
                            linetablename     = linetabletypename + "[R" + (rowindex + 1).ToString() + ",C" + (columnindex + 1).ToString() + "]";
                            setStructureByStru(structure, item2.Namespace, linetabletypename, linetablename);
                        }
                        else if (item2.Namespace == "STRUCTURE")
                        {
                            linetabletypename = tname + "." + item2.ColumnName.ToString();
                            linetablename     = linetabletypename + "[R" + (rowindex + 1).ToString() + ",C" + (columnindex + 1).ToString() + "]";
                            setStructureByStru(structure, item2.Namespace, linetabletypename, linetablename);
                        }
                        else
                        {
                            structure.SetValue(item2.ColumnName, item1[item2.ColumnName]);
                        }
                        columnindex++;
                    }
                    rowindex++;
                }
            }
            return(dt);
        }
示例#51
0
            // SD04 - Inteface de cond. de pag. - Comunicação
            // Funcao - ZFXI_SD04C
            //[RfcServerFunction(Name = "ZGXI_SD04")]
            public static void StfcInterfaceCondPag(RfcServerContext context,
            IRfcFunction function)
            {
                // Exibe no console a interface que será executada
                Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID);

                // Mandar salvar o Condicao de Pagamento
                CondicaoPagamentoRepository condicaoPagamentoRepository = new CondicaoPagamentoRepository();

                // Implementa repositorio antes do Foreach para evitar duplicações
                CondicaoPagamento condicaoPagamento = new CondicaoPagamento();

                // Flag da interface que de Limpar tabela de dados
                Char deletar = function.GetChar("I_REFRESH");

                // exibe se o mesmo foi flegado
                Console.WriteLine(deletar);

                // Se estiver espaco em branco na variavel, não limpa a tabela da interface.
                if (deletar != ' ')
                {
                    // Apaga todos os registros da tabela pro_fornecedor
                    IList<CondicaoPagamento> fromDB = condicaoPagamentoRepository.ObterTodos();
                    foreach (CondicaoPagamento dados in fromDB)
                    {
                        condicaoPagamentoRepository.Excluir(dados);
                    }
                }

                // ZTBSD060
                IRfcTable it_condicaoPagamento = function.GetTable("IT_CONDPAG");

                // Implementa Repositorio Rfc de resposta
                RfcRepository rep = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno = bapiret2.CreateStructure();

                int v_cont = 0;
                foreach (IRfcStructure row in it_condicaoPagamento)
                {                    
                    condicaoPagamento.Codigo = row.GetString("ZTERM");
                    condicaoPagamento.Descricao = row.GetString("VTEXT");
                    // Pacote
                    condicaoPagamento.pacote = row.GetString("PACOTE");
                    // Data Cricao
                    string v_data_Cricao = row.GetString("ERDAT");
                    condicaoPagamento.data_criacao = Convert.ToDateTime(v_data_Cricao);
                    // Hora de Criacao
                    //string v_hora_Cricao = row.GetString("ERZET");
                    condicaoPagamento.hora_criacao = row.GetString("ERZET");//Convert.ToDateTime(v_hora_Cricao);                   

                    try
                    {
                        v_cont = v_cont + 1;
                        if (deletar == ' ')
                        {
                            IList<CondicaoPagamento> fromDB = condicaoPagamentoRepository.ObterTodosComCampo("Codigo", condicaoPagamento.Codigo);
                            foreach (CondicaoPagamento dados in fromDB)
                            {
                                condicaoPagamentoRepository.Excluir(dados);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro e a descricao do material
                        Console.Write("entrou no exception");

                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retorno.SetValue("TYPE", "E");
                        linha_retorno.SetValue("MESSAGE", ex.Message);
                        linha_retorno.SetValue("MESSAGE", "Erro ao inserir a Condicao de Pagamento: " + condicaoPagamento.Descricao + " - Id: " + condicaoPagamento.Codigo);
                        retorno.Insert(linha_retorno);
                    }

                    condicaoPagamentoRepository.Salvar(condicaoPagamento);
                    String PACOTE = row.GetString("PACOTE");
                    String ERDAT = row.GetString("ERDAT");
                    String ERZET = row.GetString("ERZET");
                }

                IRfcTable retornoSucesso = function.GetTable("IT_RETURN");
                linha_retorno.SetValue("TYPE", "S");
                linha_retorno.SetValue("MESSAGE", "Registros com Sucesso: " + v_cont);
                retornoSucesso.Insert(linha_retorno);
            }
        public void LoadDataFromSAPERP(string[] newTP)
        {
            string werk   = "";
            string onDate = txbOnDate.Text;

            var settingsSP = (from s in context.SettingsSAPERPTbls
                              select s).FirstOrDefault();

            werk = settingsSP.Werk;

            if (werk == null || werk == "")
            {
                ErrorLabel1.Text        = "Не указан в настройках завод магазина";
                Wizard1.ActiveStepIndex = 1;
                return;
            }

            MyBackendConfig2 cfg = new MyBackendConfig2();

            try
            {
                // delete all
                var sap1Del = from p in context.SAPOUT_REST
                              select p;
                context.SAPOUT_REST.DeleteAllOnSubmit(sap1Del);
                context.SubmitChanges();
                var sap2Del = from p in context.SAPOUT_SMENA
                              select p;
                context.SAPOUT_SMENA.DeleteAllOnSubmit(sap2Del);
                context.SubmitChanges();
                //-----------------------------

                RfcDestinationManager.RegisterDestinationConfiguration(cfg);      //1
                RfcDestination prd = RfcDestinationManager.GetDestination("AEP"); //2


                RfcRepository repo = prd.Repository;//3

                IRfcFunction pricesBapi =
                    repo.CreateFunction("Y_GET_MATNR_REST"); //4
                pricesBapi.SetValue("I_WERKS", werk);        //5
                //pricesBapi.SetValue("I_DATE", onDate); //5

                IRfcTable detail1 = pricesBapi.GetTable("TAB");

                foreach (string strs in newTP)
                {
                    detail1.Append();

                    detail1.SetValue("MATNR", strs);
                    detail1.SetValue("MAKTX", "");
                    detail1.SetValue("LGORT", "");
                    detail1.SetValue("LABST", 0.0);
                    detail1.SetValue("MEINS", "");
                }

                pricesBapi.Invoke(prd); //6
                IRfcTable detail3 = pricesBapi.GetTable("TAB");


                DateTime tsmp = DateTime.Now;

                int i = 0;
                foreach (IRfcStructure elem in detail3)
                {
                    string matnr = elem[0].GetString();
                    string maktx = elem[1].GetString();
                    string lgort = elem[2].GetString();
                    double labst = elem[3].GetDouble();
                    string meins = elem[4].GetString();

                    SAPOUT_REST np = new SAPOUT_REST();
                    np.MATNR     = matnr;
                    np.MAKTX     = maktx;
                    np.LGORT     = lgort;
                    np.LABST     = labst;
                    np.MEINS     = meins;
                    np.TimeStamp = tsmp;
                    context.SAPOUT_REST.InsertOnSubmit(np);

                    if (i == 100)
                    {
                        context.SubmitChanges();
                        i = 0;
                    }
                    i++;
                }
                context.SubmitChanges();



                RfcRepository repo2 = prd.Repository;//3

                IRfcFunction pricesBapi2 =
                    repo2.CreateFunction("Y_GET_SMENA"); //4
                pricesBapi2.SetValue("I_WERKS", werk);   //5
                pricesBapi2.SetValue("I_DATE", onDate);  //5
                pricesBapi2.Invoke(prd);                 //6
                IRfcTable detail2 = pricesBapi2.GetTable("TAB");

                tsmp = DateTime.Now;

                i = 0;
                foreach (IRfcStructure elem in detail2)
                {
                    string sm_date = elem[0].GetString();
                    string smena   = elem[1].GetString();

                    SAPOUT_SMENA np = new SAPOUT_SMENA();
                    np.SM_DATE   = DateTime.Parse(sm_date);
                    np.SMENA     = smena;
                    np.TimeStamp = tsmp;
                    context.SAPOUT_SMENA.InsertOnSubmit(np);

                    if (i == 100)
                    {
                        context.SubmitChanges();
                        i = 0;
                    }
                    i++;
                }
                context.SubmitChanges();



                //String companyName = detail.
                //    GetString("NAME1");//7
                //Console.WriteLine(companyName);
                //Console.Read();
            }
            catch (RfcInvalidStateException e)
            {
                // cascade up callstack
                ErrorLabel1.Text        = "Проблема повторного подключения к SAP: " + e.Message;
                Wizard1.ActiveStepIndex = 1;

                Log l = new Log();
                l.Message   = e.Message;
                l.Type      = "SAP";
                l.TimeStamp = DateTime.Now;
                context.Logs.InsertOnSubmit(l);
                context.SubmitChanges();
            }
            catch (RfcCommunicationException e)
            {
                // network problem...
                ErrorLabel1.Text        = "Сетевая проблема подключения к SAP: " + e.Message;
                Wizard1.ActiveStepIndex = 1;

                Log l = new Log();
                l.Message   = e.Message;
                l.Type      = "SAP";
                l.TimeStamp = DateTime.Now;
                context.Logs.InsertOnSubmit(l);
                context.SubmitChanges();
            }
            catch (RfcLogonException e)
            {
                // user could not logon...
                ErrorLabel1.Text        = "Не правильный пользователь для подключения к SAP: " + e.Message;
                Wizard1.ActiveStepIndex = 1;

                Log l = new Log();
                l.Message   = e.Message;
                l.Type      = "SAP";
                l.TimeStamp = DateTime.Now;
                context.Logs.InsertOnSubmit(l);
                context.SubmitChanges();
            }
            catch (RfcAbapRuntimeException e)
            {
                // serious problem on ABAP system side...
                ErrorLabel1.Text        = "Серьезная проблема на стороне SAP обратитесь в службу поддержки SAP (serious problem on ABAP system side...): " + e.Message;
                Wizard1.ActiveStepIndex = 1;

                Log l = new Log();
                l.Message   = e.Message;
                l.Type      = "SAP";
                l.TimeStamp = DateTime.Now;
                context.Logs.InsertOnSubmit(l);
                context.SubmitChanges();
            }
            catch (RfcAbapBaseException e)
            {
                // The function module returned an ABAP exception, an ABAP message
                // or an ABAP class-based exception...
                ErrorLabel1.Text        = "Серьезная проблема на стороне SAP обратитесь в службу поддержки SAP (The function module returned an ABAP exception, an ABAP message): " + e.Message;
                Wizard1.ActiveStepIndex = 1;

                Log l = new Log();
                l.Message   = e.Message;
                l.Type      = "SAP";
                l.TimeStamp = DateTime.Now;
                context.Logs.InsertOnSubmit(l);
                context.SubmitChanges();
            }
            finally
            {
                RfcDestinationManager.UnregisterDestinationConfiguration(cfg);//1
            }
        }
示例#53
0
            // 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));
        }