[代码]动态创建内表和动态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,运行,

&amp;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" /&amp;gt;

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

&amp;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" /&amp;gt;

表T000结构:

&amp;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" /&amp;gt;

以上。

转载于:https://www.cnblogs.com/datie/p/11435421.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值