CN106293764B - 一种通过abap语法解析获取引用自定义对象的方法 - Google Patents

一种通过abap语法解析获取引用自定义对象的方法 Download PDF

Info

Publication number
CN106293764B
CN106293764B CN201610705961.1A CN201610705961A CN106293764B CN 106293764 B CN106293764 B CN 106293764B CN 201610705961 A CN201610705961 A CN 201610705961A CN 106293764 B CN106293764 B CN 106293764B
Authority
CN
China
Prior art keywords
name
type
program
internal processes
program object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610705961.1A
Other languages
English (en)
Other versions
CN106293764A (zh
Inventor
王成现
冯曙明
刘刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Jiangsu Electric Power Co Ltd
Jiangsu Electric Power Information Technology Co Ltd
Original Assignee
State Grid Jiangsu Electric Power Co Ltd
Jiangsu Electric Power Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by State Grid Jiangsu Electric Power Co Ltd, Jiangsu Electric Power Information Technology Co Ltd filed Critical State Grid Jiangsu Electric Power Co Ltd
Priority to CN201610705961.1A priority Critical patent/CN106293764B/zh
Publication of CN106293764A publication Critical patent/CN106293764A/zh
Application granted granted Critical
Publication of CN106293764B publication Critical patent/CN106293764B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Library & Information Science (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种通过ABAP语法解析获取引用自定义对象的方法,该方法应用在SAP平台中,利用对ABAP语法关键词的解析,来获取一个源码对象对其他程序对象的引用,解决SAP平台程序对象关系的管理措施。

Description

一种通过ABAP语法解析获取引用自定义对象的方法
技术领域
本发明涉及一种程序对象关联关系的解析方法,具体地说是一种通过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公司自己开发的程序对象。

Claims (1)

1.一种通过ABAP语法解析获取引用自定义对象的方法,其特征在于:该方法应用在SAP平台中,利用对ABAP语法关键词的解析,来获取一个源码对象对其他程序对象的引用,解决SAP平台程序对象关系的管理措施,具体如下:
1)输入一个程序对象的名称,这个程序对象的对象类型是由源代码构成的CLAS、INTF、FUGR、PROG、 TYPE、CINC、CPRI、CPRO、CPUB、METH、FUNC、REPS、REPT中的一种;
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)对源代码内中的每一句源代码利用关键词进行分析,得到包含的自定义关联对象。
CN201610705961.1A 2016-08-22 2016-08-22 一种通过abap语法解析获取引用自定义对象的方法 Active CN106293764B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610705961.1A CN106293764B (zh) 2016-08-22 2016-08-22 一种通过abap语法解析获取引用自定义对象的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610705961.1A CN106293764B (zh) 2016-08-22 2016-08-22 一种通过abap语法解析获取引用自定义对象的方法

Publications (2)

Publication Number Publication Date
CN106293764A CN106293764A (zh) 2017-01-04
CN106293764B true CN106293764B (zh) 2019-05-07

Family

ID=57615455

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610705961.1A Active CN106293764B (zh) 2016-08-22 2016-08-22 一种通过abap语法解析获取引用自定义对象的方法

Country Status (1)

Country Link
CN (1) CN106293764B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117182B (zh) * 2018-08-29 2022-03-08 赛尔网络有限公司 基于源码支持IPv6程度的检测方法、设备、系统及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1989489A (zh) * 2004-05-20 2007-06-27 Sap股份公司 在运行时系统中共享对象
US7702649B1 (en) * 2004-06-08 2010-04-20 Sap Ag Object-relational mapping system and method for generic relationships
CN101753378A (zh) * 2008-11-25 2010-06-23 Sap股份公司 实现并发分析器的系统和方法
CN102804147A (zh) * 2010-03-29 2012-11-28 株式会社软4软 执行abap源代码的代码检查的代码检查执行系统
CN103914304A (zh) * 2014-04-10 2014-07-09 国家电网公司 一种基于sap平台的不同结构类型参数转换方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536673B2 (en) * 2003-07-22 2009-05-19 Sap Ag Application business object processing
US8402547B2 (en) * 2010-03-14 2013-03-19 Virtual Forge GmbH Apparatus and method for detecting, prioritizing and fixing security defects and compliance violations in SAP® ABAP™ code

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1989489A (zh) * 2004-05-20 2007-06-27 Sap股份公司 在运行时系统中共享对象
US7702649B1 (en) * 2004-06-08 2010-04-20 Sap Ag Object-relational mapping system and method for generic relationships
CN101753378A (zh) * 2008-11-25 2010-06-23 Sap股份公司 实现并发分析器的系统和方法
CN102804147A (zh) * 2010-03-29 2012-11-28 株式会社软4软 执行abap源代码的代码检查的代码检查执行系统
CN103914304A (zh) * 2014-04-10 2014-07-09 国家电网公司 一种基于sap平台的不同结构类型参数转换方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VRML (Virtual Reality Modeling Language) Programming in SAP technologies;M.Osaci等;《6th IEEE International Symposium on Applied Computational Intelligence and Informatics》;20110521;第223-226页

Also Published As

Publication number Publication date
CN106293764A (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
CN106843840B (zh) 一种基于相似度分析的源代码版本演化注释复用方法
Krahn et al. Roles in software development using domain specific modeling languages
CN102708142B (zh) 一种通过sql定制模板获取后台数据的方法和系统
SG135201A1 (en) System and method for executing wireless applications using common ui components from a ui repository
CN115016793A (zh) 基于语法树的代码生成方法和装置、电子设备、存储介质
CN107153535A (zh) 一种操作ElasticSearch的方法及装置
CN106293764B (zh) 一种通过abap语法解析获取引用自定义对象的方法
Aman et al. Empirical analysis of change-proneness in methods having local variables with long names and comments
US20150193213A1 (en) Computer Implemented System and Method for Checking a Program Code
CN111427784B (zh) 一种数据获取方法、装置、设备及存储介质
CN107833013B (zh) 软件开发的工作量预估准确性的自动化统计方法及装置
CN106569868B (zh) 一种基于Gradle的编译优化方法及装置
KR20150124530A (ko) 어플리케이션 빌드 시스템 및 그 제어방법과, 그 제어방법을 실행하기 위한 프로그램을 기록한 기록 매체
CN106250390B (zh) 一种分步自动生成sql语言的方法及装置
Ramachandran Guidelines based software engineering for developing software components
CN108376071B (zh) 一种app识别方法及系统
US20130104104A1 (en) System and method for refactoring a block of software
CN114064601B (zh) 存储过程转换方法、装置、设备和存储介质
CN111752980B (zh) 一种执法监管智能预警系统及方法
CN105335163A (zh) 软件代码解读方法与系统
Rakhmetova et al. Conceptual modelling of log files: From a UML-based design to JSON files
EP3798760A3 (en) System and method for industrial automation project code analysis
CN106325968B (zh) 一种分析sap开发对象类型之间关联关系的方法
Klatt et al. Developing stop word lists for natural language program analysis
Rautenberg et al. LDWPO A Lightweight Ontology for Linked Data Management.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant