Пример для You are not allowed to view links.
Register or
LoginДанные для примера, в gt_bom - все позиции спецификаций
DATA: BEGIN OF LTAB OCCURS 0. "table for comp detail
INCLUDE STRUCTURE STPOX.
DATA: END OF LTAB.
DATA: BEGIN OF MTAB OCCURS 0. "table for assy detail
INCLUDE STRUCTURE CSCMAT.
DATA: END OF MTAB.
DATA: BEGIN OF gt_bom OCCURS 0. "table for comp detail
INCLUDE STRUCTURE STPOX.
INCLUDE STRUCTURE CSCMAT as CSCMAT RENAMING WITH SUFFIX cs.
DATA: MAKTX TYPE MAKTX.
DATA: END OF gt_bom.
форма:
*&---------------------------------------------------------------------*
*& Form explode_bom
*&---------------------------------------------------------------------*
* Разузловании спецификаций
*----------------------------------------------------------------------*
FORM explode_bom
USING rs_matnr TYPE matnr
rs_datuv TYPE stpox-datuv
rs_aumng TYPE stko-bmeng
rs_werks TYPE werks_d.
DATA: rs_stlan LIKE mast-stlan, "usage
rs_stlal LIKE mast-stlal, "alternate
rs_spras LIKE makt-spras.
rs_stlan = '1'.
rs_stlal = '01'.
rs_spras = sy-langu.
REFRESH ltab.
REFRESH mtab.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
ftrel = ' '
aufsw = ' '
brems = ' '
aumng = rs_aumng
capid = 'BEST' "'PP01' "App ID
datuv = rs_datuv
ehndl = '1'
mbwls = ' '
mktls = 'X'
mehrs = 'X' " Multi-level
mtnrv = rs_matnr
stlal = rs_stlal
stlan = rs_stlan
werks = rs_werks
TABLES
stb = ltab
matcat = mtab
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
OTHERS = 8.
IF sy-subrc = '7'.
"WRITE: /1 text-i11, rs_matnr.
WRITE: /1 ' no_suitable_bom_found', rs_matnr.
ELSEIF sy-subrc NE 0.
"WRITE: /1 text-i12, rs_matnr.
WRITE: /1 'не найдена спецификация', rs_matnr.
ENDIF.
CLEAR ltab.
"CLEAR mtab.
"LOOP AT mtab .
LOOP AT ltab.
SELECT SINGLE * FROM mast WHERE werks EQ ltab-werks AND
stlnr EQ ltab-stlnr AND
stlan EQ ltab-stlan.
CHECK sy-subrc EQ '0000'.
SELECT SINGLE * FROM marc WHERE matnr EQ ltab-idnrk AND
werks EQ ltab-werks.
CHECK sy-subrc EQ '0000'.
SELECT SINGLE * FROM makt WHERE matnr EQ ltab-idnrk AND
spras EQ rs_spras.
CHECK sy-subrc EQ '0000'.
IF ltab-mstae NE '00' .
FORMAT COLOR 3 INTENSIFIED.
ELSE.
FORMAT COLOR 2.
ENDIF.
"=
gt_bom-maktx = makt-maktx.
"=
WRITE :/ ltab-stufe,
mast-matnr , ltab-idnrk , makt-maktx,
marc-ekgrp , ltab-matkl,
ltab-mstae , ltab-mmsta , ltab-dismm ,ltab-sobsl,
ltab-mschg , ltab-mmein , ltab-mtart, ltab-revlv.
"HIDE : ltab-idnrk , marc-werks.
"=
MOVE-CORRESPONDING mtab TO gt_bom.
MOVE-CORRESPONDING ltab TO gt_bom.
APPEND gt_bom.
"=
ENDLOOP.
ENDFORM. "explode_bom
Думаю, в большинстве случае понятно....