*递归的方式实现
FUNCTION zbomexplode.
*"--------------------------------------------------------- *"
*"Local Interface:
*"IMPORTING
*"REFERENCE(MATNR) TYPE MATNR
*"REFERENCE(WERKS) TYPE WERKS_D
*"TABLES
*"PARENT STRUCTURE SBOM
*"CHILDREN STRUCTURE SBOM
*"EXCEPTIONS
*" NO_BOM_FOUND *"----------------------------------------------------------
DATA: it_a TYPE TABLE OF sbom.
DATA: it_b TYPE TABLE OF sbom.
IF parent[] IS INITIAL.
* first time that call to the FM
SELECT stpo~idnrk INTO TABLE it_a
FROM mast INNER JOIN stpo
ON mast~stlnr = stpo~stlnr
WHERE mast~matnr = matnr
AND mast~werks = werks.
IF it_a[] IS INITIAL.
RAISE no_bom_found.
ENDIF.
ELSE.
SELECT stpo~idnrk INTO TABLE it_a
FROM mast
INNER JOIN stpo ON mast~stlnr = stpo~stlnr
FOR ALL ENTRIES IN parent
WHERE mast~matnr = parent-matnr
AND mast~werks = werks.
* if there is no any sub item, then stop the recursi
ABAP Bom按层展开的几种实现方法
最新推荐文章于 2026-08-15 16:32:31 发布
本文介绍了三种在ABAP中展开物料BOM(Bill of Materials)的方法,包括递归方式、循环代替递归的方式以及调用BAPI实现。详细展示了每种方法的代码实现,涉及递归函数zbomexplode、使用循环的zbomexplode1和zbomexplode2,以及调用CS_BOM_EXPL_MAT_V2 BAPI的示例。


341

被折叠的 条评论
为什么被折叠?



