一段创建动态内表和动态select数据库表的abap程序。
逻辑如下:
1,通过 cl_abap_tabledescr=>create()创建动态内表
2,通过动态Select语句抽取数据库表数据
3,ALV显示
完整代码:
REPORT ztest_dyn_select. PARAMETERS p_name TYPE rsrd1-tbma_val. DATA: lr_struc TYPE REF TO cl_abap_structdescr, lr_data TYPE REF TO cl_abap_datadescr, lr_table TYPE REF TO cl_abap_tabledescr, dyn_table TYPE REF TO data, dyn_wa TYPE REF TO data. DATA:l_tabname TYPE tabname. FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE, <dyn_wa> TYPE any. l_tabname = p_name. lr_struc ?= cl_abap_typedescr=>describe_by_name( l_tabname ). lr_table ?= cl_abap_tabledescr=>create( p_line_type = lr_struc ). CREATE DATA dyn_wa TYPE HANDLE lr_struc. CREATE DATA dyn_table TYPE HANDLE lr_table. ASSIGN dyn_wa->* TO <dyn_wa>. ASSIGN dyn_table->* TO <dyn_table>. SELECT * INTO CORRESPONDING FIELDS OF TABLE <dyn_table> UP TO 100 ROWS FROM (l_TABNAME). CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_structure_name = l_TABNAME TABLES t_outtab = <dyn_table> EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
运行:
输入表T000,运行,
&lt;img class="alignnone size-full wp-image-4029" src="http://www.baidusap.com/wp-content/uploads/2017-03-21_14-00-48.png" alt="" width="461" height="147" /&gt;表T000的数据显示成ALV,与SE11中的结构一致。
&lt;img class="alignnone size-full wp-image-4030" src="http://www.baidusap.com/wp-content/uploads/2017-03-21_13-59-59.png" alt="" width="874" height="293" srcset="http://www.baidusap.com/wp-content/uploads/2017-03-21_13-59-59.png 874w, http://www.baidusap.com/wp-content/uploads/2017-03-21_13-59-59-740x248.png 740w, http://www.baidusap.com/wp-content/uploads/2017-03-21_13-59-59-768x257.png 768w" sizes="(max-width: 874px) 100vw, 874px" /&gt;表T000结构:
&lt;img class="alignnone size-full wp-image-4031" src="http://www.baidusap.com/wp-content/uploads/2017-03-21_13-59-25.png" alt="" width="874" height="550" srcset="http://www.baidusap.com/wp-content/uploads/2017-03-21_13-59-25.png 874w, http://www.baidusap.com/wp-content/uploads/2017-03-21_13-59-25-740x466.png 740w, http://www.baidusap.com/wp-content/uploads/2017-03-21_13-59-25-768x483.png 768w" sizes="(max-width: 874px) 100vw, 874px" /&gt;以上。