动态ALV显示的行列,解决部分报表需求。

运行截图如下:

选择屏幕:

ALV输出效果1:

ALV输出效果2::

ABAP代码:

  1. *&---------------------------------------------------------------------*
  2. *& Report ZCHENH068
  3. *&
  4. *&---------------------------------------------------------------------*
  5. *&
  6. *&
  7. *&---------------------------------------------------------------------*
  8.  
  9. REPORT zchenh068.
  10. DATA: wa_layo TYPE lvc_s_layo.
  11. DATA: wa_fcat TYPE lvc_s_fcat,
  12. it_fcat TYPE lvc_t_fcat.
  13.  
  14. DATA it_scol TYPE lvc_t_scol.
  15.  
  16. DATA: g_grid TYPE REF TO cl_gui_alv_grid.
  17.  
  18. FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
  19. <dyn_wa>,
  20. <dyn_field>.
  21.  
  22. DATA: dy_table TYPE REF TO data,
  23. dy_line TYPE REF TO data.
  24.  
  25. DATA: colname(),
  26. lv_col(),
  27. lv_row(),
  28. lv_title TYPE string.
  29.  
  30. * 列数
  31. PARAMETERS: col TYPE i.
  32. PARAMETERS: row TYPE i.
  33.  
  34. CLEAR: it_fcat.
  35.  
  36. * 根据条件动态生成列
  37. DO col TIMES.
  38. lv_col = lv_col + .
  39. CONCATENATE 'COL' lv_col INTO colname.
  40. CONCATENATE '第' lv_col '列抬头描述' INTO lv_title.
  41. PERFORM frm_add_fcat USING:
  42. colname 'C' lv_title ''.
  43. ENDDO.
  44.  
  45. * 根据it_fact生成动态表
  46. CALL METHOD cl_alv_table_create=>create_dynamic_table
  47. EXPORTING
  48. it_fieldcatalog = it_fcat
  49. IMPORTING
  50. ep_table = dy_table.
  51.  
  52. ASSIGN dy_table->* TO <dyn_table>.
  53.  
  54. CREATE DATA dy_line LIKE LINE OF <dyn_table>.
  55.  
  56. ASSIGN dy_line->* TO <dyn_wa>.
  57.  
  58. * 给表字段赋值
  59.  
  60. * 相当于给内表放入row行数据
  61. DO row TIMES.
  62. * 相当于给内表放入col列数据
  63. CLEAR: lv_col.
  64. lv_row = lv_row + .
  65. DO col TIMES.
  66. lv_col = lv_col + .
  67. CONCATENATE 'COL' lv_col INTO colname.
  68. ASSIGN COMPONENT colname OF STRUCTURE <dyn_wa> TO <dyn_field>.
  69. * CONCATENATE '第' lv_row '行数据' '第' lv_col '列数据' INTO <dyn_field>.
  70. CONCATENATE '行,列坐标:(' lv_row',' lv_col ')' INTO <dyn_field>.
  71. ENDDO.
  72. APPEND <dyn_wa> TO <dyn_table>.
  73. ENDDO.
  74.  
  75. CLEAR: wa_layo.
  76. wa_layo-zebra = 'X'.
  77. wa_layo-cwidth_opt = 'X'.
  78.  
  79. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  80. EXPORTING
  81. i_callback_program = sy-repid
  82. is_layout_lvc = wa_layo
  83. it_fieldcat_lvc = it_fcat
  84. TABLES
  85. t_outtab = <dyn_table>
  86. EXCEPTIONS
  87. program_error =
  88. OTHERS = .
  89. IF sy-subrc <> .
  90. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
  91. WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  92. ENDIF.
  93.  
  94. *&---------------------------------------------------------------------*
  95. *& Form frm_add_fcat
  96. *&---------------------------------------------------------------------*
  97. * text
  98. *----------------------------------------------------------------------*
  99. * -->VALUE1 text
  100. * -->VALUE2 text
  101. * -->VALUE3 text
  102. * -->VALUE4 text
  103. *----------------------------------------------------------------------*
  104. FORM frm_add_fcat USING value1 value2 value3 value4.
  105. wa_fcat-fieldname = value1.
  106. wa_fcat-inttype = value2.
  107. wa_fcat-reptext = value3.
  108. wa_fcat-intlen = value4.
  109. APPEND wa_fcat TO it_fcat.
  110. CLEAR: wa_fcat.
  111. ENDFORM. "frm_add_fcat

ALV 动态行列的更多相关文章

  1. 简化实现动态行列转置的SQL

    动态行列转换的计算在实际业务中非经常见,网上各类技术论坛上都有讨论,比方以下这些问题: http://www.iteye.com/problems/87788 http://bbs.csdn.net/ ...

  2. sql server动态行列转换

    原文链接:https://www.cnblogs.com/gaizai/p/3753296.html sql server动态行列转换 一.本文所涉及的内容(Contents) 本文所涉及的内容(Co ...

  3. mssql sqlserver 不固定行转列数据(动态列)

    转自:http://www.maomao365.com/?p=5471 摘要: 下文主要讲述动态行列转换语句,列名会根据行数据的不同, 动态的发生变化 ------------------------ ...

  4. 2018年,请不要再使用OLE生成EXCEL文件

    输出EXCEL文件是ABAP开发工作中的常见需求,为了学习相关技术,我翻译过一篇文章:使用OLE2对象创建EXCEL文件,并且一度乐在其中. 最近几个月,经过与若干EXCEL打印程序的艰苦斗争,以及对 ...

  5. .NET基础 (20).NET中的数据库开发

    ADO NET和数据库程序基础1 什么是关系型数据库2 如何通过SQL语句来实现行列转换3 ADO NET支持哪几种数据源 ADO NET和数据库的连接1 请简要叙述数据库连接池的机制2 如何提高连接 ...

  6. ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)

    *********************************************************************** * Title           : ZSDF003  ...

  7. mysql 行列动态转换(列联表,交叉表)

    mysql 行列动态转换(列联表,交叉表) (1)动态,适用于列不确定情况 create table table_name( id int primary key, col1 char(2), col ...

  8. 转ABAP将内表行列转换实例(动态内表) .

    把内表的行列转换,网上的例子很多,但是新人想看懂,几乎很难,所以总结下我是怎么完成的. 比如:你的内表如图: 你想让内表最后展示成这样:如图: 那么完成之后会是这样: 完成这个过程,得用到动态内表.看 ...

  9. 行列转换之静态、动态、PIVOT方法

    /* 标题:普通行列转换(version 2.0) 作者:爱新觉罗.毓华  时间:2008-03-09 地点:广东深圳 说明:普通行列转换(version 1.0)仅针对sql server 2000 ...

随机推荐

  1. Azure CosmosDB (6) 冲突类型和解决策略

    <Windows Azure Platform 系列文章目录> 当我们为CosmosDB配置多个Azure Region写入,就需要考虑冲突类型和解决策略. 对于配置了多个写入区域的 Az ...

  2. .Net Core跨平台应用研究-CustomSerialPort(增强型跨平台串口类库)

    .Net Core跨平台应用研究-CustomSerialPort -增强型跨平台串口类库 摘要 在使用SerialPort进行串口协议解析过程中,经常遇到接收单帧协议数据串口接收事件多次触发,协议解 ...

  3. Centos6.9部署vnc

    Centos部署vnc   [root@etl ~]# vncserver -kill :1 命令: service vncserver restart chkconfig --list vncser ...

  4. rxjava&retrofit请求直接返回string

    1.添加gradle依赖: compile com.squareup.retrofit2:converter-scalars:2.0.0' 2.更换转换器 mRetrofit = Retrofit.B ...

  5. (整理) .NET IIS性能优化

    本文收集了部分性能优化的方式,缓存.压缩.线程池调整等等,仅供参考. 1 .NET 程序中的调整 程序Sqlhelper中使用缓存 使用JSON序列化器(Jil)取代Json.NET 2 .NET 程 ...

  6. Python中随机森林的实现与解释

    使用像Scikit-Learn这样的库,现在很容易在Python中实现数百种机器学习算法.这很容易,我们通常不需要任何关于模型如何工作的潜在知识来使用它.虽然不需要了解所有细节,但了解机器学习模型是如 ...

  7. svg在vue-cli3中的配置

    svg矢量图有时候在项目中用起来当然要比图片用起来好.之前没有用过svg,这次花了一点时间在项目中支持了svg的使用,个人感觉用起来还是没有直接用font class的爽,然后又改成font clas ...

  8. HTML5+CSS3(3)

    一.CSS3新增属性用法整理 1.box-shadow(阴影效果) 2.border-color(为边框设置多种颜色) 3.border-image(图片边框) 4.text-shadow(文本阴影) ...

  9. PID控制器介绍

    在维基百科上查到的PID的介绍,收藏一下,慢慢看. https://zh.wikipedia.org/wiki/PID%E6%8E%A7%E5%88%B6%E5%99%A8#%E6%AF%94%E4% ...

  10. Ubuntu中通过SuperVisor添加守护进程

    1. 用途 守护进程用于保持一个指定程序(dll)时刻保持运行.在命令行终端中通过dotnet run命令执行的程序,在退出命令行终端后,程序自动终止.添加守护进程后,即使终端退出,程序仍可后台执行. ...