Reflection 是否可以通过编程方式查询给定程序的屏幕(选择屏幕)字段以获取其类型?

Reflection 是否可以通过编程方式查询给定程序的屏幕(选择屏幕)字段以获取其类型?,reflection,abap,dynpro,Reflection,Abap,Dynpro,我有一个程序列表,其中的选择屏幕变量我想检查BUKRS类型参数的硬编码值 功能模块RS\u VARIANT\u CONTENTS执行几乎所有的工作,对于给定的变量和程序,它返回该变量中填写的值列表 不幸的是,它不返回这些参数的类型,只返回它们的值。因此,我想我需要一个额外的检查,即屏幕中定义的参数类型 现在我意识到关键字PARAMETERS在当前程序中定义了屏幕字段和数据对象,这两种类型都会有很大帮助(显然是相同的)。当然,这是一个很好的例子,我甚至定义了一个参数数据对象,而不是选择选项 我还遇

我有一个程序列表,其中的选择屏幕变量我想检查
BUKRS
类型参数的硬编码值

功能模块
RS\u VARIANT\u CONTENTS
执行几乎所有的工作,对于给定的变量和程序,它返回该变量中填写的值列表

不幸的是,它不返回这些参数的类型,只返回它们的值。因此,我想我需要一个额外的检查,即屏幕中定义的参数类型

现在我意识到关键字
PARAMETERS
在当前程序中定义了屏幕字段和数据对象,这两种类型都会有很大帮助(显然是相同的)。当然,这是一个很好的例子,我甚至定义了一个
参数
数据对象,而不是
选择选项

我还遇到了功能模块
DYNPRO\u FIELD\u GET
,它为我提供了在选择屏幕中定义的屏幕字段,但同样,对类型没有帮助。。。。所以,是的,任何帮助都将不胜感激

我甚至发现了一个名为
GET\u DICTIONARY\u FIELDS
的FuBa,它承诺给我我想要的东西:一个程序中所有变量的列表,然后我可以用
RS\u VARIANT\u CONTENTS
给出的列表来证实,以获得我想要的信息——不幸的是,在我的系统版本中,它是非活动的

[编辑]

应该注意的是,
RS\u SELSCREEN\u INFO
返回程序中定义的数据对象类型及其各自的语句。例如:

DATA gv_asdfg TYPE mara-matnr.
它返回
MARA-MATNR
。当然,表字段的名称并不表示数据元素的名称,因此:


为了获得这些类型的域,可以使用
CL\u ABAP\u DATADESCR=>description\u BY\u NAME()
并提供
RS\u SELSCREEN\u INFO
给出的类型。对于结果对象,应该查找的属性是
->ABSOLUTE\u NAME
。在我的例子中,条件是
…->ABSOLUTE\u NAME='\TYPE=BUKRS.
您可以尝试使用功能模块
RS\u SELSCREEN\u INFO
。给定一个报告名,它将返回一个参数列表,并选择选项以及DDIC参考信息(如果设置)。

尽管vwegert的回答实际上完成了整个任务,但我还发现了两个功能模块,它们非常有用

这些是获取全局\u符号-返回程序的全局变量。它适用于
数据
参数
定义的变量,但不适用于
选择选项

另一个是GET\u COMPONENT\u LIST——这可用于获取使用
SELECT-OPTIONS
声明的变量的基本数据类型