天天看點

查詢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相關性值方法