BOM Group操作——————CS_BOM_EXPL_MAT_V2 ————展单、多层BOM的参数设置
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
* ALEKZ = ' ' " 是否计算耗损
CAPID = 'PP01' " BOM应用
DATUV = sy-datum " 有效起始日
EHNDL = '1'
EMENG = '1' " 需求数量
MEHRS = 'X' " 多层展开
MMORY = '1' " 是否使用缓存
MTNRV = imatnr-matnr " 展开物料号
STLAN = '1' " BOM用途
WERKS = s_werks-low " 物料所在工厂
* IMPORTING
* TOPMAT =
* DSTST =
TABLES
STB = stb
* MATCAT =
EXCEPTIONS
ALT_NOT_FOUND = 1
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
OTHERS = 9
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
输出内表可如下定义:
data: stb LIKE stpox OCCURS 50 WITH HEADER LINE.
须注意,DATUV一定不能省,否则运行出错。输出的数量一般用MNGKO而不是MENGE,因为MNGKO计算了用量、替代的实际值。
BOM Group操作
操作:Logistics --> Production --> Master data --> Bills of material -->Bill of material --> Material BOM --> BOM group --> Change.
输入这个物料,和Useage ,进入“Change BOM Group:Summarized BOM”------〉Alternatives输入物料组的名称
后继:未知
说明:设置展BOM函数的参数
CS_BOM_EXPL_MAT_V2 展BOM的参数,其中:
工厂(WERKS)、BOM有效期(DATUV)、BOM类型(CAPID)、物料号(MTNRV)
是必须填写的。
另外:
展虚拟件(MDMPS)和 展多层(MEHRS) 是 互相影响的,直接决定BOM是否一展到底、是否继续展开虚拟件至其下一层。
以下为实际展开结果验证:
其中,
BOM说明:
MQ(成品)<——MC(虚拟件):1) <——MA <—— 底层材料a、b、c
2) <—— MF <——底层材料d、e、f
1) 虚拟件 MDMPS -
多层 MEHRS X
结果: 全展(显示包含虚拟件)
BOM基本关系:MQ —— MC ——MA、MF
MATCAT:
(MC 为虚拟件)
2)虚拟件 MDMPS X
多层 MEHRS X
结果: 展1或2层(下层遇虚拟件则展开至其下一层,显示包含虚拟件)
MATCAT:
3) 虚拟件 MDMPS -
多层 MEHRS -
结果: 展一层(下层为虚拟件,STB中仅有MC,没有继续向下展开至MA、MF)
MATCAT:
4) 虚拟件 MDMPS X
多层 MEHRS -
结果:展一层 (同3,下层为虚拟件,不再向下继续展开)
即:MEHRS置空,不论MDMPS如何设置,都只展一层,并且如果下层就是虚拟件,不展开虚拟件至其更下一层,与2)要区别开来。
截图: 与3完全相同。