还在为SAP中的数据更改烦恼?
所谓道德和公理,只有在实力相等的情况下才能拿出来讨论。
写在前面
还在为SAP里的数据变更记录头疼?还在去找服务器底层看谁动了你的奶酪?还在为查找什么时候修改记录而发愁?看完这篇文章,你会找到柳暗花明又一村的赶脚。
在SAP实施项目里,创建自定义表,存储一些自开发程序的数据是很经常的事情,这些自定义的表里数据更新也是很频繁的,有些时候,我们就需要对这些数据变化做个监控记录,以便查找问题。
这里要说一点,SAP里有提供一个标准功能,Log data changes,用来记录数据变化,但是这个功能会增加数据库的开销,所以,今天matinal分享一个替代标准功能的方法。
公众号:SAP Technical创建过程
1、创建控制结构
首先,创建一个结构,这个结构里包含了数据创建和改变的信息的字段。如下图所示:
公众号:SAP Technical如上图所示,涵盖了create name、create date、create time、change name、change date、change time。然后,再把这个structure放入我要创建的自建表中,如下图所示:
公众号:SAP Technical2、创建维护视图
创建维护视图的过程很简单,同样进入事务SE11,如下图所示:
公众号:SAP Technical如上图所示,添加上表之后,视图就包含了表里的所有字段,还有一点需要注意,我这里把记录字段的属性设置为R,这样可以控制在数据维护期间,这些字段是只读状态,用户无法更改。如下图所示:
公众号:SAP Technical3、表维护生成器
接下来,就是用SAP的系统功能创建表维护生成器,这个创建也很简单,如下图所示:
公众号:SAP Technical正常创建就好,如下图所示:
公众号:SAP Technical然后,点击创建就可以生成了。
4、表维护中添加事件
选择before save event,然后写上子程序名称,如下图所示:
公众号:SAP Technical紧接着创建一个新的include,我们将添加用于填充控制字段值的代码。当然,这个include是可以重用的。
公众号:SAP Technical5、数据变化追踪
下面的部分要有一部分代码来完成了,当用户对这个表进行操作的时候,如何来记录变化,在这之前,我先简单说点内容。
<ACTION> ='N':代表新记录
<ACTION> ='D':代表删除记录
<ACTION> ='U':代表更新记录
所以,如果Action ='U',就代表记录的是上一次用户更改的内容。如果Action ='N',就代表上一次用户创建的内容。把两者结合起来,就是我要做的。
公众号:SAP Technical一个简单的栗子,希望可以帮助有使用的各位。
这里顺便提一句,如果你使用SCU3也没有一点问题,只是方法不同,有些时候不像后台配置,比如生产订单更改记录,我们可以使用SAP提供的日志查询查看到变更的结果。
公众号:SAP Technical