Abap 如何使用CS_BOM_EXPL_MAT_V2为BOM爆炸获取正确数量的组件?

Abap 如何使用CS_BOM_EXPL_MAT_V2为BOM爆炸获取正确数量的组件?,abap,sap-erp,Abap,Sap Erp,我的程序有问题。我正在使用功能模块CS\u BOM\u EXPL\u MAT\u V2获取物料的BOM表。例如,我有一个物料MAT1,它具有ff。物料清单爆炸 MAT1 - COMP1 with Qty 2 - COMP2 with Qty 1 - COMP3 with Qty 1 然后,对于组件COMP1,它还有子组件: COMP1 - SUBCOMP1 with Qty 1 - SUBCOMP2 with Qty 1 因此,在我的程序中,使用CS\u BOM\u EXPL\u MAT\u

我的程序有问题。我正在使用功能模块
CS\u BOM\u EXPL\u MAT\u V2
获取物料的BOM表。例如,我有一个物料
MAT1
,它具有ff。物料清单爆炸

MAT1
- COMP1 with Qty 2
- COMP2 with Qty 1
- COMP3 with Qty 1
然后,对于组件
COMP1
,它还有子组件:

COMP1
- SUBCOMP1 with Qty 1
- SUBCOMP2 with Qty 1
因此,在我的程序中,使用
CS\u BOM\u EXPL\u MAT\u V2
,我希望报告中有
SUBCOMP1
=2和
SUBCOMP2
=2的数量(因为
MAT1
使用了2个
COMP1
)。但是我得到的是
SUBCOMP1
=1个数量和
SUBCOMP2
=1个数量,因为我认为它只考虑
COMP1
的BOM,而不考虑
COMP1
的数量

运行事务处理
CS12
时,物料
MAT1
的输出是正确的(
SUBCOMP1
=2,
SUBCOMP2
=2)

那么,我如何使
CS\u BOM\u EXPL\u MAT\u V2
起作用,以便它能够尊重组件的计数,在这种情况下,
COMP1
带有数量2,并将值级联到子组件,在这种情况下,
SUBCOMP1
SUBCOMP2
,并将其相乘以返回正确的数量,在这种情况下,两个子组件的数量应为2,如交易
CS12

如果FM
CS\u BOM\u EXPL\u MAT\u V2
无法实现这一点,请建议其他实现方法

以下是我的FM当前的外观:

CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
  EXPORTING
    aumgb                 = 'X'
    capid                 = 'PP01'
    datuv                 = v_datuv "date input in selection screen
    endhl                 = '1'
    mehrs                 = 'X'
    mmory                 = '1'
    mtnrv                 = v_matnr "material input in selection screen
    stlal                 = v_stlal "alternative BOM input in selection screen
    stpst                 = 0 "Level in multi-bom expl.
    svwvo                 = 'X'
    werks                 = v_werks "plant input in selection screen
    vrvso                 = 'X'
  IMPORTING
    topmat                = gs_top
  TABLES
    stb                   = gt_stb
    matcat                = gt_matca
  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.

这是Laurent Fournier在snc.sap.com上给出的答案。它对我很有帮助,所以我想把它保存在这里

I think that you must set multilevel indicator. Take a look at the following code and see if this can help you.

FORM EXPLODE_BOM  USING U_DATE
                        U_MATNR
                        U_MENGE
                        U_WERKS
                        U_MULTI
                CHANGING   C_SUCCESS.

  CLEAR : C_SUCCESS.

  CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
    EXPORTING
*   FTREL                       = ' '
*   ALEKZ                       = ' '
*   ALTVO                       = ' '
*   AUFSW                       = ' '
    AUMGB                       = 'X'
*   AUMNG                       = 0
    AUSKZ                       = ' '
*   AMIND                       = ' '
*   BAGRP                       = ' '
*   BEIKZ                       = ' '
*   BESSL                       = ' '
*   BGIXO                       = ' '
*   BREMS                       = ' '
    CAPID                       = 'PP01'
*   CHLST                       = ' '
*   COSPR                       = ' '
*   CUOBJ                       = 000000000000000
*   CUOVS                       = 0
*   CUOLS                       = ' '
    DATUV                       = U_DATE
*   DELNL                       = ' '
*   DRLDT                       = ' '
*   EHNDL                       = ' '
*   EMENG                       = 0
*   ERSKZ                       = ' '
*   ERSSL                       = ' '
*   FBSTP                       = ' '
*   KNFBA                       = ' '
*   KSBVO                       = ' '
*   MBWLS                       = ' '
*   MKTLS                       = 'X'
*   MDMPS                       = ' '
    MEHRS                       = U_MULTI
*   MKMAT                       = ' '
*   MMAPS                       = ' '
*   SALWW                       = ' '
*   SPLWW                       = ' '
*   MMORY                       = ' '
    MTNRV                       = U_MATNR
*   NLINK                       = ' '
*   POSTP                       = ' '
*   RNDKZ                       = ' '
*   RVREL                       = ' '
*   SANFR                       = ' '
*   SANIN                       = ' '
*   SANKA                       = ' '
*   SANKO                       = ' '
*   SANVS                       = ' '
*   SCHGT                       = ' '
*   STKKZ                       = ' '
*   STLAL                       = '1'
*   STLAN                       = '1'
    STPST                       = 0
*   SVWVO                       = 'X'
    WERKS                       = U_WERKS
*   NORVL                       = ' '
*   MDNOT                       = ' '
*   PANOT                       = ' '
*   QVERW                       = ' '
*   VERID                       = ' '
*   VRSVO                       = 'X'

*  IMPORTING
*   TOPMAT                      =
*   DSTST                       =
    TABLES
    STB                         = BOM_EXPL
*   MATCAT                      =

   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

我认为,如果用X标记AUMGB()字段,那么应该在结果中得到计算出的数量。检查名为STB()的表格,字段MNGLG(以基本计量单位计算的部件数量)。字段菜单应该包含基本数量。

这个问题在SCN上得到了回答:是的,我知道。我开始写这个帖子。实际上,我把这条评论发给了未来的访问者,他们可能会遇到这个问题,想知道答案在哪里。