**&---------------------------------------------------------------------*
**& Subroutine pool 0CO_PC_01
**&
**&---------------------------------------------------------------------*
**& 2014-5-10 增强数据源 0CO_PC_01
**&
**&---------------------------------------------------------------------*
*
PROGRAM ZBI_0CO_PC_01 .
TYPE-POOLS : sbiwa .
TABLES :AUFK ,
AFPO .
TYPES :
I_KKB_IS1_PA TYPE KKB_IS1_PA OCCURS 0 .
TYPES : BEGIN OF TY_S_AUFK ,
AUFNR TYPE AUFK -AUFNR ,
ERDAT TYPE AUFK -ERDAT ,
GSBER TYPE AUFK -GSBER ,
OBJNR TYPE AUFK -OBJNR ,
END OF TY_S_AUFK ,
TY_T_AUFK TYPE TABLE OF TY_S_AUFK .
DATA : LS_AUFK TYPE TY_S_AUFK ,
LT_AUFK TYPE TY_T_AUFK .
TYPES : BEGIN OF TY_S_AFPO ,
AUFNR TYPE AFPO -AUFNR ,
POSNR TYPE AFPO -POSNR ,
LTRMI TYPE AFPO -LTRMI ,
PSMNG TYPE AFPO -PSMNG ,
WEMNG TYPE AFPO -WEMNG ,
END OF TY_S_AFPO ,
TY_T_AFPO TYPE TABLE OF TY_S_AFPO .
DATA : LS_AFPO TYPE TY_S_AFPO ,
LT_AFPO TYPE TY_T_AFPO ,
LT_AFPO2 TYPE TY_T_AFPO .
TYPES : BEGIN OF TY_S_AFKO ,
AUFNR TYPE AFKO -AUFNR ,
RSNUM TYPE AFKO -RSNUM ,
AUFPL TYPE AFKO -AUFPL ,
END OF TY_S_AFKO ,
TY_T_AFKO TYPE TABLE OF TY_S_AFKO .
DATA : LS_AFKO TYPE TY_S_AFKO ,
LT_AFKO TYPE TY_T_AFKO ,
LT_AFKO2 TYPE TY_T_AFKO .
TYPES : BEGIN OF TY_S_J_3AFSRESB ,
RSNUM TYPE AFKO -RSNUM ,
J_3AKORDX TYPE J_3AFSRESB -J_3AKORDX ,
J_3APGNR TYPE J_3AFSRESB -J_3APGNR ,
END OF TY_S_J_3AFSRESB ,
TY_T_J_3AFSRESB TYPE TABLE OF TY_S_J_3AFSRESB .
DATA : LS_J_3AFSRESB TYPE TY_S_J_3AFSRESB ,
LT_J_3AFSRESB TYPE TY_T_J_3AFSRESB .
TYPES : BEGIN OF TY_S_MBEW ,
BWKEY TYPE MBEW -BWKEY ,
MATNR TYPE MBEW -MATNR ,
BWTAR TYPE MBEW -BWTAR ,
BKLAS TYPE MBEW -BKLAS ,
END OF TY_S_MBEW ,
TY_T_MBEW TYPE TABLE OF TY_S_MBEW .
DATA : LS_MBEW TYPE TY_S_MBEW ,
LT_MBEW TYPE TY_T_MBEW .
TYPES : BEGIN OF TY_S_JEST ,
OBJNR TYPE JEST -OBJNR ,
INACT TYPE JEST -INACT ,
STAT TYPE JEST -STAT ,
END OF TY_S_JEST ,
TY_T_JEST TYPE TABLE OF TY_S_JEST .
DATA : LS_JEST TYPE TY_S_JEST ,
LT_JEST TYPE TY_T_JEST .
TYPES : BEGIN OF TY_S_TJ02T ,
ISTAT TYPE TJ02T -ISTAT ,
TXT04 TYPE TJ02T -TXT04 ,
TXT30 TYPE TJ02T -TXT30 ,
END OF TY_S_TJ02T ,
TY_T_TJ02T TYPE TABLE OF TY_S_TJ02T .
DATA : LS_TJ02T TYPE TY_S_TJ02T ,
LT_TJ02T TYPE TY_T_TJ02T .
*
TYPES : BEGIN OF TY_S_COSP ,
LEDNR TYPE COSP -LEDNR ,
OBJNR TYPE COSP -OBJNR ,
GJAHR TYPE COSP -GJAHR ,
WRTTP TYPE COSP -WRTTP ,
VERSN TYPE COSP -VERSN ,
KSTAR TYPE COSP -KSTAR ,
HRKFT TYPE COSP -HRKFT ,
VRGNG TYPE COSP -VRGNG ,
VBUND TYPE COSP -VBUND ,
PARGB TYPE COSP -PARGB ,
BEKNZ TYPE COSP -BEKNZ ,
TWAER TYPE COSP -TWAER ,
PERBL TYPE COSP -PERBL ,
WKG001 TYPE COSP -WKG001 ,
WKG002 TYPE COSP -WKG001 ,
WKG003 TYPE COSP -WKG001 ,
WKG004 TYPE COSP -WKG001 ,
WKG005 TYPE COSP -WKG001 ,
WKG006 TYPE COSP -WKG001 ,
WKG007 TYPE COSP -WKG001 ,
WKG008 TYPE COSP -WKG001 ,
WKG009 TYPE COSP -WKG001 ,
WKG010 TYPE COSP -WKG001 ,
WKG011 TYPE COSP -WKG001 ,
WKG012 TYPE COSP -WKG001 ,
WKGSUM TYPE COSP -WKG001 ,
"I TYPE I,
END OF TY_S_COSP ,
TY_T_COSP TYPE TABLE OF TY_S_COSP .
DATA : LS_COSP TYPE TY_S_COSP ,
LT_COSP1 TYPE TY_T_COSP ,
LT_COSP4 TYPE TY_T_COSP . .
TYPES : BEGIN OF TY_S_COSS ,
LEDNR TYPE COSS -LEDNR ,
OBJNR TYPE COSS -OBJNR ,
GJAHR TYPE COSS -GJAHR ,
WRTTP TYPE COSS -WRTTP ,
VERSN TYPE COSS -VERSN ,
KSTAR TYPE COSS -KSTAR ,
HRKFT TYPE COSS -HRKFT ,
VRGNG TYPE COSS -VRGNG ,
PAROB TYPE COSS -PAROB ,
USPOB TYPE COSS -USPOB ,
BEKNZ TYPE COSS -BEKNZ ,
TWAER TYPE COSS -TWAER ,
PERBL TYPE COSS -PERBL ,
WKG001 TYPE COSS -WKG001 ,
WKG002 TYPE COSS -WKG001 ,
WKG003 TYPE COSS -WKG001 ,
WKG004 TYPE COSS -WKG001 ,
WKG005 TYPE COSS -WKG001 ,
WKG006 TYPE COSS -WKG001 ,
WKG007 TYPE COSS -WKG001 ,
WKG008 TYPE COSS -WKG001 ,
WKG009 TYPE COSS -WKG001 ,
WKG010 TYPE COSS -WKG001 ,
WKG011 TYPE COSS -WKG001 ,
WKG012 TYPE COSS -WKG001 ,
WKGSUM TYPE COSS -WKG001 ,
I TYPE I ,
END OF TY_S_COSS ,
TY_T_COSS TYPE TABLE OF TY_S_COSS .
DATA : LS_COSS TYPE TY_S_COSS ,
LT_COSS1 TYPE TY_T_COSS ,
LT_COSS4 TYPE TY_T_COSS .
*****以下标准料的逻辑, 待定:
TYPES : BEGIN OF TY_S_RESB ,
RSNUM TYPE RESB -RSNUM ,
RSPOS TYPE RESB -RSPOS ,
RSART TYPE RESB -RSART ,
MATNR2 TYPE RESB -MATNR ,
GPREIS TYPE RESB -GPREIS ,
BDMNG TYPE RESB -BDMNG ,
END OF TY_S_RESB ,
TY_T_RESB TYPE TABLE OF TY_S_RESB .
DATA : LS_RESB TYPE TY_S_RESB ,
LT_RESB TYPE TY_T_RESB ,
LT_RESB1 TYPE TY_T_RESB .
" 计划用17个物料,实际用了11个物料,周一将值类型 = ‘01’上放入RESB的数据
*******CKIS的相关定义
*** AUFM
* TYPES : BEGIN OF TY_S_AUFM,
* AUFNR TYPE AUFM-AUFNR,
* BUDAT TYPE AUFM-BUDAT,
* MATNR TYPE AUFM-MATNR,
* BWART TYPE AUFM-BWART,
* END OF TY_S_AUFM,
* TY_T_AUFM TYPE TABLE OF TY_S_AUFM.
* DATA: LS_AUFM TYPE TY_S_AUFM,
* LT_AUFM TYPE TY_T_AUFM.
*
***** KEKO
* TYPES : BEGIN OF TY_S_KEKO,
* KADAT TYPE KEKO-KADAT,
* BIDAT TYPE KEKO-BIDAT,
* WERKS TYPE KEKO-WERKS,
* BWTAR TYPE KEKO-BWTAR,
* MATNR TYPE KEKO-MATNR,
* KALNR TYPE KEKO-KALNR,
* BZOBJ TYPE KEKO-BZOBJ,
* KALKA TYPE KEKO-KALKA,
* KADKY TYPE KEKO-KADKY,
* TVERS TYPE KEKO-TVERS,
* BWVAR TYPE KEKO-BWVAR,
* KKZMA TYPE KEKO-KKZMA,
* BWDAT TYPE KEKO-BWDAT,
* END OF TY_S_KEKO,
* TY_T_KEKO TYPE TABLE OF TY_S_KEKO.
* DATA: LS_KEKO TYPE TY_S_KEKO,
*
* LT_KEKO TYPE TY_T_KEKO,
* LT_KEKO1 TYPE TY_T_KEKO,
* LT_KEKO2 TYPE TY_T_KEKO."委外核价
*
** TYPES : BEGIN OF TY_S_CKIS,
** KALNR TYPE CKIS-KALNR,
** WERTN TYPE CKIS-WERTN,
** END OF TY_S_CKIS,
** TY_T_CKIS TYPE TABLE OF TY_S_CKIS.
** DATA: LS_CKIS TYPE TY_S_CKIS,
** LT_CKIS TYPE TY_T_CKIS.
*&---------------------------------------------------------------------*
Form CALL_USER_EXIT tables i_t_select type sbiwa_t_select
i_t_fields type sbiwa_t_fields
c_t_data structure KKB_IS1_PA
c_t_messages type balmi_tab .
DATA : LS_RESULT LIKE KKB_IS1_PA ,
LT_RESULT like KKB_IS1_PA occurs 0 .
DATA : LS_RESULT1 LIKE KKB_IS1_PA ,
LT_RESULT1 LIKE KKB_IS1_PA OCCURS 0 .
DATA : I_RECORD TYPE I .
I_RECORD = 0 .
*
FIELD-SYMBOLS : <L_RESULT> TYPE KKB_IS1_PA ,
<L_RESULT1> TYPE KKB_IS1_PA .
*
BREAK-POINT .
LT_RESULT[] = C_T_DATA[] .
IF NOT LT_RESULT[] IS INITIAL .
SELECT AUFNR
ERDAT
GSBER
OBJNR
INTO TABLE LT_AUFK
FROM AUFK
FOR ALL ENTRIES IN LT_RESULT
WHERE AUFNR = LT_RESULT -PRODORDER .
*
SORT LT_AUFK BY AUFNR .
** DELETE ADJACENT DUPLICATES FROM LT_VBEP.
*
SELECT
AUFNR
POSNR
LTRMI
PSMNG
WEMNG
INTO TABLE LT_AFPO
FROM AFPO
FOR ALL ENTRIES IN LT_RESULT
WHERE AUFNR = LT_RESULT -PRODORDER .
LOOP AT LT_AFPO INTO LS_AFPO .
CLEAR LS_AFPO -POSNR .
COLLECT LS_AFPO INTO LT_AFPO2 .
ENDLOOP .
CLEAR LT_AFPO .
LT_AFPO[] = LT_AFPO2[] .
SORT LT_AFPO BY AUFNR .
SELECT
AUFNR
RSNUM
AUFPL
INTO TABLE LT_AFKO
FROM AFKO
FOR ALL ENTRIES IN LT_RESULT
WHERE AUFNR = LT_RESULT -PRODORDER .
SORT LT_AFKO BY AUFNR .
SELECT
RSNUM
J_3AKORDX
J_3APGNR
INTO TABLE LT_J_3AFSRESB
FROM J_3AFSRESB
FOR ALL ENTRIES IN LT_AFKO
WHERE RSNUM = LT_AFKO -RSNUM
AND RSPOS = '1' .
SORT LT_J_3AFSRESB BY RSNUM .
SELECT
BWKEY
MATNR
BWTAR
BKLAS
INTO TABLE LT_MBEW
FROM MBEW
FOR ALL ENTRIES IN LT_RESULT
WHERE BWKEY = LT_RESULT -PLANT
AND MATNR = LT_RESULT -MATERIAL .
SORT LT_MBEW BY BWKEY MATNR BKLAS .
SELECT
OBJNR
INACT
STAT
INTO TABLE LT_JEST
FROM JEST
FOR ALL ENTRIES IN LT_AUFK
WHERE OBJNR = LT_AUFK -OBJNR
AND ( STAT = 'I0012' OR STAT = 'I0045' )
AND INACT EQ SPACE .
SORT LT_JEST BY OBJNR STAT .
SELECT ISTAT
TXT04
TXT30
INTO TABLE LT_TJ02T
FROM TJ02T
FOR ALL ENTRIES IN LT_JEST
WHERE ISTAT = LT_JEST -STAT
AND SPRAS = '1' .
SORT LT_TJ02T BY ISTAT TXT04 .
***********************以下为标准料的取值,“2016-10-21 待定
SELECT
RSNUM
RSPOS
RSART
MATNR
GPREIS
BDMNG
INTO TABLE LT_RESB
FROM RESB
FOR ALL ENTRIES IN LT_AFKO
WHERE RSNUM = LT_AFKO -RSNUM .
SORT LT_RESB BY RSNUM RSPOS RSART MATNR2 .
"GPREIS BDMNG
***********************以上为标准料的取值,“2016-10-21 待定
************************取COSP, COSS表
*SELECT
* OBJNR WRTTP KSTAR WKG001 WKG002 WKG003 WKG004 WKG005 WKG006
* WKG007 WKG008 WKG009 WKG010 WKG011 WKG012
*INTO TABLE LT_COSP4
*FROM COSP
*FOR ALL ENTRIES IN LT_AUFK
* WHERE OBJNR = LT_AUFK-OBJNR
* AND WRTTP = '4'. "实际
SELECT
LEDNR OBJNR GJAHR WRTTP VERSN KSTAR HRKFT VRGNG VBUND
PARGB BEKNZ TWAER PERBL
WKG001 WKG002 WKG003 WKG004 WKG005 WKG006
WKG007 WKG008 WKG009 WKG010 WKG011 WKG012
INTO TABLE LT_COSP1
FROM COSP
FOR ALL ENTRIES IN LT_AUFK
WHERE OBJNR = LT_AUFK -OBJNR
AND WRTTP = '01' . "标准
CLEAR LT_COSP4 .
LOOP AT LT_COSP1 INTO LS_COSP .
CLEAR : LS_COSP -LEDNR ,
LS_COSP -GJAHR , LS_COSP -WRTTP , LS_COSP -VERSN , LS_COSP -HRKFT , LS_COSP -VRGNG , LS_COSP -VBUND ,
LS_COSP -PARGB , LS_COSP -BEKNZ , LS_COSP -TWAER , LS_COSP -PERBL .
COLLECT LS_COSP INTO LT_COSP4 .
ENDLOOP .
LT_COSP1[] = LT_COSP4[] .
CLEAR : LT_COSP4 . CLEAR : LS_COSP .
SORT LT_COSP1 BY OBJNR KSTAR .
*SELECT
* OBJNR WRTTP KSTAR WKG001 WKG002 WKG003 WKG004 WKG005 WKG006
* WKG007 WKG008 WKG009 WKG010 WKG011 WKG012
*INTO TABLE LT_COSS4
*FROM COSS
*FOR ALL ENTRIES IN LT_AUFK
* WHERE OBJNR = LT_AUFK-OBJNR
* AND WRTTP = '4'. "实际
SELECT
LEDNR OBJNR GJAHR WRTTP VERSN KSTAR HRKFT VRGNG PAROB
USPOB BEKNZ TWAER PERBL
WKG001 WKG002 WKG003 WKG004 WKG005 WKG006
WKG007 WKG008 WKG009 WKG010 WKG011 WKG012
INTO TABLE LT_COSS1
FROM COSS
FOR ALL ENTRIES IN LT_AUFK
WHERE OBJNR = LT_AUFK -OBJNR
AND WRTTP = '01' . "标准
CLEAR LT_COSS4 .
LOOP AT LT_COSS1 INTO LS_COSS .
CLEAR : LS_COSS -LEDNR ,
LS_COSS -LEDNR ,LS_COSS -GJAHR ,LS_COSS -WRTTP ,LS_COSS -VERSN ,LS_COSS -HRKFT ,LS_COSS -VRGNG ,LS_COSS -PAROB
,LS_COSS -USPOB ,LS_COSS -BEKNZ ,LS_COSS -TWAER ,LS_COSS -PERBL .
COLLECT LS_COSS INTO LT_COSS4 .
ENDLOOP .
LT_COSS1[] = LT_COSS4[] .
CLEAR LT_COSS4 . CLEAR LS_COSS .
SORT LT_COSS1 BY OBJNR KSTAR .
**
*SELECT AUFNR
* BUDAT
* MATNR
* BWART
* INTO TABLE LT_AUFM
* FROM AUFM
* FOR ALL ENTRIES IN LT_RESULT
* WHERE AUFNR = LT_RESULT-PRODORDER AND ( BWART = '101' OR BWART = '102' ).
*
*SORT LT_AUFM BY MATNR ASCENDING
* BWART ASCENDING
* BUDAT ASCENDING.
*SELECT
* KADAT
* BIDAT
* WERKS
* BWTAR
* MATNR
* KALNR
* BZOBJ
* KALKA
* KADKY
* TVERS
* BWVAR
* KKZMA
*
* INTO TABLE LT_KEKO
* FROM KEKO
* FOR ALL ENTRIES IN LT_AUFM
* WHERE MATNR = LT_AUFM-MATNR AND
* KADAT < LT_AUFM-BUDAT AND BIDAT > LT_AUFM-BUDAT.
ENDIF . "10.20 debug结束
***---------------------------------------------------------------
LOOP AT LT_RESULT into LS_RESULT .
READ TABLE LT_AUFK INTO LS_AUFK WITH KEY AUFNR = LS_RESULT -PRODORDER BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -ERDAT = LS_AUFK -ERDAT . "订单创建日期
LS_RESULT -GSBER = LS_AUFK -GSBER . " 品牌
LS_RESULT -OBJNR = LS_AUFK -OBJNR . " 对象号
ENDIF .
READ TABLE LT_AFPO INTO LS_AFPO WITH KEY AUFNR = LS_RESULT -PRODORDER BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -LTRMI = LS_AFPO -LTRMI . "订单完成日期
LS_RESULT -PSMNG = LS_AFPO -PSMNG . "订单数量
LS_RESULT -WEMNG = LS_AFPO -WEMNG . "完工数量
ENDIF .
READ TABLE LT_AFKO INTO LS_AFKO WITH KEY AUFNR = LS_RESULT -PRODORDER BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -RSNUM = LS_AFKO -RSNUM . "预留/相关需求的编号
ENDIF .
READ TABLE LT_J_3AFSRESB INTO LS_J_3AFSRESB WITH KEY RSNUM = LS_RESULT -RSNUM BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -J_3AKORDX = LS_J_3AFSRESB -J_3AKORDX . " 网格值
LS_RESULT -J_3APGNR = LS_J_3AFSRESB -J_3APGNR .
ENDIF .
READ TABLE LT_MBEW INTO LS_MBEW WITH KEY BWKEY = LS_RESULT -PLANT MATNR = LS_RESULT -MATERIAL BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -BKLAS = LS_MBEW -BKLAS . " 评估类
ENDIF .
READ TABLE LT_JEST INTO LS_JEST WITH KEY OBJNR = LS_RESULT -OBJNR BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -STAT = LS_JEST -STAT . " 对象状态
ENDIF .
READ TABLE LT_TJ02T INTO LS_TJ02T WITH KEY ISTAT = LS_RESULT -STAT BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -TXT04 = LS_TJ02T -TXT04 .
LS_RESULT -TXT30 = LS_TJ02T -TXT30 .
ENDIF . " 订单状态
*
****标准料工费委外
READ TABLE LT_COSP1 INTO LS_COSP WITH KEY OBJNR = LS_RESULT -OBJNR KSTAR = LS_RESULT -COSTELMNT BINARY SEARCH .
IF SY -SUBRC = 0 AND LS_RESULT -VTYPE = '20' .
LS_COSP -WKGSUM = LS_COSP -WKG001 + LS_COSP -WKG002 + LS_COSP -WKG003 + LS_COSP -WKG004 + LS_COSP -WKG005 + LS_COSP -WKG006
+ LS_COSP -WKG007 + LS_COSP -WKG008 + LS_COSP -WKG009 + LS_COSP -WKG010 + LS_COSP -WKG011 + LS_COSP -WKG012 .
LS_RESULT -WKG01 = LS_COSP -WKGSUM .
ENDIF . "标准/委外
CLEAR LS_COSP .
READ TABLE LT_COSS1 INTO LS_COSS WITH KEY OBJNR = LS_RESULT -OBJNR KSTAR = LS_RESULT -COSTELMNT BINARY SEARCH .
IF SY -SUBRC = 0 AND LS_RESULT -VTYPE = '20' .
LS_COSS -WKGSUM = LS_COSS -WKG001 + LS_COSS -WKG002 + LS_COSS -WKG003 + LS_COSS -WKG004 + LS_COSS -WKG005 + LS_COSS -WKG006
+ LS_COSS -WKG007 + LS_COSS -WKG008 + LS_COSS -WKG009 + LS_COSS -WKG010 + LS_COSS -WKG011 + LS_COSS -WKG012 .
LS_RESULT -WKG11 = LS_COSS -WKGSUM .
ENDIF . "标准工/费
CLEAR LS_COSS .
READ TABLE LT_RESB INTO LS_RESB WITH KEY RSNUM = LS_RESULT -RSNUM MATNR2 = LS_RESULT -MAT_INPUT .
IF SY -SUBRC = 0 AND LS_RESULT -VTYPE = '10' AND LS_RESULT -COSTELMNT = '5001010000' .
LS_RESULT -WKG014 = LS_RESB -GPREIS * LS_RESB -BDMNG .
ENDIF .
CLEAR LS_RESB .
MODIFY LT_RESULT FROM LS_RESULT .
ENDLOOP .
CLEAR c_t_data . REFRESH c_t_data .
c_t_data[] = LT_RESULT[] .
CLEAR LS_RESULT . REFRESH LT_RESULT .
*
ENDFORM . "CALL_USER_EXIT
**& Subroutine pool 0CO_PC_01
**&
**&---------------------------------------------------------------------*
**& 2014-5-10 增强数据源 0CO_PC_01
**&
**&---------------------------------------------------------------------*
*
PROGRAM ZBI_0CO_PC_01 .
TYPE-POOLS : sbiwa .
TABLES :AUFK ,
AFPO .
TYPES :
I_KKB_IS1_PA TYPE KKB_IS1_PA OCCURS 0 .
TYPES : BEGIN OF TY_S_AUFK ,
AUFNR TYPE AUFK -AUFNR ,
ERDAT TYPE AUFK -ERDAT ,
GSBER TYPE AUFK -GSBER ,
OBJNR TYPE AUFK -OBJNR ,
END OF TY_S_AUFK ,
TY_T_AUFK TYPE TABLE OF TY_S_AUFK .
DATA : LS_AUFK TYPE TY_S_AUFK ,
LT_AUFK TYPE TY_T_AUFK .
TYPES : BEGIN OF TY_S_AFPO ,
AUFNR TYPE AFPO -AUFNR ,
POSNR TYPE AFPO -POSNR ,
LTRMI TYPE AFPO -LTRMI ,
PSMNG TYPE AFPO -PSMNG ,
WEMNG TYPE AFPO -WEMNG ,
END OF TY_S_AFPO ,
TY_T_AFPO TYPE TABLE OF TY_S_AFPO .
DATA : LS_AFPO TYPE TY_S_AFPO ,
LT_AFPO TYPE TY_T_AFPO ,
LT_AFPO2 TYPE TY_T_AFPO .
TYPES : BEGIN OF TY_S_AFKO ,
AUFNR TYPE AFKO -AUFNR ,
RSNUM TYPE AFKO -RSNUM ,
AUFPL TYPE AFKO -AUFPL ,
END OF TY_S_AFKO ,
TY_T_AFKO TYPE TABLE OF TY_S_AFKO .
DATA : LS_AFKO TYPE TY_S_AFKO ,
LT_AFKO TYPE TY_T_AFKO ,
LT_AFKO2 TYPE TY_T_AFKO .
TYPES : BEGIN OF TY_S_J_3AFSRESB ,
RSNUM TYPE AFKO -RSNUM ,
J_3AKORDX TYPE J_3AFSRESB -J_3AKORDX ,
J_3APGNR TYPE J_3AFSRESB -J_3APGNR ,
END OF TY_S_J_3AFSRESB ,
TY_T_J_3AFSRESB TYPE TABLE OF TY_S_J_3AFSRESB .
DATA : LS_J_3AFSRESB TYPE TY_S_J_3AFSRESB ,
LT_J_3AFSRESB TYPE TY_T_J_3AFSRESB .
TYPES : BEGIN OF TY_S_MBEW ,
BWKEY TYPE MBEW -BWKEY ,
MATNR TYPE MBEW -MATNR ,
BWTAR TYPE MBEW -BWTAR ,
BKLAS TYPE MBEW -BKLAS ,
END OF TY_S_MBEW ,
TY_T_MBEW TYPE TABLE OF TY_S_MBEW .
DATA : LS_MBEW TYPE TY_S_MBEW ,
LT_MBEW TYPE TY_T_MBEW .
TYPES : BEGIN OF TY_S_JEST ,
OBJNR TYPE JEST -OBJNR ,
INACT TYPE JEST -INACT ,
STAT TYPE JEST -STAT ,
END OF TY_S_JEST ,
TY_T_JEST TYPE TABLE OF TY_S_JEST .
DATA : LS_JEST TYPE TY_S_JEST ,
LT_JEST TYPE TY_T_JEST .
TYPES : BEGIN OF TY_S_TJ02T ,
ISTAT TYPE TJ02T -ISTAT ,
TXT04 TYPE TJ02T -TXT04 ,
TXT30 TYPE TJ02T -TXT30 ,
END OF TY_S_TJ02T ,
TY_T_TJ02T TYPE TABLE OF TY_S_TJ02T .
DATA : LS_TJ02T TYPE TY_S_TJ02T ,
LT_TJ02T TYPE TY_T_TJ02T .
*
TYPES : BEGIN OF TY_S_COSP ,
LEDNR TYPE COSP -LEDNR ,
OBJNR TYPE COSP -OBJNR ,
GJAHR TYPE COSP -GJAHR ,
WRTTP TYPE COSP -WRTTP ,
VERSN TYPE COSP -VERSN ,
KSTAR TYPE COSP -KSTAR ,
HRKFT TYPE COSP -HRKFT ,
VRGNG TYPE COSP -VRGNG ,
VBUND TYPE COSP -VBUND ,
PARGB TYPE COSP -PARGB ,
BEKNZ TYPE COSP -BEKNZ ,
TWAER TYPE COSP -TWAER ,
PERBL TYPE COSP -PERBL ,
WKG001 TYPE COSP -WKG001 ,
WKG002 TYPE COSP -WKG001 ,
WKG003 TYPE COSP -WKG001 ,
WKG004 TYPE COSP -WKG001 ,
WKG005 TYPE COSP -WKG001 ,
WKG006 TYPE COSP -WKG001 ,
WKG007 TYPE COSP -WKG001 ,
WKG008 TYPE COSP -WKG001 ,
WKG009 TYPE COSP -WKG001 ,
WKG010 TYPE COSP -WKG001 ,
WKG011 TYPE COSP -WKG001 ,
WKG012 TYPE COSP -WKG001 ,
WKGSUM TYPE COSP -WKG001 ,
"I TYPE I,
END OF TY_S_COSP ,
TY_T_COSP TYPE TABLE OF TY_S_COSP .
DATA : LS_COSP TYPE TY_S_COSP ,
LT_COSP1 TYPE TY_T_COSP ,
LT_COSP4 TYPE TY_T_COSP . .
TYPES : BEGIN OF TY_S_COSS ,
LEDNR TYPE COSS -LEDNR ,
OBJNR TYPE COSS -OBJNR ,
GJAHR TYPE COSS -GJAHR ,
WRTTP TYPE COSS -WRTTP ,
VERSN TYPE COSS -VERSN ,
KSTAR TYPE COSS -KSTAR ,
HRKFT TYPE COSS -HRKFT ,
VRGNG TYPE COSS -VRGNG ,
PAROB TYPE COSS -PAROB ,
USPOB TYPE COSS -USPOB ,
BEKNZ TYPE COSS -BEKNZ ,
TWAER TYPE COSS -TWAER ,
PERBL TYPE COSS -PERBL ,
WKG001 TYPE COSS -WKG001 ,
WKG002 TYPE COSS -WKG001 ,
WKG003 TYPE COSS -WKG001 ,
WKG004 TYPE COSS -WKG001 ,
WKG005 TYPE COSS -WKG001 ,
WKG006 TYPE COSS -WKG001 ,
WKG007 TYPE COSS -WKG001 ,
WKG008 TYPE COSS -WKG001 ,
WKG009 TYPE COSS -WKG001 ,
WKG010 TYPE COSS -WKG001 ,
WKG011 TYPE COSS -WKG001 ,
WKG012 TYPE COSS -WKG001 ,
WKGSUM TYPE COSS -WKG001 ,
I TYPE I ,
END OF TY_S_COSS ,
TY_T_COSS TYPE TABLE OF TY_S_COSS .
DATA : LS_COSS TYPE TY_S_COSS ,
LT_COSS1 TYPE TY_T_COSS ,
LT_COSS4 TYPE TY_T_COSS .
*****以下标准料的逻辑, 待定:
TYPES : BEGIN OF TY_S_RESB ,
RSNUM TYPE RESB -RSNUM ,
RSPOS TYPE RESB -RSPOS ,
RSART TYPE RESB -RSART ,
MATNR2 TYPE RESB -MATNR ,
GPREIS TYPE RESB -GPREIS ,
BDMNG TYPE RESB -BDMNG ,
END OF TY_S_RESB ,
TY_T_RESB TYPE TABLE OF TY_S_RESB .
DATA : LS_RESB TYPE TY_S_RESB ,
LT_RESB TYPE TY_T_RESB ,
LT_RESB1 TYPE TY_T_RESB .
" 计划用17个物料,实际用了11个物料,周一将值类型 = ‘01’上放入RESB的数据
*******CKIS的相关定义
*** AUFM
* TYPES : BEGIN OF TY_S_AUFM,
* AUFNR TYPE AUFM-AUFNR,
* BUDAT TYPE AUFM-BUDAT,
* MATNR TYPE AUFM-MATNR,
* BWART TYPE AUFM-BWART,
* END OF TY_S_AUFM,
* TY_T_AUFM TYPE TABLE OF TY_S_AUFM.
* DATA: LS_AUFM TYPE TY_S_AUFM,
* LT_AUFM TYPE TY_T_AUFM.
*
***** KEKO
* TYPES : BEGIN OF TY_S_KEKO,
* KADAT TYPE KEKO-KADAT,
* BIDAT TYPE KEKO-BIDAT,
* WERKS TYPE KEKO-WERKS,
* BWTAR TYPE KEKO-BWTAR,
* MATNR TYPE KEKO-MATNR,
* KALNR TYPE KEKO-KALNR,
* BZOBJ TYPE KEKO-BZOBJ,
* KALKA TYPE KEKO-KALKA,
* KADKY TYPE KEKO-KADKY,
* TVERS TYPE KEKO-TVERS,
* BWVAR TYPE KEKO-BWVAR,
* KKZMA TYPE KEKO-KKZMA,
* BWDAT TYPE KEKO-BWDAT,
* END OF TY_S_KEKO,
* TY_T_KEKO TYPE TABLE OF TY_S_KEKO.
* DATA: LS_KEKO TYPE TY_S_KEKO,
*
* LT_KEKO TYPE TY_T_KEKO,
* LT_KEKO1 TYPE TY_T_KEKO,
* LT_KEKO2 TYPE TY_T_KEKO."委外核价
*
** TYPES : BEGIN OF TY_S_CKIS,
** KALNR TYPE CKIS-KALNR,
** WERTN TYPE CKIS-WERTN,
** END OF TY_S_CKIS,
** TY_T_CKIS TYPE TABLE OF TY_S_CKIS.
** DATA: LS_CKIS TYPE TY_S_CKIS,
** LT_CKIS TYPE TY_T_CKIS.
*&---------------------------------------------------------------------*
Form CALL_USER_EXIT tables i_t_select type sbiwa_t_select
i_t_fields type sbiwa_t_fields
c_t_data structure KKB_IS1_PA
c_t_messages type balmi_tab .
DATA : LS_RESULT LIKE KKB_IS1_PA ,
LT_RESULT like KKB_IS1_PA occurs 0 .
DATA : LS_RESULT1 LIKE KKB_IS1_PA ,
LT_RESULT1 LIKE KKB_IS1_PA OCCURS 0 .
DATA : I_RECORD TYPE I .
I_RECORD = 0 .
*
FIELD-SYMBOLS : <L_RESULT> TYPE KKB_IS1_PA ,
<L_RESULT1> TYPE KKB_IS1_PA .
*
BREAK-POINT .
LT_RESULT[] = C_T_DATA[] .
IF NOT LT_RESULT[] IS INITIAL .
SELECT AUFNR
ERDAT
GSBER
OBJNR
INTO TABLE LT_AUFK
FROM AUFK
FOR ALL ENTRIES IN LT_RESULT
WHERE AUFNR = LT_RESULT -PRODORDER .
*
SORT LT_AUFK BY AUFNR .
** DELETE ADJACENT DUPLICATES FROM LT_VBEP.
*
SELECT
AUFNR
POSNR
LTRMI
PSMNG
WEMNG
INTO TABLE LT_AFPO
FROM AFPO
FOR ALL ENTRIES IN LT_RESULT
WHERE AUFNR = LT_RESULT -PRODORDER .
LOOP AT LT_AFPO INTO LS_AFPO .
CLEAR LS_AFPO -POSNR .
COLLECT LS_AFPO INTO LT_AFPO2 .
ENDLOOP .
CLEAR LT_AFPO .
LT_AFPO[] = LT_AFPO2[] .
SORT LT_AFPO BY AUFNR .
SELECT
AUFNR
RSNUM
AUFPL
INTO TABLE LT_AFKO
FROM AFKO
FOR ALL ENTRIES IN LT_RESULT
WHERE AUFNR = LT_RESULT -PRODORDER .
SORT LT_AFKO BY AUFNR .
SELECT
RSNUM
J_3AKORDX
J_3APGNR
INTO TABLE LT_J_3AFSRESB
FROM J_3AFSRESB
FOR ALL ENTRIES IN LT_AFKO
WHERE RSNUM = LT_AFKO -RSNUM
AND RSPOS = '1' .
SORT LT_J_3AFSRESB BY RSNUM .
SELECT
BWKEY
MATNR
BWTAR
BKLAS
INTO TABLE LT_MBEW
FROM MBEW
FOR ALL ENTRIES IN LT_RESULT
WHERE BWKEY = LT_RESULT -PLANT
AND MATNR = LT_RESULT -MATERIAL .
SORT LT_MBEW BY BWKEY MATNR BKLAS .
SELECT
OBJNR
INACT
STAT
INTO TABLE LT_JEST
FROM JEST
FOR ALL ENTRIES IN LT_AUFK
WHERE OBJNR = LT_AUFK -OBJNR
AND ( STAT = 'I0012' OR STAT = 'I0045' )
AND INACT EQ SPACE .
SORT LT_JEST BY OBJNR STAT .
SELECT ISTAT
TXT04
TXT30
INTO TABLE LT_TJ02T
FROM TJ02T
FOR ALL ENTRIES IN LT_JEST
WHERE ISTAT = LT_JEST -STAT
AND SPRAS = '1' .
SORT LT_TJ02T BY ISTAT TXT04 .
***********************以下为标准料的取值,“2016-10-21 待定
SELECT
RSNUM
RSPOS
RSART
MATNR
GPREIS
BDMNG
INTO TABLE LT_RESB
FROM RESB
FOR ALL ENTRIES IN LT_AFKO
WHERE RSNUM = LT_AFKO -RSNUM .
SORT LT_RESB BY RSNUM RSPOS RSART MATNR2 .
"GPREIS BDMNG
***********************以上为标准料的取值,“2016-10-21 待定
************************取COSP, COSS表
*SELECT
* OBJNR WRTTP KSTAR WKG001 WKG002 WKG003 WKG004 WKG005 WKG006
* WKG007 WKG008 WKG009 WKG010 WKG011 WKG012
*INTO TABLE LT_COSP4
*FROM COSP
*FOR ALL ENTRIES IN LT_AUFK
* WHERE OBJNR = LT_AUFK-OBJNR
* AND WRTTP = '4'. "实际
SELECT
LEDNR OBJNR GJAHR WRTTP VERSN KSTAR HRKFT VRGNG VBUND
PARGB BEKNZ TWAER PERBL
WKG001 WKG002 WKG003 WKG004 WKG005 WKG006
WKG007 WKG008 WKG009 WKG010 WKG011 WKG012
INTO TABLE LT_COSP1
FROM COSP
FOR ALL ENTRIES IN LT_AUFK
WHERE OBJNR = LT_AUFK -OBJNR
AND WRTTP = '01' . "标准
CLEAR LT_COSP4 .
LOOP AT LT_COSP1 INTO LS_COSP .
CLEAR : LS_COSP -LEDNR ,
LS_COSP -GJAHR , LS_COSP -WRTTP , LS_COSP -VERSN , LS_COSP -HRKFT , LS_COSP -VRGNG , LS_COSP -VBUND ,
LS_COSP -PARGB , LS_COSP -BEKNZ , LS_COSP -TWAER , LS_COSP -PERBL .
COLLECT LS_COSP INTO LT_COSP4 .
ENDLOOP .
LT_COSP1[] = LT_COSP4[] .
CLEAR : LT_COSP4 . CLEAR : LS_COSP .
SORT LT_COSP1 BY OBJNR KSTAR .
*SELECT
* OBJNR WRTTP KSTAR WKG001 WKG002 WKG003 WKG004 WKG005 WKG006
* WKG007 WKG008 WKG009 WKG010 WKG011 WKG012
*INTO TABLE LT_COSS4
*FROM COSS
*FOR ALL ENTRIES IN LT_AUFK
* WHERE OBJNR = LT_AUFK-OBJNR
* AND WRTTP = '4'. "实际
SELECT
LEDNR OBJNR GJAHR WRTTP VERSN KSTAR HRKFT VRGNG PAROB
USPOB BEKNZ TWAER PERBL
WKG001 WKG002 WKG003 WKG004 WKG005 WKG006
WKG007 WKG008 WKG009 WKG010 WKG011 WKG012
INTO TABLE LT_COSS1
FROM COSS
FOR ALL ENTRIES IN LT_AUFK
WHERE OBJNR = LT_AUFK -OBJNR
AND WRTTP = '01' . "标准
CLEAR LT_COSS4 .
LOOP AT LT_COSS1 INTO LS_COSS .
CLEAR : LS_COSS -LEDNR ,
LS_COSS -LEDNR ,LS_COSS -GJAHR ,LS_COSS -WRTTP ,LS_COSS -VERSN ,LS_COSS -HRKFT ,LS_COSS -VRGNG ,LS_COSS -PAROB
,LS_COSS -USPOB ,LS_COSS -BEKNZ ,LS_COSS -TWAER ,LS_COSS -PERBL .
COLLECT LS_COSS INTO LT_COSS4 .
ENDLOOP .
LT_COSS1[] = LT_COSS4[] .
CLEAR LT_COSS4 . CLEAR LS_COSS .
SORT LT_COSS1 BY OBJNR KSTAR .
**
*SELECT AUFNR
* BUDAT
* MATNR
* BWART
* INTO TABLE LT_AUFM
* FROM AUFM
* FOR ALL ENTRIES IN LT_RESULT
* WHERE AUFNR = LT_RESULT-PRODORDER AND ( BWART = '101' OR BWART = '102' ).
*
*SORT LT_AUFM BY MATNR ASCENDING
* BWART ASCENDING
* BUDAT ASCENDING.
*SELECT
* KADAT
* BIDAT
* WERKS
* BWTAR
* MATNR
* KALNR
* BZOBJ
* KALKA
* KADKY
* TVERS
* BWVAR
* KKZMA
*
* INTO TABLE LT_KEKO
* FROM KEKO
* FOR ALL ENTRIES IN LT_AUFM
* WHERE MATNR = LT_AUFM-MATNR AND
* KADAT < LT_AUFM-BUDAT AND BIDAT > LT_AUFM-BUDAT.
ENDIF . "10.20 debug结束
***---------------------------------------------------------------
LOOP AT LT_RESULT into LS_RESULT .
READ TABLE LT_AUFK INTO LS_AUFK WITH KEY AUFNR = LS_RESULT -PRODORDER BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -ERDAT = LS_AUFK -ERDAT . "订单创建日期
LS_RESULT -GSBER = LS_AUFK -GSBER . " 品牌
LS_RESULT -OBJNR = LS_AUFK -OBJNR . " 对象号
ENDIF .
READ TABLE LT_AFPO INTO LS_AFPO WITH KEY AUFNR = LS_RESULT -PRODORDER BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -LTRMI = LS_AFPO -LTRMI . "订单完成日期
LS_RESULT -PSMNG = LS_AFPO -PSMNG . "订单数量
LS_RESULT -WEMNG = LS_AFPO -WEMNG . "完工数量
ENDIF .
READ TABLE LT_AFKO INTO LS_AFKO WITH KEY AUFNR = LS_RESULT -PRODORDER BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -RSNUM = LS_AFKO -RSNUM . "预留/相关需求的编号
ENDIF .
READ TABLE LT_J_3AFSRESB INTO LS_J_3AFSRESB WITH KEY RSNUM = LS_RESULT -RSNUM BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -J_3AKORDX = LS_J_3AFSRESB -J_3AKORDX . " 网格值
LS_RESULT -J_3APGNR = LS_J_3AFSRESB -J_3APGNR .
ENDIF .
READ TABLE LT_MBEW INTO LS_MBEW WITH KEY BWKEY = LS_RESULT -PLANT MATNR = LS_RESULT -MATERIAL BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -BKLAS = LS_MBEW -BKLAS . " 评估类
ENDIF .
READ TABLE LT_JEST INTO LS_JEST WITH KEY OBJNR = LS_RESULT -OBJNR BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -STAT = LS_JEST -STAT . " 对象状态
ENDIF .
READ TABLE LT_TJ02T INTO LS_TJ02T WITH KEY ISTAT = LS_RESULT -STAT BINARY SEARCH .
IF SY -SUBRC = 0 .
LS_RESULT -TXT04 = LS_TJ02T -TXT04 .
LS_RESULT -TXT30 = LS_TJ02T -TXT30 .
ENDIF . " 订单状态
*
****标准料工费委外
READ TABLE LT_COSP1 INTO LS_COSP WITH KEY OBJNR = LS_RESULT -OBJNR KSTAR = LS_RESULT -COSTELMNT BINARY SEARCH .
IF SY -SUBRC = 0 AND LS_RESULT -VTYPE = '20' .
LS_COSP -WKGSUM = LS_COSP -WKG001 + LS_COSP -WKG002 + LS_COSP -WKG003 + LS_COSP -WKG004 + LS_COSP -WKG005 + LS_COSP -WKG006
+ LS_COSP -WKG007 + LS_COSP -WKG008 + LS_COSP -WKG009 + LS_COSP -WKG010 + LS_COSP -WKG011 + LS_COSP -WKG012 .
LS_RESULT -WKG01 = LS_COSP -WKGSUM .
ENDIF . "标准/委外
CLEAR LS_COSP .
READ TABLE LT_COSS1 INTO LS_COSS WITH KEY OBJNR = LS_RESULT -OBJNR KSTAR = LS_RESULT -COSTELMNT BINARY SEARCH .
IF SY -SUBRC = 0 AND LS_RESULT -VTYPE = '20' .
LS_COSS -WKGSUM = LS_COSS -WKG001 + LS_COSS -WKG002 + LS_COSS -WKG003 + LS_COSS -WKG004 + LS_COSS -WKG005 + LS_COSS -WKG006
+ LS_COSS -WKG007 + LS_COSS -WKG008 + LS_COSS -WKG009 + LS_COSS -WKG010 + LS_COSS -WKG011 + LS_COSS -WKG012 .
LS_RESULT -WKG11 = LS_COSS -WKGSUM .
ENDIF . "标准工/费
CLEAR LS_COSS .
READ TABLE LT_RESB INTO LS_RESB WITH KEY RSNUM = LS_RESULT -RSNUM MATNR2 = LS_RESULT -MAT_INPUT .
IF SY -SUBRC = 0 AND LS_RESULT -VTYPE = '10' AND LS_RESULT -COSTELMNT = '5001010000' .
LS_RESULT -WKG014 = LS_RESB -GPREIS * LS_RESB -BDMNG .
ENDIF .
CLEAR LS_RESB .
MODIFY LT_RESULT FROM LS_RESULT .
ENDLOOP .
CLEAR c_t_data . REFRESH c_t_data .
c_t_data[] = LT_RESULT[] .
CLEAR LS_RESULT . REFRESH LT_RESULT .
*
ENDFORM . "CALL_USER_EXIT