我尝试编译ABAP提供的所有用于声明变量,类型等的方法,包括过时和acrane语法变体。因此,例如,我将在列表中包括FIELD-GROUPS,但不包括类的声明。我当前的清单如下。我有想念吗?
声明变量的声明
类似于数据的声明性语句
数据(不包括公共部分的数据开始部分),统计信息,参数,参数,常数
FIELD-SYMBOLS
程序的实际参数
FORM(子例程),函数,方法
其他变量声明语句
范围,选择选项:还有吗?
声明类型的声明
其他声明
通用零件的数据开始
本身不是声明性语句,而是一种将其他DATA语句分组的方法。
FIELD-GROUPS
声明提取数据集,该数据集不属于用于数据类型和数据对象的ABAP类型概念
免责声明:我们正在用Java写一个工具来解析和转换ABAP代码。特别是,我们无意编写新的ABAP代码。但是,相反,我们的工具必须处理所有ABAP,甚至是过时的语句和晦涩的语法变体。此外,我想提一下,我不是ABAP专家。
答案 0 :(得分:2)
要完成您的列表,您可以添加以下内容(部分取自ABAP doc - obsolete declarations):
TABLES
NODES
LOCAL
FIELDS
CLASS-DATA
ALIASES
用于属性(实际上不是声明,但是会为给定属性添加新名称)CONTROLS
构造函数表达式(FOR aux ...,FOR,LET ...)中有辅助变量
程序具有预定义类型和变量(SY
,SCREEN
等;我觉得您可以从“隐式系统包含”中提取所有这些内容和变量,但必须知道其中包括)。
最终在内部(DEFINE
或外部(表TRMAC
)的宏内部考虑语句。
有些语句与内部包含相对应:
TYPE-POOLS
(在7.02之前是强制性的)INFOTYPES
CONTEXTS
当然,还有所有 DDIC类型。
我不知道您是否也要扫描CREATE DATA
(用于抽象解释器之类的工具)。
PS:您说通用部分不是真正的声明性语句,这是错误的,它们声明数据对象,以及附加的“共享功能”。