我想动态获取动态表的结构 . 获得表是没有问题的,但我坚持得到表的结构 .
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).
如果有任何其他解决方案,我会好的 .
2 回答
使用RTTS .
运行时类型服务
使用此框架您可以在运行时获得所需的类型 .
http://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=42965
所需的类应为CL_ABAP_TABLEDESCR或甚至CL_ABAP_DATADESCR .
他们会为你做的工作 .
看起来,您正在获取ddic表名,并希望将tablename中的动态数据动态选择为通用内部表 .
所以,如果你已经获得了一个不错的ddic名称,那么rtts的使用就更加简单了 . 因为你有ddic的名字 .
通常还有许多功能模块(主要在命名空间前缀“RPY_ *”中) . 在那里你肯定可以找到一个,它决定了一个表的结构,它是否包含包含,等等 . 但是,首先尝试typedescriptors,我将从cl_abap_tabledescr => get_table_line_type开始 .
这段代码适用于我的情况: