*&---------------------------------------------------------------------*
*& Report  Z_TEST_COL_TO_ROW_02
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Z_TEST_COL_TO_ROW_02.
TABLES: VTTP,LIPS,LIKP,KNA1 ,VTTK.

DATA: gs_fcat TYPE lvc_s_fcat,
      gt_fcat TYPE lvc_t_fcat,
      gs_layo TYPE lvc_s_layo,
      gs_grid TYPE lvc_s_glay.
DATA: gt_event TYPE slis_t_event WITH HEADER LINE,
      gt_event_exit TYPE slis_t_event_exit WITH HEADER LINE.

DATA:  ref_grid TYPE REF TO cl_gui_alv_grid .

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 ,"单位
        01 TYPE i ,
        02 TYPE i ,
        03 TYPE i ,
        04 TYPE i ,
        05 TYPE i ,
        06 TYPE i ,
        07 TYPE i ,
        08 TYPE i ,
        09 TYPE i ,
        10 TYPE i ,
        11 TYPE i ,
        12 TYPE i ,
        13 TYPE i ,
        14 TYPE i ,
        15 TYPE i ,
        16 TYPE i ,
        17 TYPE i ,
        18 TYPE i ,
        19 TYPE i ,
        20 TYPE i ,
        21 TYPE i ,
        22 TYPE i ,
        23 TYPE i ,
        
24 TYPE i ,
        
25 TYPE i ,
        
26 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>
.

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.

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 USING p_field p_text  p_key p_edit p_no_out .

gs_fcat

-fieldname   = p_field.
      gs_fcat
-reptext     = p_text.
      gs_fcat
-key         = p_key.
      gs_fcat
-edit        = p_edit.
      gs_fcat
-no_out      = p_no_out.

IF p_field = 'LINE_SUM'.
          gs_fcat
-emphasize = 'C700'.
      
ENDIF.

APPEND gs_fcat TO gt_fcat .

CLEAR gs_fcat .

ENDFORM. "frm_catlg_set

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 '' 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' '毛重' '' '' '' .

gs_layo

-zebra             = 'X'.

ENDFORM. "fieldcat_init

FORM outdata.

PERFORM fieldcat_init .

PERFORM show_alv  TABLES gt_fcat  itab_out[]
                     
USING  gs_layo.

ENDFORM. " outdata

FORM show_alv TABLES  pt_fcat
                      pt_tab

USING   ps_layout.

gs_grid

-edt_cll_cb = 'X'."当屏幕失去焦点时,自动刷新

gt_event

-name = 'CALLER_EXIT'.   "slis_ev_caller_exit_at_start事件
  gt_event
-FORM = 'FM_BUTTON'.
  
APPEND gt_event .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  
EXPORTING
    i_callback_program                  
= sy-repid
    i_callback_user_command            
= 'USER_COMMAND'
    i_grid_settings                    
= gs_grid
    i_callback_pf_status_set            
= 'SET_PF_STATUS'
    is_layout_lvc                       
= gs_layo
    it_fieldcat_lvc                     
= pt_fcat[]
     it_events                          
= gt_event[]
     i_save                             
= 'X'

*     it_event_exit                     = gt_event_exit[]
  
TABLES
    t_outtab                            
= pt_tab
   
EXCEPTIONS
     PROGRAM_ERROR                     
= 1
     
OTHERS                            = 2
    
.

ENDFORM.                    "csalv_set_fcat

FORM user_command USING r_ucomm LIKE sy-ucomm
      rs_selfield 
TYPE slis_selfield.

CASE r_ucomm.
    
WHEN '&DATA_SAVE'.
    
WHEN '&PRINT' OR '&PRT'.
          
"PERFORM PRINT.
    
WHEN OTHERS.

LEAVE TO SCREEN 0.
  
ENDCASE.

ENDFORM.                    "user_command

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

*&      Form  SET_PF_STATUS

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

*       text

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

*      -->RT_EXTAB   text

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

FORM set_pf_status USING rt_extab TYPE slis_t_extab..
  
SET PF-STATUS 'STANDARD'.

ENDFORM.                    "SET_PF_STATUS

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

*&      Form  fm_button

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

*       text

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

*      -->E_GRID     text

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

FORM fm_button USING e_grid TYPE slis_data_caller_exit.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

*   EXPORTING

*     IR_SALV_FULLSCREEN_ADAPTER       =
  
IMPORTING

*     ET_EXCLUDING                     =

*     E_REPID                          =

*     E_CALLBACK_PROGRAM               =

*     E_CALLBACK_ROUTINE               =
    e_grid                           
= ref_grid

*     ET_FIELDCAT_LVC                  =

*     ER_TRACE                         =

*     E_FLG_NO_HTML                    =

*     ES_LAYOUT_KKBLO                  =

*     ES_SEL_HIDE                      =

*     ET_EVENT_EXIT                    =

*     ER_FORM_TOL                      =

*     ER_FORM_EOL                      =
    
.

*   CALL METHOD ref_grid->check_changed_data.

* 设置enter事件
  
CALL METHOD ref_grid->register_edit_event
    
EXPORTING
      i_event_id 
= cl_gui_alv_grid=>mc_evt_enter
    
EXCEPTIONS
      error      
= 1
      
OTHERS     = 2.

"CREATE OBJECT gt_event_receiver.
  
"SET HANDLER   gt_event_receiver->handle_modify FOR ref_grid.

ENDFORM.                    "FM_BUTTON

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

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

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

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

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

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

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

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

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

  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. 别老扯什么Hadoop了,你的数据根本不够大

    本文原名“Don't use Hadoop when your data isn't that big ”,出自有着多年从业经验的数据科学家Chris Stucchio,纽约大学柯朗研究所博士后,搞过 ...

  2. ActiveMQ 目录

    (1) ActiveMQ简介 (2) JMS基本概念和模型 (3) JMS的可靠性 (4) ActiveMQ结合Spring开发 (5)ActiveMQ支持的传输协议 (6)ActiveMQ消息存储持 ...

  3. systemd

    本文参照:https://wiki.archlinux.org/index.php/Systemd#Basic_systemctl_usage 做了翻译和整理 systemd是Linux下的一种ini ...

  4. Properties类的使用方法

    它提供了几个主要的方法: 1. getProperty ( String key),用指定的键在此属性列表中搜索属性.也就是通过参数 key ,得到 key 所对应的 value. 2. load ( ...

  5. Roslyn词法分析器初使用

    需:install-package:Microsoft.CodeAnalysis ];         NamespaceDeclarationSyntax NameSpaceDeclaration  ...

  6. Tomcat 6 JNDI数据源详解

    数据库连接池这个概念应该都不陌生,在Java中连接池也就是数据库的连接池,它是一种采用连接复用的思想避免多次连接造成资源的浪费机制. 最常见的连接池就是DBCP和C30P了,在tomcat中默认使用的 ...

  7. Windows 操作小技巧 之一(持续更新)

    1.图片批量旋转 通常携带单反去景点排了大量照片回来处理图片时都会遇到很多横竖杂乱排序的图片难以处理的情形.现提供如下技巧进行处理. 1).在文件夹中添加"方向"的排列或分组选项: ...

  8. TP3.1 中URL和APP区别

    1.__URL__指当前模块地址,就是当前的action的地址.(每个__action都是一个模块)    eg:当前打开config.html,那么config.html里边的__URL__/sav ...

  9. 【PHP面向对象(OOP)编程入门教程】11.类的继承

    继承作为面向对象的三个重要特性的一个方面,在面向对象的领域有着及其重要的作用,好像没听说哪个面向对象的语言不支持继承. 继承是PHP5面象对象程序设计的重要特性之一,它是指建立一个新的派生类,从一个或 ...

  10. oracle 彻底删除用户及表空间

    1.删除表空间 可以先将其offline alter tablespace xxx offline; 将磁盘上的数据文件一同删除 drop tablespace xxx including conte ...