中易网

abap alv动态显示列!

答案:1  悬赏:30  
解决时间 2021-01-11 02:56
  • 提问者网友:呐年旧曙光
  • 2021-01-10 20:34
abap alv动态显示列!
最佳答案
  • 二级知识专家网友:撞了怀
  • 2021-01-10 21:52
前几天刚好给初学的同事做了个很简单的例子,你也看看吧,直接复制到SE38里面就可以执行的,在屏幕条件里输入个数字,就会根据你输入的数字,动态的显示列数。

*-------------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: TYPE STANDARD TABLE,
,
.

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 .

CREATE DATA dy_line LIKE LINE OF .

ASSIGN dy_line->* TO .

" 给表字段赋值
CLEAR: index.
DO col TIMES.
index = index + 1.
CONCATENATE 'COL' index INTO colname.
ASSIGN COMPONENT colname OF STRUCTURE TO .
= '列数据'.
ENDDO.
APPEND TO .

" 相当于给内表放入两条数据
CLEAR: index.
DO col TIMES.
index = index + 1.
CONCATENATE 'COL' index INTO colname.
ASSIGN COMPONENT colname OF STRUCTURE TO .
= '列数据'.
ENDDO.
APPEND TO .

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 =
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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息