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_PAI