1、删除BOM函数
CSAP_MAT_BOM_DELETE
2、删除BOM(DELETE)方法
参见sap的标准程序RCBOMDEL
3、BOM新增函数
BAPI_MATERIAL_BOM_GROUP_CREATE
*&---------------------------------------------------------------------*
*& Report ZTS_I_COPY_COSTBOM
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT
ZTS_I_COPY_COSTBOM.
TABLES:
MAST,MARA,MARC,STKO,STPO,AFKO,AFPO,RESB,T100.
DATA: BEGIN OF IT_TAB OCCURS
0,
AUFNR LIKE AFKO-AUFNR,
GSTRI LIKE AFKO-GSTRI,
GSUZI LIKE AFKO-GSUZI,
RSNUM LIKE AFKO-RSNUM,
GAMNG LIKE AFKO-GAMNG,
MATNR LIKE AFPO-MATNR,
WERKS LIKE AUFK-WERKS,
OBJNR LIKE AUFK-OBJNR,
END OF IT_TAB.
DATA: BEGIN OF IT_SORT OCCURS
0,
GSTRI LIKE AFKO-GSTRI,
GSUZI LIKE AFKO-GSUZI,
AUFNR LIKE AFKO-AUFNR,
RSNUM LIKE AFKO-RSNUM,
GAMNG LIKE AFKO-GAMNG,
MATNR LIKE AFPO-MATNR,
WERKS LIKE AUFK-WERKS,
OBJNR LIKE AUFK-OBJNR,
END OF IT_SORT.
DATA: BEGIN OF IT_TAB2 OCCURS
0,
AUFNR LIKE AFKO-AUFNR,
RSNUM LIKE AFKO-RSNUM,
MATNR LIKE MARA-MATNR,
WERKS LIKE MARC-WERKS,
GAMNG LIKE AFKO-GAMNG,
FLAG(1),
MSG(100),
END OF IT_TAB2.
DATA: BEGIN OF IT_ITEM OCCURS 0
,
RSNUM LIKE AFKO-RSNUM,
MATNR LIKE RESB-MATNR,
BDMNG LIKE RESB-BDMNG,
MEINS LIKE RESB-MEINS,
POSTP LIKE RESB-POSTP,
WERKS LIKE MARC-WERKS,
LVORM LIKE MARC-LVORM,
MMSTA LIKE MARC-MMSTA,
MSTAE LIKE MARA-MSTAE,
END OF IT_ITEM .
DATA: IT_ITEM2 LIKE IT_ITEM OCCURS 0
WITH HEADER LINE .
DATA: BEGIN OF IT_DEL OCCURS 0 ,
MATNR LIKE MARA-MATNR ,
WERKS LIKE MARC-WERKS ,
END OF IT_DEL .
DATA: BEGIN OF ITAB_STKO OCCURS
0,
STLNR LIKE STKO-STLNR,
STLAL LIKE STKO-STLAL,
STLST LIKE STKO-STLST,
LKENZ LIKE STKO-LKENZ,
DATUV LIKE STKO-DATUV,
END OF ITAB_STKO.
* BDCDATA
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
* BAPI DATA STRUCTURE
DATA:
EX_HEADDATA
LIKE BAPIMATHEAD,
EX_PLANTDATA
LIKE BAPI_MARC,
EX_PLANTDATAX
LIKE BAPI_MARCX,
EX_CLIENTDATA
LIKE BAPI_MARA,
EX_CLIENTDATAX
LIKE BAPI_MARAX,
IM_RETURN
LIKE BAPIRET2.
DATA: G_OK TYPE
I,
"SUCCESS
G_NO TYPE
I.
"FAIL
SELECTION-SCREEN BEGIN OF BLOCK BLK1
WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_WERKS FOR MAST-WERKS OBLIGATORY NO
INTERVALS.
SELECT-OPTIONS: S_AUFNR FOR AFKO-AUFNR .
SELECT-OPTIONS: S_MATNR FOR AFKO-PLNBEZ .
SELECT-OPTIONS: S_GSTRI FOR AFKO-GSTRI.
SELECTION-SCREEN END OF BLOCK BLK1.
*---------------------------------------------------------------------*
*
INITIALIZATION
*
*---------------------------------------------------------------------*
INITIALIZATION.
*---------------------------------------------------------------------*
*
START-OF-SELECTION
*
*---------------------------------------------------------------------*
START-OF-SELECTION.
* 取需要拷贝的工单
PERFORM FRM_GET_ORDER.
IF NOT IT_DEL[] IS INITIAL.
PERFORM
FRM_DEL_COSTBOM.
ENDIF.
IF NOT IT_ITEM2[] IS INITIAL.
PERFORM
FRM_CHANGE_MAT_STATUS.
ENDIF.
PERFORM FRM_COPY_COSTBOM.
* PERFORM FRM_BAPI_CS01.
IF NOT IT_ITEM2[] IS INITIAL.
PERFORM
FRM_RETURN_MAT_STATUS.
ENDIF.
*---------------------------------------------------------------------*
*
END-OF-SELECTION
*
*---------------------------------------------------------------------*
END-OF-SELECTION.
* 输出记日志到屏幕
PERFORM FRM_WRITE_LOG.
*&---------------------------------------------------------------------*
*&
Form FRM_GET_ORDER
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* -->
p1
text
* <--
p2
text
*----------------------------------------------------------------------*
FORM FRM_GET_ORDER .
DATA: BEGIN OF IT_TEMP OCCURS 0,
MATNR LIKE MARA-MATNR ,
WERKS LIKE MARC-WERKS ,
END OF IT_TEMP .
DATA: LV_KZKFG LIKE MARA-KZKFG . "可配置物料
DATA: R_PAIS TYPE RANGE OF JEST-STAT,
R_PAIS_STAT LIKE LINE OF R_PAIS.
DATA: R_PAIS2 TYPE RANGE OF JEST-STAT,
R_PAIS2_STAT LIKE LINE OF R_PAIS2.
DATA: R_PAIS3 TYPE RANGE OF AUFK-AUART,
R_PAIS3_AUART LIKE LINE OF R_PAIS3.
DATA: BEGIN OF GT_JEST OCCURS 0.
DATA: OBJNR LIKE JEST-OBJNR,
STAT LIKE JEST-STAT,
INACT LIKE JEST-INACT.
DATA END OF GT_JEST.
DATA: LV_LINE LIKE BSVX-STTXT .
DATA: LV_MSTAE LIKE MARA-MSTAE.
DATA: LV_LVORM LIKE MARA-LVORM.
*
** 工单状态range定义
* CLEAR: R_PAIS_STAT
,R_PAIS2_STAT .
*
R_PAIS_STAT-SIGN = 'I'.
* R_PAIS_STAT-OPTION = 'EQ'.
*
R_PAIS_STAT-LOW
= 'I0012'.
* APPEND R_PAIS_STAT TO R_PAIS.
*
*
R_PAIS_STAT-SIGN = 'I'.
* R_PAIS_STAT-OPTION = 'EQ'.
*
R_PAIS_STAT-LOW
= 'I0321'.
* APPEND R_PAIS_STAT TO R_PAIS.
*
*
R_PAIS2_STAT-SIGN = 'I'.
* R_PAIS2_STAT-OPTION = 'EQ'.
*
R_PAIS2_STAT-LOW
= 'I0074'.
* APPEND R_PAIS2_STAT TO R_PAIS2.
*
*
R_PAIS2_STAT-SIGN = 'I'.
* R_PAIS2_STAT-OPTION = 'EQ'.
*
R_PAIS2_STAT-LOW
= 'I0321'.
* APPEND R_PAIS2_STAT TO R_PAIS2.
* 工单类型定义
CLEAR R_PAIS3_AUART.
R_PAIS3_AUART-SIGN = 'I'.
R_PAIS3_AUART-OPTION = 'EQ'.
R_PAIS3_AUART-LOW
= 'PP01'.
APPEND R_PAIS3_AUART TO R_PAIS3.
R_PAIS3_AUART-SIGN = 'I'.
R_PAIS3_AUART-OPTION = 'EQ'.
R_PAIS3_AUART-LOW
= 'ZPP1'.
APPEND R_PAIS3_AUART TO R_PAIS3.
R_PAIS3_AUART-SIGN = 'I'.
R_PAIS3_AUART-OPTION = 'EQ'.
R_PAIS3_AUART-LOW
= 'ZPP3'.
APPEND R_PAIS3_AUART TO R_PAIS3.
R_PAIS3_AUART-SIGN = 'I'.
R_PAIS3_AUART-OPTION = 'EQ'.
R_PAIS3_AUART-LOW
= 'ZPP4'.
APPEND R_PAIS3_AUART TO R_PAIS3.
R_PAIS3_AUART-SIGN = 'I'.
R_PAIS3_AUART-OPTION = 'EQ'.
R_PAIS3_AUART-LOW
= 'ZPP5'.
APPEND R_PAIS3_AUART TO R_PAIS3.
SELECT A~AUFNR A~GSTRI A~GSUZI A~RSNUM A~GAMNG
C~MATNR B~WERKS B~OBJNR
INTO
CORRESPONDING FIELDS OF TABLE IT_TAB
FROM AFKO AS
A
INNER JOIN
AUFK AS B ON A~AUFNR = B~AUFNR
INNER JOIN
AFPO AS C ON A~AUFNR = C~AUFNR
* INNER JOIN
JEST AS C ON B~OBJNR = C~OBJNR
WHERE
A~AUFNR IN S_AUFNR
AND A~GSTRI IN S_GSTRI
AND C~MATNR IN S_MATNR
AND B~WERKS IN S_WERKS
AND B~AUART IN R_PAIS3
AND B~LOEKZ NE 'X'.
LOOP AT
IT_TAB.
CLEAR
LV_LINE.
CALL
FUNCTION 'STATUS_TEXT_EDIT'
EXPORTING
*
CLIENT
= SY-MANDT
*
FLG_USER_STAT
= ' '
OBJNR
= IT_TAB-OBJNR
ONLY_ACTIVE
= 'X'
SPRAS
= '1'
*
BYPASS_BUFFER
= ' '
IMPORTING
*
ANW_STAT_EXISTING
=
*
E_STSMA
=
LINE
= LV_LINE
*
USER_LINE
=
*
STONR
=
EXCEPTIONS
OBJECT_NOT_FOUND
= 1
OTHERS