abap - 动态获取动态表的结构

标签 abap internal-tables rtts

我想动态获取动态表的结构。获取表格没问题,但我坚持获取表格的结构。

DATA: lo_dynamic_table TYPE REF TO data.
FIELD-SYMBOLS: <lt_table_structure> TYPE table,
                <ls_table_structure> TYPE any.

CREATE DATA lo_dynamic_table TYPE TABLE OF (lv_my_string_of_table).
ASSIGN lo_dynamic_table->* TO <lt_table_structure>.

// some code assigning the structure

现在我要执行这个命令:

SELECT SINGLE * FROM (lv_my_string_of_table) INTO <ls_table_structure> WHERE (lv_dynamid_where_field).

如果有任何其他解决方案,我会同意的。

最佳答案

使用 RTTS。

运行时类型服务

使用这个框架,您可以在运行时获得所需的类型。

http://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=42965

所需的类应该是 CL_ABAP_TABLEDESCR 甚至 CL_ABAP_DATADESCR。

他们会为您完成工作。

看起来,您正在获取一个 ddic 表名,并希望从该表名中动态选择数据到通用内部表中。

因此,如果您已经获得了一个不错的 ddic 名称,那么 rtts 的使用就更加简单了。 因为你有 ddic 名称。

通常还有很多功能模块(大多在 namespace 前缀“RPY_*”中)。 在那里你肯定能找到一个,它决定了一个表的结构,是否包含includes等等。 但是,首先尝试类型描述符,我会从 cl_abap_tabledescr=>get_table_line_type 开始。

关于abap - 动态获取动态表的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19319345/

相关文章:

abap - 将 ABAP 内部表拆分为更小部分的最短符号

abap - 更新内部表中的列的最短表示法是什么?

xml - 确定类的继承层次结构。如何?

abap - VALUE 从文字构造表行时出现语法错误

abap - 在消息类型 e 之后,程序不会返回到选择屏幕 ABAP

abap - 如何将内部表格行转换为列?

string - 如何将字符串中的 "Umlaute"(ü)转为 "ue"?

附加排序表时的 ABAP 短转储

abap - 运行时类型服务 (RTTS) 是否使用数据库来获取数据描述?