一种通过ABAP语法解析获取引用自定义对象的方法与流程

文档序号:12362915阅读:1203来源:国知局

本发明涉及一种程序对象关联关系的解析方法,具体地说是一种通过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公司自己开发的程序对象。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1