PP篇10 创建BOM

aa22972fb5f1c8ac03ea5fb39006a977.gif

点击SAP翔子关注

写文章不易,如果觉得有帮助,可以转发朋友圈或者分享给朋友~

如果觉得有问题,欢迎加翔子V信( 18925782767 )一起推敲~
一起学习,天天向上。

找到一个详细说明创建BOM的文档,分享一下

d17b53d8b4885d86cfa311f6982de88a.gif

fe73133bb1f538d102e714888ca1e128.png

1. 最终结果预览

62a83609a43a3a7d9d35cd902279c6f0.png

3522b89745162d890bee5c871fb47c1a.png

2. 创建过程

使用到的事务码

CS01 创建BOM  

CS02 修改BOM

CS03 显示BOM

CC01  创建工程变更号CC02 修改工程变更号CC03显示工程变更号

MM01 创建物料  MM02 修改物料 MM03 显示物料

使用到的物料(使用MM01创建)

销售整车  11000601 工厂3000

装箱整车  14000575 工厂3000

底盘车    13005666 工厂5813

零配件    CZTEST01 工厂5813

CZTEST02 工厂5813

CZTEST03 工厂5813

1、CS01创建BOM,工厂3000,BOM用途5,默认可选BOM为1。

2271ab79ccc95a44ffa5b95843bc4147.png

2、输入下层组件14000575,数量为2,有效期2014-02-17;回车保存,则创建成功。

342ce46261bea99602c2bd6fa42b1cd0.png

3、同理,创建14000575的BOM,工厂3000,BOM用途1。下层为13005666,有效期2014-02-17。

118eff47fa66941a418bc1a21ee984bd.png

4、输入下层组件13005666,数量为2,有效期2014-02-17;回车保存,则创建成功。

03a91df1e71c58660817991b3779ec7b.png

5、创建13005666的BOM,工厂5813,BOM用途1。下层为CZTEST01、CZTEST02、CZTEST03,有效期2014-02-17。

26629c10b92ab4e8ecced66e13433db4.png

6、CS12展开多层BOM,输入11000601。

仔细观察会注意到,展开的物料中没有CZTEST01、CZTEST02、CZTEST03,这是由于13*物料维护下层的是5813工厂,不是3000工厂。

a370cb121d0ef28c55674379ba2fa1d5.png

注意事项:

1、最上层物料创建BOM的工厂为3000,因为所有物料必须在维护3000工厂数据。

2、CS15可以查询上层。

3、创建的BOM可以在MAST查看。根据BOM号可以在STKO中查看BOM表头,里面有删除标识。

5d44026df3795e59b5efa25accaf0764.png

3. BOM相关函数介绍

  • 1、展开BOM函数‘CS_BOM_EXPL_MAT_V2’

关键注意输入参数:

1:plant,2:material number3:date,4:cpaid,5:展bom的层次标示

2.这个FUNCTION是用来展开BOM的.

   CAPID: BOM应用,在CSMB中也有这个参数,具体内容你看一下.

   DATUV: BOM生效日期

   MEHRS: 是否多层展开

   MTNRV: 展开的物料号

   STLAL: 可选BOM,具体内容看CS01

   STLAN: BOM用途,具体内容看CS01

   WERKS: 展开物料的工厂

   STB:   BOM展开结果

CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'              EXPORTING
              capid                 = 'PP01'
              datuv                 = sy-datum
              mtnrv                 = pi_bom-matnr
              stlal                 = pi_bom-stlal”如果不输入该参数,默认会选择有效的最小的可选BOM,
*                                                  但是如果第一个是有删除标识的,则会出错.STKO可查看删除标识。
              stlan                 = pi_bom-stlan
              werks                 = pi_bom-werks
              mehrs                 = ''”为空时BOM展开一层;为‘X’时全展开(只有所有数据在一个工厂才能全部都展开)
            TABLES
              stb                   = pi_stb“展开的下层数据信息,IDNRK为物料名
              matcat                = lt_cscmat”需要展开的物料信息
            EXCEPTIONS
              alt_not_found         = 1
              call_invalid          = 2
              material_not_found    = 3
              missing_authorization = 4
              no_bom_found          = 5
              no_plant_data         = 6
              no_suitable_bom_found = 7
              conversion_error      = 8
              OTHERS                = 9.
 
  IF sy-subrc <> 0.
*    CONCATENATE pi_bom-matnr 'BOM展开出错!' INTO l_msg.
*    MESSAGE l_msg TYPE 'S' DISPLAY LIKE 'E'.
*    STOP.
  ENDIF.
  • 2、查看上层物料函数‘CS_WHERE_USED_MAT’。只能向上查看一层

CALL FUNCTION 'CS_WHERE_USED_MAT'


  EXPORTING


    datub = sy-datum


    datuv = sy-datum


    matnr = pi_bom-matnr


* POSTP = ' '


* RETCODE_ONLY = ' '


    stlan = pi_bom-stlan


    werks = pi_bom-werks


* IMPORTING


* TOPMAT =


  TABLES


    wultb = lt_ltb


    equicat = lt_equicat


    kndcat = lt_kndcat


    matcat = pi_matcat“


    stdcat = lt_stdcat


    tplcat = lt_tplcat


  EXCEPTIONS


    call_invalid = 1


    material_not_found = 2


    no_where_used_rec_found = 3


    no_where_used_rec_selected = 4


    no_where_used_rec_valid = 5


    OTHERS = 6.


 


  IF sy-subrc <> 0.


 


  ENDIF.

注意:数据一般在wultb和matcat两个表中查看。

  • 3,创建BOM

  • DATA: ls_stko   TYPE stko_api01,
            lt_stpo   TYPE TABLE OF stpo_api01,
            lv_bom_no TYPE stko_api02-bom_no.
      DATA: lv_valid_from TYPE csap_mbom-datuv.
      
        CALL FUNCTION 'CSAP_MAT_BOM_CREATE'
          EXPORTING
            material   = <fs_s_alv>-matnr
            plant      = <fs_s_alv>-werks
            bom_usage  = <fs_s_alv>-stlan
    *       ALTERNATIVE        =
            valid_from = lv_valid_from
    *       CHANGE_NO  =
    *       REVISION_LEVEL     =
            i_stko     = ls_stko
    *       FL_NO_CHANGE_DOC   = ' '
    *       fl_commit_and_wait = ''
    *       FL_CAD     = ' '
    *       FL_DEFAULT_VALUES  = 'X'
    *       FL_RECURSIVE       = ' '
          IMPORTING
            fl_warning = lv_fl_warning
            bom_no     = lv_bom_no
          TABLES
            t_stpo     = lt_stpo
          EXCEPTIONS
            error      = 1
            OTHERS     = 2.
        IF sy-subrc <> 0 OR lv_bom_no IS INITIAL.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO lv_message.
          gs_alv-e_type = `E`.
          gs_alv-light  = icon_red_light.
          CLEAR: gv_msg.MESSAGE s022(zpp01) INTO gv_msg. gs_alv-e_msg = |{ <fs_s_alv>-e_msg };{ gv_msg }:{ lv_message }|."新BOM 创建失败
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    
    
        ELSE.
          gs_alv-e_type = `S`.
          gs_alv-light  = icon_green_light.
          CLEAR: gv_msg.MESSAGE s023(zpp01) WITH lv_bom_no INTO gv_msg. gs_alv-e_msg = |{ <fs_s_alv>-e_msg };{ gv_msg }|."新BOM &1创建成功
          gs_alv-stlnr = lv_bom_no.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.
        ENDIF.
  • 4,删除BOM

LOOP AT lt_mast INTO DATA(ls_mast).
      CALL FUNCTION 'CSAP_MAT_BOM_DELETE'
        EXPORTING
          material   = ls_mast-matnr
          plant      = ls_mast-werks
          bom_usage  = ls_mast-stlan
*         ALTERNATIVE              =
*         VALID_FROM =
*         CHANGE_NO  =
*         REVISION_LEVEL           =
*         FL_NO_CHANGE_DOC         = ' '
*         FL_COMMIT_AND_WAIT       = ' '
        IMPORTING
          fl_warning = lv_fl_warning
        EXCEPTIONS
          error      = 1
          OTHERS     = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO DATA(lv_message).
        gs_alv-e_type = `E`.
        gs_alv-light  = icon_red_light.
        CLEAR: gv_msg.MESSAGE s018(zpp01) WITH ls_mast-stlnr INTO gv_msg. gs_alv-e_msg = |{ gv_msg }:{ lv_message }|."旧BOM &1删除失败
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.


      ELSE.
        gs_alv-e_type = `S`.
        gs_alv-light = icon_green_light.
        CLEAR: gv_msg.MESSAGE s019(zpp01) WITH ls_mast-stlnr INTO gv_msg. gs_alv-e_msg = gv_msg."旧BOM &2删除成功
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
      ENDIF.


      gs_alv-ernam = sy-uname.
      gs_alv-ersda = sy-datum.
      gs_alv-uzeit = sy-uzeit.
      MODIFY gt_alv FROM gs_alv TRANSPORTING e_type e_msg light ernam ersda uzeit
                                       WHERE matnr EQ ls_mast-matnr AND werks EQ ls_mast-werks AND stlan EQ ls_mast-stlan.


    ENDLOOP.

62ca26a66576fce737fec796d4611c5d.gif

感谢您的阅读!

帮忙点击右下角在看,一键三连加关注,变帅变强加变秃!
往期精彩回顾:

精彩回顾

84452223f82991c51894f0c930f436af.gif

BDC篇4 自动生成批导

adee16683c161dfdf1f1fffa82faa551.gif

神器!新版下载程序2010

c5c6cbd244aca18c4dfb3d53fcc0de0d.gif

安全驾驶!SAP系统权限检查

03a313716f788ea74e020b943b9955f4.gif

赋能!如果获取SAP_ALL权限

2fb98317ae17c0ef21ea6058e15c6fd9.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值