递归顺查
DATA: BEGIN OF STB OCCURS 0.
INCLUDE STRUCTURE STPOX.
DATA: END OF STB.
DATA:WWERKS LIKE RC29L-WERKS,WMATNR TYPE MARA-MATNR.
REFRESH STB. CLEAR STB.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = 'PP01' "类型
DATUV = SY-DATUM "有效期
* MDMPS = '' "限制字段:限制BOM只展1层,但下层是虚拟件的则再往下展开一层,默认为空不限制
* MEHRS = '' " 重要字段:BOM多级展开,默认为空,只展开一层 多阶展开 'X'-多阶; ''-单阶
MTNRV = WMATNR "物料编号,必须输入
WERKS = WWERKS "工厂,必须输入
TABLES
STB = STB "接收表
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.
LOOP AT STB."STB-IDNRK ,物料编号
ENDLOOP.
递归反查
DATA:BEGIN OF USEDTAB OCCURS 0.
INCLUDE STRUCTURE STPOV.
DATA: END OF USEDTAB.
DATA:BEGIN OF EQUICAT OCCURS 0.
INCLUDE STRUCTURE CSCEQUI.
DATA: END OF EQUICAT.
DATA:BEGIN OF KNDCAT OCCURS 0.
INCLUDE STRUCTURE CSCKND.
DATA: END OF KNDCAT.
DATA:BEGIN OF MATCAT OCCURS 0.
INCLUDE STRUCTURE CSCMAT.
DATA: END OF MATCAT.
DATA:BEGIN OF STDCAT OCCURS 0.
INCLUDE STRUCTURE CSCSTD.
DATA: END OF STDCAT.
DATA:BEGIN OF TPLCAT OCCURS 0.
INCLUDE STRUCTURE CSCTPL.
DATA: END OF TPLCAT.
CLEAR:USEDTAB.REFRESH USEDTAB.
CALL FUNCTION 'CS_WHERE_USED_MAT'
EXPORTING
DATUB = SY-DATUM
DATUV = SY-DATUM
MATNR = WMATNR "物料编号,必须输入
WERKS = WWERKS "工厂,必须输入
TABLES
WULTB = USEDTAB
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.
LOOP AT USEDTAB.
"USEDTAB-MATNR ,物料编号 ,如果此值为空,说明是成品
ENDLOOP.