查詢BOM相關性值,如下圖所示

直接從表中取值邏輯:
通過BAPI:CS_BOM_EXPL_MAT_V2抓取出來BOM結構stb = gt_stb,
gt_stb-KNOBJ關聯CUOB-KNOBJ取到CUOB-KNNUM,再通過CUOB-KNNUM關聯CUKN-KNNUM取到CUKN-KNBLK的值作為相關性字段的值。
這個方式有個問題:當相關性值是多行的時候,隻能抓取一行
————————————————————————————————————————
通過BAPI:CSAP_MAT_BOM_READ實作
***相關性
CALL FUNCTION 'CSAP_MAT_BOM_READ'
EXPORTING
material = p_stdpd
plant = p_werks
bom_usage = '1'
TABLES
t_dep_source = gt_dep_source
EXCEPTIONS
error = 1
OTHERS = 2.
DELETE gt_dep_source WHERE line = space.
其中GT_DEP_SOURCE中存儲相關性值
通過如下方法讀取
DATA: lv_knnum TYPE csdep_sorc-dep_intern,
lv_str TYPE string.
FIELD-SYMBOLS:<gw_dep_source> TYPE csdep_sorc.
SELECT SINGLE knnum
INTO lv_knnum
FROM cuob AS a
WHERE a~kntab = 'STPO'
AND a~knobj = gt_stb-knobj.
"lv_knnum = '82'
LOOP AT gt_dep_source ASSIGNING <gw_dep_source>
WHERE item_node = gt_stb-stlkn
AND item_count = gt_stb-stpoz
AND dep_intern = lv_knnum.
IF lv_str IS INITIAL.
lv_str = <gw_dep_source>-line.
ELSE.
CONCATENATE lv_str <gw_dep_source>-line INTO lv_str SEPARATED BY space.
ENDIF.
ENDLOOP.
擷取的LV_STR即是 完整的相關性值