zoukankan      html  css  js  c++  java
  • [代码]动态创建内表和动态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,运行,

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

    表T000结构:

    以上。

  • 相关阅读:
    别了,DjVu!
    DjVu转PDF
    我的电子书历程
    连续翻页浏览器面临的共同问题
    对超过2TB的硬盘进行分区需要使用parted
    DB2常用命令
    CentOS增加网卡
    mysql相关参数解读
    max_user_connections参数设置试验
    mysql最大连接数试验
  • 原文地址:https://www.cnblogs.com/datie/p/11435421.html
Copyright © 2011-2022 走看看