REPORT Z_TEST_COL_TO_ROW.

TYPE-POOLS: slis.
TABLES: VTTP,LIPS,LIKP,KNA1 ,VTTK.
DATA: gd_fieldcat TYPE slis_t_fieldcat_alv.
DATA: sla TYPE slis_layout_alv ,
      ivariant LIKE disvariant,
      i_repid LIKE sy-repid ,
      i_excluding TYPE slis_t_extab.

TYPES: BEGIN OF TY_ALL,
      TKNUM LIKE VTTK-TKNUM,"运单号
      VBELN LIKE LIPS-VBELN,"交货单号
      TPLST LIKE VTTK-TPLST ,"装运点
      NAME1 LIKE  KNA1-NAME1 ,"客户
      ERDAT LIKE VTTK-ERDAT ,"创建日期
      TDLNR LIKE VTTK-TDLNR ,"物流公司
      ROUTE LIKE VTTK-ROUTE ,"线路
      DISTZ LIKE VTTK-DISTZ ,"里程
      ADD01 LIKE VTTK-ADD01 ,"车主
      EXTI1 LIKE VTTK-EXTI1 ,"卸货点
      ADD02 LIKE VTTK-ADD02 ,"司机
      BFART LIKE VTTK-BFART ,"车厢类型
      MATNR LIKE LIPS-MATNR,"物料编码
      ARKTX LIKE LIPS-ARKTX,"物料描述
      BRGEW LIKE LIPS-BRGEW,"货物单项目毛重
      LFIMG LIKE LIPS-LFIMG,"单项目数量
      VRKME LIKE  LIPS-VRKME ,"单位
      GEWEI LIKE LIPS-GEWEI,"重量单位
      LGORT LIKE LIPS-LGORT,"库存地点
     BEIZHU(30) TYPE C,"备注
END OF TY_ALL.

TYPES:BEGIN OF TY_HEADER,
      TKNUM LIKE VTTK-TKNUM,"运单号
      VBELN LIKE LIPS-VBELN,"交货单号
      NAME1 LIKE  KNA1-NAME1 ,"客户
      TPLST LIKE VTTK-TPLST ,"装运点
      ERDAT LIKE VTTK-ERDAT ,"装运日期
      TDLNR LIKE VTTK-TDLNR ,"物流公司
      ROUTE LIKE VTTK-ROUTE ,"线路
      DISTZ LIKE VTTK-DISTZ ,"里程
      ADD01 LIKE VTTK-ADD01 ,"车主
      EXTI1 LIKE VTTK-EXTI1 ,"卸货点
      ADD02 LIKE VTTK-ADD02 ,"司机
      BFART LIKE VTTK-BFART ,"车厢类型
      TOTAL_BRGEW LIKE LIPS-BRGEW,"一个交货单的总重量
    END OF TY_HEADER.
*单据抬头结束

*单据明细开始
TYPES:BEGIN OF TY_ITEMS,
     TKNUM LIKE VTTK-TKNUM,"运单号
     VBELN LIKE LIPS-VBELN,"交货单号
     NAME1 LIKE  KNA1-NAME1 ,"客户
     MATNR LIKE LIPS-MATNR,"物料编码
     ARKTX LIKE LIPS-ARKTX,"物料描述
     BRGEW LIKE LIPS-BRGEW,"单项目毛重
     GEWEI LIKE LIPS-GEWEI,"重量单位
     LFIMG LIKE LIPS-LFIMG,"单项目数量
     VRKME LIKE  LIPS-VRKME ,"单位
     LGORT LIKE LIPS-LGORT,"库存地点
     BEIZHU(30) TYPE C,"备注
    END OF TY_ITEMS.
*单据明细结束

DATA:WA_ALL TYPE TY_ALL,
      GT_ALL TYPE TY_ALL OCCURS 0.

DATA:WA_HEADER TYPE TY_HEADER,
      GT_HEADER TYPE TY_HEADER OCCURS 0  .

DATA:WA_ITEMS TYPE TY_ITEMS,
      GT_ITEMS TYPE TY_ITEMS OCCURS 0.

DATA: GT_HEADER_SHOW TYPE TY_HEADER OCCURS 0.
 DATA: GT_ITEMS_SHOW TYPE TY_ITEMS OCCURS 0.
*定义传入到smartforms的变量开始
DATA:fm_name TYPE rs38l_fnam.
DATA:itemsname(32) TYPE c.
DATA:headername(32) TYPE c.
*定义传入到smartforms的变量结束

*定义存储ALV向smartforms传入数据的内表开始
DATA:GT_HEADER_TEMP TYPE TY_HEADER OCCURS 0.
DATA:GT_ITEMS_TEMP TYPE TY_ITEMS OCCURS 0.
DATA:GT_ALL_TEMP TYPE TY_ALL OCCURS 0.
*定义存储ALV向smartforms传入数据的内表结束

"控制smartforms参数声明开始
DATA :control_parameters TYPE ssfctrlop.
"控制smartforms参数声明结束

TYPES: BEGIN OF ty_sum ,
        MATNR LIKE LIPS-MATNR,"物料编码
        ARKTX LIKE LIPS-ARKTX,"物料描述
        LFIMG LIKE LIPS-LFIMG,"单项目数量
        VRKME LIKE  LIPS-VRKME ,"单位
       NAME1 LIKE  KNA1-NAME1 ,"客户
       BRGEW LIKE LIPS-BRGEW,"单项目毛重
END OF ty_sum.

DATA : itab TYPE  ty_sum OCCURS 0 ."WITH HEADER LINE ."从数据库中取出的数放入的内表
DATA : hs_sum TYPE HASHED TABLE OF ty_sum WITH UNIQUE KEY MATNR ARKTX VRKME NAME1 WITH HEADER LINE .
DATA : itab_sum TYPE STANDARD TABLE OF ty_sum WITH HEADER LINE .

DATA: BEGIN OF itab_out OCCURS 0,"行列转换后的内表
        MATNR LIKE LIPS-MATNR,"物料编码
        ARKTX LIKE LIPS-ARKTX,"物料描述
        VRKME LIKE  LIPS-VRKME ,"单位
        menge01 TYPE i ,
        menge02 TYPE i ,
        menge03 TYPE i ,
        menge04 TYPE i ,
        menge05 TYPE i ,
        menge06 TYPE i ,
        menge07 TYPE i ,
        menge08 TYPE i ,
        menge09 TYPE i ,
        menge10 TYPE i ,
        menge11 TYPE i ,
        menge12 TYPE i ,
        menge13 TYPE i ,
        menge14 TYPE i ,
        menge15 TYPE i ,
        menge16 TYPE i ,
        menge17 TYPE i ,
        menge18 TYPE i ,
        menge19 TYPE i ,
        menge20 TYPE i ,
        menge21 TYPE i ,
        menge22 TYPE i ,
        menge23 TYPE i ,
        menge24 TYPE i ,
        menge25 TYPE i ,
        menge26 TYPE i ,
        line_sum TYPE i ,
        BRGEW_sum LIKE LIPS-BRGEW,
END OF itab_out.

TYPES: BEGIN OF ty_col ,
      NAME1 LIKE  KNA1-NAME1 ,"客户
END OF ty_col.

DATA : hs_col TYPE HASHED TABLE OF ty_col WITH UNIQUE KEY NAME1 WITH HEADER LINE .

DATA : itab_col TYPE STANDARD TABLE OF ty_col WITH HEADER LINE .

FIELD-SYMBOLS: <f_fs1> ,
               <f_fs2>
.

DATA: max_count TYPE i .

START-OF-SELECTION.

SELECT-OPTIONS: P_ERDAT   FOR VTTK-ERDAT ,
                P_TKNUM   
FOR VTTK-TKNUM ,
                P_TDLNR   
FOR VTTK-TDLNR ,
                P_TPLST   
FOR VTTK-TPLST ,
                P_ERNAM   
FOR VTTK-ERNAM ,
                P_ROUTE   
FOR VTTK-ROUTE .

START-OF-SELECTION.

PERFORM getdata.

PERFORM fixdata.

PERFORM outdata.

*&---------------------------------------------------------------------*

*& Form GETDATA

*&---------------------------------------------------------------------*

FORM getdata.

SELECT *
      
FROM VTTK AS VK
      INNER 
JOIN VTTP AS VP
        
ON VK~TKNUM = VP~TKNUM
      INNER 
JOIN LIPS AS L
        
ON L~VBELN = VP~VBELN
      INNER 
JOIN LIKP AS LP
        
ON LP~VBELN = L~VBELN
      INNER 
JOIN KNA1 AS K
        
ON K~KUNNR = LP~KUNAG
      
INTO CORRESPONDING FIELDS OF TABLE GT_ALL
      
WHERE

VK

~TKNUM IN  P_TKNUM AND (
            VK
~ERDAT IN  P_ERDAT AND
            VK
~TDLNR IN  P_TDLNR AND
            VK
~TPLST IN  P_TPLST AND
            VK
~ERNAM IN  P_ERNAM AND
            VK
~ROUTE IN  P_ROUTE ) .
      
SORT GT_ALL ASCENDING BY TKNUM.
      
MOVE-CORRESPONDING GT_ALL TO GT_HEADER_SHOW.
      
MOVE-CORRESPONDING GT_ALL TO GT_ITEMS_SHOW.
      
DELETE ADJACENT DUPLICATES FROM GT_HEADER_SHOW COMPARING TKNUM  .
      
MOVE-CORRESPONDING GT_ALL TO itab.

ENDFORM. " GETDATA

*&---------------------------------------------------------------------*

*& Form FIXDATA

*&---------------------------------------------------------------------*

FORM fixdata.

DATA: index LIKE sy-tabix .

DATA:wa_itab TYPE  ty_sum.

LOOP AT itab INTO wa_itab.
      hs_sum 
= wa_itab.
      
COLLECT hs_sum.
            hs_col 
= wa_itab-NAME1 .
      
COLLECT hs_col.

ENDLOOP.

SORT hs_col.
      itab_col[] 
= hs_col[].
      itab_sum[] 
= hs_sum[].

LOOP AT itab_sum.
    itab_out
-MATNR = itab_sum-MATNR .
    itab_out
-ARKTX = itab_sum-ARKTX .
    itab_out
-VRKME = itab_sum-VRKME .
    
READ TABLE itab_col WITH KEY NAME1 = itab_sum-NAME1 .
    
index = sy-tabix + 3."3这个数字代表有几列是固定不变的
    
ASSIGN COMPONENT index OF STRUCTURE itab_out TO <f_fs1>.
    <f_fs1> 
= itab_sum-LFIMG.
    itab_out
-line_sum = itab_sum-LFIMG.
    itab_out
-BRGEW_sum = itab_sum-BRGEW.
    
COLLECT itab_out.
    
CLEAR itab_out.

ENDLOOP.

ENDFORM. " FIXDATA

*---------------------------------------------------------------------*

* FORM frm_catlg_set *

*---------------------------------------------------------------------*

FORM frm_catlg_set USING p_field p_text  p_key.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.
      ls_fieldcat
-fieldname = p_field.
      ls_fieldcat
-seltext_l = p_text.
      ls_fieldcat
-key = p_key.
      
IF p_field = 'LINE_SUM'.
          ls_fieldcat
-emphasize = 'C700'.
      
ENDIF.

APPEND ls_fieldcat TO gd_fieldcat .

CLEAR ls_fieldcat .

ENDFORM. "frm_catlg_set

*&--------------------------------------------------------------------*

*& Form user_command

*&--------------------------------------------------------------------*

FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield 
TYPE slis_selfield.
  
DATA:wa_itab TYPE  ty_sum.

READ TABLE itab INTO wa_itab INDEX rs_selfield-tabindex.

CASE r_ucomm.

WHEN '&IC1'. "双击

WHEN 'EXIT'.

LEAVE PROGRAM.

ENDCASE.
rs_selfield
-refresh = 'X'. "自动刷新

ENDFORM. "user_com

*---------------------------------------------------------------------*

* FORM outdata2 *

*---------------------------------------------------------------------*

FORM fieldcat_init .

DATA: c(2) TYPE n ,
txt
(20) TYPE c .

PERFORM frm_catlg_set USING:

'MATNR' '物料编码' 'X' ,
      
'ARKTX' '物料描述' 'X' ,
      
'VRKME' '单位' 'X' .

LOOP AT hs_col .

c = c + 1.

CONCATENATE 'MENGE' c INTO txt.

PERFORM frm_catlg_set USING: txt hs_col-NAME1 '' .

ENDLOOP.

PERFORM frm_catlg_set USING: 'LINE_SUM' '数量合计' '' .

PERFORM frm_catlg_set USING: 'BRGEW_sum' '毛重' '' .

ENDFORM. "fieldcat_init

FORM outdata.

PERFORM fieldcat_init .
sla
-colwidth_optimize = 'X'.
sla
-zebra = 'X'.
i_repid 
= sy-repid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING
i_callback_program 
= i_repid
it_fieldcat 
= gd_fieldcat[]
i_save 
= 'A'
is_variant 
= ivariant
is_layout 
= sla
it_excluding 
= i_excluding
i_callback_user_command 
= 'USER_COMMAND'

TABLES
t_outtab 
= itab_out

EXCEPTIONS
program_error 
= 1

OTHERS = 2.

ENDFORM. " outdata

*---------------------------------------------------------------------*

* FORM fieldcat_init2 *

*---------------------------------------------------------------------*

ABAP 内表的行列转换-发货通知单-SLIS的更多相关文章

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

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

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

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

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

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

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

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

  5. ABAP 内表的行列转换-NEW

    REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: mseg,mkpf. DATA: gd_fieldcat TYPE slis_t_fieldca ...

  6. ABAP 内表的行列转换

    http://www.cnblogs.com/qlp1982/p/3370591.html

  7. ABAP 内表与XML转换

    1需求说明 在系统交互中需要将SAP内表转换为XML文件,发送给其他系统,并且将其他系统返回的XML文件转换为SAP内表. 2创建转换编辑器 事务代码:STRANS 选择简单转换 以图形方式编辑 右键 ...

  8. Abap 内表的语法

    ABAP中的内表相当于其他程序设计语言中的二维数组,存储多行结构相同的数据 不同于二维数组,内表在创建后,列结构与列数是固定不变的,而行数是动态增长的  内表支持循环对每行数据进行操作,也支持整体操作 ...

  9. ABAP内表数据和JSON格式互转

    本程序演示ABAP内表数据如何转为JSON格式,以及JSON数据如何放入内表. 注:json字符串格式如:jsonstr = '[ {flag: "0",message: &quo ...

随机推荐

  1. JSF的CommandXxx组件的update用法总结

    Update all forms 1 update="@(form)" Update first form 1 update="@(form:first)" U ...

  2. R语言学习笔记

    向量化的函数 向量化的函数 ifelse/which/where/any/all/cumsum/cumprod/对于矩阵而言,可以使用rowSums/colSums.对于“穷举所有组合问题" ...

  3. MYSQL 连接数据库命令收藏

    一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:\>mysql -h localhost -u root -p123 二. ...

  4. 此请求的查询字符串的长度超过配置的 maxQueryStringLength 值 --不仅wen.fonfig一个地方需要设置

    提示已经很明确了... 搜出来的都是: <system.webServer> <security> <requestFiltering> <requestLi ...

  5. GCD与NSOperationQueue

    1> GCD是纯C语言的API,NSOperationQueue是基于GCD的OC版本封装 2> GCD只支持FIFO(先入先出)的队列,NSOperationQueue可以很方便地调整执 ...

  6. Linux程序编写shell script的格式

    #!/bin/bash #program # 在此处写下此程序的作用 #History: #此处写下写此程序的时间 作者 版本号 PATH=/bin:/sbin:/usr/bin:/usr/sbin: ...

  7. Apache常用2种工作模式prefork和worker比较

    Apache两种常用工作模式:prefork和worker. prefork MPM prefork是一个非线程型的.预派生的MPM,使用多个进程,每个进程在某个确定的时间只单独处理一个连接,效率高, ...

  8. gradle类重复的问题解决方法

    今天遇到一个gradle的类重复问题,学习到一个命令 gradle -q dependencies,可以查看项目里包的依赖关系,发生这个错误是因为我用了一个相册的项目,这个项目里用到了v4包,我自己的 ...

  9. cocos2d事件处理机制之我见

    cocos2d是使用pyglet事件框架来处理事件的. 其中,包括分发器(发射器)和监听器两部分.下面形象的来打个比方. 这个机制就好比一把枪,三步:扣扳机(触发),上弹(注册),给子弹上***(这个 ...

  10. OSI参考模型与TCP/IP协议模型

    OSI和TCP/IP都是为了计算机之间更好的互联的. 计算机网络是一个复杂的系统,比如两台计算机进行通信不仅仅只是有一条通信线就可以了. 还有很多的工作需要完成,例如: 如何知道对方计算机是否做好准备 ...