ABAP-动态ALV

Posted ricoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAP-动态ALV相关的知识,希望对你有一定的参考价值。

1.参数定义

"ALV
type-pools:slis,rsds,vrm.
data:gt_fieldcat type lvc_t_fcat with header line,
     gt_events type slis_t_event with header line,
     gs_layout type lvc_s_layo,
     g_repid like sy-repid.
data:wa_sort type slis_sortinfo_alv,
     it_sort type lvc_t_sort,
     lw_alv_title type lvc_title.
data:l_grid type ref to cl_gui_alv_grid,
     ls_stable type lvc_s_stbl.

data:struct_type type ref to cl_abap_structdescr,
     itab_type   type ref to cl_abap_tabledescr,
     elem_type   type ref to cl_abap_elemdescr,
     comp_type   type cl_abap_structdescr=>component_table,
     comp_field  type cl_abap_structdescr=>component,
     comp_line   like line of comp_type,
     dref        type ref to data,
     dline       type ref to data.

field-symbols:<ztab> type standard table,
              <itab> type any,
              <fild> type any,
              <frat> type any.

"dynamic alv parameters
data:ztab type standard table of tab with header line,
     mtab type standard table of tab with header line.

 

2.结构生成

form structure_data.

  struct_type ?= cl_abap_typedescr=>describe_by_name( TAB ).
  comp_type = struct_type->get_components( ).

  perform zdtb_ms using:
    DATAB       日期从,
    DATBI       日期至.

  "****** 增加字段 vkorg+fkdat+ekgrp+kunnr+vkbur+ktgrm+matnr+matkl+maabc+kosch+labor+groes

  perform struc_xz tables s_vkorg using VKORG  销售组织   VBRK-VKORG  VTEXT  TVKOT-VTEXT.
  "perform struc_xz tables s_fkdat using ‘FKDAT‘  ‘开票日期‘   ‘VBRK-FKDAT‘  ‘‘       ‘‘.
  perform struc_xz tables s_fkart using FKART  订单类型   VBRK-FKART  FKTXT  TVFKT-VTEXT.
  perform struc_xz tables s_ekgrp using EKGRP  品牌       MARC-EKGRP  EKNAM  T024-EKNAM.
  perform struc_xz tables s_kunnr using KUNAG  客户编码   VBRK-KUNAG  NAME1  KNA1-NAME1.
  perform struc_xz tables s_vkbur using VKBUR  产品线     KNVV-VKBUR  BEZEI  TVKBT-BEZEI.
  perform struc_xz tables s_ktgrm using KTGRM  科目设置组 VBRP-KTGRM  KMEXT  TVKMT-VTEXT.
  perform struc_xz tables s_matnr using MATNR  物料号     VBRP-MATNR  MAKTX  MAKT-MAKTX.

  perform struc_xz tables s_matkl using MATKL  物料组     MARA-MATKL  WGBEZ  T023T-WGBEZ.
  perform struc_xz tables s_maabc using MAABC  等级       MARC-MAABC  TMABC  TMABCT-TMABC.
  perform struc_xz tables s_kosch using KOSCH  产品分配   MARA-KOSCH  KOTXT  T190ST-VTEXT.
  perform struc_xz tables s_labor using LABOR  产品档次   MARA-LABOR  LBTXT  T024X-LBTXT.
  perform struc_xz tables s_groes using GROES  规格       MARA-GROES  ‘‘       ‘‘.

  "*****************************

  perform zdtb_ms using:
    FKIMG       数量,
    NETWR       金额,
    VOLUM       面积,
    NTGEW       重量,
    VOLTJ       体积,
    SLRAT       数量占比(%),
    JERAT       金额占比(%),
    WAVWR       成本,
    MLNET       毛利,
    MLRAT       毛利率(%).

  struct_type = cl_abap_structdescr=>create( comp_type ).
  itab_type   = cl_abap_tabledescr=>create( struct_type ).

  create data dref type handle itab_type.
  assign dref->* to <ztab>.

endform.

form field_app using zd zelem.
  clear:comp_line,elem_type.
  comp_line-name = zd.
  elem_type ?= cl_abap_elemdescr=>describe_by_name( zelem ).
  comp_line-type = elem_type.
  append comp_line to comp_type.
endform.

form zdtb_ms using zd zdms.
  zdtb-zd = zd.
  zdtb-zdms = zdms.
  append zdtb.
  clear:zdtb.
endform.

 

3.赋值

 

 create data dline like line of <ztab>.
  assign dline->* to <itab>.

  loop at mtab.
    move-corresponding mtab to <itab>.
    append <itab> to <ztab>.
    clear:ztab,<itab>.
  endloop.

  clear:mtab. refresh:mtab.

  loop at <ztab> assigning <itab>.
    clear:mtab.
    move-corresponding <itab> to mtab.
    move-corresponding mtab to <itab>.
    clear:mtab.
  endloop.

 

以上是关于ABAP-动态ALV的主要内容,如果未能解决你的问题,请参考以下文章

为什麽要用ABAP动态内表

abap ALV字段怎么设置搜索帮助?

怎么用ABAP 代码判断,,某程序的某个屏幕上,输出了 ALV 且 计算 输出ALV 的内表有 多少个字段?

ABAP ALV 怎么用?

abap开发中,在屏幕上怎样显示alv

ABAP ALV控件的使用