プログラムに問題があります。CS_BOM_EXPL_MAT_V2品目の BOM を取得するために汎用モジュールを使用しています。たとえばMAT1、ff を持つマテリアルがあります。BOM 爆発。
MAT1
- COMP1 with Qty 2
- COMP2 with Qty 1
- COMP3 with Qty 1
そして、 componentCOMP1には、サブコンポーネントもあります。
COMP1
- SUBCOMP1 with Qty 1
- SUBCOMP2 with Qty 1
したがって、 を使用して私のプログラムで期待してCS_BOM_EXPL_MAT_V2いるのは、レポートの数量がSUBCOMP1= 2 およびSUBCOMP2= 2 であることです (MAT1は の 2 数量を使用するためCOMP1)。しかし、私が得ているのはSUBCOMP1= 1 qty とSUBCOMP2= 1 qty です。BOM のみを考慮してCOMP1おり、数量はCOMP1考慮されていないと思うからです。
transactionCS12を実行すると、 material の出力は正しい ( SUBCOMP1= 2, SUBCOMP2= 2) ですMAT1。
CS_BOM_EXPL_MAT_V2では、コンポーネントのカウント (この場合COMP1は Qty 2) を尊重し、値をサブコンポーネント (この場合はSUBCOMP1and ) にカスケードしSUBCOMP2、それを乗算して正しい数量を返すようにするにはどうすればよいですか? 、この場合、トランザクションのように両方のサブコンポーネントに Qty 2 が必要CS12ですか?
これが FM で不可能な場合は、CS_BOM_EXPL_MAT_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.