把内表的行列转换,网上的例子很多,但是新人想看懂,几乎很难,所以总结下我是怎么完成的。

比如:你的内表如图:

你想让内表最后展示成这样:如图:

那么完成之后会是这样:

完成这个过程,得用到动态内表。看代码:

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将内表行列转换实例(动态内表) .的更多相关文章

  1. SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子

    使用过SQL Server 2000的人都知道,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UN ...

  2. [数据库] SQL查询语句表行列转换及一行数据转换成两列

    原文来自:http://blog.csdn.net/Eastmount/article/details/50559008 本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两 ...

  3. sql的存储过程实例--动态根据表数据复制一个表的数据到另一个表

    动态根据表数据复制一个表的数据到另一个表 把track表的记录 根据mac_id后两位数字,复制到对应track_? 的表中 如:mac_id=12345678910,则后两位10 对应表为track ...

  4. 通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)

    在mssql中大家都知道可以使用pivot来统计数据,实现像excel的透视表功能 一.MSsqlserver中我们通常的用法 1.Sqlserver数据库测试 ---创建测试表 Create tab ...

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

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

  6. ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW

    *********************************************************************** * Title           : ZSDF002  ...

  7. ABAP 内表的行列转换-发货通知单-打印到Excel里

    需要传入数据到Excel里的模板如上图所示 ********************** *           设计主要逻辑与原理说明                                 ...

  8. ABAP 内表的行列转换-发货通知单2

    *&---------------------------------------------------------------------* *& Report  Z_TEST_C ...

  9. ABAP 内表的行列转换-发货通知单-SLIS

    REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: VTTP,LIPS,LIKP,KNA1 ,VTTK. DATA: gd_fieldcat TYP ...

随机推荐

  1. Unity3D GUI中的图片跟随鼠标旋转脚本

    var Mid : Texture2D; var mouse : Texture2D; //鼠标图片 var mousePs = Vector2.zero; //鼠标的位置 private var a ...

  2. Hibernate事务与并发问题处理(乐观锁与悲观锁)

    目录 一.数据库事务的定义 二.数据库事务并发可能带来的问题 三.数据库事务隔离级别 四.使用Hibernate设置数据库隔离级别 五.使用悲观锁解决事务并发问题 六.使用乐观锁解决事务并发问题 Hi ...

  3. 【原】cocos2d-x开发笔记:多点触控

    在项目开发中,我们做的大地图,一个手指头按下滑动可以拖动大地图,两个手指头按下张开或者闭合,可以放大和缩小地图 在实现这个功能的时候,需要使用到cocos2d-x的多点触控功能. 多点触控事件,并不是 ...

  4. XMPP 初探

    最近刚好有机会碰到XMPP,把一些学习心得记录在这边. XMPP(Extensible Messageing and Presence Protocol)是一种IM的通讯协定,其前身为Jabber,后 ...

  5. 从ramdisk根文件系统启动Linux成功,及使用initramfs启动linux

    下面两篇文章是ARM9论坛上的讲解ramdisk文件系统的很不错的文章 今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下. 其中涉及的内容较多,很多东西不再详述 ...

  6. android 图片全屏

    方式一: 在xml的布局文件的根元素设置属性background 方式二: <ImageView         android:layout_width="fill_parent&q ...

  7. “菜单”(menubar)和“工具栏”(toolbars)

    "菜单"(menubar)和"工具栏"(toolbars) "菜单" (menubar)和"工具栏"(toolbars) ...

  8. 设计模式_Facade_门面模式

    形象例子: 我有一个专业的Nikon相机,我就喜欢自己手动调光圈.快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会.幸好相机有Facade设计模式,把相机调整到自动档,只要对准目标按快门 ...

  9. OpenGL和pcDuino搭建数字示波器

    看到大神们用Arduino.AVR做示波器,感觉很好玩,手头的pcDuino能不能做呢?一不做二不休,现在我们就自己用pcDuino做一个. 硬件清单: pcDuino一块 杜邦线若干 软件环境: 1 ...

  10. Magento 多语言

    一: 1>进入后台选择如下: 2> 显示页面如下: 输入后台登陆的用户名和密码. 3>然后去Magento官网搜索一下 Magento Official Chinese Transl ...