相关类 CL_ALV_TABLE_CREATE

动态内表构建步骤

(1)获得主数据:获取将要展示的数据

(2)构建fieldcat :根据选择屏幕来动态的构建fieldcat

(3)根据fieldcat构建动态内表:根据已经构建好的fieldcat来构建内表字段,                CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE

(4)将主数据添加到动态内表 :将获取到的主数据添加到对应字段

code

FORM BUILS_DYTABLE .PERFORM GET_DATA .     "获得主数据PERFORM BUILD_FIELDCAT . "构建动态fieldcatPERFORM BUILD_DYNAMIC_TABLE."构建动态内表PERFORM ADD_DATA.   "向动态内表添加数据
ENDFORM.

数据定义

TABLES ZTEST_TABLE.
DATA GT_MAIN TYPE TABLE OF ZTEST_TABLE.
DATA GS_MAIN TYPE ZTEST_TABLE.DATA GT_FIELDCAT TYPE LVC_T_FCAT. "fieldcat
DATA GS_FIELDCAT TYPE LVC_S_FCAT. "fieldcat 工作区DATA GV_FIELDCAT TYPE C LENGTH 20 .
DATA GV_MONTH TYPE C LENGTH 20 .
FIELD-SYMBOLS: <FT_TB> TYPE STANDARD TABLE ,  " 动态内表<FS_TB> TYPE ANY ,             " 工作区<DYN_TBFIELD> TYPE ANY .       "动态内表字段DATA GV_POS TYPE I .
DEFINE __BUILDFIELDCAT. "宏 构建fieldcatCLEAR GS_FIELDCAT .GV_POS = GV_POS + 1.GS_FIELDCAT-FIELDNAME = &1.GS_FIELDCAT-SCRTEXT_L = &2.GS_FIELDCAT-OUTPUTLEN = 20.GS_FIELDCAT-CURRENCY = &3 .APPEND GS_FIELDCAT TO GT_FIELDCAT .END-OF-DEFINITION.
PARAMETERS P_YEAR TYPE ZTEST_TABLE-ZYEAR .
SELECT-OPTIONS S_NAME FOR GS_MAIN-COMPANY.
SELECT-OPTIONS S_MATHON FOR GS_MAIN-ZMONTH.

获得主数据

FORM GET_DATA .SELECT *FROM ZTEST_TABLEINTO CORRESPONDING FIELDS OF TABLE GT_MAINWHERE ZYEAR EQ P_YEARAND COMPANY IN S_NAMEAND ZMONTH IN S_MATHON .
ENDFORM.

构建fieldcat

FORM BUILD_FIELDCAT .DATA LV_INDEX TYPE N LENGTH 2 .__BUILDFIELDCAT 'ZYEAR' '年份' '' .__BUILDFIELDCAT 'COMPANY' '公司' '' .DO 12 TIMES.LV_INDEX = SY-INDEX  .IF LV_INDEX IN S_MATHON. "根据选择屏幕动态构建月份CONCATENATE 'MONTH_'  LV_INDEX INTO GV_FIELDCAT .CONCATENATE LV_INDEX '月'   INTO GV_MONTH .__BUILDFIELDCAT  GV_FIELDCAT GV_MONTH 'WEARS' .ENDIF.ENDDO.__BUILDFIELDCAT 'WEARS' '金额单位' '' .
ENDFORM.

构建动态内表

FORM BUILD_DYNAMIC_TABLE .DATA LT_DYTABLE TYPE REF TO DATA.DATA LS_DYTABLE TYPE REF TO DATA.CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLEEXPORTING
*     I_STYLE_TABLE             =IT_FIELDCATALOG           = GT_FIELDCAT
*     I_LENGTH_IN_BYTE          =IMPORTINGEP_TABLE                  = LT_DYTABLE
*     E_STYLE_FNAME             =EXCEPTIONSGENERATE_SUBPOOL_DIR_FULL = 1OTHERS                    = 2.IF SY-SUBRC <> 0.
*    Implement suitable error handling hereENDIF.ASSIGN LT_DYTABLE->* TO <FT_TB> .CREATE DATA LS_DYTABLE LIKE LINE OF <FT_TB>.ASSIGN LS_DYTABLE->* TO <FS_TB> .
ENDFORM.

将主数据和动态内表相关联

FORM ADD_DATA .DATA LS_MAIN TYPE ZTEST_TABLE. "避免AT事件中字符字段变*SORT GT_MAIN BY ZYEAR COMPANY.LOOP AT GT_MAIN INTO LS_MAIN .MOVE-CORRESPONDING LS_MAIN TO GS_MAIN .AT NEW COMPANY .CLEAR <FS_TB> .ASSIGN COMPONENT 'COMPANY' OF STRUCTURE <FS_TB> TO <DYN_TBFIELD>.IF SY-SUBRC EQ 0.<DYN_TBFIELD> = GS_MAIN-COMPANY .ENDIF.ASSIGN COMPONENT 'ZYEAR' OF STRUCTURE <FS_TB> TO <DYN_TBFIELD>.IF SY-SUBRC EQ 0.<DYN_TBFIELD> = GS_MAIN-ZYEAR .ENDIF.ASSIGN COMPONENT 'WEARS' OF STRUCTURE <FS_TB> TO <DYN_TBFIELD>.IF SY-SUBRC EQ 0.<DYN_TBFIELD> = GS_MAIN-WEARS .ENDIF.ENDAT.CONCATENATE 'MONTH_' GS_MAIN-ZMONTH INTO GV_FIELDCAT.ASSIGN COMPONENT GV_FIELDCAT OF STRUCTURE <FS_TB> TO <DYN_TBFIELD>.IF SY-SUBRC EQ 0.<DYN_TBFIELD> = GS_MAIN-INCOM .ENDIF.AT END OF COMPANY  .APPEND <FS_TB> TO <FT_TB>.ENDAT .ENDLOOP.ENDFORM.

FIELD-SYMBOLS 动态内表相关推荐

  1. 一个简单的动态内表alv案例

    动态内表的问题一直没搞明白,每次都要复制粘贴. 动态内表的创建和使用主要有以下几点: 1.动态内表的创建,首先要定义动态结构,然后再根据定义的动态结构利用系统一个标准的method:"cl_ ...

  2. 动态内表 动态ALV显示

    动态内表及动态ALV显示 最近写了一个forecast,要求按用户输入的日期分周或月显示,我把它贴出来,给有需要的人参考一下 *&------------------------------- ...

  3. 关于动态内表的逆向考勤程序

    基于逆向考勤的动态程序,BP表是人员表,DB表是结果信息表 根据年月生成实际表格,ALV展示 *&----------------------------------------------- ...

  4. ABAP中创建动态内表的三种方法(转载)

    BAP中创建动态内表的三种方法 第一种: 如果我们需要的动态内表字段或者动态工作区和数据字典中的类型一致,可以直接使用CREATE DATA生成,当然也可以是自定义类型. 比如要产生和数据表MARA结 ...

  5. SAP ABAP 动态内表的条件查询(SORT / READ TABLE / LOOP)

    SAP ABAP 动态内表的条件查询(SORT / READ TABLE / LOOP) 简介: 动态内表是动态报表的核心,动态内表的条件操作能有效解决性能问题.这篇文章用于普及动态内表在 SORT ...

  6. 动态内表的俩栗子_SAP刘梦_新浪博客

    货铺QQ群号:834508274 微信群不能扫码进了,可以加我微信SAPliumeng拉进群,申请时请提供您哪个模块顾问,否则是一律不通过的. 进群统一修改群名片,例如BJ_ABAP_森林木.群内禁止 ...

  7. 动态SQL查询,动态内表

    1.动态sql语句查询 简单来说,查询的字段,查询的表格,还有where条件都是变量.可以作为选择屏幕或者接口数据输入,最后得出输入条件的数据.具有通用性. 其中,动态查询的关键在于:sql语句查询结 ...

  8. SAP FPM通过ABAP读取EXCEL值到动态内表并把数据发送到其他组件

    文章目录 需求 一.效果 二.实现 1.部分代码 2.其中相关的内容可查看系列文章获悉 总结 需求 在网页应用中(FPM.FBI.WDA)通过ABAP读取EXCEL值到动态内表并把数据发送到其他组件 ...

  9. SAP ABAP ALV构建动态输出列与构建动态内表

    首先,简单说明一下要用到的表类型.类.函数: 表类型 LVC_T_FCAT-(存放自定义列属性的表类型,一般用到的属性有:FIELDNAME.OUTPUTLEN.DATATYPE.INTTYPE.IN ...

最新文章

  1. git克隆 不带目录_Git 系统学习笔记
  2. python中噪音是什么意思_Python数据噪音
  3. [置顶] JDK工具(零)--简要介绍JDK1.6自带的42个工具
  4. MySQL Workbench/SQLyog 高分辨率屏幕上界面模糊的解决方法
  5. Java.util.Date类型的转化成为数据库中的Date类型。
  6. java主机上切换用户,linux 主机上更换默认的jdk
  7. ubuntu tail、history|grep 、alias命令
  8. 软件项目送上门来了,还要学会说不,接了项目拿了定金噩梦才刚刚开始
  9. 并发协作模型“生产者/消费者模式“
  10. hmac hmac.new_使用HMAC(Play 2.0)保护REST服务
  11. 文档对象模型dom_什么是文档对象模型,以及为什么应该知道如何使用它。
  12. Python-WSGI协议如何实现?
  13. jquery实现图片放大效果
  14. 乔布斯在斯丹佛毕业典礼上的讲话(二)
  15. S32K1xx 系列安全手册
  16. 渐进记号 Asymptotic Notations-------geeksforgeeks 翻译
  17. 用双轨驶向未来:千兆宽带将如何改变我们的家庭生活?
  18. 微信协议服务器端口,优咖对你说| 从TCP协议栈角度分析微信常用业务模型
  19. 钉钉如何实现原笔迹手写签批
  20. Hessian矩阵以及在血管增强中的应用—OpenCV实现

热门文章

  1. java点到直线距离_求取点到直线的距离
  2. 2020年中国核电阀门行业市场现状分析,新增装机+维修备件持续创造需求「图」
  3. 自由Android安全研究员陈愉鑫:移动App灰色产业案例分析与防范
  4. pytorch .detach() .detach_() 和 .data用于切断反向传播
  5. webScoket即时聊天,用户不在线时消息暂存,上线立马收到
  6. iOS图案解锁(九宫格)
  7. Java实现小型酒店管理系统。
  8. 普通最小二乘法( Ordinary Least Square,OLS)
  9. 关于人体的冷知识科普,真有趣,完全颠覆了你的认知。
  10. spring boot 整合 云之讯 demo