为什么要搞这个remodeling
为甚要搞ADOS的remodeling。
新的ADSO上来之后,带来很多新功能,取代原始DSO和infocube。不仅以标准,写优化,数据集市,直接更新来分类,而且还有字段代替infoobject,新的分区和索引等等啥的,还有增强的主数据检查,还有数据温度分层概念。就是很有意思。
那么其中有这个remodeling的概念是个啥?
在什么情况下需要搞这个remodeling?
我今天就遇到了这个,因为我这个ADSO已经有数据了。
但是我需要改变这个ADSO的结构。我删掉了一些属性,删掉了它的key,换成了新的key。然而我忘记先删除原来的数据了。
当我激活这个ADSO的时候,它让我去remodeling。
那这个remodeling的流程是啥?
原先的remodeling为了自动化你的更改需求,现在4HANA了之后,infoobject还是能用。但是ADSO换地方了。在它自己的details里就有。
我这里出现了一个警告,我点了这个remodeling的警告之后,就会带我进入一个remodeling的request。
那也就是说,其实这些remodeling的功能是包含在这个request里面的:
如果直接点击details里的remodeling,会出现如下:
这就意味着,我这个remodeling是去改ADSO的表的数据的。因为我要保证这个ADSO的完整性和一致性。
于是,可以理解为,其实这个ADSO激活流程是:激活+重构
激活是元数据修改了,但是并不对交易数据和主数据做修改。(也就是我新建一个ADSO,这个空的ADSO我可以做任何除了对KEY的修改,激活后这个ADSO就可以用)
重构是对ADSO的交易数据或关联主数据有影响,可能要导致一些参照完整性检查和数据更改。需要做一个check。
当有了一个重构的请求了,那就要去执行。在RSMONITOR里面能看,或者就直接点击这个警告,去网页看。
这里插一句,因为我是删掉了key,所以是需要重构的。一般如果删掉或者增加一个非key的字段,是不会要求重构的。因为HANA后台表直接就insert或者drop一个列,很快。只是单纯的元数据更新。就是说你去删掉一个infoobject的非key属性,也就会直接把这列删掉,不需要做啥。
如果你说这是个警告,你不管这个警告,不去做这个remodeling,那会发生什么?
当你去传输的时候,你会get一个return code 4.
为啥?SAP记录传输的都有版本。Version。
你的每次更改都会有个新的版本号。这个BW里面的TLOGO版本,会在你的更改历史里面看到。
哎,又得扯远。
BW的对象都会有版本信息:
有了版本信息,你可以看到上次激活版本,和当前更改版本。当你修改之后,还未完全激活,比如我这个,需要做一个remodeling的,虽然我去激活了这个ADSO,但是它给我的版本是M,我新改的东西都在M里,旧的还在A里。
这个可以追踪你的更改。你能看到你新版本改了啥。
TLOGO就是个BW对象类型。意思是Transportable Object Type.可传输的对象类型。能被包在你的请求里的。
我如果要记录所有对象的版本更改信息,得在这里做配置
在啥时候记录版本信息?
默认对于所有的都是before export和after import都要记。都要创建版本。
但咱肯定不能所有都这么搞。你可以自己对一些特定的对象做版本信息记录的修改,ADSO改成before activation。ELEM的query就得把所有版本记录都关掉,要不然得记多少。
后面自己定制的会覆盖前面的all。
一般咱会把ADSO,HCPR,IOBJ,TRFN的before activation都打开。
IOBJ必然要打开的,不然你这个改的时候,ADSO不知道要重构把你这个infoobject的更改拿过来的。
正因为有了这个版本管理,你才能比较不同的版本,而且可以回到之前的版本。
也就是原先版本管理那里的revert和compare。不过咱一般也用不上。
而且你有没有权限搞revert,还要看你的授权对象S_RS_HIST有啥权限。给没给你改。
那么所有的更改嘞,都会放在后台表RSOTLOGOHISTORY
啥时候,传输号,用户ID。
然后呢,这个表会迅速的扩大,所以要搞定期清理。或者用RSO_DELETE_TLOGO_HISTORY这个report去删除。
接下来继续回来瞎唠。
return code 4 这当然是个警告。
我没直接传,但是我看到别人如果加了一个新的compound对象不做重构,那会有如下的详细解释:
那你就得去做重构,因为这个有SID检查,需要新生成SID啊。
你不去做重构,那ADSO就还在旧的state。还是个M状态。
而且会影响到这个请求里的转换啥的。
而且这个重构,得在每个系统都做。
你如果不做,那么旧版本会用来做数据抽取和报表展现,你新加的字段不会起作用。直到重构完成。
所以去run: