ABAP Where used list的代码实现

俺今天接了个需求,要把一些字段的where used list给list出来。

众所周知,这玩意直接用三叉戟那个图标的,但是我需要list出来的字段有点多,可能会列到明天去。

大量重复冗余的工作当然不该一个优秀的程序员来做。

身为不优秀的程序员,我必须向优秀程序员看齐。

首先出第一个解决方案,哈哈哈那就是sap脚本,没想到吧,我只要录制一遍查找过程,就可以重复执行脚本取得所有值。

然而德国人给出了新的问题,where used list是有选择的,列出所有的带check字样的mothod。

那就只有写abap了,调试系统where功能,搞了个报表,找了个函数,试了半小时参数,终于搞定了。

代码就不放了,函数是'RS_EU_CROSSREF',参数DSF代表field,何等卧槽,我一直以为是FD(按类型去表里查的)

终于搞完了之后,开会提了这事。

这时候,同事说...这玩意在一个表里也有。

我一愣,这玩意怎么会存在表里。

然而事实上这玩意真tm会存在一个表里,表名 wbcrossgt

简直想吐槽,这玩意不应该是实时分析读取的么,放表里的effort更大吧...每一个类型的object的每一个类型的where都存一遍,那每次写程序岂不是这表还在不停的实时更新?

一查表,七千多万条数据,行吧。

两个方案都写了代码,互相检验了一遍,正确。

有个小坑,表里存的字段,中间不是‘-’ 连接的,而是\TY:, 比如‘vbak\TY:vbeln’.

还有个小坑,表的话如果是method的话,会显示成class===CM***的形式,这种用se38可以打开到method。

还有个小坑,表的话如果method加上classname长度超标,这时候method就不给列出来了。

 

 

posted @ 2019-09-25 17:57  以秉  阅读(576)  评论(0编辑  收藏  举报