コード例 #1
0
        public void CriaCampo(Company oCompany, string sTabela, string sCampo, string sDescricao, BoFieldTypes Tipo, BoFldSubTypes SubTipo, int iComprimento, BoYesNoEnum Obrigatorio, bool bValorPadrao, string sValorPadrao, bool bValoresValidos, string[,] sValoresValidos, out string sMensagem)
        {
            sMensagem = string.Empty;

            try
            {
                if (!VerificaExistenciaCampo(oCompany, sTabela, sCampo))
                {
                    int    lErrCode;
                    string lErrStr;
                    int    lRetVal;

                    UserFieldsMD oUserFieldMD = null;

                    //Limpa a memória
                    oUserFieldMD = (UserFieldsMD)oCompany.GetBusinessObject(BoObjectTypes.oUserFields);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldMD);
                    oUserFieldMD = null;
                    GC.Collect();
                    oUserFieldMD             = (UserFieldsMD)oCompany.GetBusinessObject(BoObjectTypes.oUserFields);
                    oUserFieldMD.TableName   = sTabela;
                    oUserFieldMD.Name        = sCampo;
                    oUserFieldMD.Description = sDescricao;
                    oUserFieldMD.Type        = Tipo;
                    oUserFieldMD.SubType     = SubTipo;
                    oUserFieldMD.Mandatory   = Obrigatorio;

                    if (bValoresValidos)
                    {
                        for (int i = 0; i < sValoresValidos.GetLength(0); i++)
                        {
                            oUserFieldMD.ValidValues.Value       = sValoresValidos[i, 0];
                            oUserFieldMD.ValidValues.Description = sValoresValidos[i, 1];
                            oUserFieldMD.ValidValues.Add();
                        }
                    }

                    if (bValorPadrao)
                    {
                        oUserFieldMD.DefaultValue = sValorPadrao;
                    }

                    if (iComprimento > 0)
                    {
                        oUserFieldMD.Size = iComprimento;
                    }

                    lRetVal = oUserFieldMD.Add();
                    if (lRetVal != 0)
                    {
                        oCompany.GetLastError(out lErrCode, out lErrStr);
                        sMensagem = string.Format("Falha! Descricao B1: {0} - Codigo Erro B1: {1}", lErrStr, lErrCode.ToString());
                    }
                    else
                    {
                        sMensagem = string.Format("Campo {0} - {1}, criado com sucesso..", sCampo, sDescricao);
                    }

                    //Limpa a Memória
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldMD);
                    oUserFieldMD = null;
                    GC.Collect();
                }
            }
            catch (Exception ex)
            {
                sMensagem = string.Format("Erro ao criar Tabela/Campos SAP, Erro: {0}", ex.Message);
            }
        }