?? bom.txt
字號:
*&FP 2RUN BOM拆分程序 &*
REPORT ZTS_SCM_BOM
LINE-SIZE 230 NO STANDARD PAGE HEADING LINE-COUNT 65.
TABLES:STPO,MAST,STAS,MAKT,ZLCSPLANT,ZATPBOMTIMES,STKO,MARC,ZBOM,ZBOM1,
ZSCM_EXP_STATS.
DATA:PM_MTNRV LIKE MARA-MATNR,
PM_CAPID LIKE TC04-CAPID VALUE 'PP01',
PM_DATUV LIKE STKO-DATUV,
PM_EMENG LIKE STKO-BMENG VALUE '1',
PM_EHNDL(1) VALUE '1',
PM_DSPRF LIKE KLAH-CLASS VALUE 'SAPCSMLVMP01'.
DATA:DSN LIKE RLGRAP-FILENAME VALUE 'C:\ts_scm_bom_2run.txt'.
DATA:DSN1 LIKE RLGRAP-FILENAME VALUE 'C:\bomconstraint_2run.txt'.
*DATA DSNA(80) VALUE
*'/interface/data3/I2/flatfile/ts_scm_bom_2run.txt'.
*DATA DSNA1(80) VALUE
*'/interface/data3/I2/flatfile/bomconstraint_2run.txt'.
***Add by Michael Zhang for MCS OPEN DATASET at 2006/06/20***EGSK900567***
DATA DSNA(80) VALUE 'ZINTG_DATA3_I2_FLATFILE'.
***Add by Michael Zhang for MCS OPEN DATASET at 2006/06/20***EGSK900567***
DATA ZIDNRK LIKE AUSP-OBJEK.
DATA:BEGIN OF ZHEAD OCCURS 10, "BOM表頭選取有效BOM
STLNR LIKE MAST-STLNR, "BOM#號
MATNR LIKE MAST-MATNR, "物料號
WERKS LIKE MAST-WERKS,
STLAN LIKE MAST-STLAN,
DATUV LIKE STKO-DATUV,
END OF ZHEAD.
DATA: BEGIN OF ZMATNR OCCURS 0,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS,
END OF ZMATNR.
DATA:BEGIN OF ZHEAD1 OCCURS 10, "BOM表頭選取有效BOMOM
STLNR LIKE MAST-STLNR, "BOM號
MATNR LIKE MAST-MATNR, "物料號
WERKS LIKE MAST-WERKS,
STLAN LIKE MAST-STLAN,
END OF ZHEAD1.
DATA:BEGIN OF ZHEADBE OCCURS 10,
MATNR LIKE MAST-MATNR, "物料號
STLNR LIKE MAST-STLNR, "BOM號
STLKN LIKE STAS-STLKN,
WERKS LIKE MAST-WERKS,
STLAN LIKE MAST-STLAN,
END OF ZHEADBE.
DATA: BEGIN OF BOMBLOCK OCCURS 0,
STLTY LIKE STKO-STLTY,
STLNR LIKE STKO-STLNR,
STKOZ LIKE STKO-STKOZ,
STLST LIKE STKO-STLST,
DATUV LIKE STKO-DATUV,
END OF BOMBLOCK.
DATA: LIN TYPE I.
DATA: BEGIN OF ZSTAS OCCURS 20,
STLTY LIKE STAS-STLTY,
STLNR LIKE STAS-STLNR,
STLAL LIKE STAS-STLAL,
STLKN LIKE STAS-STLKN,
AENNR LIKE STAS-AENNR,
END OF ZSTAS.
DATA: BEGIN OF IBOM OCCURS 0,
NAME LIKE STPOX-IDNRK,
WERKS LIKE MAST-WERKS,
STUFE LIKE STPOX-STUFE,
FATHER LIKE STPOX-IDNRK,
IDNRK LIKE STPOX-IDNRK,
DUMPS LIKE STPOX-DUMPS,
MENGE LIKE STPOX-MENGE,
DATUV LIKE STPOX-DATUV,
DATUB LIKE STPOX-DATUB,
ALPGR LIKE STPOX-ALPGR,
ALPRF LIKE STPOX-ALPRF,
EWAHR LIKE STPOX-EWAHR,
KEY LIKE MARC-MAABC,
DATUV1 LIKE STPOX-DATUV,
DATUB1 LIKE STPOX-DATUB,
EWAHR1 LIKE STPOX-ALPGR,
INDEX(10),
SANFE LIKE STPOX-SANFE,
END OF IBOM.
DATA: BEGIN OF IBOMH OCCURS 0,
NAME LIKE STPOX-IDNRK,
WERKS LIKE MAST-WERKS,
STUFE(2), "like stpox-stufe,
FATHER LIKE STPOX-IDNRK,
IDNRK LIKE STPOX-IDNRK,
DUMPS LIKE STPOX-DUMPS,
MENGE(13), " like stpox-menge,
DATUV(10), " like stpox-datuv,
DATUB(10), " like stpox-datub,
ALPGR LIKE STPOX-ALPGR,
ALPRF LIKE STPOX-ALPRF,
EWAHR(3), " like stpox-ewahr,
KEY LIKE MARC-MAABC,
DATUV1(10), " like stpox-datuv,
DATUB1(10), " like stpox-datub,
EWAHR1 LIKE STPOX-ALPGR,
INDEX(10),
SANFE LIKE STPOX-SANFE,
END OF IBOMH.
DATA: BEGIN OF IZBOM OCCURS 100,
MATNR LIKE ZBOM-MATNR,
WERKS LIKE ZBOM-WERKS,
IDNRK1 LIKE ZBOM-IDNRK1,
IDNRK2 LIKE ZBOM-IDNRK2,
RELATION LIKE ZBOM-RELATION,
FLAG LIKE ZBOM-FLAG,
END OF IZBOM.
DATA ZINDEX(10) VALUE '0'.
DATA: BEGIN OF IERROR OCCURS 0,
NAME LIKE STPOX-IDNRK,
WERKS LIKE MAST-WERKS,
FATHER LIKE STPOX-IDNRK,
IDNRK LIKE STPOX-IDNRK,
END OF IERROR.
DATA:IZSCM_EXP_STATS LIKE ZSCM_EXP_STATS OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-BL1.
PARAMETERS: DAY LIKE MAST-ANDAT OBLIGATORY.
SELECT-OPTIONS IWERKS FOR MAST-WERKS.
SELECT-OPTIONS IMATNR FOR MAST-MATNR.
SELECT-OPTIONS ISTLAN FOR MAST-STLAN.
SELECTION-SCREEN END OF BLOCK BL1.
PARAMETER SOPT AS CHECKBOX.
PM_DATUV = SY-DATUM.
*工廠級凍結(jié)標識不為2的,小BOM失效
SELECT MATNR WERKS FROM MARC INTO TABLE ZMATNR
WHERE MATNR IN IMATNR
AND WERKS IN IWERKS
AND MMSTA <> '02'
AND MMSTA <> '04'
AND PSTAT NOT LIKE '%E%'
AND LVORM = ''.
*查找對應BOM號
SELECT STLNR MATNR WERKS STLAN FROM MAST
APPENDING CORRESPONDING FIELDS OF TABLE ZHEAD1
FOR ALL ENTRIES IN ZMATNR
WHERE WERKS = ZMATNR-WERKS
AND MATNR = ZMATNR-MATNR
AND STLAN IN ISTLAN
AND STLAL = '01'
AND ANDAT = DAY.
*當前及未來有效的BOM
DESCRIBE TABLE ZHEAD1 LINES LIN.
IF LIN > 0.
SELECT STLTY STLNR STKOZ STLST DATUV
FROM STKO INTO TABLE BOMBLOCK
FOR ALL ENTRIES IN ZHEAD1
WHERE STLNR = ZHEAD1-STLNR
AND STLTY = 'M'
AND STLAL = '01'.
ENDIF.
SORT ZHEAD1 BY STLNR.
SORT BOMBLOCK BY STLNR ASCENDING STKOZ DESCENDING.
LOOP AT BOMBLOCK.
ON CHANGE OF BOMBLOCK-STLNR.
IF BOMBLOCK-STLST <> '02'.
LOOP AT ZHEAD1 WHERE STLNR = BOMBLOCK-STLNR.
MOVE-CORRESPONDING ZHEAD1 TO ZHEAD.
IF BOMBLOCK-DATUV > SY-DATUM.
ZHEAD-DATUV = BOMBLOCK-DATUV.
ELSE.
ZHEAD-DATUV = SY-DATUM.
ENDIF.
APPEND ZHEAD.
ENDLOOP.
ELSEIF BOMBLOCK-DATUV > SY-DATUM.
LOOP AT ZHEAD1 WHERE STLNR = BOMBLOCK-STLNR.
MOVE-CORRESPONDING ZHEAD1 TO ZHEAD.
ZHEAD-DATUV = SY-DATUM.
APPEND ZHEAD.
ENDLOOP.
ENDIF.
ENDON.
ENDLOOP.
*BOM多層展開
LOOP AT ZHEAD.
CLEAR IBOM.
REFRESH IBOM.
PERFORM BOMEXP TABLES IBOM
USING ZHEAD-MATNR
ZHEAD-WERKS
ZHEAD-DATUV
ZHEAD-STLAN
ZINDEX.
LOOP AT IBOM.
* 文本項、軟盤物料不導出
IF IBOM-IDNRK <> '' AND IBOM-IDNRK <> '0038001070'
AND IBOM-IDNRK <> '0031000454'.
CONCATENATE '00000000' IBOM-IDNRK INTO ZIDNRK.
SELECT SINGLE MMSTA FROM MARC INTO MARC-MMSTA
WHERE MATNR = ZIDNRK
AND WERKS = IBOM-WERKS.
IF MARC-MMSTA <> '02' AND MARC-MMSTA <> '04'. "非02、04物料
MOVE-CORRESPONDING IBOM TO IBOMH.
CONDENSE IBOMH-INDEX.
IF IBOM-DATUB NE '99991231'.
IBOM-DATUB = IBOM-DATUB - 1. "有效期減一,MP需求
IBOMH-DATUB = IBOM-DATUB.
ENDIF.
IF IBOM-DUMPS = 'x'.
* 除兩個特殊虛擬件外,所有虛擬件均不設關(guān)鍵件
IF IBOM-IDNRK <> '0069007620'
AND IBOM-IDNRK <> '0069007621'.
IBOMH-KEY = ''.
ELSE.
IBOMH-KEY = 'x'.
ENDIF.
ENDIF.
APPEND IBOMH.
ELSE.
MOVE-CORRESPONDING IBOM TO IERROR.
APPEND IERROR.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
*導出物料制約關(guān)系
SELECT MATNR WERKS IDNRK1 IDNRK2 RELATION FLAG
FROM ZBOM INTO TABLE IZBOM.
SELECT MATNR WERKS IDNRK1 IDNRK2 RELATION FLAG
FROM ZBOM1
APPENDING TABLE IZBOM.
IF SOPT EQ 'X'.
PERFORM EXPORT_DATA_FT.
ELSE.
PERFORM EXPORT_DATA_BG. "######unix
IZSCM_EXP_STATS-FILENAME = 'ZTS_SCM_BOM'.
IZSCM_EXP_STATS-FILEMODE = ' '.
APPEND IZSCM_EXP_STATS.
MODIFY ZSCM_EXP_STATS FROM IZSCM_EXP_STATS.
ENDIF.
LOOP AT IERROR. "寫日志
IF SY-TABIX = 1.
WRITE: / '狀態(tài)為04的物料:'.
ENDIF.
READ TABLE IBOM WITH KEY NAME = IERROR-NAME
WERKS = IERROR-WERKS
INDEX = IERROR-FATHER.
WRITE AT /1(10) IERROR-NAME+0(10).
WRITE AT 15 IERROR-WERKS.
WRITE AT 25(10) IBOM-IDNRK+0(10).
WRITE AT 40(10) IERROR-IDNRK+0(10).
ENDLOOP.
FORM EXPORT_DATA_FT.
*{ REPLACE EGSK900146 1
*\ CALL FUNCTION 'WS_DOWNLOAD'
*\ EXPORTING
*\* BIN_FILESIZE = ' '
*\* CODEPAGE = ' '
*\ FILENAME = DSN
*\ FILETYPE = 'DAT'
*\* MODE = ' '
*\* WK1_N_FORMAT = ' '
*\* WK1_N_SIZE = ' '
*\* WK1_T_FORMAT = ' '
*\* WK1_T_SIZE = ' '
*\* COL_SELECT = ' '
*\* COL_SELECTMASK = ' '
*\* NO_AUTH_CHECK = ' '
*\* IMPORTING
*\* FILELENGTH =
*\ TABLES
*\ DATA_TAB = IBOMH
*\* FIELDNAMES =
*\ EXCEPTIONS
*\ FILE_OPEN_ERROR = 1
*\ FILE_WRITE_ERROR = 2
*\ INVALID_FILESIZE = 3
*\ INVALID_TABLE_WIDTH = 4
*\ INVALID_TYPE = 5
*\ NO_BATCH = 6
*\ UNKNOWN_ERROR = 7
*\ GUI_REFUSE_FILETRANSFER = 8
*\ OTHERS = 9.
**Added by Pengle for MCS UCCHECK at 2006/06/06 ***EGSK900146***
DATA: CODEPAGE TYPE ABAP_ENCOD VALUE '8400'.
DATA: PS_FILE TYPE STRING.
PS_FILE = DSN.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
FILENAME = PS_FILE
FILETYPE = 'DAT'
CODEPAGE = CODEPAGE
CHANGING
DATA_TAB = IBOMH[]
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
NOT_SUPPORTED_BY_GUI = 22
ERROR_NO_GUI = 23
others = 24.
*} REPLACE
*{ REPLACE EGSK900146 2
*\ CALL FUNCTION 'WS_DOWNLOAD'
*\ EXPORTING
*\* BIN_FILESIZE = ' '
*\* CODEPAGE = ' '
*\ FILENAME = DSN1
*\ FILETYPE = 'DAT'
*\* MODE = ' '
*\* WK1_N_FORMAT = ' '
*\* WK1_N_SIZE = ' '
*\* WK1_T_FORMAT = ' '
*\* WK1_T_SIZE = ' '
*\* COL_SELECT = ' '
*\* COL_SELECTMASK = ' '
*\* NO_AUTH_CHECK = ' '
*\* IMPORTING
*\* FILELENGTH =
*\ TABLES
*\ DATA_TAB = IZBOM
*\* FIELDNAMES =
*\ EXCEPTIONS
*\ FILE_OPEN_ERROR = 1
*\ FILE_WRITE_ERROR = 2
*\ INVALID_FILESIZE = 3
*\ INVALID_TABLE_WIDTH = 4
*\ INVALID_TYPE = 5
*\ NO_BATCH = 6
*\ UNKNOWN_ERROR = 7
*\ GUI_REFUSE_FILETRANSFER = 8
*\ OTHERS = 9.
**Added by Pengle for MCS UCCHECK at 2006/06/06 ***EGSK900146***
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -