• [代码]动态创建内表和动态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结构:

    以上。

  • 相关阅读:
    三种等待时间的区别
    多种测试的测试方法
    测试面试题总结
    自动化过程中定位不到元素时使用等待方法
    账号登录测试,多表查询
    TP商城添加购物车自动化测试
    二十四个球
    老鼠喝药
    购物车测试点
    前后端分页
  • 原文地址:https://www.cnblogs.com/datie/p/11435421.html
Copyright © 2020-2023  润新知