我微信群里有朋友问:如何查找某个ABAP结构中的某个字段,值是哪个数据库表字段在运行时从?写的?以ABAP结构BAPIAD1VL为例,假设我们需要查找字段DISSTRCT_NO的来源。事实上,没有太好太精确的方法。我在这里提供一个方法。选择DISSTRCT_NO,点击SE11工具栏上的Whereused列表图标:有4个结果,一个一个手动查看。如果结果数量很大,则此方法效率低下。在第三条记录中,发现ADDR1_VAL结构的CITYP_CODE字段写入了我们要查找的目标结构的BAPIAD1VL-DISTRCT_NO字段。这个ADDR1_VAL仍然是一个ABAP结构,所以我们在这里有两个选择。一个是我们的目标,它又落在找到结构ADDR1_VAL的字段CITYP_CODE来自哪里。可以递归使用SE11的whereusedlist查找字段CITYP_CODE,直到在搜索结果中找到真正的数据库表时停止探索。第二种选择是使用SE80的Repository信息系统。打开SE80,在左侧展开Fields->TableFields,在右侧输入CITYP_CODE:在搜索结果中,发现ADRCITYPRT和ADRSTREET这两个表的CITYP_CODE字段很可能就是我们要查找的字段向上。这时候手动去SE16里查这两个表的字段确认一下。另外,群里这位朋友还问了checktable。这个概念通常很容易与另一个值表混淆。检查表它只是一个包含特定外键表字段的所有有效条目的表。用于字段级验证(它限制字段值)。值表值表在域级别维护,也称为域级别验证。两种查表的区别是检查在任何应用程序中输入的表字段的输入值,而值表会为F4帮助上的表字段提供值。检查表定义外键,是表定义的一部分。值表是域定义的一部分。校验表是字段级校验,值表是字段级校验,为引用该字段的所有字段提供F4帮助。更多Jerry原创文章在这里:《王子熙》:
