1. TABLES:MSEG,MAKT.
  2. "定义结构
  3. TYPES:BEGIN OF TY_DATA,
  4. MJAHR LIKE MSEG-MJAHR, "物料凭证的年份
  5. MBLNR LIKE MSEG-MBLNR, "物料凭证
  6. BWART LIKE MSEG-BWART, "移动类型
  7. XAUTO LIKE MSEG-XAUTO, "是否自动创建
  8. MATNR LIKE MSEG-MATNR, "物料编码
  9. MAKTX LIKE MAKT-MAKTX, "物料描述
  10. WERKS LIKE MSEG-WERKS, "工厂
  11. LGORT LIKE MSEG-LGORT, "库位
  12. CHARG LIKE MSEG-CHARG, "批次
  13. MENGE LIKE MSEG-MENGE, "基本单位数量
  14. MEINS LIKE MSEG-MEINS, "基本单位
  15. ERFMG LIKE MSEG-ERFMG, "录入数量
  16. ERFME LIKE MSEG-ERFME, "录入单位
  17. BUDAT_MKPF LIKE MSEG-BUDAT_MKPF, "过账日期
  18. CPUDT_MKPF LIKE MSEG-CPUDT_MKPF, "输入日期
  19. CPUTM_MKPF LIKE MSEG-CPUTM_MKPF, "输入时间
  20. USNAM_MKPF LIKE MSEG-USNAM_MKPF, "用户名
  21. END OF TY_DATA.
  22. TYPES:BEGIN OF TY_DATA1,
  23. * MJAHR LIKE MSEG-MJAHR, "物料凭证的年份
  24. * MBLNR LIKE MSEG-MBLNR, "物料凭证
  25. WERKS LIKE MSEG-WERKS, "工厂
  26. LGORT LIKE MSEG-LGORT, "库位
  27. MATNR LIKE MSEG-MATNR, "物料编码
  28. MAKTX LIKE MAKT-MAKTX, "物料描述
  29. BWART LIKE MSEG-BWART, "移动类型
  30. * XAUTO LIKE MSEG-XAUTO, "是否自动创建
  31. * CHARG LIKE MSEG-CHARG, "批次
  32. MENGE LIKE MSEG-MENGE, "基本单位数量
  33. MEINS LIKE MSEG-MEINS, "基本单位
  34. * ERFMG LIKE MSEG-ERFMG, "录入数量
  35. * ERFME LIKE MSEG-ERFME, "录入单位
  36. * BUDAT_MKPF LIKE MSEG-BUDAT_MKPF, "过账日期
  37. * CPUDT_MKPF LIKE MSEG-CPUDT_MKPF, "输入日期
  38. * CPUTM_MKPF LIKE MSEG-CPUTM_MKPF, "输入时间
  39. * USNAM_MKPF LIKE MSEG-USNAM_MKPF, "用户名
  40. END OF TY_DATA1.
  41. TYPES:BEGIN OF TY_DATA2,
  42. * MJAHR LIKE MSEG-MJAHR, "物料凭证的年份
  43. * MBLNR LIKE MSEG-MBLNR, "物料凭证
  44. * WERKS LIKE MSEG-WERKS, "工厂
  45. * LGORT LIKE MSEG-LGORT, "库位
  46. * MATNR LIKE MSEG-MATNR, "物料编码
  47. * MAKTX LIKE MAKT-MAKTX, "物料描述
  48. BWART LIKE MSEG-BWART, "移动类型
  49. * XAUTO LIKE MSEG-XAUTO, "是否自动创建
  50. * CHARG LIKE MSEG-CHARG, "批次
  51. * MENGE LIKE MSEG-MENGE, "基本单位数量
  52. * MEINS LIKE MSEG-MEINS, "基本单位
  53. * ERFMG LIKE MSEG-ERFMG, "录入数量
  54. * ERFME LIKE MSEG-ERFME, "录入单位
  55. * BUDAT_MKPF LIKE MSEG-BUDAT_MKPF, "过账日期
  56. * CPUDT_MKPF LIKE MSEG-CPUDT_MKPF, "输入日期
  57. * CPUTM_MKPF LIKE MSEG-CPUTM_MKPF, "输入时间
  58. * USNAM_MKPF LIKE MSEG-USNAM_MKPF, "用户名
  59. END OF TY_DATA2.
  60. DATA:IT_DATA TYPE STANDARD TABLE OF TY_DATA,
  61. WA_DATA TYPE TY_DATA.
  62. DATA:IT_DATA1 TYPE STANDARD TABLE OF TY_DATA1,
  63. WA_DATA1 TYPE TY_DATA1.
  64. DATA:IT_DATA2 TYPE STANDARD TABLE OF TY_DATA2,
  65. WA_DATA2 TYPE TY_DATA2.
  66. DATA:N TYPE I.
  67. DATA: IT_TABLE TYPE REF TO DATA,
  68. IT_STRUCTURE TYPE LVC_T_FCAT,
  69. WA_STRUCTURE TYPE LVC_S_FCAT.
  70. DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
  71. IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
  72. WA_LAYOUT TYPE LVC_S_LAYO.
  73. DATA: G_TITLE TYPE LVC_TITLE.
  74. "FIELD SYMBOLS
  75. FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE,
  76. <DYN_WA>,
  77. <DYN_FIELD>.
  78. "定义屏幕
  79. SELECTION-SCREEN BEGIN OF BLOCK BLK01.
  80. SELECT-OPTIONS:S_WERKS FOR MSEG-WERKS,"工厂
  81. S_LGORT FOR MSEG-LGORT,"库位
  82. S_MATNR FOR MSEG-MATNR,"物料
  83. S_BUDAT FOR MSEG-BUDAT_MKPF,"过账日期
  84. S_CPUDT FOR MSEG-CPUDT_MKPF,"输入日期
  85. S_BWART FOR MSEG-BWART,"移动类型
  86. S_USNAM FOR MSEG-USNAM_MKPF."username
  87. SELECTION-SCREEN END OF BLOCK BLK01.
  88. "主程序
  89.  
  90. START-OF-SELECTION.
  91. PERFORM GET_DATA."取数
  92. PERFORM CREAT_STRUCTURE."创建内表结构
  93. PERFORM CREAT_TABLE."按照结构定义内表
  94. PERFORM DATA_TO_TABLE."写数据进内表
  95. PERFORM FRM_INIT_LAYOUT.
  96. PERFORM FRM_SHOW_ALV."内表数据展示
  97. FORM GET_DATA.
  98. SELECT
  99. MSEG~MJAHR,
  100. MSEG~MBLNR,
  101. MSEG~BWART,
  102. MSEG~XAUTO,
  103. MSEG~MATNR,
  104. MAKT~MAKTX,
  105. MSEG~WERKS,
  106. MSEG~LGORT,
  107. MSEG~CHARG,
  108. CASE MSEG~SHKZG
  109. WHEN 'H' THEN ( - MSEG~MENGE )
  110. ELSE MSEG~MENGE
  111. END AS MENGE,
  112. MSEG~MEINS,
  113. CASE MSEG~SHKZG
  114. WHEN 'H' THEN ( - MSEG~ERFMG )
  115. ELSE MSEG~ERFMG
  116. END AS ERFMG,
  117. MSEG~ERFME,
  118. MSEG~BUDAT_MKPF,
  119. MSEG~CPUDT_MKPF,
  120. MSEG~CPUTM_MKPF,
  121. MSEG~USNAM_MKPF
  122. FROM MSEG
  123. LEFT JOIN MAKT ON MAKT~MATNR = MSEG~MATNR
  124. INTO CORRESPONDING FIELDS OF TABLE @IT_DATA
  125. WHERE MSEG~WERKS IN @S_WERKS
  126. AND MSEG~LGORT IN @S_LGORT
  127. AND MSEG~MATNR IN @S_MATNR
  128. AND MSEG~BUDAT_MKPF IN @S_BUDAT
  129. AND MSEG~BWART IN @S_BWART
  130. AND MSEG~USNAM_MKPF IN @S_USNAM
  131. AND MSEG~CPUDT_MKPF IN @S_CPUDT.
  132. LOOP AT IT_DATA INTO WA_DATA.
  133. MOVE-CORRESPONDING WA_DATA TO WA_DATA1.
  134. COLLECT WA_DATA1 INTO IT_DATA1.
  135. CLEAR:WA_DATA,WA_DATA1.
  136. ENDLOOP.
  137.  
  138. ENDFORM.
  139. FORM CREAT_STRUCTURE.
  140. DATA: L_LINES TYPE I.
  141. LOOP AT IT_DATA1 INTO WA_DATA1.
  142. MOVE-CORRESPONDING WA_DATA1 TO WA_DATA2.
  143. APPEND WA_DATA2 TO IT_DATA2.
  144. ENDLOOP.
  145.  
  146. SORT IT_DATA2 BY BWART.
  147. DELETE ADJACENT DUPLICATES FROM IT_DATA2 COMPARING BWART.
  148. DESCRIBE TABLE IT_DATA2 LINES N.
  149. L_LINES = .
  150.  
  151. * 创建静态结构部分
  152. PERFORM FRM_ALV_FCAT_SET USING:
  153. 'WERKS' TEXT- 'WERKS' 'MSEG' SPACE SPACE,
  154. 'LGORT' TEXT- 'LGORT' 'MSEG' SPACE SPACE,
  155. 'MATNR' TEXT- 'MATNR' 'MAKT' SPACE SPACE,
  156. 'MAKTX' TEXT- 'MAKTX' 'MAKT' SPACE SPACE.
  157. * 5 'BUDAT_MKPF' TEXT-008 'BUDAT_MKPF' 'MSEG' SPACE SPACE,
  158. * 6 'CPUDT_MKPF' TEXT-008 'CPUDT_MKPF' 'MSEG' SPACE SPACE.
  159.  
  160. LOOP AT IT_DATA2 INTO WA_DATA2.
  161. * DO N TIMES.
  162. CLEAR WA_STRUCTURE.
  163. *字段名称
  164. WA_STRUCTURE-FIELDNAME = WA_DATA2-BWART.
  165. *列名称
  166. * CONCATENATE '移动类型' WA_DATA2-BWART INTO WA_STRUCTURE-SCRTEXT_L.
  167. WA_STRUCTURE-SCRTEXT_L = WA_DATA2-BWART.
  168. WA_STRUCTURE-SCRTEXT_M = WA_STRUCTURE-SCRTEXT_L.
  169. WA_STRUCTURE-SCRTEXT_S = WA_STRUCTURE-SCRTEXT_L.
  170. WA_STRUCTURE-COLTEXT = WA_STRUCTURE-SCRTEXT_L.
  171. WA_STRUCTURE-NO_ZERO = 'X'.
  172. WA_STRUCTURE-DO_SUM = 'X'.
  173.  
  174. WA_STRUCTURE-REF_FIELD = 'MENGE'.
  175. WA_STRUCTURE-REF_TABLE = 'EKPO'.
  176.  
  177. WA_STRUCTURE-COL_POS = L_LINES.
  178. APPEND WA_STRUCTURE TO IT_STRUCTURE.
  179.  
  180. L_LINES = L_LINES + .
  181. ENDLOOP.
  182. WA_STRUCTURE-FIELDNAME = 'SUM'.
  183. WA_STRUCTURE-SCRTEXT_L = '行总计'.
  184. WA_STRUCTURE-SCRTEXT_M = WA_STRUCTURE-SCRTEXT_L.
  185. WA_STRUCTURE-SCRTEXT_S = WA_STRUCTURE-SCRTEXT_L.
  186. WA_STRUCTURE-COLTEXT = WA_STRUCTURE-SCRTEXT_L.
  187. WA_STRUCTURE-NO_ZERO = 'X'.
  188. WA_STRUCTURE-DO_SUM = 'X'.
  189. * WA_STRUCTURE-REF_FIELD = 'MENGE'.
  190. * WA_STRUCTURE-REF_TABLE = 'EKPO'.
  191. WA_STRUCTURE-COL_POS = L_LINES.
  192. APPEND WA_STRUCTURE TO IT_STRUCTURE.
  193.  
  194. ENDFORM.
  195. FORM CREAT_TABLE.
  196. CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
  197. EXPORTING
  198. IT_FIELDCATALOG = IT_STRUCTURE
  199. IMPORTING
  200. EP_TABLE = IT_TABLE.
  201.  
  202. ASSIGN IT_TABLE->* TO <DYN_TABLE>.
  203. ENDFORM.
  204. FORM DATA_TO_TABLE.
  205. DATA:WA_NEW_LINE TYPE REF TO DATA.
  206. CREATE DATA WA_NEW_LINE LIKE LINE OF <DYN_TABLE>.
  207. ASSIGN WA_NEW_LINE->* TO <DYN_WA>.
  208.  
  209. DATA: L_SUM() TYPE P DECIMALS .
  210.  
  211. DATA:L_FIELDNAME TYPE LVC_S_FCAT-FIELDNAME.
  212. DATA:LW_ERFMG TYPE TY_DATA1.
  213. SORT IT_DATA1 BY WERKS LGORT MATNR.
  214. LOOP AT IT_DATA1 INTO WA_DATA1.
  215. CLEAR:L_FIELDNAME.
  216. L_FIELDNAME = WA_DATA1-BWART.
  217. ASSIGN COMPONENT L_FIELDNAME OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
  218. IF WA_DATA1-MENGE IS NOT INITIAL.
  219. <DYN_FIELD> = WA_DATA1-MENGE.
  220. L_SUM = L_SUM + WA_DATA1-MENGE.
  221. ENDIF.
  222. LW_ERFMG = WA_DATA1.
  223. AT END OF MATNR.
  224. ASSIGN COMPONENT 'WERKS' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
  225. <DYN_FIELD> = LW_ERFMG-WERKS.
  226. ASSIGN COMPONENT 'LGORT' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
  227. <DYN_FIELD> = LW_ERFMG-LGORT.
  228. ASSIGN COMPONENT 'MATNR' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
  229. <DYN_FIELD> = LW_ERFMG-MATNR.
  230. ASSIGN COMPONENT 'MAKTX' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
  231. <DYN_FIELD> = LW_ERFMG-MAKTX.
  232. * ASSIGN COMPONENT 'BUDAT_MKPF' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
  233. * <DYN_FIELD> = LW_ERFMG-BUDAT_MKPF.
  234. * ASSIGN COMPONENT 'CPUDT_MKPF' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
  235. * <DYN_FIELD> = LW_ERFMG-CPUDT_MKPF.
  236. ASSIGN COMPONENT 'SUM' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
  237. <DYN_FIELD> = L_SUM.
  238. APPEND <DYN_WA> TO <DYN_TABLE>.
  239. CLEAR: L_SUM, <DYN_WA>.
  240. ENDAT.
  241.  
  242. CLEAR: LW_ERFMG, WA_DATA1.
  243.  
  244. ENDLOOP.
  245.  
  246. * DELETE <DYN_TABLE> WHERE MATNR IS INITIAL.
  247.  
  248. ENDFORM.
  249. *设置layout属性
  250. FORM FRM_INIT_LAYOUT .
  251. G_TITLE = TEXT-.
  252.  
  253. CLEAR WA_LAYOUT.
  254. WA_LAYOUT-CWIDTH_OPT = 'X'.
  255. ENDFORM. " FRM_INIT_LAYOUT
  256. FORM FRM_SHOW_ALV.
  257. * * ALV显示函数
  258. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  259. EXPORTING
  260. I_CALLBACK_PROGRAM = SY-REPID
  261. IS_LAYOUT_LVC = WA_LAYOUT
  262. IT_FIELDCAT_LVC = IT_STRUCTURE
  263. I_GRID_TITLE = G_TITLE
  264. * i_callback_pf_status_set = 'PF_STATUS_SET'
  265. * IT_EXCLUDING = "系统自带STATUS图标控制内表
  266. I_SAVE = 'A'
  267. * i_callback_pf_status_set = 'PF_STATUS_SET'
  268. * i_callback_user_command = 'FRM_USER_COMMAND'
  269. TABLES
  270. T_OUTTAB = <DYN_TABLE>
  271. EXCEPTIONS
  272. PROGRAM_ERROR =
  273. OTHERS = .
  274. IF SY-SUBRC <> .
  275. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  276. * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  277. ENDIF.
  278.  
  279. ENDFORM.
  280. FORM FRM_ALV_FCAT_SET USING PU_POS TYPE I
  281. PU_FNAME TYPE C
  282. PU_FTEXT TYPE C
  283. PU_RFIELD TYPE C
  284. PU_RTABLE TYPE C
  285. PU_QNAME TYPE C
  286. PU_EDIT TYPE C.
  287. CLEAR WA_STRUCTURE.
  288. WA_STRUCTURE-COL_POS = PU_POS.
  289. WA_STRUCTURE-FIELDNAME = PU_FNAME.
  290. WA_STRUCTURE-SCRTEXT_L = PU_FTEXT.
  291. WA_STRUCTURE-SCRTEXT_M = PU_FTEXT.
  292. WA_STRUCTURE-SCRTEXT_S = PU_FTEXT.
  293. WA_STRUCTURE-REF_FIELD = PU_RFIELD.
  294. WA_STRUCTURE-REF_TABLE = PU_RTABLE.
  295. WA_STRUCTURE-QFIELDNAME = PU_QNAME.
  296. WA_STRUCTURE-EDIT = PU_EDIT.
  297. WA_STRUCTURE-KEY = 'X'.
  298. APPEND WA_STRUCTURE TO IT_STRUCTURE.
  299. ENDFORM. " FRM_ALV_FCAT_S

动态ALV表实例-移动类型汇总的更多相关文章

  1. 转ABAP将内表行列转换实例(动态内表) .

    把内表的行列转换,网上的例子很多,但是新人想看懂,几乎很难,所以总结下我是怎么完成的. 比如:你的内表如图: 你想让内表最后展示成这样:如图: 那么完成之后会是这样: 完成这个过程,得用到动态内表.看 ...

  2. ABAP 动态内表 动态ALV

    DATA: DY_TABLE TYPE REF TO DATA, DY_WA TYPE REF TO DATA. FIELD-SYMBOLS: <DYN_TABLE> TYPE TABLE ...

  3. 第三天:字典表dict、元组tuple、文件与类型汇总

    1.字典表dict 声明 {键: 值,...} dict(键=值) d = {'isbn':'13123','title':'python入门'} #字典表中的键不能使用诸如列表这种可以改变的,只能使 ...

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

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

  5. ALV TREE 实例

    ALV TREE 实例 REPORT ZRPT_PS_PS021TREE . TABLES: PROJ, "项目定义数据 PRPS, "WBS元素数据 ZCJ30, "A ...

  6. JavaScript正則表達式知识汇总

    Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegE ...

  7. ABAP 动态内表添加单元格颜色字段

    *动态内表alv显示时要求某些单元格显示颜色 *wa_fldcat-datatype不能添加LVC_T_SCOL类型,在创建好内表之后,再添加颜色列. DATA: wa_fldcat TYPE lvc ...

  8. 菜鸟学SSH(十八)——Hibernate动态模型+JRebel实现动态创建表

    项目用的是SSH基础框架,当中有一些信息非常相似,但又不尽同样.假设每个建一个实体的话,那样实体会太多.假设分组抽象,然后继承,又不是特别有规律.鉴于这样的情况.就打算让用户自己配置要加入的字段,然后 ...

  9. 学习动态性能表(2)--v$sesstat

    学习动态性能表 第二篇--v$sesstat  2007.5.25 按照OracleOnlineBook中的描述,v$sesstat存储session从login到logout的详细资源使用统计. 类 ...

随机推荐

  1. go-爬虫-百度贴吧(并发版)

    爬取百度贴吧的网页 非并发版 package main import ( "fmt" "io" "net/http" "os&qu ...

  2. 刷抖音太累,教你用Python把高颜值的小姐姐都爬下来慢慢看

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 星安果.AirPython 目 标 场 景 相信大家平时刷抖音短视频 ...

  3. Java技巧——比较两个日期相差的天数

    Java技巧——比较两个日期相差的天数 摘要:本文主要记录了在Java里面如何判断两个日期相差的天数. 判断两个Date类型的日期之间的天数 通过计算毫秒数判断: public static void ...

  4. python生产者和消费者模式实现(一)普通方式

    import timeimport randomfrom multiprocessing import Queue # 生产者def producer(q, num): for i in range( ...

  5. [日常] 小白来装机基本概念BIOS与硬盘分区

    这两天因为在linux进行测试,先是搞坏了linux的系统,然后在重装linux系统后搞坏了引导.在修复引导的过程中,搞坏了本机的win8系统,再次修复引导与重装linux后,linux可以访问了,w ...

  6. [PHP] 基于redis的分布式锁防止高并发重复请求

    需求:我们先举个某系统验证的列子:(A渠道系统,业务B系统,外部厂商C系统) (1)B业务系统调用A渠道系统,验证传入的手机.身份证.姓名三要素是否一致. (2)A渠道系统再调用外部厂商C系统. (3 ...

  7. JDBC API浅析

    使用java开发数据库应用程序一般都需要用到四个接口:Driver.Connection.Statement.ResultSet 1.Driver接口用于加载驱动程序 2.Connection接口用于 ...

  8. localStorage在不同页面之间的设置值与取值--加密 localStorage与解密localStorage

    在aa.vue页面 <template> <div> <h1>在aa页面设置值</h1> <button @click="shezhi& ...

  9. 关联规则 -- apriori 和 FPgrowth 的基本概念及基于python的算法实现

    apriori 使用Apriori算法进行关联分析 貌似网上给的代码是这个大牛写的 关联规则挖掘及Apriori实现购物推荐  老师 Apriori 的python算法实现 python实现关联规则  ...

  10. 微信小程序云开发-从0打造云音乐全栈小程序

    第1章 首门小程序“云开发”课程,你值得学习本章主要介绍什么是小程序云开发以及学习云开发的重要性,并介绍项目的整体架构,真机演示项目功能,详细介绍整体课程安排.课程适用人群以及需要掌握的前置知识.通过 ...