Example #1
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());
        }
Example #2
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());
        }