完工订单与实际成本汇总表
*&---------------------------------------------------------------------*
*& Report ZFICOR008
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zficor008.
TABLES:aufk,afko,mara,jcds,t023t.
TYPE-POOLS:slis.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv, "lvc_t_fcat, "列描述内表,列清单
wa_fieldcat LIKE LINE OF it_fieldcat,
it_layout TYPE slis_layout_alv. "lvc_s_layo. "表格规格属性内表
DATA:BEGIN OF wa_item,
aufnr LIKE aufk-aufnr,
plnbez LIKE afko-plnbez,
wgbez LIKE t023t-wgbez,
matkl LIKE t023t-wgbez60,
maktx LIKE makt-maktx,
zznme LIKE zmmt002-zznme,
meins LIKE mara-meins,
wemng LIKE afpo-wemng,
objnr LIKE cosp-objnr,
auart LIKE aufk-auart,
txt01 LIKE t003p-txt,
udate_01 LIKE jcds-udate,
dmbtr_01 LIKE cosp_bak-wkg001,
dmbtr_02 LIKE cosp_bak-wkg001,
dmbtr_03 LIKE cosp_bak-wkg001,
dmbtr_04 LIKE cosp_bak-wkg001,
dmbtr_05 LIKE cosp_bak-wkg001,
dmbtr_06 LIKE cosp_bak-wkg001,
dmbtr_07 LIKE cosp_bak-wkg001,
dmbtr_08 LIKE cosp_bak-wkg001,
dmbtr_09 LIKE cosp_bak-wkg001,
dmbtr_10 LIKE cosp_bak-wkg001,
dmbtr_11 LIKE cosp_bak-wkg001,
dmbtr_12 LIKE cosp_bak-wkg001,
dmbtr_13 LIKE cosp_bak-wkg001,
dmbtr_14 LIKE cosp_bak-wkg001,
dmbtr_15 LIKE cosp_bak-wkg001,
dmbtr_16 LIKE cosp_bak-wkg001,
dmbtr_17 LIKE cosp_bak-wkg001,
dmbtr_18 LIKE cosp_bak-wkg001,
dmbtr_19 LIKE cosp_bak-wkg001,
dmbtr_20 LIKE cosp_bak-wkg001,
dmbtr_21 LIKE cosp_bak-wkg001,
meg005_01 LIKE coss-meg005,
meg005_02 LIKE coss-meg005,
meg005_03 LIKE coss-meg005,
meg005_04 LIKE coss-meg005,
meg005_05 LIKE coss-meg005,
meg005_06 LIKE coss-meg005,
meg005_07 LIKE coss-meg005,
meg005_08 LIKE coss-meg005,
meg005_09 LIKE coss-meg005,
meg005_10 LIKE coss-meg005,
meg005_11 LIKE coss-meg005,
udate TYPE string,
END OF wa_item.
DATA:gt_item LIKE TABLE OF wa_item.
DATA:str TYPE char22,
a TYPE i,
tabix TYPE sy-tabix.
DATA:z_pp_0001 TYPE REF TO zhele_pp_0001.
CREATE OBJECT z_pp_0001.
SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
SELECT-OPTIONS: s_aufnr FOR aufk-aufnr,
s_plnbez FOR afko-plnbez,
s_wgbez FOR t023t-wgbez,
* s_matkl FOR mara-matkl,
s_auart FOR aufk-auart.
PARAMETERS:s_udate1 LIKE jcds-udate OBLIGATORY,
s_udate2 LIKE jcds-udate OBLIGATORY.
SELECTION-SCREEN:END OF BLOCK b1.
INITIALIZATION.
t1 = '请输入条件'.
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
PERFORM alv.
FORM get_data.
SELECT a~aufnr,a~objnr,k~plnbez,m~matkl,m~meins,a~auart,j~stat,j~udate
FROM aufk AS a
JOIN jcds AS j ON a~objnr = j~objnr
JOIN afko AS k ON a~aufnr = k~aufnr
JOIN mara AS m ON k~plnbez = m~matnr
INTO TABLE @DATA(gt_aufk)
WHERE ( j~stat = 'I0012'
OR j~stat = 'I0045')
AND j~udate >= @s_udate1
AND j~udate <= @s_udate2
AND j~inact <> 'X'
AND a~aufnr IN @s_aufnr
AND a~auart IN @s_auart
AND k~plnbez IN @s_plnbez.
* AND m~matkl IN @s_matkl.
* AND m~extwg IN @s_extwg.
SORT gt_aufk BY objnr DESCENDING stat DESCENDING udate DESCENDING.
DELETE ADJACENT DUPLICATES FROM gt_aufk COMPARING objnr stat udate.
SELECT objnr,stat,udate
FROM jcds
INTO TABLE @DATA(gt_jcds)
FOR ALL ENTRIES IN @gt_aufk
WHERE objnr = @gt_aufk-objnr
AND inact = 'X'
AND ( stat = 'I0012'
OR stat = 'I0045')
AND udate >= @s_udate1
AND udate <= @s_udate2.
SORT gt_jcds BY objnr DESCENDING stat DESCENDING udate DESCENDING.
* DELETE ADJACENT DUPLICATES FROM gt_jcds COMPARING objnr stat udate.
* and
* SELECT aufnr,stat
* from jcds
* INTO TABLE @DATA(gt_stat)
* where
* IF gt_aufk is NOT INITIAL.
SELECT objnr,wrttp,kstar,hrkft,wkg001,wkg002,wkg003,wkg004,
wkg005,wkg006,wkg007,wkg008,wkg009,wkg010,wkg011,
wkg012,wkg013,wkg014,wkg015,wkg016,meg001,meg002,meg003,
meg004,meg005,meg006,meg007,meg008,meg009,meg010,meg011,meg012,meg013,meg014,meg015,meg016
FROM cosp
INTO TABLE @DATA(gt_cosp)
FOR ALL ENTRIES IN @gt_aufk
WHERE objnr = @gt_aufk-objnr
AND wrttp IN ('01','04','05')
AND kstar IN ('0050010000','0050010002','0050010003','0050010020').
SELECT objnr,wrttp,kstar,hrkft,wkg001,wkg002,wkg003,wkg004,
wkg005,wkg006,wkg007,wkg008,wkg009,wkg010,wkg011,
wkg012,wkg013,wkg014,wkg015,wkg016,meg001,meg002,meg003,
meg004,meg005,meg006,meg007,meg008,meg009,meg010,meg011,meg012,meg013,meg014,meg015,meg016
FROM coss
INTO TABLE @DATA(gt_coss)
FOR ALL ENTRIES IN @gt_aufk
WHERE objnr = @gt_aufk-objnr
AND wrttp IN ('01','04','05')
AND kstar IN ('0000843000','0000843002','0000843003','0000843001',
'0050010009').
APPEND LINES OF gt_coss TO gt_cosp.
* SELECT objnr,wrttp,kstar,WKG001,WKG002,WKG003,WKG004,
* WKG005,WKG006,WKG007,WKG008,WKG009,WKG010,WKG011,
* WKG012,WKG013,WKG014,WKG015,WKG016
* from cosp
* into TABLE @DATA(gt_cosp_04)
* FOR ALL ENTRIES IN @gt_aufk
* where objnr = @gt_aufk-objnr
* and wrttp = 4
* and kstar in ('0050010000','0050010002','0050010003','0050010020',
* '0000843000','0000843002','0000843003','0000843001',
* '0050010009').
*
* SELECT objnr,wrttp,kstar,WKG001,WKG002,WKG003,WKG004,
* WKG005,WKG006,WKG007,WKG008,WKG009,WKG010,WKG011,
* WKG012,WKG013,WKG014,WKG015,WKG016
* from cosp
* into TABLE @DATA(gt_cosp_05)
* FOR ALL ENTRIES IN @gt_aufk
* where objnr = @gt_aufk-objnr
* and wrttp = 5
* and kstar in ('0050010000','0050010002','0050010003','0050010020',
* '0000843000','0000843002','0000843003','0000843001',
* '0050010009').
* ENDIF.
LOOP AT gt_cosp INTO DATA(wa_cosp).
CLEAR:a.
a = strlen( wa_cosp-objnr ).
IF a > 8.
a = a - 8.
str = wa_cosp-objnr.
CLEAR:wa_cosp-objnr.
wa_cosp-objnr = str+a(8).
MODIFY gt_cosp FROM wa_cosp INDEX sy-tabix.
ENDIF.
CLEAR:wa_cosp.
ENDLOOP.
LOOP AT gt_coss INTO DATA(wa_coss).
CLEAR:a.
a = strlen( wa_coss-objnr ).
IF a > 8.
a = a - 8.
str = wa_coss-objnr.
CLEAR:wa_coss-objnr.
wa_coss-objnr = str+a(8).
MODIFY gt_coss FROM wa_coss INDEX sy-tabix.
ENDIF.
CLEAR:wa_coss.
ENDLOOP.
* DELETE gt_coss WHERE wrttp = '01'.
SORT gt_cosp BY objnr wrttp.
SORT gt_coss BY objnr wrttp.
DATA:objnr TYPE jcds-objnr.
LOOP AT gt_aufk INTO DATA(wa_aufk).
* CLEAR:objnr.
* SELECT SINGLE objnr
* INTO objnr
* FROM jcds
* WHERE objnr = wa_aufk-objnr
* and stat = wa_aufk-stat
* and INACT = 'X'.
* IF sy-subrc = 0.
* delete gt_aufk.
* CLEAR wa_aufk.
* CONTINUE.
* ENDIF.
READ TABLE gt_jcds INTO DATA(wa_jcds)
WITH KEY objnr = wa_aufk-objnr
stat = wa_aufk-stat.
IF sy-subrc = 0.
IF wa_aufk-udate < wa_jcds-udate.
DELETE gt_jcds INDEX sy-tabix.
DELETE gt_aufk.
CLEAR:wa_aufk,wa_jcds.
CONTINUE.
ENDIF.
ENDIF.
CLEAR:wa_jcds.
MOVE-CORRESPONDING:wa_aufk TO wa_item.
CLEAR:wa_item-udate,wa_item-udate_01.
wa_item-udate_01 = wa_aufk-udate.
CALL METHOD z_pp_0001->maktx
EXPORTING
matnr = wa_item-plnbez
IMPORTING
maktx = wa_item-maktx
zznme = wa_item-zznme.
SELECT SINGLE wemng
INTO wa_item-wemng
FROM afpo
WHERE aufnr = wa_item-aufnr.
SELECT SINGLE t023t~wgbez60 t023t~wgbez
INTO (wa_item-matkl,wa_item-wgbez)
FROM mara
JOIN t023t ON mara~matkl = t023t~matkl
WHERE mara~matkl = wa_aufk-matkl
AND t023t~spras = 1
AND t023t~wgbez IN s_wgbez.
IF sy-subrc <> 0.
DELETE gt_aufk.
CLEAR:wa_aufk,wa_item.
CONTINUE.
ENDIF.
SELECT SINGLE txt
INTO wa_item-txt01
FROM t003p
WHERE auart = wa_item-auart
AND spras = 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = wa_item-aufnr
IMPORTING
output = wa_item-aufnr.
READ TABLE gt_cosp INTO wa_cosp
WITH KEY objnr = wa_item-aufnr
BINARY SEARCH.
IF sy-subrc = 0.
CLEAR:tabix.
tabix = sy-tabix.
CLEAR:wa_cosp.
LOOP AT gt_cosp INTO wa_cosp
FROM tabix.
IF wa_cosp-objnr <> wa_item-aufnr.
EXIT.
ENDIF.
IF wa_cosp-wrttp = '01'.
IF wa_cosp-kstar = '0050010000'
OR wa_cosp-kstar = '0050010002'
OR wa_cosp-kstar = '0050010003'
OR wa_cosp-kstar = '0050010020'.
wa_item-dmbtr_01 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_01.
ENDIF.
IF wa_cosp-kstar = '0000843000'.
wa_item-dmbtr_02 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_02.
ENDIF.
IF wa_cosp-kstar = '0000843002'.
wa_item-dmbtr_03 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_03.
ENDIF.
IF wa_cosp-kstar = '0000843003'.
wa_item-dmbtr_04 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_04.
ENDIF.
IF wa_cosp-kstar = '0000843001'
OR wa_cosp-kstar = '0050010009'.
wa_item-dmbtr_05 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_05.
ENDIF.
ENDIF.
IF wa_cosp-wrttp = '04'.
IF wa_cosp-kstar = '0050010000'
OR wa_cosp-kstar = '0050010002'
OR wa_cosp-kstar = '0050010003'
OR wa_cosp-kstar = '0050010020'.
wa_item-dmbtr_08 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_08.
ENDIF.
IF wa_cosp-kstar = '0000843000'.
wa_item-dmbtr_09 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_09.
ENDIF.
IF wa_cosp-kstar = '0000843002'.
wa_item-dmbtr_10 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_10.
ENDIF.
IF wa_cosp-kstar = '0000843003'.
wa_item-dmbtr_11 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_11.
ENDIF.
IF wa_cosp-kstar = '0000843001'
OR wa_cosp-kstar = '0050010009'.
wa_item-dmbtr_12 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_12.
ENDIF.
ENDIF.
IF wa_cosp-wrttp = '05'.
IF wa_cosp-kstar = '0050010000'
OR wa_cosp-kstar = '0050010002'
OR wa_cosp-kstar = '0050010003'
OR wa_cosp-kstar = '0050010020'.
wa_item-dmbtr_15 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_15.
ENDIF.
IF wa_cosp-kstar = '0000843000'.
wa_item-dmbtr_16 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_16.
ENDIF.
IF wa_cosp-kstar = '0000843002'.
wa_item-dmbtr_17 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_17.
ENDIF.
IF wa_cosp-kstar = '0000843003'.
wa_item-dmbtr_18 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_18.
ENDIF.
IF wa_cosp-kstar = '0000843001'
OR wa_cosp-kstar = '0050010009'.
wa_item-dmbtr_19 = wa_cosp-wkg001 + wa_cosp-wkg002 + wa_cosp-wkg003
+ wa_cosp-wkg004 + wa_cosp-wkg005 + wa_cosp-wkg006
+ wa_cosp-wkg007 + wa_cosp-wkg008 + wa_cosp-wkg009
+ wa_cosp-wkg010 + wa_cosp-wkg011 + wa_cosp-wkg012
+ wa_cosp-wkg013 + wa_cosp-wkg014 + wa_cosp-wkg015
+ wa_cosp-wkg016 + wa_item-dmbtr_19.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
wa_item-dmbtr_06 = wa_item-dmbtr_01 + wa_item-dmbtr_02
+ wa_item-dmbtr_03 + wa_item-dmbtr_04
+ wa_item-dmbtr_05.
wa_item-dmbtr_13 = wa_item-dmbtr_08 + wa_item-dmbtr_09
+ wa_item-dmbtr_10 + wa_item-dmbtr_11
+ wa_item-dmbtr_12.
wa_item-dmbtr_20 = wa_item-dmbtr_15 + wa_item-dmbtr_16
+ wa_item-dmbtr_17 + wa_item-dmbtr_18
+ wa_item-dmbtr_19.
IF wa_item-wemng <> 0.
wa_item-dmbtr_07 = wa_item-dmbtr_06 / wa_item-wemng.
wa_item-dmbtr_14 = wa_item-dmbtr_13 / wa_item-wemng.
wa_item-dmbtr_21 = wa_item-dmbtr_20 / wa_item-wemng.
ENDIF.
wa_item-udate = s_udate1 && ' - ' && s_udate2.
*实际数量、目标数量
* READ TABLE gt_coss INTO wa_coss
* WITH KEY objnr = wa_item-aufnr
* BINARY SEARCH.
* IF sy-subrc = 0.
DATA: meg005_01 TYPE coss-meg001,
meg005_02 TYPE coss-meg001,
meg005_03 TYPE coss-meg001,
meg005_04 TYPE coss-meg001,
meg005_05 TYPE coss-meg001,
meg005_06 TYPE coss-meg001,
meg005_07 TYPE coss-meg001,
meg005_08 TYPE coss-meg001,
meg005_09 TYPE coss-meg001,
meg005_10 TYPE coss-meg001,
meg005_11 TYPE coss-meg001.
LOOP AT gt_coss INTO wa_coss WHERE objnr = wa_item-aufnr.
*实际人工费用
IF wa_coss-kstar = '0000843000' AND wa_coss-wrttp = '04'.
meg005_01 = wa_coss-meg001 + wa_coss-meg002 + wa_coss-meg003 + wa_coss-meg004 + wa_coss-meg005
+ wa_coss-meg006 + wa_coss-meg007 + wa_coss-meg008 + wa_coss-meg009 + wa_coss-meg010 + wa_coss-meg011
+ wa_coss-meg012 + wa_coss-meg013 + wa_coss-meg014 + wa_coss-meg015 + wa_coss-meg016.
IF meg005_01 <> '0'.
wa_item-meg005_01 = meg005_01.
ENDIF.
ENDIF.
*实际其他制费
IF wa_coss-kstar = '0000843001' AND wa_coss-wrttp = '04'.
meg005_02 = wa_coss-meg001 + wa_coss-meg002 + wa_coss-meg003 + wa_coss-meg004 + wa_coss-meg005
+ wa_coss-meg006 + wa_coss-meg007 + wa_coss-meg008 + wa_coss-meg009 + wa_coss-meg010 + wa_coss-meg011
+ wa_coss-meg012 + wa_coss-meg013 + wa_coss-meg014 + wa_coss-meg015 + wa_coss-meg016.
IF meg005_02 <> '0'.
wa_item-meg005_02 = meg005_02.
ENDIF.
ENDIF.
*实际机器费用
IF wa_coss-kstar = '0000843002' AND wa_coss-wrttp = '04'.
meg005_03 = wa_coss-meg001 + wa_coss-meg002 + wa_coss-meg003 + wa_coss-meg004 + wa_coss-meg005
+ wa_coss-meg006 + wa_coss-meg007 + wa_coss-meg008 + wa_coss-meg009 + wa_coss-meg010 + wa_coss-meg011
+ wa_coss-meg012 + wa_coss-meg013 + wa_coss-meg014 + wa_coss-meg015 + wa_coss-meg016.
IF meg005_03 <> '0'.
wa_item-meg005_03 = meg005_03.
ENDIF.
ENDIF.
**实际模具成本
* IF wa_coss-kstar = '0000843003' AND wa_coss-wrttp = '04'.
* wa_item-meg005_04 = wa_coss-meg005.
* ENDIF.
*目标人工费用
IF wa_coss-kstar = '0000843000' AND wa_coss-wrttp = '05'.
meg005_05 = wa_coss-meg001 + wa_coss-meg002 + wa_coss-meg003 + wa_coss-meg004 + wa_coss-meg005
+ wa_coss-meg006 + wa_coss-meg007 + wa_coss-meg008 + wa_coss-meg009 + wa_coss-meg010 + wa_coss-meg011
+ wa_coss-meg012 + wa_coss-meg013 + wa_coss-meg014 + wa_coss-meg015 + wa_coss-meg016.
IF meg005_05 <> '0'.
wa_item-meg005_05 = meg005_05.
ENDIF.
ENDIF.
*目标其他制费
IF wa_coss-kstar = '0000843001' AND wa_coss-wrttp = '05'.
meg005_06 = wa_coss-meg001 + wa_coss-meg002 + wa_coss-meg003 + wa_coss-meg004 + wa_coss-meg005
+ wa_coss-meg006 + wa_coss-meg007 + wa_coss-meg008 + wa_coss-meg009 + wa_coss-meg010 + wa_coss-meg011
+ wa_coss-meg012 + wa_coss-meg013 + wa_coss-meg014 + wa_coss-meg015 + wa_coss-meg016.
IF meg005_06 <> '0'.
wa_item-meg005_06 = meg005_06.
ENDIF.
ENDIF.
*目标机器费用
IF wa_coss-kstar = '0000843002' AND wa_coss-wrttp = '05'.
meg005_07 = wa_coss-meg001 + wa_coss-meg002 + wa_coss-meg003 + wa_coss-meg004 + wa_coss-meg005
+ wa_coss-meg006 + wa_coss-meg007 + wa_coss-meg008 + wa_coss-meg009 + wa_coss-meg010 + wa_coss-meg011
+ wa_coss-meg012 + wa_coss-meg013 + wa_coss-meg014 + wa_coss-meg015 + wa_coss-meg016.
IF meg005_07 <> '0'.
wa_item-meg005_07 = meg005_07.
ENDIF.
ENDIF.
*计划人工费用
IF wa_coss-kstar = '0000843000' AND wa_coss-wrttp = '01'.
meg005_08 = wa_coss-meg001 + wa_coss-meg002 + wa_coss-meg003 + wa_coss-meg004 + wa_coss-meg005
+ wa_coss-meg006 + wa_coss-meg007 + wa_coss-meg008 + wa_coss-meg009 + wa_coss-meg010 + wa_coss-meg011
+ wa_coss-meg012 + wa_coss-meg013 + wa_coss-meg014 + wa_coss-meg015 + wa_coss-meg016.
IF meg005_08 <> '0'.
wa_item-meg005_08 = meg005_08.
ENDIF.
ENDIF.
*计划其他制费
IF wa_coss-kstar = '0000843001' AND wa_coss-wrttp = '01'.
meg005_09 = wa_coss-meg001 + wa_coss-meg002 + wa_coss-meg003 + wa_coss-meg004 + wa_coss-meg005
+ wa_coss-meg006 + wa_coss-meg007 + wa_coss-meg008 + wa_coss-meg009 + wa_coss-meg010 + wa_coss-meg011
+ wa_coss-meg012 + wa_coss-meg013 + wa_coss-meg014 + wa_coss-meg015 + wa_coss-meg016.
IF meg005_09 <> '0'.
wa_item-meg005_09 = meg005_09.
ENDIF.
ENDIF.
*计划机器费用
IF wa_coss-kstar = '0000843002' AND wa_coss-wrttp = '01'.
meg005_10 = wa_coss-meg001 + wa_coss-meg002 + wa_coss-meg003 + wa_coss-meg004 + wa_coss-meg005
+ wa_coss-meg006 + wa_coss-meg007 + wa_coss-meg008 + wa_coss-meg009 + wa_coss-meg010 + wa_coss-meg011
+ wa_coss-meg012 + wa_coss-meg013 + wa_coss-meg014 + wa_coss-meg015 + wa_coss-meg016.
IF meg005_10 <> '0'.
wa_item-meg005_10 = meg005_10.
ENDIF.
ENDIF.
**目标模具成本
* IF wa_coss-kstar = '0000843003' AND wa_coss-wrttp = '05'.
* wa_item-meg005_08 = wa_coss-meg005.
* ENDIF.
ENDLOOP.
APPEND wa_item TO gt_item.
CLEAR:wa_item.
ENDLOOP.
SORT gt_item BY aufnr udate_01 DESCENDING.
DELETE ADJACENT DUPLICATES FROM gt_item COMPARING aufnr.
ENDFORM.
FORM alv.
DATA : col_pos TYPE i VALUE 1.
CLEAR:it_fieldcat,wa_fieldcat.
it_layout-colwidth_optimize = 'X'.
it_layout-zebra = 'X'.
* PERFORM fieldcat_int USING col_pos '字段名字' '显示名字' '关键字' '锁定列' '可编辑' '去前零' '表参考' '字段参考' '单位参考'.
PERFORM fieldcat_int USING col_pos 'AUFNR' '订单号' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'AUART' '订单类型' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'TXT01' '订单类型名称' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'PLNBEZ' '物料编号' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MATKL' '物料组' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'WGBEZ' '产品机型' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MAKTX' '物料名称' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'ZZNME' '规格型号' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MEINS' '单位' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'WEMNG' '入库数量' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_01' '计划材料成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_02' '计划人工成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_03' '计划机器成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_04' '计划模具费用成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_05' '计划其它制费成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_06' '计划成本合计' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_07' '计划单位成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_08' '实际材料成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_09' '实际人工成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_10' '实际机器费用成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_11' '实际模具费用成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_12' '实际其它制费成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_13' '实际成本合计' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_14' '实际单位成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_15' '目标材料成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_16' '目标人工成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_17' '目标机器费用成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_18' '目标模具费用成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_19' '目标其它制费成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_20' '目标成本合计' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'DMBTR_21' '目标单位成本' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'UDATE' '成本核算期间' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MEG005_01' '实际人工工时' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MEG005_02' '实际其他工时' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MEG005_03' '实际机器工时' '' '' '' '' '' '' ''.
* PERFORM fieldcat_int USING col_pos 'MEG005_04' '实际人工费用' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MEG005_05' '目标人工工时' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MEG005_06' '目标其他工时' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MEG005_07' '目标机器工时' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MEG005_08' '计划人工工时' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MEG005_09' '计划其他工时' '' '' '' '' '' '' ''.
PERFORM fieldcat_int USING col_pos 'MEG005_10' '计划机器工时' '' '' '' '' '' '' ''.
* PERFORM fieldcat_int USING col_pos 'MEG005_08' '实际人工费用' '' '' '' '' '' '' ''.
* 调用ALV需要使用的函数
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'ALV_USER_COMMAND'
is_layout = it_layout
it_fieldcat = it_fieldcat
i_save = 'A'
TABLES
t_outtab = gt_item.
ENDFORM.
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
* 获取gui状态
DATA: wa_extab TYPE slis_extab.
SET PF-STATUS 'OPEN' EXCLUDING rt_extab.
ENDFORM. "set_pf_status
FORM fieldcat_int USING p_col_pos
p_fieldname
p_seltext_l
p_key
p_fix_column
p_edit
p_zero
p_tname
p_fname
p_reffi.
wa_fieldcat-col_pos = p_col_pos. "行号
wa_fieldcat-fieldname = p_fieldname. "字段名
wa_fieldcat-seltext_l = p_seltext_l. "显示名字
wa_fieldcat-key = p_key. "关键字
wa_fieldcat-fix_column = p_fix_column. "锁定列
wa_fieldcat-edit = p_edit. "可编辑
wa_fieldcat-no_zero = p_zero. "去前零
wa_fieldcat-ref_tabname = p_tname. "参考表
wa_fieldcat-ref_fieldname = p_fname. "参考字段
wa_fieldcat-qfieldname = p_reffi. "参考单位
APPEND wa_fieldcat TO it_fieldcat.
p_col_pos = p_col_pos + 1.
CLEAR: wa_fieldcat.
ENDFORM. "FIELDCAT_INT
FORM alv_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
* 获取ALV中的鼠标勾选记录
DATA: l_grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = l_grid.
CALL METHOD l_grid->check_changed_data.
CASE r_ucomm.
"WHEN 'E'.
"LEAVE PROGRAM.
ENDCASE.
ENDFORM.