在SAP系统中,用户在进行日常业务的过程时,经常会因为操作不方便,或者需要某些归类的数据集合,提出对系统的更改需求,包括程序的更改和报表的开发。用户在操作业务的时候,看到的只是前台界面,因此只能把自己需要的数据告诉开发人员,指出数据在前台的显示位置,开发人员还需要找到相关的数据在后台的存储位置,这样才能进行开发。由于系统的复杂性,大部分显示在前台的数据都是经过系统程序的处理,并不能够直接找到与后台数据表之间的映射关系,这也是所有大型ERP系统的共有特点。那应该如何把前台界面显示的数据,关联到后台的数据表中呢?从简单到复杂,一步步深入,有以下几种方法:
1. SAP系统在前台操作界面,提供了一个很好的操作方式,点击自己需要跟踪的数据,按F1键,然后选择“技术信息”,会出现如下图所示界面:
可以看到,我要跟踪的数据是存储在表名为MEPO01222的表中,字段的名称是EKORG,我们可以去后台查看这个数据表,是否有我们需要的数据。有可能,我们已经成功了,找到了前台数据和后台表的关系,那实在是非常的幸运。而一般情况下,你会发现我们找到的这个名为MEPO01222的所谓的表,并不是一个真正的数据表,他可能是一个视图(View),也可能只是一个结构(Structure),这时候,我们就必须进行下一步操作了。
2. 如果我们在第一步中,发现的是view,这种情况比较简单,我们可以通过T-code(操作代码,对应于系统的操作界面)SE38,进入ABAP Dictionary,查看这个View所关联的表:
我们可以看到在左边一栏,显示了这个View涉及到的table,右边显示的是这些table中那些字段进行了相互的连接(Join),这样我们就可以很方便的从这些table找到我们需要的数据。
3. 如果我们在第一步中,发现的是Structure ,相对来讲就比较麻烦。因为Structure只是用来临时存储程序运行时的实时数据,我们在里面无法得到我们需要的数据。这时,我们就需要用到第一步中查找到的数据元素(Data Element)。进入T-code SE11,在Data Type栏输入要查找的数据元素按Ctrl+Shift+F4,可以调出数据元素查找界面(Where-used List),我们在这里选择查找表,就可以得到所有使用过这个数据元素的Table清单。这个清单的数量一般会比较大,在20-30个左右,我们需要根据经验做出选择,排除一些不常用的和非关键数据表,再结合表的描述字段,分析我们所需要的数据的位置。
4. 经过前3步的操作,我们可以找到70%左右数据所在数据表的位置,但是有一部分数据,在后台隐藏的非常深,并不能够通过这些方法找到。对于这些数据,我们只有通过最原始的方式去查找,就是程序跟踪。 SAP系统提供了两种跟踪的方法:
(1)在T-code ST05进行跟踪,这里跟踪的是系统所进行的所有SQL语言操作。我们首先激活跟踪器,然后进行一步关于所查找数据的操作,关闭跟踪器,最后显示跟踪列表。这里就可以看到在我们进行操作时,系统通过SQL语言进行的所有数据库操作,并显示SQL所设计到的表名,字段名,查询条件。我们可以根据相关的字段名,查询条件,筛选涉及到的数据表,从而判断数据在后台表中的位置。如果这种跟踪方法还不行,就只能通过代码级的跟踪了。
(2)代码跟踪的方法很简单,在进行业务的时候,输入/h打开中断,之后的业务操作就会直接进入代码跟踪器,一条一条的运行代码,这样可以很清楚的看到系统的逻辑。理论上,这种方法是肯定可以找到我们想要的数据表的。但是实际情况却并不如此,在大型的SAP系统中进行代码级的跟踪,谈何容易。由于系统的复杂性,可能一个操作涉及到的Function有几十个,涉及到的Table有上百个,涉及到的代码有上千行,从这里面找到我们需要的数据表,真的犹如大海捞针。就好像锋利的宝剑只有在真正的剑客手里才能显示出威力一样,代码跟踪这种方法也只有在真正的高手手里,才能真正发挥作用。
在SAP中找表,对于一般水平的顾问比如我,用的最好方法是将光标点在所要查找的字段上,按F1,如果是VIEW用SE38如果是结构就用ST05,当然有的是要有权限的。