俺今天接了个需求,要把一些字段的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:, 比如‘vbakTY:vbeln’.
还有个小坑,表的话如果是method的话,会显示成class===CM***的形式,这种用se38可以打开到method。
还有个小坑,表的话如果method加上classname长度超标,这时候method就不给列出来了。