zoukankan      html  css  js  c++  java
  • 创建动态内表 实例


    REPORT zcl_test027.

    TYPE-POOLS:abap.

    PARAMETERS p_name TYPE tabname.

    DATA: d_ref TYPE REF TO data,
    lt_alv_cat TYPE TABLE OF lvc_s_fcat,
    ls_alv_cat LIKE LINE OF lt_alv_cat.


    DATA: lt_table LIKE TABLE OF dntab.
    DATA: ls_table TYPE dntab.


    FIELD-SYMBOLS : <dyn_table> TYPE table,
    <dyn_wa> TYPE any,
    <dyn_field> TYPE any.

    *取出表结构的字段目录
    CALL FUNCTION 'NAMETAB_GET'
      EXPORTING
        langu          = sy-langu
        tabname        = p_name
      TABLES
        nametab        = lt_table
      EXCEPTIONS
        no_texts_found 1.

    *根据取出的字段目录生成参考字段目录
    LOOP AT lt_table INTO ls_table.
      ls_alv_cat-fieldname = ls_table-fieldname.
      ls_alv_cat-ref_table = p_name.
      ls_alv_cat-ref_field = ls_table-fieldname.
      APPEND ls_alv_cat TO lt_alv_cat.
      CLEAR ls_alv_cat.
    ENDLOOP.

    *内表创建
    CALL METHOD cl_alv_table_create=>create_dynamic_table
      EXPORTING
        it_fieldcatalog = lt_alv_cat
      IMPORTING
        ep_table        = d_ref.

    *指定生成的内表到字段符号
    ASSIGN d_ref->* TO <dyn_table>.

    *从动态表中取数到动态内表中
    SELECT * INTO CORRESPONDING FIELDS OF TABLE <dyn_table> UP TO 100

    ROWS FROM (p_name).

    *显示内表中的数据
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_structure_name = p_name
      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.

  • 相关阅读:
    一道小学数学题
    Ubuntu下使用git提交代码至GitHub
    C#几个小知识点
    C#中巧用#if DEBUG 进行调试
    使用 HPC Pack 为 Azure 中的 Windows HPC 工作负荷创建和管理群集的选项
    使用 Chef 自动执行 Azure 虚拟机部署
    在 Azure 中管理 Windows 虚拟机的可用性
    什么是 Azure 中的虚拟机规模集?
    从 Azure 下载 Windows VHD
    如何使用 Packer 在 Azure 中创建 Windows 虚拟机映像
  • 原文地址:https://www.cnblogs.com/springzt/p/4560094.html
Copyright © 2011-2022 走看看