首页 文章

SAP ABAP动态获取动态表的结构

提问于
浏览
2

我想动态获取动态表的结构 . 获得表是没有问题的,但我坚持得到表的结构 .

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 回答

  • 3

    使用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开始 .

  • 4

    这段代码适用于我的情况:

    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>.
    

相关问题