动态内表的创建

*&---------------------------------------------------------------------*
*& Report  ZDYNIT                                                      *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ZDYNIT                                  .
DATA: d_ref TYPE REF TO data,
      d_ref2 TYPE REF TO data,
      i_alv_cat TYPE TABLE OF lvc_s_fcat,
      ls_alv_cat LIKE LINE OF i_alv_cat.

TYPES tabname TYPE dcobjdef-name.
PARAMETER p_tablen TYPE tabname.
DATA BEGIN OF itab OCCURS 0.
  INCLUDE STRUCTURE dntab.
DATA END OF itab.

FIELD-SYMBOLS: <f_fs> TYPE TABLE,
               <f_fs1> TYPE TABLE,
               <f_fs2> TYPE ANY,
               <f_fs3> TYPE TABLE.
REFRESH itab.

CALL FUNCTION 'NAMETAB_GET'
  EXPORTING
    LANGU                     = SY-LANGU
    ONLY                      = ' '
    TABNAME                   = p_tablen
  TABLES
    NAMETAB                   = itab
  EXCEPTIONS
    INTERNAL_ERROR            = 1
    TABLE_HAS_NO_FIELDS       = 2
    TABLE_NOT_ACTIV           = 3
    NO_TEXTS_FOUND            = 4
    OTHERS                    = 5
          .
IF SY-SUBRC <> 0.
ENDIF.
LOOP AT itab .
  ls_alv_cat-fieldname = itab-fieldname.
  ls_alv_cat-ref_table = p_tablen.
  ls_alv_cat-ref_field = itab-fieldname.
  APPEND ls_alv_cat TO i_alv_cat.
ENDLOOP.
* internal table build
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
  EXPORTING
*    I_STYLE_TABLE             =
    IT_FIELDCATALOG           = i_alv_cat
*    I_LENGTH_IN_BYTE          =
   IMPORTING
     EP_TABLE                  = d_ref
*E_STYLE_FNAME             =
   EXCEPTIONS
     GENERATE_SUBPOOL_DIR_FULL = 1
     others                    = 2
        .
IF SY-SUBRC <> 0.

ENDIF.
ASSIGN d_ref->* TO <f_fs>.
SELECT * FROM (p_tablen) INTO CORRESPONDING FIELDS OF TABLE <f_fs>.
LOOP AT <f_fs> ASSIGNING <f_fs2> .
  WRITE / <f_fs2>.
ENDLOOP. 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值