我想动态获取动态表的结构。获得表格没有问题,但我坚持得到表格的结构。
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).
如果还有其他解决方案,我会对此感到满意。
答案 0 :(得分:4)
使用RTTS。
运行时类型服务
使用此框架您可以在运行时获得所需的类型。
http://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=42965
所需的课程应该是CL_ABAP_TABLEDESCR,甚至是CL_ABAP_DATADESCR。
他们会为你做的工作。
看起来,您正在获取ddic表名,并希望将表名中的动态数据选择为通用内部表。
所以,如果你已经获得了一个不错的ddic名称,那么rtts的使用就更加简单了。 因为你有ddic名称。
通常还有许多功能模块(主要在命名空间前缀“RPY_ *”中)。 在那里你肯定可以找到一个,它决定了一个表的结构,它是否包含包含,等等。 但是,首先尝试typedescriptors,我将从cl_abap_tabledescr =&gt; get_table_line_type开始。
答案 1 :(得分:3)
此代码适用于我的案例:
DATA: table_name type string,
lo_dynamic_table TYPE REF TO data,
lo_dynamic_line TYPE REF TO data.
FIELD-SYMBOLS: <lt_table_structure> TYPE table,
<ls_table_structure> TYPE any.
table_name = 'yourtablename'.
CREATE DATA lo_dynamic_table TYPE TABLE OF (table_name).
ASSIGN lo_dynamic_table->* TO <lt_table_structure>.
CREATE DATA lo_dynamic_line LIKE LINE OF <lt_table_structure>.
ASSIGN lo_dynamic_line->* TO <ls_table_structure>.
答案 2 :(得分:0)
我为带有动态键的动态哈希表添加了代码。
DATA TAB_NAME LIKE SY-TNAME VALUE 'SCARR'.
DATA KEYTAB TYPE TABLE OF STRING.
DATA DREF TYPE REF TO DATA.
FIELD-SYMBOLS <F_TAB> TYPE ANY TABLE.
APPEND 'CARRID' TO KEYTAB.
CREATE DATA dref TYPE HASHED TABLE OF (TAB_NAME)
WITH UNIQUE KEY (KEYTAB).
ASSIGN dref->* TO <F_TAB>.
SELECT *
FROM (TAB_NAME)
INTO TABLE <F_TAB>.
cl_demo_output=>display( <F_TAB> ).
还考虑链接。