一段创建动态内表和动态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,运行,

[代码]动态创建内表和动态Select语句例子

表T000的数据显示成ALV,与SE11中的结构一致。

[代码]动态创建内表和动态Select语句例子

表T000结构:

[代码]动态创建内表和动态Select语句例子

以上。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-17
  • 2021-07-05
  • 2021-12-20
猜你喜欢
  • 2022-12-23
  • 2022-03-09
  • 2021-05-01
  • 2021-08-15
  • 2022-12-23
  • 2022-12-23
  • 2021-09-06
相关资源
相似解决方案