做网站 搜索引擎,即墨区城乡建设局网站官网,百度关键词优化有效果吗,跟做竞价的网站友情链接有用吗动态内表1-通过系统表LVC_T_FCAT类型定义内表
如果对你有帮助#xff0c;点个关注收藏吧~
做BW做久了#xff0c;突然对abap有了探索欲#xff0c;开始进一步学习abap了#xff0c;以后这个系列会逐步更新#xff0c;欢迎小伙伴点个关注一起学习#xff0c;我学习的方法…动态内表1-通过系统表LVC_T_FCAT类型定义内表
如果对你有帮助点个关注收藏吧~
做BW做久了突然对abap有了探索欲开始进一步学习abap了以后这个系列会逐步更新欢迎小伙伴点个关注一起学习我学习的方法一般是通过自己写代码加注释理解也会以这种方式做一个笔记。
知识点
1.LVC_T_FCAT表类型
今天开始练习动态内表今天的方法是通过系统表类型LVC_T_FCATLVC_T_FCAT是一个用于定义ALV网格控制字段属性的表类型会作为定义内表很常用的一个类型。他的原理我理解就是有很多字段相关的属性我们通过给这些属性赋值生产我们的表字段通过定义不同的表自动来生成内表。
当然字段也可以通过变量赋值把它们放在do loop循环就可以结合变量动态生成内表了
以下是常用的属性
FIELDNAME字段名称对应于ALV输出内表中的字段名。TABNAMELVC标签名称即内表名。COL_POS字段的位置即在输出中是第几列。OUTPUTLEN列的字符宽度。INTTYPEABAP数据类型如C, D, N等。INTLEN以字节计的内部长度内容的长度。SCRTEXT_S/M/L字段的文本描述分别对应短描述、中描述和长描述。KEY字段是否为关键字关键字字段在ALV中会显示为蓝色。ICON作为图标输出字段内容必须是有效的图标名称。HOTSPOT设置为热点字段字段显示有下划线响应单击。CHECKBOX作为复选框输出。JUST对齐方式可以是R右对齐、L左对齐或C居中。LZERO输出前导零仅对NUMC类型字段有效。NO_SIGN输出时不显示正负号。NO_ZERO如果值为零则不显示零。DO_SUM对当前列输出时自动求和。NO_OUT当前列隐藏输出。TECH技术字段设置为X后该字段不会显示也不能输出。CURRENCY货币单位。 2.CL_ALV_TABLE_CREATECREATE_DYNAMIC_TABLE
定义好表结构后通过标准类输入表类型输出我们想生成的内表。下面的代码会有具体写法 3.代码案例
话不多说上代码注释里是我的笔记代码里还涉及到一些动态指针的分配这个我之前写过写的比较粗浅后面这个系列还会更新
*---------------------------------------------------------------------*
* Report ZBW_IDAN_TEST_DTNB
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
REPORT ZBW_IDAN_TEST_DTNB.
分配内表
field-symbols: ft_vb type standard table,fs_vb type any,dyn_field type any.
data : gt_fieldcat type lvc_t_fcat,系统表gs_fieldcat type lvc_s_fcat.系统结构
在ABAP中LVC_T_FCAT 是一个用于定义ALV网格控制字段属性的表类型 定义字段目录条目
gs_fieldcat-fieldname COLUMN1.
gs_fieldcat-datatype CHAR.
gs_fieldcat-outputlen 8. 将字段目录条目添加到表中
APPEND gs_fieldcat TO gt_fieldcat. 定义字段目录条目
gs_fieldcat-fieldname COLUMN2.
gs_fieldcat-datatype DATS.
gs_fieldcat-outputlen 8.将字段目录条目添加到表中
APPEND gs_fieldcat TO gt_fieldcat.
DATA: lt_new_table TYPE REF TO data ,ls_new_line TYPE REF TO data .CALL METHOD cl_alv_table_createcreate_dynamic_tableEXPORTINGit_fieldcatalog gt_fieldcatIMPORTINGep_table lt_new_table.ASSIGN lt_new_table-* TO ft_vb.CREATE DATA ls_new_line LIKE LINE OF ft_vb.ASSIGN ls_new_line-* TO fs_vb.内表赋值LOOP AT ft_vb ASSIGNING fs_vb.APPEND INITIAL LINE TO ft_vb ASSIGNING fs_vb..ASSIGN COMPONENT COLUMN1 OF STRUCTURE fs_vb TO FIELD-SYMBOL(FS_fieldname1).IF FS_fieldname1 IS ASSIGNED.FS_fieldname1 TEST1.ENDIF.ASSIGN COMPONENT COLUMN2 OF STRUCTURE fs_vb TO FIELD-SYMBOL(FS_fieldname2).IF FS_fieldname2 IS ASSIGNED.FS_fieldname2 20240101.ENDIF.ENDLOOP.cl_demo_outputdisplay_data( ft_vb ).
输出结果