查询BOM相关性值方法
查询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即是 完整的相关性值