1 ********************************************************************
2 * 事务代码: *
3 * 程序名称:ZCOR_013 *
4 * 程序目的:生产成本明细表 *
5 * 使用变式: *
6 * 设 计 人:DONGDONG *
7 *(修改日志)-------------------------------------------------------- *
8 * 日志号 修改人 修改时间 修改说明 传输号码 *
9 * ---- ------ ------ ----------- -----------
10 * 001 DONGDONG 20210224 新建 DEVK906724
11 ********************************************************************
12 REPORT zcor_013.
13 ************************************************************************
14 * TABLES
15 ************************************************************************
16 TABLES: mara,mseg,zv_dd_line.
17 TABLES: sscrfields.
18 TYPE-POOLS: slis,vrm. "声明类型池,使slis_t_specialcol_alv所在的包被包含进来
19 ************************************************************************
20 * 类型定义
21 ************************************************************************
22 TYPES: BEGIN OF ty_alv,
23 bukrs TYPE mseg-bukrs, "公司
24 werks TYPE mseg-werks, "工厂
25 budat_mkpf TYPE mseg-budat_mkpf, "过账日期
26 "bwart TYPE mseg-bwart, "移动类型
27 matnr TYPE mseg-matnr, "物料
28 groes TYPE mara-groes, "物料的大小量纲
29 maktx TYPE makt-maktx, "物料描述
30 mtart TYPE mara-mtart, "物料类型
31 shkzg TYPE mseg-shkzg, "借贷标识
32 mblnr TYPE mseg-mblnr, "物料凭证
33 mjahr TYPE mseg-mjahr, "物料凭证年度
34 zeile TYPE mseg-zeile, "物料凭证行
35 smbln TYPE mseg-smbln, "被冲销凭证
36 sjahr TYPE mseg-sjahr, "被冲销凭证年度
37 smblp TYPE mseg-smblp, "被冲销凭证行
38 aufnr TYPE mseg-aufnr, "生产订单号
39 kostl TYPE mseg-kostl, "成本中心
40 verid_nd TYPE zv_dd_line-verid_nd, "生产版本
41 text1 TYPE zv_dd_line-text1, "生产版本描述
42 dmbtr TYPE mseg-dmbtr, "金额
43 waers TYPE mseg-waers, "货币单位
44 menge TYPE mseg-menge, "库存单位数量
45 meins TYPE mseg-meins, "库存单位
46
47 END OF ty_alv.
48
49 TYPES: BEGIN OF ty_show,
50 bukrs TYPE mseg-bukrs, "公司
51 werks TYPE mseg-werks, "工厂
52 budat_mkpf TYPE mseg-budat_mkpf, "过账日期
53 matnr TYPE mseg-matnr, "物料
54 groes TYPE mara-groes, "物料的大小量纲
55 maktx TYPE makt-maktx, "物料描述
56 mtart TYPE mara-mtart, "物料类型
57 aufnr TYPE mseg-aufnr, "生产订单号
58 kostl TYPE mseg-kostl, "成本中心
59 verid_nd TYPE zv_dd_line-verid_nd, "生产版本
60 text1 TYPE zv_dd_line-text1, "生产版本描述
61 dmbtr TYPE mseg-dmbtr, "金额
62 waers TYPE mseg-waers, "货币单位
63 menge TYPE mseg-menge, "库存单位数量
64 meins TYPE mseg-meins, "库存单位
65
66 END OF ty_show.
67
68 TYPES: BEGIN OF ty_final,
69 bukrs TYPE mseg-bukrs, "公司
70 werks TYPE mseg-werks, "工厂
71 year TYPE gjahr,
72 month TYPE co_perio, "会计期间
73 "budat_mkpf TYPE mseg-budat_mkpf, "过账日期
74 matnr TYPE mseg-matnr, "物料
75 groes TYPE mara-groes, "物料的大小量纲
76 width TYPE mara-groes, "厚度
77 maktx TYPE makt-maktx, "物料描述
78 "mtart TYPE mara-mtart, "物料类型
79 aufnr TYPE mseg-aufnr, "生产订单号
80 kostl TYPE mseg-kostl, "成本中心
81 verid_nd TYPE zv_dd_line-verid_nd, "生产版本
82 text1 TYPE zv_dd_line-text1, "生产版本描述
83 dmbtr TYPE mseg-dmbtr, "金额
84 waers TYPE mseg-waers, "货币单位
85 menge TYPE mseg-menge, "库存单位数量
86 meins TYPE mseg-meins, "库存单位
87 menge_zx TYPE p DECIMALS 4, "重箱
88
89 yl001mg TYPE mseg-menge, "原料1数量
90 yl001ms TYPE mseg-meins, "原料1数量单位
91 yl001dr TYPE mseg-dmbtr, "原料1金额
92 yl001ws TYPE mseg-waers, "原料1金额单位
93
94 yl002mg TYPE mseg-menge, "原料1数量
95 yl002ms TYPE mseg-meins, "原料1数量单位
96 yl002dr TYPE mseg-dmbtr, "原料1金额
97 yl002ws TYPE mseg-waers, "原料1金额单位
98
99 yl003mg TYPE mseg-menge, "原料1数量
100 yl003ms TYPE mseg-meins, "原料1数量单位
101 yl003dr TYPE mseg-dmbtr, "原料1金额
102 yl003ws TYPE mseg-waers, "原料1金额单位
103
104 yl004mg TYPE mseg-menge, "原料1数量
105 yl004ms TYPE mseg-meins, "原料1数量单位
106 yl004dr TYPE mseg-dmbtr, "原料1金额
107 yl004ws TYPE mseg-waers, "原料1金额单位
108
109 yl005mg TYPE mseg-menge, "原料1数量
110 yl005ms TYPE mseg-meins, "原料1数量单位
111 yl005dr TYPE mseg-dmbtr, "原料1金额
112 yl005ws TYPE mseg-waers, "原料1金额单位
113
114 yl006mg TYPE mseg-menge, "原料1数量
115 yl006ms TYPE mseg-meins, "原料1数量单位
116 yl006dr TYPE mseg-dmbtr, "原料1金额
117 yl006ws TYPE mseg-waers, "原料1金额单位
118
119 yl007mg TYPE mseg-menge, "原料1数量
120 yl007ms TYPE mseg-meins, "原料1数量单位
121 yl007dr TYPE mseg-dmbtr, "原料1金额
122 yl007ws TYPE mseg-waers, "原料1金额单位
123
124 yl008mg TYPE mseg-menge, "原料1数量
125 yl008ms TYPE mseg-meins, "原料1数量单位
126 yl008dr TYPE mseg-dmbtr, "原料1金额
127 yl008ws TYPE mseg-waers, "原料1金额单位
128
129 yl009mg TYPE mseg-menge, "原料1数量
130 yl009ms TYPE mseg-meins, "原料1数量单位
131 yl009dr TYPE mseg-dmbtr, "原料1金额
132 yl009ws TYPE mseg-waers, "原料1金额单位
133
134 yl010mg TYPE mseg-menge, "原料1数量
135 yl010ms TYPE mseg-meins, "原料1数量单位
136 yl010dr TYPE mseg-dmbtr, "原料1金额
137 yl010ws TYPE mseg-waers, "原料1金额单位
138
139 rl001mg TYPE mseg-menge, "燃料1数量
140 rl001ms TYPE mseg-meins, "燃料1数量单位
141 rl001dr TYPE mseg-dmbtr, "燃料1金额
142 rl001ws TYPE mseg-waers, "燃料1金额单位
143
144 rl002mg TYPE mseg-menge, "燃料1数量
145 rl002ms TYPE mseg-meins, "燃料1数量单位
146 rl002dr TYPE mseg-dmbtr, "燃料1金额
147 rl002ws TYPE mseg-waers, "燃料1金额单位
148
149 rl003mg TYPE mseg-menge, "燃料1数量
150 rl003ms TYPE mseg-meins, "燃料1数量单位
151 rl003dr TYPE mseg-dmbtr, "燃料1金额
152 rl003ws TYPE mseg-waers, "燃料1金额单位
153
154 rl004mg TYPE mseg-menge, "燃料1数量
155 rl004ms TYPE mseg-meins, "燃料1数量单位
156 rl004dr TYPE mseg-dmbtr, "燃料1金额
157 rl004ws TYPE mseg-waers, "燃料1金额单位
158
159 cb001mg TYPE mseg-menge, "成本要素1数量
160 cb001ms TYPE mseg-meins, "成本要素1数量单位
161 cb001dr TYPE mseg-dmbtr, "成本要素1金额
162 cb001ws TYPE mseg-waers, "成本要素1金额单位
163
164 cb002mg TYPE mseg-menge, "成本要素1数量
165 cb002ms TYPE mseg-meins, "成本要素1数量单位
166 cb002dr TYPE mseg-dmbtr, "成本要素1金额
167 cb002ws TYPE mseg-waers, "成本要素1金额单位
168
169 cb003mg TYPE mseg-menge, "成本要素1数量
170 cb003ms TYPE mseg-meins, "成本要素1数量单位
171 cb003dr TYPE mseg-dmbtr, "成本要素1金额
172 cb003ws TYPE mseg-waers, "成本要素1金额单位
173
174 cb004mg TYPE mseg-menge, "成本要素1数量
175 cb004ms TYPE mseg-meins, "成本要素1数量单位
176 cb004dr TYPE mseg-dmbtr, "成本要素1金额
177 cb004ws TYPE mseg-waers, "成本要素1金额单位
178
179 cb005mg TYPE mseg-menge, "成本要素1数量
180 cb005ms TYPE mseg-meins, "成本要素1数量单位
181 cb005dr TYPE mseg-dmbtr, "成本要素1金额
182 cb005ws TYPE mseg-waers, "成本要素1金额单位
183
184 cb006mg TYPE mseg-menge, "成本要素1数量
185 cb006ms TYPE mseg-meins, "成本要素1数量单位
186 cb006dr TYPE mseg-dmbtr, "成本要素1金额
187 cb006ws TYPE mseg-waers, "成本要素1金额单位
188
189 cb007mg TYPE mseg-menge, "成本要素1数量
190 cb007ms TYPE mseg-meins, "成本要素1数量单位
191 cb007dr TYPE mseg-dmbtr, "成本要素1金额
192 cb007ws TYPE mseg-waers, "成本要素1金额单位
193
194 cb008mg TYPE mseg-menge, "成本要素1数量
195 cb008ms TYPE mseg-meins, "成本要素1数量单位
196 cb008dr TYPE mseg-dmbtr, "成本要素1金额
197 cb008ws TYPE mseg-waers, "成本要素1金额单位
198
199 cb009mg TYPE mseg-menge, "成本要素1数量
200 cb009ms TYPE mseg-meins, "成本要素1数量单位
201 cb009dr TYPE mseg-dmbtr, "成本要素1金额
202 cb009ws TYPE mseg-waers, "成本要素1金额单位
203
204 cb010mg TYPE mseg-menge, "成本要素1数量
205 cb010ms TYPE mseg-meins, "成本要素1数量单位
206 cb010dr TYPE mseg-dmbtr, "成本要素1金额
207 cb010ws TYPE mseg-waers, "成本要素1金额单位
208
209 cb011mg TYPE mseg-menge, "成本要素1数量
210 cb011ms TYPE mseg-meins, "成本要素1数量单位
211 cb011dr TYPE mseg-dmbtr, "成本要素1金额
212 cb011ws TYPE mseg-waers, "成本要素1金额单位
213
214 cb012mg TYPE mseg-menge, "成本要素1数量
215 cb012ms TYPE mseg-meins, "成本要素1数量单位
216 cb012dr TYPE mseg-dmbtr, "成本要素1金额
217 cb012ws TYPE mseg-waers, "成本要素1金额单位
218
219 cb013mg TYPE mseg-menge, "成本要素1数量
220 cb013ms TYPE mseg-meins, "成本要素1数量单位
221 cb013dr TYPE mseg-dmbtr, "成本要素1金额
222 cb013ws TYPE mseg-waers, "成本要素1金额单位
223
224 cb014mg TYPE mseg-menge, "成本要素1数量
225 cb014ms TYPE mseg-meins, "成本要素1数量单位
226 cb014dr TYPE mseg-dmbtr, "成本要素1金额
227 cb014ws TYPE mseg-waers, "成本要素1金额单位
228
229 cb015mg TYPE mseg-menge, "成本要素1数量
230 cb015ms TYPE mseg-meins, "成本要素1数量单位
231 cb015dr TYPE mseg-dmbtr, "成本要素1金额
232 cb015ws TYPE mseg-waers, "成本要素1金额单位
233
234 END OF ty_final.
235
236
237 TYPES:BEGIN OF ty_all,
238 budat_mkpf TYPE mseg-budat_mkpf. "过账日期
239 INCLUDE TYPE ty_final.
240 TYPES:END OF ty_all.
241
242
243 TYPES: BEGIN OF ty_cp,
244 bukrs TYPE mseg-bukrs, "公司
245 werks TYPE mseg-werks, "工厂
246 budat_mkpf TYPE mseg-budat_mkpf, "过账日期
247 kostl TYPE mseg-kostl, "成本中心
248 menge TYPE mseg-menge, "库存单位数量
249 meins TYPE mseg-meins, "库存单位
250
251 END OF ty_cp.
252
253 TYPES:BEGIN OF ty_cb_sum,
254 bukrs TYPE coep-bukrs, "公司
255 "werks TYPE coep-werks, "工厂
256 aufnr TYPE coep-aufnr, "订单
257 matnr TYPE coep-matnr, "物料
258 gkoar TYPE coep-gkoar, "冲销科目类型()
259 gjahr TYPE coep-gjahr, "财年
260 perio TYPE coep-perio, "期间
261 wtgbtr TYPE coep-wtgbtr, "业务货币值
262 twaer TYPE coep-twaer, "交易货币
263 megbtr TYPE coep-megbtr, "总计数量
264 meinh TYPE coep-meinh, "计量单位
265 kstar TYPE coep-kstar, "成本要素
266 paccas TYPE coep-paccas, "合作伙伴科目分配
267 END OF ty_cb_sum."成本要素结构
268
269 TYPES:BEGIN OF ty_cb,
270 belnr TYPE coep-belnr, "凭证编号
271 buzei TYPE coep-buzei. "过账行
272 INCLUDE TYPE: ty_cb_sum.
273
274 TYPES:END OF ty_cb.
275
276 ************************************************************************
277 * 内表&工作区声明
278 ************************************************************************
279 DATA: gt_alv TYPE TABLE OF ty_alv, "原料和成品的投入产出
280 gt_alv1 TYPE TABLE OF ty_alv, "燃料的消耗
281 gs_alv TYPE ty_alv,
282 gt_show TYPE TABLE OF ty_show,
283 gt_show1 TYPE TABLE OF ty_show,
284 gs_show TYPE ty_show.
285
286 DATA: gt_cp TYPE TABLE OF ty_cp,
287 gs_cp TYPE ty_cp.
288
289 DATA: gt_all TYPE TABLE OF ty_all,
290 gs_all TYPE ty_all.
291
292 DATA: gt_cb TYPE TABLE OF ty_cb,
293 gs_cb TYPE ty_cb,
294 gt_cb_sum TYPE TABLE OF ty_cb_sum,
295 gs_cb_sum TYPE ty_cb_sum.
296
297 DATA: gt_final TYPE TABLE OF ty_final,
298 gs_final TYPE ty_final.
299
300 DATA: hs_show TYPE HASHED TABLE OF ty_show WITH UNIQUE KEY bukrs werks budat_mkpf kostl mtart matnr groes maktx aufnr verid_nd text1 waers meins
301 WITH HEADER LINE.
302 DATA: hs_show1 TYPE HASHED TABLE OF ty_show WITH UNIQUE KEY bukrs werks budat_mkpf kostl mtart matnr groes maktx aufnr verid_nd text1 waers meins
303 WITH HEADER LINE.
304 DATA: hs_cp TYPE HASHED TABLE OF ty_cp WITH UNIQUE KEY bukrs werks budat_mkpf kostl meins
305 WITH HEADER LINE.
306 DATA: hs_cb TYPE HASHED TABLE OF ty_cb_sum WITH UNIQUE KEY bukrs aufnr matnr gkoar gjahr perio twaer meinh kstar paccas "belnr buzei
307 WITH HEADER LINE.
308 DATA:hs_final TYPE HASHED TABLE OF ty_final WITH UNIQUE KEY bukrs werks year month kostl matnr groes
309 width maktx aufnr verid_nd text1 waers meins
310 yl001ms yl001ws yl002ms yl002ws yl003ms yl003ws
311 yl004ms yl004ws yl005ms yl005ws yl006ms yl006ws
312 yl007ms yl007ws yl008ms yl008ws yl009ms yl009ws
313 yl010ms yl010ws rl001ms rl001ws rl002ms rl002ws
314 rl003ms rl003ws rl004ms rl004ws
315 cb001ms cb001ws cb002ms cb002ws cb003ms cb003ws
316 cb004ms cb004ws cb005ms cb005ws cb006ms cb006ws
317 cb007ms cb007ws cb008ms cb008ws cb009ms cb009ws
318 cb010ms cb010ws cb011ms cb011ws cb012ms cb012ws
319 cb013ms cb013ws cb014ms cb014ws cb015ms cb015ws
320
321 WITH HEADER LINE.
322
323 DATA: gs_variant TYPE disvariant.
324
325 *&---定义ALV显示的字段列及其描述等属性
326 DATA: gt_fcat TYPE lvc_t_fcat,
327 gs_fcat TYPE lvc_s_fcat,
328 gt_fcat_d TYPE lvc_t_fcat,
329 gs_fcat_d TYPE lvc_s_fcat,
330 gs_layout TYPE lvc_s_layo.
331 DATA: gs_grid_settings TYPE lvc_s_glay.
332 DATA: gt_raw_data TYPE truxs_t_text_data.
333
334
335 ************************************************************************
336 * 全局变量声明
337 ************************************************************************
338 DATA:yl001 TYPE matnr VALUE '000000101201000001', "高铁石英砂
339 yl002 TYPE matnr VALUE '000000101201000002', "低铁石英砂
340 yl003 TYPE matnr VALUE '000000101301000001', " 石灰石
341 yl004 TYPE matnr VALUE '000000101401000001', " 碱
342 yl005 TYPE matnr VALUE '000000101501000001', "元明粉
343 yl006 TYPE matnr VALUE '000000101601000001', "高铁白云
344 yl007 TYPE matnr VALUE '000000101601000002', "低铁白云
345 yl008 TYPE matnr VALUE '000000101701000001', "长石
346 yl009 TYPE matnr VALUE '000000101801000001', " 外购碎玻璃
347 yl010 TYPE matnr VALUE '000000101901000001', " 外购煤粉
348 rl001 TYPE matnr VALUE '000000110501000080', "调和油
349 rl002 TYPE matnr VALUE '000000140101000004', "石油沥青
350 rl003 TYPE matnr VALUE '000000140102000001', "天然气
351 rl004 TYPE matnr VALUE '000000140103000001'. "块煤
352 ************************************************************************
353 * 宏声明
354 ************************************************************************
355 DATA:lv_txt TYPE maktx.
356 DEFINE m_fill_fieldcat.
357 CLEAR gs_fcat.
358 gs_fcat-fieldname = &1.
359 gs_fcat-coltext = &2.
360 gs_fcat-no_zero = &3.
361 gs_fcat-outputlen = &4.
362 gs_fcat-key = &5.
363 gs_fcat-fix_column = &6.
364 gs_fcat-edit = &7.
365
366 CLEAR:lv_txt.
367 SELECT SINGLE maktx
368 INTO lv_txt
369 FROM makt
370 WHERE matnr = gs_fcat-coltext
371 AND spras = sy-langu.
372
373 CASE gs_fcat-fieldname+5(2).
374 WHEN 'MG'.
375 gs_fcat-coltext = lv_txt && '(数量)'.
376 WHEN 'MS'.
377 gs_fcat-coltext = lv_txt && '(数量单位)'.
378 WHEN 'DR'.
379 gs_fcat-coltext = lv_txt && '(金额)'.
380 WHEN 'WS'.
381 gs_fcat-coltext = lv_txt && '(金额单位)'.
382 WHEN OTHERS.
383 ENDCASE.
384 IF gs_fcat-fieldname+0(2) EQ 'CB' AND lv_txt IS NOT INITIAL.
385 gs_fcat-coltext = '成本要素-' && gs_fcat-coltext.
386 ELSEIF gs_fcat-fieldname+0(2) EQ 'CB' AND lv_txt IS INITIAL..
387 gs_fcat-coltext = &2 && gs_fcat-coltext.
388 ENDIF.
389 APPEND gs_fcat TO gt_fcat.
390 END-OF-DEFINITION.
391 ************************************************************************
392 * 选择屏幕参数
393 ************************************************************************
394 SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE TEXT-001.
395
396 PARAMETERS: p_werks TYPE marc-werks OBLIGATORY DEFAULT '1000',
397 p_gjahr TYPE mseg-gjahr OBLIGATORY DEFAULT sy-datum+0(4),
398 p_monat TYPE bkpf-monat OBLIGATORY DEFAULT sy-datum+4(2).
399
400 SELECT-OPTIONS: s_mat FOR zv_dd_line-matnr.
401 SELECTION-SCREEN END OF BLOCK bk1.
402
403 SELECTION-SCREEN BEGIN OF BLOCK list WITH FRAME TITLE TEXT-002.
404 PARAMETERS: pa_bwber LIKE rfpdo3-allgbwbe NO-DISPLAY.
405 PARAMETERS: pa_vari TYPE slis_vari,
406 pa_nmax LIKE itemset-nmax.
407 SELECTION-SCREEN END OF BLOCK list.
408 *... end of selection screen layout.
409 ************************************************************************
410 *& 初始化处理
411 ************************************************************************
412 INITIALIZATION.
413 *&---------------------------------------------------------------------*
414 *& at selection-screen output/选择屏幕前 *
415 *&---------------------------------------------------------------------*
416 AT SELECTION-SCREEN OUTPUT.
417 ************************************************************************
418 *& 选择屏幕控制
419 ************************************************************************
420 AT SELECTION-SCREEN.
421
422 AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_vari.
423 PERFORM alv_variant_f4 CHANGING pa_vari.
424 ************************************************************************
425 * EVENT START OF SELECTION
426 ************************************************************************
427 START-OF-SELECTION.
428 PERFORM frm_get_data.
429 ************************************************************************
430 *EVENT END OF SELECTION
431 ************************************************************************
432 END-OF-SELECTION.
433 PERFORM frm_create_fieldcat.
434 PERFORM frm_layout_init.
435 PERFORM frm_display_alv.
436 *&---------------------------------------------------------------------*
437 *& Form FRM_GET_DATA
438 *&---------------------------------------------------------------------*
439 *& text
440 *&---------------------------------------------------------------------*
441 *& --> p1 text
442 *& <-- p2 text
443 *&---------------------------------------------------------------------*
444 FORM frm_get_data .
445 DATA: lr_budat TYPE RANGE OF budat WITH HEADER LINE.
446
447 DATA: lv_jahrper TYPE mldoc-jahrper,
448 lv_poper TYPE ckmlprkeph-poper.
449
450 DATA: lt_data TYPE TABLE OF ty_alv,
451 ls_data TYPE ty_alv.
452
453 DATA:lv_groes_1 TYPE mara-groes, "长
454 lv_groes_2 TYPE mara-groes, "宽
455 lv_groes_3 TYPE mara-groes. "厚
456
457 DATA:lv_rc TYPE sy-subrc,
458 lv_coeff TYPE bstmg.
459
460 CLEAR lr_budat.
461 lr_budat-sign = 'I'.
462 lr_budat-option = 'BT'.
463 lr_budat-low = p_gjahr && p_monat && '01'.
464 CALL FUNCTION 'BKK_GET_MONTH_LASTDAY' "获取当前月的最后一天
465 EXPORTING
466 i_date = lr_budat-low
467 IMPORTING
468 e_date = lr_budat-high.
469 APPEND lr_budat.
470
471 REFRESH gt_alv.
472
473 **第一步取出成品入库和原料投料信息
474 SELECT
475 a~bukrs
476 a~werks
477 a~budat_mkpf
478 "a~bwart
479 a~matnr
480 c~groes
481 d~maktx
482 c~mtart
483 a~shkzg
484 a~mblnr
485 a~mjahr
486 a~zeile
487 a~smbln
488 a~sjahr
489 a~smblp
490 a~aufnr
491 a~kostl
492 b~verid_nd
493 b~text1
494 a~dmbtr
495 a~waers
496 a~menge
497 a~meins
498 INTO CORRESPONDING FIELDS OF TABLE gt_alv
499 FROM mseg AS a
500 INNER JOIN zv_dd_line AS b
501 ON a~aufnr = b~aufnr
502 INNER JOIN mara AS c
503 ON a~matnr = c~matnr
504 INNER JOIN makt AS d
505 ON c~matnr = d~matnr
506 WHERE a~werks EQ p_werks
507 AND a~gjahr EQ p_gjahr
508 AND a~budat_mkpf IN lr_budat
509 AND b~matnr IN s_mat
510 AND d~spras = sy-langu.
511
512 **取成本中心与生产版本对应关系
513 SELECT
514 *
515 INTO TABLE @DATA(lt_co007)
516 FROM ztco10007_1.
517 SORT lt_co007 BY verid kostl.
518
519 SORT gt_alv BY mjahr mblnr zeile.
520
521 LOOP AT gt_alv INTO gs_alv.
522 IF gs_alv-smbln IS NOT INITIAL."将冲销物料凭证和被冲销物料凭证过滤掉
523 READ TABLE gt_alv INTO DATA(ls_alv) WITH KEY mjahr = gs_alv-sjahr
524 mblnr = gs_alv-smbln
525 zeile = gs_alv-smblp BINARY SEARCH.
526 IF sy-subrc EQ 0.
527 DELETE TABLE gt_alv FROM ls_alv.
528 DELETE TABLE gt_alv FROM gs_alv.
529 CONTINUE.
530 ENDIF.
531 ELSE."给每一行赋值对应成本中心
532 READ TABLE lt_co007 INTO DATA(lv_co007) WITH KEY verid = gs_alv-verid_nd BINARY SEARCH.
533 "kostl+9(1) = gs_alv-verid_nd+3(1).
534 IF sy-subrc EQ 0.
535 gs_alv-kostl = lv_co007-kostl.
536 ENDIF.
537
538 IF gs_alv-shkzg EQ 'H'.
539 gs_alv-menge = gs_alv-menge * -1.
540 gs_alv-dmbtr = gs_alv-dmbtr * -1.
541 ENDIF.
542 ENDIF.
543 MODIFY gt_alv FROM gs_alv.
544 ENDLOOP.
545
546 **第二步取出燃料每日的消耗量
547 IF gt_alv IS NOT INITIAL.
548 SELECT
549 a~bukrs
550 a~werks
551 a~budat_mkpf
552 "a~bwart
553 a~matnr
554 c~mtart
555 a~shkzg
556 a~mblnr
557 a~mjahr
558 a~zeile
559 a~smbln
560 a~sjahr
561 a~smblp
562 a~aufnr
563 a~kostl
564 b~verid AS verid_nd
565
566 a~dmbtr
567 a~waers
568 a~menge
569 a~meins
570 INTO CORRESPONDING FIELDS OF TABLE gt_alv1
571 FROM mseg AS a
572 INNER JOIN mara AS c
573 ON a~matnr = c~matnr
574 INNER JOIN ztco10007 AS b
575 ON a~kostl = b~kostl
576 FOR ALL ENTRIES IN gt_alv
577 WHERE a~budat_mkpf IN lr_budat
578 AND a~matnr IN ( rl001,rl002,rl003,rl004 )
579 AND a~werks EQ p_werks
580 AND a~gjahr EQ p_gjahr
581 AND a~kostl = gt_alv-kostl
582 .
583
584 SORT gt_alv1 BY mjahr mblnr zeile.
585 CLEAR:gs_alv,ls_alv.
586 LOOP AT gt_alv1 INTO gs_alv.
587 IF gs_alv-smbln IS NOT INITIAL."将冲销物料凭证和被冲销物料凭证过滤掉
588 READ TABLE gt_alv1 INTO ls_alv WITH KEY mjahr = gs_alv-sjahr
589 mblnr = gs_alv-smbln
590 zeile = gs_alv-smblp BINARY SEARCH.
591 IF sy-subrc EQ 0.
592 DELETE TABLE gt_alv1 FROM ls_alv.
593 DELETE TABLE gt_alv1 FROM gs_alv.
594 CONTINUE.
595 ENDIF.
596 ENDIF.
597 IF gs_alv-shkzg EQ 'H'.
598 gs_alv-menge = gs_alv-menge * -1.
599 gs_alv-dmbtr = gs_alv-dmbtr * -1.
600 ENDIF.
601
602 MODIFY gt_alv1 FROM gs_alv.
603 ENDLOOP.
604
605
606 ENDIF.
607
608 **按相应条件进行金额和数量汇总
609 MOVE-CORRESPONDING gt_alv TO gt_show."原料和成品数据
610 MOVE-CORRESPONDING gt_alv1 TO gt_show1."燃料消耗数据
611 SORT gt_show BY bukrs werks aufnr budat_mkpf kostl mtart matnr verid_nd .
612 SORT gt_show1 BY bukrs werks aufnr budat_mkpf kostl mtart matnr verid_nd .
613
614 **汇总原料和成品的金额和数量
615 CLEAR gs_show.
616 LOOP AT gt_show INTO gs_show.
617 COLLECT gs_show INTO hs_show.
618 ENDLOOP.
619
620 **汇总燃料消耗数据
621 CLEAR gs_show.
622 LOOP AT gt_show1 INTO gs_show.
623 COLLECT gs_show INTO hs_show1.
624 ENDLOOP.
625
626 **将汇总后的数据重新赋值到原来内表中
627 REFRESH:gt_show ,gt_show1.
628 gt_show[] = hs_show[]."汇总后的成品和原料
629 gt_show1[] = hs_show1[]."汇总后的燃料数据
630
631 **取出每日成品产量和原料量
632 DATA:lt_cp TYPE TABLE OF ty_show,
633 lt_yl TYPE TABLE OF ty_show,
634 lt_rl TYPE TABLE OF ty_show.
635 LOOP AT gt_show INTO gs_show.
636 CASE gs_show-mtart.
637 WHEN 'Z004'."成品
638 APPEND gs_show TO lt_cp.
639 MOVE-CORRESPONDING gs_show TO hs_cp.
640 COLLECT hs_cp.
641 WHEN OTHERS."原料
642 APPEND gs_show TO lt_yl.
643 ENDCASE.
644 ENDLOOP.
645
646 MOVE-CORRESPONDING gt_show1 TO lt_rl.
647 gt_cp[] = hs_cp[]."按天按公司、工厂、成本中心汇总成品片数总量用来分摊燃料消耗量
648
649 **成本要素核算、工时、燃动力等实际消耗
650 IF gt_show IS NOT INITIAL.
651
652 SELECT
653 bukrs
654 "werks
655 aufnr
656 gkoar
657 matnr
658 belnr
659 buzei
660 gjahr
661 perio
662 wtgbtr
663 twaer
664 megbtr
665 meinh
666 kstar
667 paccas
668 INTO CORRESPONDING FIELDS OF TABLE gt_cb
669 FROM coep
670 FOR ALL ENTRIES IN gt_show
671 WHERE aufnr = gt_show-aufnr
672 AND gjahr = p_gjahr
673 AND perio = p_monat
674 AND bukrs = p_werks.
675 ENDIF.
676
677 SORT gt_cb BY gjahr perio bukrs aufnr gkoar matnr paccas kstar belnr buzei.
678
679 LOOP AT gt_cb INTO gs_cb.
680 MOVE-CORRESPONDING gs_cb TO hs_cb.
681 COLLECT hs_cb.
682 ENDLOOP.
683
684 gt_cb_sum[] = hs_cb[].
685 SORT gt_cb_sum BY gjahr perio bukrs aufnr gkoar matnr paccas kstar."实际核算的成本要素
686
687 SORT gt_cp BY bukrs werks budat_mkpf kostl."
688 SORT lt_cp BY bukrs werks budat_mkpf kostl aufnr matnr."成品
689 SORT lt_yl BY bukrs werks budat_mkpf kostl aufnr matnr."原料
690 SORT lt_rl BY bukrs werks budat_mkpf kostl aufnr matnr."燃料
691
692
693 **整理数据
694 LOOP AT lt_cp INTO gs_show.
695 MOVE-CORRESPONDING gs_show TO gs_all.
696 gs_all-year = gs_all-budat_mkpf+0(4).
697 gs_all-month = gs_all-budat_mkpf+4(2).
698 **高铁石英砂
699 READ TABLE lt_yl INTO DATA(ls_yl) WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
700 kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl001 BINARY SEARCH.
701 IF sy-subrc EQ 0.
702 gs_all-yl001mg = ls_yl-menge.
703 gs_all-yl001ms = ls_yl-meins.
704 gs_all-yl001dr = ls_yl-dmbtr.
705 gs_all-yl001ws = ls_yl-waers.
706 ENDIF.
707 CLEAR:ls_yl.
708 **低铁石英砂
709 READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
710 kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl002 BINARY SEARCH.
711 IF sy-subrc EQ 0.
712 gs_all-yl002mg = ls_yl-menge.
713 gs_all-yl002ms = ls_yl-meins.
714 gs_all-yl002dr = ls_yl-dmbtr.
715 gs_all-yl002ws = ls_yl-waers.
716 ENDIF.
717 CLEAR:ls_yl.
718 **石灰石
719 READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
720 kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl003 BINARY SEARCH.
721 IF sy-subrc EQ 0.
722 gs_all-yl003mg = ls_yl-menge.
723 gs_all-yl003ms = ls_yl-meins.
724 gs_all-yl003dr = ls_yl-dmbtr.
725 gs_all-yl003ws = ls_yl-waers.
726 ENDIF.
727 CLEAR:ls_yl.
728 **碱
729 READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
730 kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl004 BINARY SEARCH.
731 IF sy-subrc EQ 0.
732 gs_all-yl004mg = ls_yl-menge.
733 gs_all-yl004ms = ls_yl-meins.
734 gs_all-yl004dr = ls_yl-dmbtr.
735 gs_all-yl004ws = ls_yl-waers.
736 ENDIF.
737 CLEAR:ls_yl.
738 **元明粉
739 READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
740 kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl005 BINARY SEARCH.
741 IF sy-subrc EQ 0.
742 gs_all-yl005mg = ls_yl-menge.
743 gs_all-yl005ms = ls_yl-meins.
744 gs_all-yl005dr = ls_yl-dmbtr.
745 gs_all-yl005ws = ls_yl-waers.
746 ENDIF.
747 CLEAR:ls_yl.
748 **高铁白云
749 READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
750 kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl006 BINARY SEARCH.
751 IF sy-subrc EQ 0.
752 gs_all-yl006mg = ls_yl-menge.
753 gs_all-yl006ms = ls_yl-meins.
754 gs_all-yl006dr = ls_yl-dmbtr.
755 gs_all-yl006ws = ls_yl-waers.
756 ENDIF.
757 CLEAR:ls_yl.
758 **低铁白云
759 READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
760 kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl007 BINARY SEARCH.
761 IF sy-subrc EQ 0.
762 gs_all-yl007mg = ls_yl-menge.
763 gs_all-yl007ms = ls_yl-meins.
764 gs_all-yl007dr = ls_yl-dmbtr.
765 gs_all-yl007ws = ls_yl-waers.
766 ENDIF.
767 CLEAR:ls_yl.
768 **长石
769 READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
770 kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl008 BINARY SEARCH.
771 IF sy-subrc EQ 0.
772 gs_all-yl008mg = ls_yl-menge.
773 gs_all-yl008ms = ls_yl-meins.
774 gs_all-yl008dr = ls_yl-dmbtr.
775 gs_all-yl008ws = ls_yl-waers.
776 ENDIF.
777 CLEAR:ls_yl.
778 **外购碎玻璃
779 READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
780 kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl009 BINARY SEARCH.
781 IF sy-subrc EQ 0.
782 gs_all-yl009mg = ls_yl-menge.
783 gs_all-yl009ms = ls_yl-meins.
784 gs_all-yl009dr = ls_yl-dmbtr.
785 gs_all-yl009ws = ls_yl-waers.
786 ENDIF.
787 CLEAR:ls_yl.
788 **外购煤粉
789 READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
790 kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl010 BINARY SEARCH.
791 IF sy-subrc EQ 0.
792 gs_all-yl010mg = ls_yl-menge.
793 gs_all-yl010ms = ls_yl-meins.
794 gs_all-yl010dr = ls_yl-dmbtr.
795 gs_all-yl010ws = ls_yl-waers.
796 ENDIF.
797 CLEAR:ls_yl.
798
799 **找到当前成品总数以分摊燃料消耗
800 READ TABLE gt_cp INTO DATA(ls_c) WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
801 kostl = gs_show-kostl BINARY SEARCH.
802 IF sy-subrc EQ 0.
803 **调和油 110501000080
804 READ TABLE lt_rl INTO DATA(ls_rl) WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
805 kostl = gs_show-kostl matnr = rl001 BINARY SEARCH.
806 IF sy-subrc EQ 0.
807 gs_all-rl001mg = gs_show-menge / ls_c-menge * ls_rl-menge.
808 gs_all-rl001ms = ls_rl-meins.
809 gs_all-rl001dr = gs_show-menge / ls_c-menge * ls_rl-dmbtr.
810 gs_all-rl001ws = ls_rl-waers.
811 ENDIF.
812 CLEAR:ls_rl.
813 **石油沥青 140101000004
814 READ TABLE lt_rl INTO ls_rl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
815 kostl = gs_show-kostl matnr = rl002 BINARY SEARCH.
816 IF sy-subrc EQ 0.
817 gs_all-rl002mg = gs_show-menge / ls_c-menge * ls_rl-menge.
818 gs_all-rl002ms = ls_rl-meins.
819 gs_all-rl002dr = gs_show-menge / ls_c-menge * ls_rl-dmbtr.
820 gs_all-rl002ws = ls_rl-waers.
821 ENDIF.
822 CLEAR:ls_rl.
823 **天然气 140102000001
824 READ TABLE lt_rl INTO ls_rl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
825 kostl = gs_show-kostl matnr = rl003 BINARY SEARCH.
826 IF sy-subrc EQ 0.
827 gs_all-rl003mg = gs_show-menge / ls_c-menge * ls_rl-menge.
828 gs_all-rl003ms = ls_rl-meins.
829 gs_all-rl003dr = gs_show-menge / ls_c-menge * ls_rl-dmbtr.
830 gs_all-rl003ws = ls_rl-waers.
831 ENDIF.
832 CLEAR:ls_rl.
833 **块煤 140103000001
834 READ TABLE lt_rl INTO ls_rl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
835 kostl = gs_show-kostl matnr = rl004 BINARY SEARCH.
836 IF sy-subrc EQ 0.
837 gs_all-rl004mg = gs_show-menge / ls_c-menge * ls_rl-menge.
838 gs_all-rl004ms = ls_rl-meins.
839 gs_all-rl004dr = gs_show-menge / ls_c-menge * ls_rl-dmbtr.
840 gs_all-rl004ws = ls_rl-waers.
841 ENDIF.
842 CLEAR:ls_rl.
843 ENDIF.
844
845 **取出成品厚度及计算重箱数
846 CLEAR:lv_groes_1,
847 lv_groes_2,
848 lv_groes_3.
849
850 SPLIT gs_all-groes
851 AT 'X'
852 INTO lv_groes_1
853 lv_groes_2
854 lv_groes_3.
855 IF lv_groes_3 <> 0.
856 gs_all-width = lv_groes_3 && 'mm'.
857 CLEAR:lv_rc,lv_coeff.
858 PERFORM frm_check_number(zsdr_003) USING lv_groes_3 CHANGING lv_rc.
859
860 IF lv_rc = 0 AND lv_groes_3 NE 0.
861 lv_coeff = 20 / lv_groes_3.
862
863 gs_all-menge_zx = gs_all-menge * lv_groes_1 * lv_groes_2 / lv_coeff.
864 ENDIF.
865
866 ENDIF.
867
868
869
870 APPEND gs_all TO gt_all.
871
872 MOVE-CORRESPONDING gs_all TO hs_final.
873 COLLECT hs_final.
874
875 CLEAR gs_all.
876 ENDLOOP.
877
878 gt_final[] = hs_final[].
879
880 LOOP AT gt_final INTO gs_final.
881 **取出实际核算成本要素数据
882 CLEAR:gs_cb_sum.
883 *9000000001 人工作业及附加 成本要素
884 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
885 aufnr = gs_final-aufnr gkoar = '' matnr = '' kstar = '9000000001' BINARY SEARCH.
886 IF sy-subrc EQ 0.
887 gs_final-cb001mg = gs_cb_sum-megbtr.
888 gs_final-cb001ms = gs_cb_sum-meinh.
889 gs_final-cb001dr = gs_cb_sum-wtgbtr.
890 gs_final-cb001ws = gs_cb_sum-twaer.
891
892 ENDIF.
893 CLEAR:gs_cb_sum.
894 *9000000002 制造费用 成本要素
895 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
896 aufnr = gs_final-aufnr gkoar = '' matnr = '' kstar = '9000000002' BINARY SEARCH.
897 IF sy-subrc EQ 0.
898 gs_final-cb002mg = gs_cb_sum-megbtr.
899 gs_final-cb002ms = gs_cb_sum-meinh.
900 gs_final-cb002dr = gs_cb_sum-wtgbtr.
901 gs_final-cb002ws = gs_cb_sum-twaer.
902
903 ENDIF.
904 CLEAR:gs_cb_sum.
905 *9000000003 折旧费用 成本要素
906 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
907 aufnr = gs_final-aufnr gkoar = '' matnr = '' kstar = '9000000003' BINARY SEARCH.
908 IF sy-subrc EQ 0.
909 gs_final-cb003mg = gs_cb_sum-megbtr.
910 gs_final-cb003ms = gs_cb_sum-meinh.
911 gs_final-cb003dr = gs_cb_sum-wtgbtr.
912 gs_final-cb003ws = gs_cb_sum-twaer.
913
914 ENDIF.
915 CLEAR:gs_cb_sum.
916 *9000000004 能源动力 成本要素
917 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
918 aufnr = gs_final-aufnr gkoar = '' matnr = '' kstar = '9000000004' BINARY SEARCH.
919 IF sy-subrc EQ 0.
920 gs_final-cb004mg = gs_cb_sum-megbtr.
921 gs_final-cb004ms = gs_cb_sum-meinh.
922 gs_final-cb004dr = gs_cb_sum-wtgbtr.
923 gs_final-cb004ws = gs_cb_sum-twaer.
924
925 ENDIF.
926 CLEAR:gs_cb_sum.
927 *9000000005 其他制造费用 成本要素
928 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
929 aufnr = gs_final-aufnr gkoar = '' matnr = '' kstar = '9000000005' BINARY SEARCH.
930 IF sy-subrc EQ 0.
931 gs_final-cb005mg = gs_cb_sum-megbtr.
932 gs_final-cb005ms = gs_cb_sum-meinh.
933 gs_final-cb005dr = gs_cb_sum-wtgbtr.
934 gs_final-cb005ws = gs_cb_sum-twaer.
935
936 ENDIF.
937 CLEAR:gs_cb_sum.
938 *高铁石英砂 实际核算成本
939 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
940 aufnr = gs_final-aufnr gkoar = 'M' matnr = yl001 kstar = '5001010100' BINARY SEARCH.
941 IF sy-subrc EQ 0.
942 gs_final-cb006mg = gs_cb_sum-megbtr.
943 gs_final-cb006ms = gs_cb_sum-meinh.
944 gs_final-cb006dr = gs_cb_sum-wtgbtr.
945 gs_final-cb006ws = gs_cb_sum-twaer.
946
947 ENDIF.
948 CLEAR:gs_cb_sum.
949 *低铁石英砂 实际核算成本
950 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
951 aufnr = gs_final-aufnr gkoar = 'M' matnr = yl002 kstar = '5001010100' BINARY SEARCH.
952 IF sy-subrc EQ 0.
953 gs_final-cb007mg = gs_cb_sum-megbtr.
954 gs_final-cb007ms = gs_cb_sum-meinh.
955 gs_final-cb007dr = gs_cb_sum-wtgbtr.
956 gs_final-cb007ws = gs_cb_sum-twaer.
957
958 ENDIF.
959 CLEAR:gs_cb_sum.
960 *石灰石 实际核算成本
961 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
962 aufnr = gs_final-aufnr gkoar = 'M' matnr = yl003 kstar = '5001010100' BINARY SEARCH.
963 IF sy-subrc EQ 0.
964 gs_final-cb008mg = gs_cb_sum-megbtr.
965 gs_final-cb008ms = gs_cb_sum-meinh.
966 gs_final-cb008dr = gs_cb_sum-wtgbtr.
967 gs_final-cb008ws = gs_cb_sum-twaer.
968
969 ENDIF.
970 CLEAR:gs_cb_sum.
971 *碱 实际核算成本
972 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
973 aufnr = gs_final-aufnr gkoar = 'M' matnr = yl004 kstar = '5001010100' BINARY SEARCH.
974 IF sy-subrc EQ 0.
975 gs_final-cb009mg = gs_cb_sum-megbtr.
976 gs_final-cb009ms = gs_cb_sum-meinh.
977 gs_final-cb009dr = gs_cb_sum-wtgbtr.
978 gs_final-cb009ws = gs_cb_sum-twaer.
979
980 ENDIF.
981 CLEAR:gs_cb_sum.
982 *元明粉实际核算成本
983 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
984 aufnr = gs_final-aufnr gkoar = 'M' matnr = yl005 kstar = '5001010100' BINARY SEARCH.
985 IF sy-subrc EQ 0.
986 gs_final-cb010mg = gs_cb_sum-megbtr.
987 gs_final-cb010ms = gs_cb_sum-meinh.
988 gs_final-cb010dr = gs_cb_sum-wtgbtr.
989 gs_final-cb010ws = gs_cb_sum-twaer.
990 ENDIF.
991 CLEAR:gs_cb_sum.
992 *高铁白云 实际核算成本
993 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
994 aufnr = gs_final-aufnr gkoar = 'M' matnr = yl006 kstar = '5001010100' BINARY SEARCH.
995 IF sy-subrc EQ 0.
996 gs_final-cb011mg = gs_cb_sum-megbtr.
997 gs_final-cb011ms = gs_cb_sum-meinh.
998 gs_final-cb011dr = gs_cb_sum-wtgbtr.
999 gs_final-cb011ws = gs_cb_sum-twaer.
1000 ENDIF.
1001 CLEAR:gs_cb_sum.
1002 *低铁白云 实际核算成本
1003 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
1004 aufnr = gs_final-aufnr gkoar = 'M' matnr = yl007 kstar = '5001010100' BINARY SEARCH.
1005 IF sy-subrc EQ 0.
1006 gs_final-cb012mg = gs_cb_sum-megbtr.
1007 gs_final-cb012ms = gs_cb_sum-meinh.
1008 gs_final-cb012dr = gs_cb_sum-wtgbtr.
1009 gs_final-cb012ws = gs_cb_sum-twaer.
1010 ENDIF.
1011 CLEAR:gs_cb_sum.
1012 *长石 实际核算成本
1013 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
1014 aufnr = gs_final-aufnr gkoar = 'M' matnr = yl008 kstar = '5001010100' BINARY SEARCH.
1015 IF sy-subrc EQ 0.
1016 gs_final-cb013mg = gs_cb_sum-megbtr.
1017 gs_final-cb013ms = gs_cb_sum-meinh.
1018 gs_final-cb013dr = gs_cb_sum-wtgbtr.
1019 gs_final-cb013ws = gs_cb_sum-twaer.
1020 ENDIF.
1021 CLEAR:gs_cb_sum.
1022 *外购碎玻璃实际核算成本
1023 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
1024 aufnr = gs_final-aufnr gkoar = 'M' matnr = yl009 kstar = '5001010100' BINARY SEARCH.
1025 IF sy-subrc EQ 0.
1026 gs_final-cb014mg = gs_cb_sum-megbtr.
1027 gs_final-cb014ms = gs_cb_sum-meinh.
1028 gs_final-cb014dr = gs_cb_sum-wtgbtr.
1029 gs_final-cb014ws = gs_cb_sum-twaer.
1030 ENDIF.
1031 CLEAR:gs_cb_sum.
1032 *外购煤粉 实际核算成本
1033 READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year perio = gs_final-month bukrs = gs_final-bukrs
1034 aufnr = gs_final-aufnr gkoar = 'M' matnr = yl010 kstar = '5001010100' BINARY SEARCH.
1035 IF sy-subrc EQ 0.
1036 gs_final-cb015mg = gs_cb_sum-megbtr.
1037 gs_final-cb015ms = gs_cb_sum-meinh.
1038 gs_final-cb015dr = gs_cb_sum-wtgbtr.
1039 gs_final-cb015ws = gs_cb_sum-twaer.
1040 ENDIF.
1041
1042 MODIFY gt_final FROM gs_final.
1043
1044 CLEAR:gs_final.
1045
1046 ENDLOOP.
1047
1048
1049
1050
1051
1052 ENDFORM.
1053 *&---------------------------------------------------------------------*
1054 *& FORM FRM_CREATE_FIELDCAT
1055 *&---------------------------------------------------------------------*
1056 *
1057 *----------------------------------------------------------------------*
1058 FORM frm_create_fieldcat .
1059
1060
1061 m_fill_fieldcat:
1062 'BUKRS' '公司' '' 4 '' '' '',
1063 'WERKS' '工厂' '' 4 '' '' '',
1064 'YEAR' '年度' '' 4 '' '' '',
1065 'MONTH' '期间' '' 3 '' '' '',
1066 'MATNR' '成品物料号' '' 3 '' '' '',
1067 'MAKTX' '成品物料描述' '' 3 '' '' '',
1068 'GROES' '大小量纲' '' 3 '' '' '',
1069 'WIDTH' '成品厚度' '' 3 '' '' '',
1070 "'BUDAT_MKPF' '过账日期' '' 10 '' '' '',
1071 'AUFNR' '订单号' '' 10 '' '' '',
1072 'KOSTL' '成本中心' '' 10 '' '' '',
1073 'VERID_ND' '生产线' '' 10 '' '' '',
1074 'TEXT1' '生产线描述' '' 10 '' '' '',
1075 'DMBTR' '成品金额' '' 10 '' '' '',
1076 'WAERS' '成品金额单位' '' 10 '' '' '',
1077 'MENGE' '成品数量' '' 10 '' '' '',
1078 'MEINS' '成品数量单位' '' 10 '' '' '',
1079 'MENGE_ZX' '成品重箱数' '' 10 '' '' '',
1080 'YL001MG ' yl001 '' 10 '' '' '',
1081 'YL001MS' yl001 '' 10 '' '' '',
1082 'YL001DR' yl001 '' 10 '' '' '',
1083 'YL001WS' yl001 '' 10 '' '' '',
1084
1085 'YL002MG ' yl002 '' 10 '' '' '',
1086 'YL002MS' yl002 '' 10 '' '' '',
1087 'YL002DR' yl002 '' 10 '' '' '',
1088 'YL002WS' yl002 '' 10 '' '' '',
1089
1090 'YL003MG ' yl003 '' 10 '' '' '',
1091 'YL003MS' yl003 '' 10 '' '' '',
1092 'YL003DR' yl003 '' 10 '' '' '',
1093 'YL003WS' yl003 '' 10 '' '' '',
1094
1095 'YL004MG ' yl004 '' 10 '' '' '',
1096 'YL004MS' yl004 '' 10 '' '' '',
1097 'YL004DR' yl004 '' 10 '' '' '',
1098 'YL004WS' yl004 '' 10 '' '' '',
1099
1100 'YL005MG ' yl005 '' 10 '' '' '',
1101 'YL005MS' yl005 '' 10 '' '' '',
1102 'YL005DR' yl005 '' 10 '' '' '',
1103 'YL005WS' yl005 '' 10 '' '' '',
1104
1105 'YL006MG ' yl006 '' 10 '' '' '',
1106 'YL006MS' yl006 '' 10 '' '' '',
1107 'YL006DR' yl006 '' 10 '' '' '',
1108 'YL006WS' yl006 '' 10 '' '' '',
1109
1110 'YL007MG ' yl007 '' 10 '' '' '',
1111 'YL007MS' yl007 '' 10 '' '' '',
1112 'YL007DR' yl007 '' 10 '' '' '',
1113 'YL007WS' yl007 '' 10 '' '' '',
1114
1115 'YL008MG ' yl008 '' 10 '' '' '',
1116 'YL008MS' yl008 '' 10 '' '' '',
1117 'YL008DR' yl008 '' 10 '' '' '',
1118 'YL008WS' yl008 '' 10 '' '' '',
1119
1120 'YL009MG ' yl009 '' 10 '' '' '',
1121 'YL009MS' yl009 '' 10 '' '' '',
1122 'YL009DR' yl009 '' 10 '' '' '',
1123 'YL009WS' yl009 '' 10 '' '' '',
1124
1125 'YL010MG ' yl010 '' 10 '' '' '',
1126 'YL010MS' yl010 '' 10 '' '' '',
1127 'YL010DR' yl010 '' 10 '' '' '',
1128 'YL010WS' yl010 '' 10 '' '' '',
1129
1130 'RL001MG ' rl003 '' 10 '' '' '',
1131 'RL001MS' rl003 '' 10 '' '' '',
1132 'RL001DR' rl003 '' 10 '' '' '',
1133 'RL001WS' rl003 '' 10 '' '' '',
1134
1135 'RL002MG ' rl002 '' 10 '' '' '',
1136 'RL002MS' rl002 '' 10 '' '' '',
1137 'RL002DR' rl002 '' 10 '' '' '',
1138 'RL002WS' rl002 '' 10 '' '' '',
1139
1140 'RL003MG ' rl003 '' 10 '' '' '',
1141 'RL003MS' rl003 '' 10 '' '' '',
1142 'RL003DR' rl003 '' 10 '' '' '',
1143 'RL003WS' rl003 '' 10 '' '' '',
1144
1145 'RL004MG ' rl004 '' 10 '' '' '',
1146 'RL004MS' rl004 '' 10 '' '' '',
1147 'RL004DR' rl004 '' 10 '' '' '',
1148 'RL004WS' rl004 '' 10 '' '' '',
1149
1150 'CB001MG ' '人工作业及附加' '' 10 '' '' '',
1151 'CB001MS' '人工作业及附加' '' 10 '' '' '',
1152 'CB001DR' '人工作业及附加' '' 10 '' '' '',
1153 'CB001WS' '人工作业及附加' '' 10 '' '' '',
1154
1155 'CB002MG ' '制造费用' '' 10 '' '' '',
1156 'CB002MS' '制造费用' '' 10 '' '' '',
1157 'CB002DR' '制造费用' '' 10 '' '' '',
1158 'CB002WS' '制造费用' '' 10 '' '' '',
1159
1160 'CB003MG ' '折旧费用' '' 10 '' '' '',
1161 'CB003MS' '折旧费用' '' 10 '' '' '',
1162 'CB003DR' '折旧费用' '' 10 '' '' '',
1163 'CB003WS' '折旧费用' '' 10 '' '' '',
1164
1165 'CB004MG ' '能源动力' '' 10 '' '' '',
1166 'CB004MS' '能源动力' '' 10 '' '' '',
1167 'CB004DR' '能源动力' '' 10 '' '' '',
1168 'CB004WS' '能源动力' '' 10 '' '' '',
1169
1170 'CB005MG ' '其他制造费用' '' 10 '' '' '',
1171 'CB005MS' '其他制造费用' '' 10 '' '' '',
1172 'CB005DR' '其他制造费用' '' 10 '' '' '',
1173 'CB005WS' '其他制造费用' '' 10 '' '' '',
1174
1175 'CB006MG ' yl001 '' 10 '' '' '',
1176 'CB006MS' yl001 '' 10 '' '' '',
1177 'CB006DR' yl001 '' 10 '' '' '',
1178 'CB006WS' yl001 '' 10 '' '' '',
1179
1180 'CB007MG ' yl002 '' 10 '' '' '',
1181 'CB007MS' yl002 '' 10 '' '' '',
1182 'CB007DR' yl002 '' 10 '' '' '',
1183 'CB007WS' yl002 '' 10 '' '' '',
1184
1185 'CB008MG ' yl003 '' 10 '' '' '',
1186 'CB008MS' yl003 '' 10 '' '' '',
1187 'CB008DR' yl003 '' 10 '' '' '',
1188 'CB008WS' yl003 '' 10 '' '' '',
1189
1190 'CB009MG ' yl004 '' 10 '' '' '',
1191 'CB009MS' yl004 '' 10 '' '' '',
1192 'CB009DR' yl004 '' 10 '' '' '',
1193 'CB009WS' yl004 '' 10 '' '' '',
1194
1195 'CB010MG ' yl005 '' 10 '' '' '',
1196 'CB010MS' yl005 '' 10 '' '' '',
1197 'CB010DR' yl005 '' 10 '' '' '',
1198 'CB010WS' yl005 '' 10 '' '' '',
1199
1200 'CB011MG ' yl006 '' 10 '' '' '',
1201 'CB011MS' yl006 '' 10 '' '' '',
1202 'CB011DR' yl006 '' 10 '' '' '',
1203 'CB011WS' yl006 '' 10 '' '' '',
1204
1205 'CB012MG ' yl007 '' 10 '' '' '',
1206 'CB012MS' yl007 '' 10 '' '' '',
1207 'CB012DR' yl007 '' 10 '' '' '',
1208 'CB012WS' yl007 '' 10 '' '' '',
1209
1210 'CB013MG ' yl008 '' 10 '' '' '',
1211 'CB013MS' yl008 '' 10 '' '' '',
1212 'CB013DR' yl008 '' 10 '' '' '',
1213 'CB013WS' yl008 '' 10 '' '' '',
1214
1215 'CB014MG ' yl009 '' 10 '' '' '',
1216 'CB014MS' yl009 '' 10 '' '' '',
1217 'CB014DR' yl009 '' 10 '' '' '',
1218 'CB014WS' yl009 '' 10 '' '' '',
1219
1220 'CB015MG ' yl010 '' 10 '' '' '',
1221 'CB015MS' yl010 '' 10 '' '' '',
1222 'CB015DR' yl010 '' 10 '' '' '',
1223 'CB015WS' yl010 '' 10 '' '' ''.
1224
1225
1226 LOOP AT gt_fcat INTO gs_fcat.
1227 IF gs_fcat-fieldname = 'MEINS'.
1228 gs_fcat-ref_field = 'MEINS'.
1229 gs_fcat-ref_table = 'MARA'.
1230 ENDIF.
1231
1232 IF gs_fcat-fieldname = 'MATNR'.
1233 gs_fcat-ref_field = 'MATNR'.
1234 gs_fcat-ref_table = 'MARA'.
1235 ENDIF.
1236
1237 MODIFY gt_fcat FROM gs_fcat.
1238 CLEAR gs_fcat.
1239 ENDLOOP.
1240 ENDFORM. " FRM_CR
1241 *&---------------------------------------------------------------------*
1242 *& FORM LAYOUT_INIT
1243 *&---------------------------------------------------------------------*
1244 * TEXT
1245 *----------------------------------------------------------------------*
1246 FORM frm_layout_init .
1247 gs_layout-zebra = 'X'.
1248 gs_layout-cwidth_opt = 'X'.
1249 * GS_LAYOUT-BOX_FNAME = 'CBOX'.
1250 gs_layout-sel_mode = 'A'.
1251
1252 gs_variant-report = sy-repid.
1253 gs_variant-username = sy-uname.
1254 gs_variant-variant = pa_vari.
1255 ENDFORM. "LAYOUT_INIT
1256 *&---------------------------------------------------------------------*
1257 *& FORM FRM_DISPLAY_BY_ALV
1258 *&---------------------------------------------------------------------*
1259 * TEXT
1260 *----------------------------------------------------------------------*
1261 FORM frm_display_alv .
1262 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
1263 EXPORTING
1264 i_callback_program = sy-repid
1265 is_layout_lvc = gs_layout
1266 * I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
1267 * I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
1268 it_fieldcat_lvc = gt_fcat
1269 i_save = 'A' "变式是否可以保存
1270 i_grid_settings = gs_grid_settings
1271 is_variant = gs_variant
1272 TABLES
1273 t_outtab = gt_final
1274 EXCEPTIONS
1275 program_error = 1
1276 OTHERS = 2.
1277 IF sy-subrc <> 0.
1278 MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
1279 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
1280 ENDIF.
1281 ENDFORM. " FRM_DISPLAY_BY_ALV
1282 *&---------------------------------------------------------------------*
1283 *& Form ALV_VARIANT_F4
1284 *&---------------------------------------------------------------------*
1285 *& text
1286 *&---------------------------------------------------------------------*
1287 *& <-- PA_VARI
1288 *&---------------------------------------------------------------------*
1289 FORM alv_variant_f4 CHANGING p_pa_vari.
1290 DATA: rs_variant LIKE disvariant.
1291 DATA nof4 TYPE c.
1292
1293 CLEAR nof4.
1294 LOOP AT SCREEN.
1295 IF screen-name = 'PA_VARI'.
1296 IF screen-input = 0.
1297 nof4 = 'X'.
1298 ENDIF.
1299 ENDIF.
1300 ENDLOOP.
1301
1302 rs_variant-report = sy-repid.
1303 rs_variant-username = sy-uname.
1304 CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
1305 EXPORTING
1306 is_variant = rs_variant
1307 i_save = 'A'
1308 IMPORTING
1309 es_variant = rs_variant
1310 EXCEPTIONS
1311 OTHERS = 1.
1312 IF sy-subrc = 0 AND nof4 EQ space.
1313 pa_vari = rs_variant-variant.
1314 ENDIF.
1315 ENDFORM.