ABAP 内表的行列转换-发货通知单-SLIS
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的更多相关文章
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)
*********************************************************************** * Title : ZSDF003 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW
*********************************************************************** * Title : ZSDF002 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里
需要传入数据到Excel里的模板如上图所示 ********************** * 设计主要逻辑与原理说明 ...
- ABAP 内表的行列转换-发货通知单2
*&---------------------------------------------------------------------* *& Report Z_TEST_C ...
- ABAP 内表的行列转换-NEW
REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: mseg,mkpf. DATA: gd_fieldcat TYPE slis_t_fieldca ...
- ABAP 内表的行列转换
http://www.cnblogs.com/qlp1982/p/3370591.html
- ABAP 内表与XML转换
1需求说明 在系统交互中需要将SAP内表转换为XML文件,发送给其他系统,并且将其他系统返回的XML文件转换为SAP内表. 2创建转换编辑器 事务代码:STRANS 选择简单转换 以图形方式编辑 右键 ...
- Abap 内表的语法
ABAP中的内表相当于其他程序设计语言中的二维数组,存储多行结构相同的数据 不同于二维数组,内表在创建后,列结构与列数是固定不变的,而行数是动态增长的 内表支持循环对每行数据进行操作,也支持整体操作 ...
- ABAP内表数据和JSON格式互转
本程序演示ABAP内表数据如何转为JSON格式,以及JSON数据如何放入内表. 注:json字符串格式如:jsonstr = '[ {flag: "0",message: &quo ...
随机推荐
- javascript 数据类型转换
javascrīpt 类型转换函数 在Javascrīpt中,Double类型和Int类型都是看作为Number对象. 1.Number转成String number.toString() Strin ...
- html5手机常见问题与工具分享
mobileTech A useful tools or tips list for mobile web application developing 这个项目收集移动端开发所需要的一些资源与小技巧 ...
- sql拼音简写函数
USE [HotelDB]GO /****** Object: UserDefinedFunction [dbo].[fn_GetPy] Script Date: 2016/1/4 13:29:13 ...
- Request 传值 遇到的中文乱码问题
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="xxxx.aspx.cs&quo ...
- 2013长沙邀请赛A So Easy!(矩阵快速幂,共轭)
So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- BZOJ1030——文本生成器
给你若干给字符串,再给你一个m,问长度是m的字符串中包含给定字符串的数量mod 10007是多少 这个拿过来啥思路也没有,后来还是看了题解,才知道,原来,原来....那个带fail的Trie还可以搞别 ...
- 上传源码到github
到 http://mac.github.com/ 下载 github mac客户端 然后左上角 + 号, 点击add 添加 repository(代码仓库), 然后选择已有git项目, 然后点击右上角 ...
- python\c交互学习网站手机
http://use-python.readthedocs.org/zh_CN/latest/interact_with_other_language.html https://www.zhihu.c ...
- 跟着百度学PHP[4]OOP面对对象编程-6-封装性private
所谓封装顾名思义,如同箱子般给封装起来.结合前面的来说就是对属性或者方法,封装后的方法或属性只能有类内部进行调用.外部调用不了. 封装性的好处: 1.信息隐藏 2.http://www.cnblogs ...
- Unity3D获取Andorid设备返回键,主页键等功能
在Unity开发中捕捉Android的常用事件其实很简单 在新建的脚本文件中就加入: 比如: // 返回键 if ( Application.platform == RuntimePlatform.A ...