本发明涉及一种程序对象关联关系的解析方法,具体地说是一种通过ABAP语法解析获取引用自定义对象的方法。
背景技术:
在软件开发领域Java平台有Ant等工具提供程序对象的引用关系管理,如类、接口等。这些工具可以帮助程序员管理程序对象,管理程序版本,但是在SAP平台没有一个工具、程序提供这种功能,如查询一个可执行程序包含哪些表、数据元素、函数、类等。SAP平台只提供反查功能,可以查询一个程序对象被哪些程序对象引用,如一个透明表,被哪些程序引用了,一个数据元素被哪些程序引用了。SAP:德国一家软件公司名称,其开发的管理软件命名为SAP,广泛在世界范围内使用。其本身提供二次开发平台。
ABAP:SAP软件的开发语言,也是SAP软件提供的开发平台。ABAP开发语言是一种高级开发语言,其开发依赖于SAP提供的平台,其语法格式是一种解释语言。对于ABAP源代码,知道其各种用法,但如何从各种关键词的语法中总结出其可能引用的程序对象,并不知道。如数据库查询语句:
SELECT*FROM ZSFLIGHT WHERE…
此源代码语句中包含了一个对ZSFLIGHT自定义透明表对象的引用。说明本程序对象引用了ZSFLIGHT透明表。所以当对一个程序对象的所有源代码语句解析后,就能获得这个对象所有引用的自定义对象。但是ABAP语法关键词很多,上面例子中的SELECT*FROM…只是其中的一种语法,如何制定每个语法的解析方法?目前还没有方法解决。
技术实现要素:
本发明的目的是提供一种通过ABAP语法解析获取引用自定义对象的方法,该方法应用在SAP平台中,利用对ABAP语法关键词的解析,来获取一个源码对象对其他程序对象的引用,解决SAP平台程序对象关系的管理措施。
本发明的目的通过以下技术方案实现:
一种通过ABAP语法解析获取引用自定义对象的方法,其特征在于:该方法应用在SAP平台中,利用对ABAP语法关键词的解析,来获取一个源码对象对其他程序对象的引用,解决SAP平台程序对象关系的管理措施,具体如下:
1)输入一个程序对象的名称,这个程序对象的对象类型是CLAS、INTF、FUGR、PROG由源代码构成的程序对象;2)对于CLAS类型,首先使用cl_oo_classname_service=>get_pubsec_name得到程序对象的一个内部程序名;
3)对于CLAS类型,再使用cl_oo_classname_service=>get_paksec_name得到程序对象的一个内部程序名;
4)对于CLAS类型,再使用cl_oo_classname_service=>get_prisec_name得到程序对象的一个内部程序名;
5)对于CLAS类型,再使用cl_oo_classname_service=>get_prosec_name得到程序对象的一个内部程序名;
6)对于CLAS类型,再使用cl_oo_classname_service=>get_ccimp_name得到程序对象的一个内部程序名;
7)对于CLAS类型,再使用cl_oo_classname_service=>get_ccdef_name得到程序对象的一个内部程序名;
8)对于CLAS类型,再使用cl_oo_classname_service=>get_ccmac_name得到程序对象的一个内部程序名;
9)对于CLAS类型,再使用cl_oo_classname_service=>get_cl_name得到程序对象的一个内部程序名;
10)对于CLAS类型,再使用
cl_oo_classname_service=>get_all_method_includes得到程序对象的所有的类方法的程序名称;
11)以上是OBJECT为CLAS类型的程序对象获取程序名称方法;
12)对于INTF类型,使用
cl_oo_classname_service=>get_intfsec_name得到程序对象的一个内部程序名;
13)对于FUGR类型,使用函数'FUNCTION_INCLUDE_INFO'得到函数组所有的包含的程序名;
14)对于PROG类型,直接使用程序对象名作为内部程序名;
15)对于TYPE类型,再使用'%_C'+程序对象名得到函数组所包含的程序名;
16)对于CINC类型,直接使用程序对象名作为内部程序名;
17)对于CPRI类型,cl_oo_classname_service=>get_prisec_name得到程序对象的一个内部程序名;
18)对于CPRO类型,cl_oo_classname_service=>get_prosec_name得到程序对象的一个内部程序名;
19)对于CPUB类型,cl_oo_classname_service=>get_pubsec_name得到程序对象的一个内部程序名;
20)对于METH类型,直接使用程序对象名作为内部程序名;
21)对于FUNC类型,使用函数'FUNCTION_INCLUDE_INFO'得到函数所包含的所有内部程序名;
22)对于REPS类型,直接使用程序对象名作为内部程序名;
23)对于REPT类型,直接使用程序对象名作为内部程序名;
24)针对以上方法得到的内部程序名使用READ REPORT方法获取内部程序名的源代码内表;
25)对大部分常用语法作梳理,给出引用到自定义程序对象的语法关键词;
26)对源代码内中的每一句源代码利用关键词进行分析,得到包含的自定义关联对象。
本发明中,所有语法解析后得到的关键词如果不是自定义的程序对象,SAP规定自定义对象以“Z”或者“Y”开头,最终都通过此规则来过滤。
对象类型:SAP平台中区分不同类型的程序对象关键词,以四位字符标示。本发明将根据不同的语法关键字解析不同语法如何解析引用对象。程序对象:各种类型的程序的一种抽象叫法,主要是程序开发内容的一种载体,如类、可执行程序、接口等。语法关键词:ABAP语法是一种解释性语法,其通过不同的关键词、变量、修饰语来组成一个代码语句。
本发明是针对SAP平台中的程序对象所引用的其他关联对象的一种解析方法,解决在不同程序对象之间的引用关系。可用于解决SAP程序开发过程中的对象关系管理、版本关联关系管理等。
附图说明
图1本发明中获取一个源码程序对象引用的对象集合的示例图。
具体实施方式
一种通过ABAP语法解析获取引用自定义对象的方法,应用在SAP平台中,利用对ABAP语法关键词的解析,来获取一个源码对象对其他程序对象的引用,解决SAP平台程序对象关系的管理措施,具体如下:
1、输入一个程序对象的名称,这个程序对象的对象类型(OBJECT)可以是CLAS、INTF、FUGR、PROG等由源代码构成的程序对象。
2、对于CLAS类型,首先使用cl_oo_classname_service=>get_pubsec_name得到程序对象的一个内部程序名。
3、对于CLAS类型,再使用cl_oo_classname_service=>get_paksec_name得到程序对象的一个内部程序名。
4、对于CLAS类型,再使用cl_oo_classname_service=>get_prisec_name得到程序对象的一个内部程序名。
5、对于CLAS类型,再使用cl_oo_classname_service=>get_prosec_name得到程序对象的一个内部程序名。
6、对于CLAS类型,再使用cl_oo_classname_service=>get_ccimp_name得到程序对象的一个内部程序名。
7、对于CLAS类型,再使用cl_oo_classname_service=>get_ccdef_name得到程序对象的一个内部程序名。
8、对于CLAS类型,再使用cl_oo_classname_service=>get_ccmac_name得到程序对象的一个内部程序名。
9、对于CLAS类型,再使用cl_oo_classname_service=>get_cl_name得到程序对象的一个内部程序名。
10、对于CLAS类型,再使用cl_oo_classname_service=>get_all_method_includes得到程序对象的所有的类方法的程序名称。
11、以上是OBJECT为CLAS类型的程序对象获取程序名称方法。
12、对于INTF类型,使用cl_oo_classname_service=>get_intfsec_name得到程序对象的一个内部程序名。
13、对于FUGR类型,使用函数'FUNCTION_INCLUDE_INFO'得到函数组所有的包含的程序名。
14、对于PROG类型,直接使用程序对象名作为内部程序名。
15、对于TYPE类型,再使用'%_C'+程序对象名得到函数组所包含的程序名。
16、对于CINC类型,直接使用程序对象名作为内部程序名。
17、对于CPRI类型,cl_oo_classname_service=>get_prisec_name得到程序对象的一个内部程序名。
18、对于CPRO类型,cl_oo_classname_service=>get_prosec_name得到程序对象的一个内部程序名。
19、对于CPUB类型,cl_oo_classname_service=>get_pubsec_name得到程序对象的一个内部程序名。
20、对于METH类型,直接使用程序对象名作为内部程序名。
21、对于FUNC类型,使用函数'FUNCTION_INCLUDE_INFO'得到函数所包含的所有内部程序名。
22、对于REPS类型,直接使用程序对象名作为内部程序名。
23、对于REPT类型,直接使用程序对象名作为内部程序名。
24、针对以上方法得到的内部程序名使用READ REPORT方法获取内部程序名的源代码内表。
25、本发明对大部分常用语法做了梳理,以下给出可能引用到自定义程序对象的语法关键词:
26、对源代码内表中的每一句源代码利用关键词进行分析,分析其可能包含的自定义关联对象。
以上为每个关键词的解析方法流程,所有语法解析后得到的关键词可能不是自定义的程序对象,而SAP规定自定义对象以“Z”或者“Y”开头,因此以上方法中最终都通过此规则来过滤。本发明同样可以不利用此规则,来获得任何的程序对象,包括SAP公司自己开发的程序对象。