ALV动态列Demo

来源:互联网 发布:基于代理模型的优化 编辑:程序博客网 时间:2024/05/18 03:37
*-------------ALV 相关--------------------------
DATA: wa_layo TYPElvc_s_layo.
DATA: wa_fcat TYPElvc_s_fcat,
      it_fcat TYPElvc_t_fcat.
 
DATA it_scol TYPElvc_t_scol.
 
DATA: g_grid TYPEREF TO cl_gui_alv_grid.
 
FIELD-SYMBOLS: < dyn_table > TYPESTANDARD TABLE,
               < dyn_wa >,
               < dyn_field >.
 
DATA: dy_table TYPEREF TO data,
      dy_line  TYPEREF TO data.
 
DATA: colname(10),
      index(2).
 
* 列数
PARAMETERS: col TYPEi.
 
CLEAR: it_fcat.
 
* 根据条件动态生成列
DOcol TIMES.
  index = index + 1.
  CONCATENATE'COL' index INTOcolname.
  PERFORMfrm_add_fcat USING:
         colname 'C''描述' '100'.
ENDDO.
 
* 根据it_fact生成动态表
CALLMETHOD cl_alv_table_create=>create_dynamic_table
  EXPORTING
    it_fieldcatalog = it_fcat
  IMPORTING
    ep_table        = dy_table.
 
ASSIGNdy_table->* TO < dyn_table >.
 
CREATEDATA dy_line LIKELINE OF < dyn_table >.
 
ASSIGNdy_line->* TO < dyn_wa >.
 
* 给表字段赋值
CLEAR: index.
DOcol TIMES.
  index = index + 1.
  CONCATENATE'COL' index INTOcolname.
  ASSIGNCOMPONENT colname OFSTRUCTURE < dyn_wa>  TO< dyn_field >.
  < dyn_field > = '列数据'.
ENDDO.
APPEND< dyn_wa > TO< dyn_table >.
 
* 相当于给内表放入两条数据
CLEAR: index.
DOcol TIMES.
  index = index + 1.
  CONCATENATE'COL' index INTOcolname.
  ASSIGNCOMPONENT colname OFSTRUCTURE < 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'.
 
CALLFUNCTION '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.
IFsy-subrc <> 0.
  MESSAGEID sy-msgid TYPEsy-msgty NUMBERsy-msgno
  WITHsy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
 
*&---------------------------------------------------------------------*
*&      Form  frm_add_fcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE1     text
*      -->VALUE2     text
*      -->VALUE3     text
*      -->VALUE4     text
*----------------------------------------------------------------------*
FORMfrm_add_fcat USINGvalue1 value2 value3 value4.
  wa_fcat-fieldname = value1.
  wa_fcat-inttype = value2.
  wa_fcat-reptext = value3.
  wa_fcat-intlen   = value4.
  APPENDwa_fcat TOit_fcat.
  CLEAR: wa_fcat.
ENDFORM.                   "frm_add_fcat
原创粉丝点击