首页 > 其他 > 详细

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

时间:2019-08-30 16:53:19      阅读:84      评论:0      收藏:0      [点我收藏+]

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

技术分享图片

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

技术分享图片

表T000结构:

技术分享图片

以上。

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

原文:https://www.cnblogs.com/datie/p/11435421.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!