首页 > 解决方案 > 使用 TABLE-FIELD 声明变量时如何找出变量的类型

问题描述

是否可以从变量中找出 TABLE-FIELD 短语?在下面的示例中,如何从字符串中获取jkak-vbeln类型?dref我尝试了一些 RTTI,但没有发现任何有用的东西。

DATA: p_dat TYPE jkak-vbeln.
DATA: dref TYPE REF TO data.

GET REFERENCE OF p_dat INTO dref.

标签: abaprtts

解决方案


这个答案是为了在运行时JKAK-VBELN从用 声明的变量中获取文本DATA p_dat TYPE jkak-vbeln,即以全文形式获取其类型名称。这个答案适用于基于 ABAP 字典(DDIC)“TABLE-FIELD”组合的类型,我不知道其他任何东西。

RTTI 只对技术类型感兴趣,而不是其起源的确切路径,因此您不能完全使用 RTTI。

如果变量的类型来自 DDIC,那么您可以使用DESCRIBE FIELD ... HELP-ID ...。假设您的起点是DREF对该变量的引用,以下是如何使用它:

  DATA: p_dat TYPE jkak-vbeln.
  DATA: dref TYPE REF TO data.

  GET REFERENCE OF p_dat INTO dref.

  DATA: help_id TYPE string.
  FIELD-SYMBOLS: <any> TYPE any.

  ASSIGN dref->* TO <any>.
  DESCRIBE FIELD <any> HELP-ID help_id.

  ASSERT help_id = 'JKAK-VBELN'.

如果您的目标是扫描您的 ABAP 源代码,那么您可以使用READ REPORT,但您还有很多事情要考虑,例如使用词法分析器、解析器、读取父或子 ABAP 源代码单元等。


推荐阅读