Crear tabla de usuario por codigo

estimados,
esto es mas bien una pregunta es posible crear tablas de usuario por código y a su vez verificar si ya existen cada vez que inicie el sistema?
muchas gracias

1 me gusta

Hola! :crazy_face:

Para crear UDT y UDFs debes usar la DI-API por medio del objeto SAPbobsCOM.UserTablesMD y SAPbobsCOM.UserFieldsMD

Usa las siguientes funciones:

 public static string CreateUDT(string tableName, string tableDesc, SAPbobsCOM.BoUTBTableType tableType)
        {
            SAPbobsCOM.UserTablesMD oUdtMD = null;
            try
            {
                oUdtMD = (SAPbobsCOM.UserTablesMD)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserTables);
                if (oUdtMD.GetByKey(tableName) == false)
                {
                    oUdtMD.TableName = tableName;
                    oUdtMD.TableDescription = tableDesc;
                    oUdtMD.TableType = tableType;
                    int lRetCode;
                    lRetCode = oUdtMD.Add();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oUdtMD);
                    oUdtMD = null;
                    GC.Collect();
                    if ((lRetCode != 0))
                    {
                        if ((lRetCode == -2035))
                        {
                            return "-2035";
                        }

                        return oCompany.GetLastErrorDescription();
                    }

                    return "";
                }
                else
                {
                    return "";
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

        public static string CreateUDF(string tableName, string fieldName, string desc, SAPbobsCOM.BoFieldTypes fieldType, int Size, string LinkTab, SAPbobsCOM.BoFldSubTypes SubType = SAPbobsCOM.BoFldSubTypes.st_None)
        {
            try
            {
                SAPbobsCOM.UserFieldsMD oUserFieldsMD;
                oUserFieldsMD = (SAPbobsCOM.UserFieldsMD)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
                oUserFieldsMD.TableName = tableName;
                oUserFieldsMD.Name = fieldName;
                oUserFieldsMD.Description = desc;
                oUserFieldsMD.Type = fieldType;
                if (Size != 0)
                {
                    oUserFieldsMD.EditSize = Size;
                }

                oUserFieldsMD.SubType = SubType;
                int lRetCode;
                lRetCode = oUserFieldsMD.Add();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldsMD);
                GC.Collect();
                oUserFieldsMD = null;
                if (lRetCode != 0)
                {
                    if ((lRetCode == -2035 | lRetCode == -1120))
                    {
                        return lRetCode.ToString();
                    }

                    return oCompany.GetLastErrorDescription();
                }

                return "";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

    }

Saludos!

3 Me gusta

muchas gracias Gabriel, es exacto lo que buscaba, gracias.

1 me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.