SAP B1 AddOn,检查 table 是否存在并创建 table 的最佳位置是什么?

SAP B1 AddOn, What is the best place to check if table exist and create table?

我正在为 SAP B1 创建一个附加组件,我需要知道在数据库上创建我的附加组件 table 的最佳位置是什么?

对于下一个版本,我需要检查并更新 table 列。

我建议您使用 SAP UserTables,这是 SAP 推荐的,您可以在 SAP 应用程序工具 --> 自定义工具 --> 用户定义表 - 设置中创建它们

如果要进行编码,则必须使用 UserTablesMD 对象。您可以在 SAP 官方论坛中找到有关附加组件的更多信息 http://scn.sap.com/community/business-one-sdk

如果您想检查 table 是否存在,您可以通过 GeyByKey 方法使用相同的对象,或者使用 Recordset 查询 OUTB table.

开发了一个框架来控制插件内表和字段的创建,还映射事件并处理异常等。 该框架仍在开发中,并已在许多插件中使用。

下面是如何使用框架创建表和字段的示例

用户Table

[Tables(nome: "SZACONFIG", descricao: "Configurações plugins", tipo: BoUTBTableType.bott_NoObject, tabelaSistema: false)]
public class Configuracoes : TableBase
{
    [Fields("NomeUsu", "Nome de Usuário", 150, true, BoFldSubTypes.st_None)]
    public string NomeUsuario { get; set; }

    [Fields("NomePlg", "Nome do Plugin", 200, true, BoFldSubTypes.st_None)]
    public string NomePlugin { get; set; }

    [Fields("Ativo", "Ativo", 1, false, BoFldSubTypes.st_None)]
    [ValoresValidos("N", "Não")]
    [ValoresValidos("Y", "Sim")]
    public string Ativo { get; set; }



}

Table系统

[Tables("OUSR", "Cadastro de Usuários", true)]
    public class OUSR : TableBase
    {


        [Fields("AdmPlg", "Administrar Plugin", 1, "N", false, BoFldSubTypes.st_None)]
        [ValoresValidos( "N", "Não")]
        [ValoresValidos( "S", "Sim")]
        public string AdmPlg { get; set; }




    }

如果你有兴趣我可以提供