SAP的BOM删除和维护

本文档详细介绍了如何在SAP中进行物料BOM的删除(使用函数CSAP_MAT_BOM_DELETE及标准程序RCBOMDEL)、维护(通过BAPI_MATERIAL_BOM_GROUP_CREATE)以及相关数据处理过程,包括工单获取、状态变更和BOM复制等操作。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值