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 ...
随机推荐
- Linux简单线程池实现(带源码)
这里给个线程池的实现代码,里面带有个应用小例子,方便学习使用,代码 GCC 编译可用.参照代码看下面介绍的线程池原理跟容易接受,百度云下载链接: http://pan.baidu.com/s/1i3z ...
- Windows2008 R2 X64 PHP环境搭建步骤
Windows2008 R2 X64 PHP环境搭建步骤: 下载:Mysql5.7.23.PHP5.6.Zend.XCahe 一.安装MYSQL.导入数据: 解压MYsql压缩包,并新建Data目录, ...
- 再见VB6!再见程序生涯!
今天写一篇博文告别使用了15年的VB6,从此终结程序生涯.记得读大学的时候第一学习编程,用VB6嵌入MediaPlayer控件写了一个简易视频播放器,看着视频的画面激动人心,从此就爱上了编程,从此也和 ...
- centos7卸载旧jdk安装新jdk1.8
卸载旧JDK版本 需卸载centos7自带的JDK1.7 rpm -qa|grep jdk 列出已安装jdk版本 rpm -e --nodeps java-1.7.0-openjdk-1.7. ...
- centos7安装mysql,以及设置root密码
1.首先进入mysql官网的下载-社区https://dev.mysql.com/downloads/ 2.点击下载后,切换版本5.7(这里的版本对于rpm没有作用),然后在新的页面中选择操作系统 3 ...
- python的日志配置
settings.py中 DEBUG_TOOLBAR_CONFIG = { "JQUERY_URL": '//cdn.bootcss.com/jquery/2.2.4/jquery ...
- 离线手动部署docker镜像仓库——harbor仓库(HTTPS)
实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...
- 【docker】服务随容器启动而自启动
场景: 有一个docker, 在该docker中有服务A,希望每次启动容器时服务A都随着容器启动.这样就不用每次都进入容器手动启动服务了. 方法: 1.需要在docker中添加一个启动服务脚本auto ...
- Linux基础之常用命令整理(一)
Linux 操作系统的安装 如今比较流线的linux操作系统 Centos Redhat Fedora Ubuntu, 安装操作系统的提前是要有操作系统的镜像文件(.iso文件)并且必须为系统指定一 ...
- 【转录组入门】3:了解fastq测序数据
操作:需要用安装好的sratoolkit把sra文件转换为fastq格式的测序文件,并且用fastqc软件测试测序文件的质量 作业:理解测序reads,GC含量,质量值,接头,index,fastqc ...