在我的 SAP 应用程序的上下文中,我向现有表添加了一个列,并希望为其定义一个默认值,以便使用该表的旧代码(尤其是插入行的代码)不必关心新列 - 我希望它自动填充预定义的默认值(当然只有在没有指定值的情况下)。

后面的数据库系统是 Oracle-DB,尽管我只能通过 SAP-GUI 和 ABAP-SQL 访问它。

由于我们公司的 SAP 专家不知道这是否可能,我想也许这里有人会。那么 - 这是可能的吗?如果是的话 - 怎么样?

编辑 - 请求的场景详细信息:
这个场景实际上非常简单:我们的应用程序有一个用户表,其中包含标准用户内容(名称、一些设置、ID、部门、一堆标志等),我添加了一个列来存储一个简单的设置(用户为其网络界面选择的设计)。它只包含一个名称(字符 40)。这就是我上面谈到的专栏,我希望它的默认值是“默认设计”。

请您参考如下方法:

请不要考虑在数据库级别上执行此操作。严重地。直接对数据库层所做的更改在系统内部是不可见的,并导致各种奇怪的副作用,这将是一场噩梦。此外,更改和传输系统不会获取您的更改 - 您必须手动更新 QA 和生产系统。

如果可能,我建议以中性字段值(空格、零等)与您的默认值相对应的方式选择您的域值。如果这不可能,请详细描述您的场景以获得更具体的答案。

SAP R/3/ABAP 环境不提供为列添加默认值的选项。只能选择强制系统填写非NULL添加列时的默认值,但这通常是个坏主意。修改所有数据并插入默认值需要时间,并且根据表的大小和重要性,这可能会导致生产中断。使用默认值填充字段必须由应用程序服务器执行,而不是由数据库执行。在您的情况下,我只需在读取访问模块中添加逻辑,例如

IF my_user-ze_design IS INITIAL. 
  my_user-ze_design = co_ze_default_design. 
ENDIF. 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!