ALV 动态行列
动态ALV显示的行列,解决部分报表需求。
运行截图如下:
选择屏幕:
ALV输出效果1:
ALV输出效果2::
ABAP代码:
- *&---------------------------------------------------------------------*
- *& Report ZCHENH068
- *&
- *&---------------------------------------------------------------------*
- *&
- *&
- *&---------------------------------------------------------------------*
- REPORT zchenh068.
- 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: <dyn_table> TYPE STANDARD TABLE,
- <dyn_wa>,
- <dyn_field>.
- DATA: dy_table TYPE REF TO data,
- dy_line TYPE REF TO data.
- DATA: colname(),
- lv_col(),
- lv_row(),
- lv_title TYPE string.
- * 列数
- PARAMETERS: col TYPE i.
- PARAMETERS: row TYPE i.
- CLEAR: it_fcat.
- * 根据条件动态生成列
- DO col TIMES.
- lv_col = lv_col + .
- CONCATENATE 'COL' lv_col INTO colname.
- CONCATENATE '第' lv_col '列抬头描述' INTO lv_title.
- PERFORM frm_add_fcat USING:
- colname 'C' lv_title ''.
- 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 <dyn_table>.
- CREATE DATA dy_line LIKE LINE OF <dyn_table>.
- ASSIGN dy_line->* TO <dyn_wa>.
- * 给表字段赋值
- * 相当于给内表放入row行数据
- DO row TIMES.
- * 相当于给内表放入col列数据
- CLEAR: lv_col.
- lv_row = lv_row + .
- DO col TIMES.
- lv_col = lv_col + .
- CONCATENATE 'COL' lv_col INTO colname.
- ASSIGN COMPONENT colname OF STRUCTURE <dyn_wa> TO <dyn_field>.
- * CONCATENATE '第' lv_row '行数据' '第' lv_col '列数据' INTO <dyn_field>.
- CONCATENATE '行,列坐标:(' lv_row',' lv_col ')' INTO <dyn_field>.
- ENDDO.
- APPEND <dyn_wa> TO <dyn_table>.
- ENDDO.
- 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 = <dyn_table>
- EXCEPTIONS
- program_error =
- OTHERS = .
- IF sy-subrc <> .
- 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
ALV 动态行列的更多相关文章
- 简化实现动态行列转置的SQL
动态行列转换的计算在实际业务中非经常见,网上各类技术论坛上都有讨论,比方以下这些问题: http://www.iteye.com/problems/87788 http://bbs.csdn.net/ ...
- sql server动态行列转换
原文链接:https://www.cnblogs.com/gaizai/p/3753296.html sql server动态行列转换 一.本文所涉及的内容(Contents) 本文所涉及的内容(Co ...
- mssql sqlserver 不固定行转列数据(动态列)
转自:http://www.maomao365.com/?p=5471 摘要: 下文主要讲述动态行列转换语句,列名会根据行数据的不同, 动态的发生变化 ------------------------ ...
- 2018年,请不要再使用OLE生成EXCEL文件
输出EXCEL文件是ABAP开发工作中的常见需求,为了学习相关技术,我翻译过一篇文章:使用OLE2对象创建EXCEL文件,并且一度乐在其中. 最近几个月,经过与若干EXCEL打印程序的艰苦斗争,以及对 ...
- .NET基础 (20).NET中的数据库开发
ADO NET和数据库程序基础1 什么是关系型数据库2 如何通过SQL语句来实现行列转换3 ADO NET支持哪几种数据源 ADO NET和数据库的连接1 请简要叙述数据库连接池的机制2 如何提高连接 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)
*********************************************************************** * Title : ZSDF003 ...
- mysql 行列动态转换(列联表,交叉表)
mysql 行列动态转换(列联表,交叉表) (1)动态,适用于列不确定情况 create table table_name( id int primary key, col1 char(2), col ...
- 转ABAP将内表行列转换实例(动态内表) .
把内表的行列转换,网上的例子很多,但是新人想看懂,几乎很难,所以总结下我是怎么完成的. 比如:你的内表如图: 你想让内表最后展示成这样:如图: 那么完成之后会是这样: 完成这个过程,得用到动态内表.看 ...
- 行列转换之静态、动态、PIVOT方法
/* 标题:普通行列转换(version 2.0) 作者:爱新觉罗.毓华 时间:2008-03-09 地点:广东深圳 说明:普通行列转换(version 1.0)仅针对sql server 2000 ...
随机推荐
- Azure CosmosDB (6) 冲突类型和解决策略
<Windows Azure Platform 系列文章目录> 当我们为CosmosDB配置多个Azure Region写入,就需要考虑冲突类型和解决策略. 对于配置了多个写入区域的 Az ...
- .Net Core跨平台应用研究-CustomSerialPort(增强型跨平台串口类库)
.Net Core跨平台应用研究-CustomSerialPort -增强型跨平台串口类库 摘要 在使用SerialPort进行串口协议解析过程中,经常遇到接收单帧协议数据串口接收事件多次触发,协议解 ...
- Centos6.9部署vnc
Centos部署vnc [root@etl ~]# vncserver -kill :1 命令: service vncserver restart chkconfig --list vncser ...
- rxjava&retrofit请求直接返回string
1.添加gradle依赖: compile com.squareup.retrofit2:converter-scalars:2.0.0' 2.更换转换器 mRetrofit = Retrofit.B ...
- (整理) .NET IIS性能优化
本文收集了部分性能优化的方式,缓存.压缩.线程池调整等等,仅供参考. 1 .NET 程序中的调整 程序Sqlhelper中使用缓存 使用JSON序列化器(Jil)取代Json.NET 2 .NET 程 ...
- Python中随机森林的实现与解释
使用像Scikit-Learn这样的库,现在很容易在Python中实现数百种机器学习算法.这很容易,我们通常不需要任何关于模型如何工作的潜在知识来使用它.虽然不需要了解所有细节,但了解机器学习模型是如 ...
- svg在vue-cli3中的配置
svg矢量图有时候在项目中用起来当然要比图片用起来好.之前没有用过svg,这次花了一点时间在项目中支持了svg的使用,个人感觉用起来还是没有直接用font class的爽,然后又改成font clas ...
- HTML5+CSS3(3)
一.CSS3新增属性用法整理 1.box-shadow(阴影效果) 2.border-color(为边框设置多种颜色) 3.border-image(图片边框) 4.text-shadow(文本阴影) ...
- PID控制器介绍
在维基百科上查到的PID的介绍,收藏一下,慢慢看. https://zh.wikipedia.org/wiki/PID%E6%8E%A7%E5%88%B6%E5%99%A8#%E6%AF%94%E4% ...
- Ubuntu中通过SuperVisor添加守护进程
1. 用途 守护进程用于保持一个指定程序(dll)时刻保持运行.在命令行终端中通过dotnet run命令执行的程序,在退出命令行终端后,程序自动终止.添加守护进程后,即使终端退出,程序仍可后台执行. ...