ALV 动态显示列Demo

*-------------ALV 相关--------------------------
DATA : wa_layo  TYPE lvc_s_layo.
DATA : wa_fcat  TYPE lvc_s_fcat,
       it_fcat  TYPE lvc_t_fcat.
 
DATA  it_scol  TYPE lvc_t_scol.
 
DATA : g_grid  TYPE REF TO cl_gui_alv_grid.
 
FIELD - SYMBOLS : < dyn_table >  TYPE STANDARD TABLE ,
                < dyn_wa >,
                < dyn_field >.
 
DATA : dy_table  TYPE REF TO data,
       dy_line   TYPE REF TO data.
 
DATA : colname(10),
       index(2).
 
* 列数
PARAMETERS : col  TYPE i.
 
CLEAR : it_fcat.
 
* 根据条件动态生成列
DO col TIMES.
   index = index + 1.
   CONCATENATE 'COL' index  INTO colname.
   PERFORM frm_add_fcat  USING :
          colname  'C' '描述' '100' .
ENDDO .
 
* 根据it_fact生成动态表
CALL METHOD cl_alv_table_create=>create_dynamic_table
   EXPORTING
     it_fieldcatalog = it_fcat
   IMPORTING
     ep_table        = dy_table.
 
ASSIGN dy_table-> * TO < dyn_table >.
 
CREATE DATA dy_line  LIKE LINE OF < dyn_table >.
 
ASSIGN dy_line-> * TO < dyn_wa >.
 
* 给表字段赋值
CLEAR : index.
DO col TIMES.
   index = index + 1.
   CONCATENATE 'COL' index  INTO colname.
   ASSIGN COMPONENT colname  OF STRUCTURE < dyn_wa>   TO < dyn_field >.
   < dyn_field > =  '列数据' .
ENDDO .
APPEND < dyn_wa >  TO < dyn_table >.
 
* 相当于给内表放入两条数据
CLEAR : index.
DO col TIMES.
   index = index + 1.
   CONCATENATE 'COL' index  INTO colname.
   ASSIGN COMPONENT colname  OF STRUCTURE < dyn_wa >  TO < dyn_field >.
   < dyn_field > =  '列数据' .
ENDDO .
APPEND < dyn_wa >  TO < dyn_table >.
 
CLEAR : wa_layo.
wa_layo-zebra =  'X' .
wa_layo-cwidth_opt =  'X' .
 
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
   EXPORTING
     i_callback_program = sy-repid
     is_layout_lvc      = wa_layo
     it_fieldcat_lvc    = it_fcat
   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 .
 
*&---------------------------------------------------------------------*
*&      Form  frm_add_fcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE1     text
*      -->VALUE2     text
*      -->VALUE3     text
*      -->VALUE4     text
*----------------------------------------------------------------------*
FORM frm_add_fcat  USING value1 value2 value3 value4.
   wa_fcat-fieldname = value1.
   wa_fcat-inttype = value2.
   wa_fcat-reptext = value3.
   wa_fcat-intlen   = value4.
   APPEND wa_fcat  TO it_fcat.
   CLEAR : wa_fcat.
ENDFORM .                    "frm_add_fcat

运行效果:



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChampaignWolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值