SAP各种BOM详解(包含常用BAPI)

  • Post author:
  • Post category:其他


生产订单BOM、销售订单BOM、标准BOM

生产订单BOM ,跑生产订单时,子组件体现作用 。

销售订单BOM ,跑MRP 时体现子组件的作用 。

在这里插入图片描述

rcdf应用:真空管损耗率。

             销售bom zpp020 

 CLEAR: L_STLNR.
        SELECT SINGLE MAST~STLNR
          INTO L_STLNR
          FROM MAST
         WHERE MAST~MATNR = WA_OUTPUT-MATNR
           AND MAST~WERKS = WA_OUTPUT-WERKS
           AND MAST~STLAN = '1'
                .
        IF SY-SUBRC = 0.              "存在该BOM
          CLEAR: L_MENGE.
          SELECT SINGLE STPO~STLNR STPO~MENGE
            INTO (L_STLNR,L_MENGE)
            FROM STPO
           WHERE STPO~STLNR = L_STLNR
             AND STPO~STLTY = 'M'     "物料BOM
             AND STPO~SORTF = '1240'  "排序字符串
                  .
          IF SY-SUBRC = 0.        "可以定位到1240的排序字符串记录
*--------------------------------------------------------
*      使用该报费率创建生产BOM,并返回物料单(BOM)
*      输入参数报废率 L_KBETR  工厂 WA_OUTPUT-WERKS  BOM创建日期 当前月初 SY-DATUM 
  CONSTANTS: CNS_MODE  TYPE C  VALUE 'N',
             CNS_TCODE TYPE  TCODE VALUE 'CS61'.

 IF L_BMENG IS NOT INITIAL.
              L_MENGE = ( L_MENGE + L_MENGE * L_KBETR2 / 100 ) * WA_OUTPUT-KWMENG /  L_BMENG.   "组件数量 = 原组件数量*S.O数量*报废率/表头基本数量
              L_MENGE_INT = L_MENGE.
              WRITE L_MENGE_INT TO L_MENGE_CHAR.
            ENDIF.

-----------------------------------------
            CALL TRANSACTION CNS_TCODE USING BDCDATA[]
                                    MODE  CNS_MODE
                                    UPDATE 'S'
                           MESSAGES INTO  BDCMSGCOLL[].

BOM: 是實際生產時用的BOM, 在標準BOM和銷售BOM基礎上增減物料的BOM

銷售BOM: 是為特定客戶設定的BOM, 在主檔數據層次上的BOM, 在生產時是帶到訂單BOM中去的.

標準BOM: 是公司為標準生產的BOM, 在主檔數據層次上的BOM, 在生產時是帶到訂單BOM中去的.

訂單BOM >= 銷售BOM >= 標準BOM

一般使用中:

訂單BOM是在銷售BOM的基礎或標準BOM基礎上添加部分物料或減少或修改實際需求數量,

銷售BOM是在標準BOM基礎上增加特定客戶需要的BOM, 例如顏色,

標準BOM是公司在標準生產中使用的BOM, 通常由工程設計BOM產出再進行修正, 在SAP的標準成本計算是需要用到的.

工程設計BOM(應該很少公司用)是工程設計的BOM, 即將工程師畫的爆炸圖進行系統化.

SAP還有幾種BOM.

標準BOM維護: CS01/CS02/CS03, 查詢CS12

銷售BOM維護: CS61/CS62/CS63, 查詢CSK2

訂單BOM維護: CO01/CO02/CO03

在这里插入图片描述

銷售BOM使用前提是產品必須是MAKE TO ORDER, 否則系統在展開BOM時只會拿標準BOM, 不會拿銷售BOM的數據.

標準BOM的表: MAST

銷售BOM的表: KDST

訂單BOM的表: 沒有, 我的理解就是RESB中工單需求清單

在MTO方式来说,才会产生销售订单BOM。业务部门根据客户要求,配置产生的成品特性,从而自动从标准的最大BOM中选择组件,生成销售订单BOM

这其中就明确了两个概念,销售订单BOM是在建立配置特性的基础上的,从最大化的标准BOM中选择相关特性限制的组件而产生的BOM。可以说,销售BOM是标准BOM的一个特例。这时候的标准BOM罗列了所有可能的配置。

订单BOM则是生产中使用的BOM,是MRP根据销售订单配置和标准BOM计算产生的BOM,订单BOM在下达生产之前,可以通过计划员的调整以及设置替代,更换组件或数量,而下达时依此生产的BOM。此BOM用于生产和发料,并是成本BOM的直接来源。


CS_BOM_EXPL_KND_V1 展销售订单bom

CS_BOM_EXPL_MAT_V2 展物料bom

CS_BOM_EXPLOSION

CS_BOM_EXPLOSION_EQUI

CS_BOM_EXPLOSION_MAT

CS_BOM_EXPL_EQU_V2

CS_BOM_EXPL_KND_V1

CS_BOM_EXPL_MAT_V2

CS_BOM_EXPL_PSP_V1

CS_BOM_EXPL_TPL_V1

输出未激活的BOM的function

CSAP_MAT_BOM_READ

15 .函数CS_WHERE_USED_MAT(逆查BOM)

说明﹕取的物料的上层物料

               CALL FUNCTION 'CS_WHERE_USED_MAT' 
             EXPORTING
               datub                      = sy-datum
               datuv                      = sy-datum
               matnr                      = t_afru-matnr
*             POSTP                       = ' '
*             RETCODE_ONLY                = ' '
*             STLAN                       = ' '
               werks                      = '1000'
*        IMPORTING
*             TOPMAT                      =
             TABLES
                  wultb                   = ltb
                  equicat                 = equicat
                  kndcat                  = kndcat
                  matcat                  = matcat
                  stdcat                  = stdcat
                  tplcat                  = 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.
         参数﹕datub:  当前日期
               datuv:  当前日期
               matnr:  要找回上层BOM物料的物料
               werks:  工厂通常取’1000’
               wultb:  所有的上层BOM物料存放在该表中(该表结构固定)
               equicat:  固定结构﹐一定要
               kndcat :  固定结构﹐一定要
               matcat:  固定结构﹐一定要
               stdcat : 固定结构﹐一定要
               tplcat : 固定结构﹐一定要
  示例:   ZBAK_ZPP000222_LSL

BOM 展开函数(顺查BOM)

16 .只展开 BOM 的函数

 CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
   EXPORTING
      capid = pm_capid   “应用程序 一般为 PP01
      datuv = pm_datuv   “通常为系统的当前日期
      mtnrv = pm_mtnrv   “要展开BOM 的物料
      mehrs = 'X'        “ x 表示多层展开﹐space 表示只展开第一层
      werks = pm_werks   “ 通常为 1000
   IMPORTING
      topmat = selpool
      dstst  = dstst_flg
   TABLES
      stb = stb          “展开的 BOM 存放在该内表
      matcat = matcat    “下面含有组件的物料存放在该内表

17 .展开与特性相关的特定款号的 BOM

   CALL FUNCTION 'CS_BOM_EXPL_ KND_V1'
   EXPORTING
      capid = pm_capid   “应用程序 一般为 PP01
      datuv = pm_datuv   “通常为系统的当前日期
      mtnrv = pm_mtnrv   “要展开BOM 的物料
      cuobj = vbap_wa-cuobj “与特性相关的组态
      mehrs = 'X'        “ x 表示多层展开﹐space 表示只展开第一层
      werks = pm_werks   “ 通常为 1000
   IMPORTING
      topmat = selpool
      dstst  = dstst_flg
   TABLES
      stb = stb          “展开的 BOM 存放在该内表
      matcat = matcat    “下面含有组件的物料存放在该内表

MTO物料展BOM BAPI : CS_BOM_EXPL_KND_V1

(只展开虚拟件 MDMPS = ‘X’)

CAPID = ‘PP01’

DATUV = 当前日期

EMENG = ‘1’

MEHRS = ‘X’

MKTLS = ‘X’

STLAN = ‘1‘ “BOM用途”

CUOBJ = VBAP-CUOBJ “销单配置信息”

MTNRV = VBAP-MATNR

WERKS = VBAP-WERKS

VBELN = VBAP-VBELN

VBPOS = VBAP-POSNR

MTS物料展BOM BAPI:CS_BOM_EXPL_MAT_V2

(只展开虚拟件 MDMPS = ‘X’)

CAPID = ‘PP01’

DATUV = 当前日期

EMENG = ‘1’

MEHRS = ‘X’

MKTLS = ‘X’

STLAL = ‘1’

STLAN = ‘1‘

MTNRV = AFPO-MATNR

WERKS = AUFK-WERKS

范例见系统报表程序 RCS12001

1 说明﹕内表 stb, matcat 结构固定, 输出参数 selpool , dstst_flg 固定,

其固定结构如下:

内表:

DATA: BEGIN OF stb OCCURS 1000.

INCLUDE STRUCTURE stpox.

DATA: END OF stb.

DATA: BEGIN OF matcat OCCURS 50.

INCLUDE STRUCTURE cscmat.

DATA: END OF matcat.

输出参数:

DATA: BEGIN OF selpool.

INCLUDE STRUCTURE cstmat.

DATA: END OF selpool.

DATA: dstst_flg LIKE csdata-xfeld.

2 说明﹕内表 stb 中的数据按第一层顺序号排序﹐如第一层组件下还有BOM,

则其BOM显示在其下面﹐并依次分层(下面BOM 也按顺序号排列)

stb 下的重要字段说明如下﹕

stufe : 在整个 BOM 中的层次

tdidx : 对应 matcat-index ﹐标志直属哪个物料下的 BOM

ojtxb : 上层物料的物料说明

ojtxp : 本身物料说明

idnrk : 组件名(即物料)

stlkn : 在各自 BOM 中的顺序号

matkl : 该物料群组

mtart : 物料类型 (成品﹐半成品﹐原料)

matcat 下的重要字段 (表matcat 存放下面还有BOM 的物料)

matnr : 物料号

index : 顺序号

说明:设置展BOM函数的参数

CS_BOM_EXPL_MAT_V2 展BOM的参数,其中:

工厂(WERKS)、BOM有效期(DATUV)、BOM类型(CAPID)、物料号(MTNRV)

是必须填写的。

另外:

展虚拟件(MDMPS)和 展多层(MEHRS) 是 互相影响的,直接决定BOM是否一展到底、是否继续展开虚拟件至其下一层。

1) 虚拟件 MDMPS –

多层 MEHRS X

结果: 全展(显示包含虚拟件)

BOM基本关系:MQ —— MC ——MA、MF

MATCAT:

在这里插入图片描述

(MC 为虚拟件)

在这里插入图片描述

2)虚拟件 MDMPS X

多层 MEHRS X

结果: 展1或2层(下层遇虚拟件则展开至其下一层,显示包含虚拟件)

MATCAT:

在这里插入图片描述

3) 虚拟件 MDMPS –

多层 MEHRS –

结果: 展一层(下层为虚拟件,不再向下展开)

MATCAT:

在这里插入图片描述

STB中仅有MC。

4) 虚拟件 MDMPS X

多层 MEHRS –

结果:展一层 (同3,下层为虚拟件,不再向下展开)

即:MEHRS置空,不论MDMPS如何设置,都只展一层,并且如果下层就是虚拟件,不展开虚拟件至其更下一层,与2)要区别开来。

截图: 与3完全相同。



版权声明:本文为Kudcon原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。