转ABAP将内表行列转换实例(动态内表) .
把内表的行列转换,网上的例子很多,但是新人想看懂,几乎很难,所以总结下我是怎么完成的。
比如:你的内表如图:
你想让内表最后展示成这样:如图:
那么完成之后会是这样:
完成这个过程,得用到动态内表。看代码:
DATA:BEGIN OF itab8 OCCURS ,
bezei LIKE zchannel-bezei, "销售办事处
zdate LIKE zchannel-zdate, "日期
salesamount LIKE zchannel-salesamount, "总额
END OF itab8.
先排序:
SORT itab8 BY bezei zdate DESCENDING.
要以日期作为列,得先取得唯一的日期。
DATA TDATE LIKE SY-DATUM OCCURS WITH HEADER LINE.
LOOP AT itab8.
TDATE = ITAB8-ZDATE.
COLLECT TDATE.
ENDLOOP.
下面构建动态内表结构
DATA: dy_table TYPE REF TO data,
dy_wa TYPE REF TO data,
it_str TYPE lvc_t_fcat, "是Table Type
wa_str TYPE lvc_s_fcat. "是一个Structure 用于存储即将构建的动态内表结构 FIELD-SYMBOLS: <dyn_table> TYPE table, "是一个标志,可以理解为一个指针,将来创建的内表就要通过它们来访问
<dyn_wa> TYPE ANY,
<FS> TYPE ANY. wa_str-fieldname = 'BEZEI'.
wa_str-col_pos = .
wa_str-inttype = 'CHAR'.
wa_str-intlen = .
APPEND wa_str TO it_str.
CLEAR wa_str. wa_str-fieldname = 'SELFI'.
wa_str-col_pos = .
wa_str-inttype = 'CHAR'.
wa_str-intlen = .
APPEND wa_str TO it_str.
CLEAR wa_str. REFRESH fieldcat.
PERFORM input_fieldcat USING 'BEZEI' '销售办事处' '' '' '' '' ''. LOOP AT TDATE.
wa_str-fieldname = TDATE.
wa_str-col_pos = .
wa_str-inttype = 'CHAR'.
wa_str-intlen = .
APPEND wa_str TO it_str.
CLEAR wa_str.
PERFORM input_fieldcat USING TDATE TDATE '' '' '' '' ''.
ENDLOOP. *此方法用于构建动态内表,输入=构建的结构,输出=dy_table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_str
IMPORTING
ep_table = dy_table. ASSIGN dy_table->* TO <dyn_table>.
CREATE DATA dy_wa LIKE LINE OF <dyn_table>.
ASSIGN dy_wa->* TO <dyn_wa>.
下面往结构里写数
DATA FIELDNAME().
LOOP AT ITAB8.
ASSIGN COMPONENT 'BEZEI' OF STRUCTURE <dyn_wa> TO <FS>. "分配结构里的销售办事处,用FS字段 指向它
<FS> = ITAB8-BEZEI.
FIELDNAME = ITAB8-ZDATE. "这里把日期类型定义为char型,因为用DATS报错。
ASSIGN COMPONENT FIELDNAME OF STRUCTURE <dyn_wa> TO <FS>. "分配结构的日期,将FS指向它
<FS> = ITAB8-SALESAMOUNT.
AT END OF BEZEI.
APPEND <dyn_wa> TO <dyn_table>.
ENDAT.
ENDLOOP.
转ABAP将内表行列转换实例(动态内表) .的更多相关文章
- SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子
使用过SQL Server 2000的人都知道,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UN ...
- [数据库] SQL查询语句表行列转换及一行数据转换成两列
原文来自:http://blog.csdn.net/Eastmount/article/details/50559008 本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两 ...
- sql的存储过程实例--动态根据表数据复制一个表的数据到另一个表
动态根据表数据复制一个表的数据到另一个表 把track表的记录 根据mac_id后两位数字,复制到对应track_? 的表中 如:mac_id=12345678910,则后两位10 对应表为track ...
- 通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)
在mssql中大家都知道可以使用pivot来统计数据,实现像excel的透视表功能 一.MSsqlserver中我们通常的用法 1.Sqlserver数据库测试 ---创建测试表 Create tab ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)
*********************************************************************** * Title : ZSDF003 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW
*********************************************************************** * Title : ZSDF002 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里
需要传入数据到Excel里的模板如上图所示 ********************** * 设计主要逻辑与原理说明 ...
- ABAP 内表的行列转换-发货通知单2
*&---------------------------------------------------------------------* *& Report Z_TEST_C ...
- ABAP 内表的行列转换-发货通知单-SLIS
REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: VTTP,LIPS,LIKP,KNA1 ,VTTK. DATA: gd_fieldcat TYP ...
随机推荐
- jquery serialize()方法的扩展
Jquery提供的序列化表单方法serialize方法确实方便,但是我在使用的时候发现了一个弊端:当我使用type:“post”进行ajax请求的时候, 这个时候参数data:$("#myf ...
- js如何判断是手机端还是PC端访问
function isMobile(){ var sUserAgent= navigator.userAgent.toLowerCase(), bIsIpad= sUserAgent.match(/i ...
- Java [leetcode 32]Longest Valid Parentheses
题目描述: Given a string containing just the characters '(' and ')', find the length of the longest vali ...
- (二)学习CSS之cursor属性
参考:http://www.w3school.com.cn/tiy/t.asp?f=csse_zindex cursor 属性规定要显示的光标的类型(形状). <html> <bod ...
- ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)
于ASP.NET MVC Preview5. 前一篇中我们已经了解了Action Filter 与 内置的Filter实现,现在我们就来写一个实例.就写一个防盗链的Filter吧. 首先继承自Filt ...
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.8
Prove that for any matrices $A,B$ we have $$\bex |\per (AB)|^2\leq \per (AA^*)\cdot \per (B^*B). \ee ...
- bug描述注意点
一个好的错误跟踪系统包括了错误的必要信息,如果做得不好,会造成迷惑,并误导读者.好的故障描述应该包括十个基本部分:标题.项目.所属模块.优先级.重要性.异常等级.可重复性.现象.操作过程和附件. ①标 ...
- opencv2.4.4 背景减除算法收集
算法集合:https://code.google.com/p/bgslibrary/ 测试:AdaptiveBackgroundLearning算法 #include <iostream> ...
- 《Nagios系统监控实践》一书出版
本书是我的第一本译著,有此机会实属机缘巧合.虽然使用Nagios只有一年多的时间,但是作为用户,我深感其设计的简洁与高效—没有一丝多余的东西.因为工作的关系,要求对各个领域都有所了解,所以没有仔细地阅 ...
- 获取EntityFrameWork返回的错误和ModelState中的错误
都是通过循环才能找到具体的错误信息 具体方法参见这两篇文章: EntityFrameWork: http://www.cnblogs.com/shouzheng/archive/2012/04/19/ ...