ABAP-动态列

举报
Mr_blank 发表于 2024/12/06 10:29:50 2024/12/06
【摘要】 ASSIGN COMPONENT

DATAwa_layo TYPE lvc_s_layo.
DATAwa_fcat TYPE lvc_s_fcat,
      it_fcat TYPE lvc_t_fcat.
DATA it_scol TYPE lvc_t_scol .
DATAg_grid TYPE REF TO cl_gui_alv_grid.
FIELD-SYMBOLS<dyn_table> TYPE STANDARD TABLE,
               <dyn_wa>,
               <dyn_field>.
DATAdy_table TYPE REF TO data,
      dy_line  TYPE REF TO data.
DATAcolname(10),
      index(2).
PARAMETERScol TYPE i."列数
CLEARit_fcat.
DO col TIMES." 根据条件动态生成列
  index index 1.
  CONCATENATE 'COL' index INTO colname.
  PERFORM frm_add_fcat USING:
        colname 'C' '描述1' '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>.

" 给表字段赋值
CLEARindex.
DO col TIMES.
  index index 1.
  CONCATENATE 'COL' index INTO colname.
  ASSIGN COMPONENT colname OF STRUCTURE <dyn_wa> TO <dyn_field>.
  <dyn_field> '列数据1'.
ENDDO.
APPEND <dyn_wa> TO <dyn_table>.

" 相当于给内表放入两条数据
CLEARindex.
DO col TIMES.
  index index 1.
  CONCATENATE 'COL' index INTO colname.
  ASSIGN COMPONENT colname OF STRUCTURE <dyn_wa> TO <dyn_field>.
  <dyn_field> '列数据2'.
ENDDO.
APPEND <dyn_wa> TO <dyn_table>.


CALL METHOD cl_demo_output=>write<dyn_table> ).
CALL METHOD cl_demo_output=>display).
 

*&---------------------------------------------------------------------*
*& 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.
  CLEARwa_fcat.
ENDFORM"frm_add_fcat
 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。