天天看点

查询BOM相关性值方法

查询BOM相关性值,如下图所示

查询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中存储相关性值

通过如下方法读取

查询BOM相关性值方法
查询BOM相关性值方法

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即是 完整的相关性值

查询BOM相关性值方法