abap - 使用 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.
解决方案
这个答案是为了在运行时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 源代码单元等。
推荐阅读
- rawsql - 在 Apache 元模型中执行选择查询
- objective-c - NSButton 操作未在附件视图中调用
- groovy - 全局变量未声明
- asp.net - 如何在 .NET MVC 5(非核心)中使用 IdentityDbContext 实现更改跟踪?
- python - Python 3:Append 不断迭代字符串的字母
- java - 在 Android Java 中编写一个按钮来模拟硬件键盘
- c++ - 哈希输出为 BYTE 而不是 std::string?
- elasticsearch - 如果包裹在过滤器子句中,嵌套查询是否计分?
- scala - Play-Slick:与数据库的库依赖关系
- themes - Shopify 主题 - 折扣百分比始终为 0(产品页面)