首页 > 其他分享 >动态内表 实例

动态内表 实例

时间:2022-11-02 14:14:15浏览次数:103  
标签:gt 内表 sflight cat 实例 alv table 动态 ref

cl_alv_table_create=>create_dynamic_table

report ztest16.

tables: sflight.
data:gt_sflight like table of sflight with header line.

data:lt_alv_cat type table of lvc_s_fcat,
     ls_alv_cat like line of  lt_alv_cat.
data:i_layout_lvc type lvc_s_layo .

data:ref_itab   type ref to data,
     ref_struct type ref to data. "引用变量存储的是某个对象的地址
field-symbols:<itab>   type table,
              <struct>.

end-of-selection.
  perform pf_get_data.
  perform pf_set_fieldcat.
  perform pf_create_innertable. "给动态内表赋值
  perform pf_alv_display.

form pf_get_data .
  select * from sflight into table gt_sflight.
endform.                    " PF_GET_DATA

form pf_set_fieldcat .
  define set_fieldcat.
    ls_alv_cat-fieldname = &1.
    ls_alv_cat-scrtext_s = &2.
    ls_alv_cat-datatype = &3.
    ls_alv_cat-intlen = &4.
    ls_alv_cat-ref_table = &5.
    ls_alv_cat-ref_field = &6.
    append ls_alv_cat to lt_alv_cat.
    clear ls_alv_cat.
  end-of-definition.

  set_fieldcat:'CARRID' '航线代码' 'CHAR' '3' 'SFLIGHT' 'CARRID',
                'CONNID' '航班连接 Id' 'NUMC' '4' '' '',
                'FLDATE' '航班日期' 'CHAR' '3' '' '',
                'PRICE' '航空运费' 'CURR' '15' 'SFLIGHT' 'PRICE',
                'PAYMENTSUM' '当前预定总数' 'CURR' '17' 'SFLIGHT' 'PAYMENTSUM',
                'CURRENCY' '航班的本地货币' 'CUKY' '5' '' ''.


*额外新增自定义字段
  set_fieldcat:'ZSUM' '本次航班总收入' 'CURR' '17' 'SFLIGHT' 'PAYMENTSUM'.

*layout
  i_layout_lvc-zebra       = 'X' ." 使ALV界面呈现颜色交替
  i_layout_lvc-cwidth_opt       = 'X' ." 自动优化列宽
  i_layout_lvc-detailinit      = 'X' ." 是否出现细节屏幕
endform.                    " PF_SET_FIELDCAT

form pf_create_innertable .
  field-symbols <fs_value>.

***创建动态字段内表
  call method cl_alv_table_create=>create_dynamic_table
    exporting
      it_fieldcatalog = lt_alv_cat
    importing
      ep_table        = ref_itab.

*指定生成的内表到字段符号
  assign ref_itab->* to <itab>.

*创建动态工作区结构
  create data ref_struct like line of <itab>.
  assign ref_struct->* to <struct>.


  loop at gt_sflight.
    assign component 'CARRID' of structure <struct> to <fs_value>.  ":改变<fs_value>值就是改变对应字段值
    <fs_value> = gt_sflight-carrid.

    assign component 'CONNID' of structure <struct> to <fs_value>.
    <fs_value> = gt_sflight-connid.

    assign component 'FLDATE' of structure <struct> to <fs_value>.
    <fs_value> = gt_sflight-fldate.

    assign component 'PRICE' of structure <struct> to <fs_value>.
    <fs_value> = gt_sflight-price.

    assign component 'PAYMENTSUM' of structure <struct> to <fs_value>.
    <fs_value> = gt_sflight-paymentsum.

    assign component 'CURRENCY' of structure <struct> to <fs_value>.
    <fs_value> = gt_sflight-currency.

    assign component 'ZSUM' of structure <struct> to <fs_value>.    "给自定义字段赋值
    <fs_value> = gt_sflight-paymentsum * gt_sflight-price.

    append <struct> to <itab>.
  endloop.
endform.                    " PF_CREATE_INNERTABLE

form pf_alv_display .
*显示内表中的数据
  call function 'REUSE_ALV_GRID_DISPLAY_LVC'
    exporting
      i_callback_program = sy-repid          " 当前程序
      is_layout_lvc      = i_layout_lvc      " 布局属性
      it_fieldcat_lvc    = lt_alv_cat  " 列明内表
    tables
      t_outtab           = <itab>             " 数据内表
    exceptions
      program_error      = 1
      others             = 2.

endform.                    " PF_ALV_DISPLAY

 

标签:gt,内表,sflight,cat,实例,alv,table,动态,ref
From: https://www.cnblogs.com/freeandeasy/p/16850835.html

相关文章

  • 手把手教你使用LabVIEW实现Mask R-CNN图像实例分割
    前言前面给大家介绍了使用LabVIEW工具包实现图像分类,目标检测,今天我们来看一下如何使用LabVIEW实现MaskR-CNN图像实例分割。一、什么是图像实例分割?图像实例分割(Inst......
  • 学习vue3(四)(生命周期,父子组件传参,动态组件)
    组件的生命周期简单来说就是一个组件从创建到销毁的过程成为生命周期在我们使用Vue3组合式Api是没有 beforeCreate和 created这两个生命周期的,用setup函数代替,......
  • 如何让PPT中也可以使用我们在Excel中制作的动态图表
    我们知道在如何在Excel中制作动态图表,那么你也许不知道如何在PPT中制作动态图表(数据可以改变).今天我们一起学习一下。我们想要在PPT中使用动态图表,需要提前在Excel中将动态......
  • 纯手写实现JDK动态代理
    前言在Java领域,动态代理应用非常广泛,特别是流行的Spring/MyBatis等框架。JDK本身是有实现动态代理技术的,不过要求被代理的类必须实现接口,不过cglib对这一不足进行了有效补......
  • JDK动态代理实现原理以及手写实现JDK动态代理
    JDK动态代理的过程JDK动态代理采用字节重组,重新生成对象来替代原始对象,以达到动态代理的目的。JDK中有一个规范,在ClassPath下只要是$开头的.class文件,一般都是自动生......
  • QML实例化C++的类
    [网页](https://blog.csdn.net/baidu_33850454/article/details/81907857?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166731863916782429784725%2522%252C......
  • 动态代理
    动态代理主要需要理解,其实现是基于反射机制。代理模式当一个对象不能直接使用,可以在客户端和目标对象之间直接创建一个中介,这个中介就是代理。动态代理作用1、控制访......
  • 1480. 一维数组的动态和
    给你一个数组nums。数组「动态和」的计算公式为:runningSum[i]=sum(nums[0]…nums[i])。请返回nums的动态和。 示例1:输入:nums=[1,2,3,4]输出:[1,3,6,10]解释:......
  • 嵌入式-C语言基础:malloc动态开辟内存空间
    #include<stdio.h>#include<stdlib.h>intmain(){//char*p;//定义一个野指针:没有让它指向一个变量的地址//*p='c';//直接对野指针进行操作,会报错ch......
  • 无壳程序与有壳程序的部分实例(Exeinfo PE测试)
    无壳:(1)MSVisualC#/Basic.NET]-EPToken:06000005(2)TASM/MASM/FASM-assembler-2015-04-03(3)Autoitv3.3.12.0-JonathanBennett&AutoItTeam(01.06.......