[代码]动态创建内表和动态Select语句例子详解编程语言

一段创建动态内表和动态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语句例子详解编程语言

以上。

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/19241.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论