SAP CSO1創建BOM


 

 

1業務說明

此文檔使用BAPI:BAPI_MATERIAL_BOM_GROUP_CREATE創建BOM

2前台實現

事務代碼:CS01

輸入行項目信息

保存即可

3代碼實現

3.1調用BAPI

抬頭

行項目

導入BAPI

3.2問題解決

3.2.1 成本核算標識置空

成本核算標識置空失敗,因為業務配置默認打鈎,傳空置之后,系統默認使用默認配置打上勾。

后來查了資料,是因為當以下字段為空時,就默認使用T416V,也就是業務配置的默認值予以覆蓋,

因此需要給其中一個字段傳值,這樣可以不適用默認值覆蓋,這里我們選擇的是生產相關字段。

 

 之后就可以順利置空了。

3.3源代碼

DATA:gt_bomgroup TYPE bapi1080_bgr_c OCCURS 0 WITH HEADER LINE, "
  gt_variants TYPE bapi1080_bom_c OCCURS 0 WITH HEADER LINE,  "
  gt_items TYPE bapi1080_itm_c OCCURS 0 WITH HEADER LINE,    "
  gt_subitems TYPE bapi1080_itm_c OCCURS 0 WITH HEADER LINE,
  gt_materialrelations TYPE bapi1080_mbm_c OCCURS 0 WITH HEADER LINE,
  gt_itemassignments TYPE bapi1080_rel_itm_bom_c OCCURS 0 WITH HEADER LINE, "
  gt_return TYPE bapiret2 OCCURS 0 WITH HEADER LINE,
  gs_return TYPE bapiret2,
*
        texts             TYPE bapi1080_txt_c OCCURS 0 WITH HEADER LINE.
  gw_subitemas TYPE bapi1080_rel_sui_itm_c,
  gt_subitemas TYPE TABLE OF bapi1080_rel_sui_itm_c.

DATA:item_no TYPE
 i,
  lv_check TYPE char1,
  lv_message type char200,
  lv_text     TYPE char120 VALUE 'texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext'.
"以父物料匯總
CLEAR
 gt_bomgroup.
gt_bomgroup-bom_group_identification
 = 'BAPI_SMP_COL1'.  "可以為空
gt_bomgroup-object_type
 = 'BGR'.
gt_bomgroup-object_id
 = 'SIMPLE1'.
gt_bomgroup-bom_usage
 = '1'. "用途
gt_bomgroup-ltxt_lang
 = sy-langu.
gt_bomgroup-technical_type
 = ''.
gt_bomgroup-bom_group
 = ''.  "可以為空
gt_bomgroup-created_in_plant
 = '2010'."工廠
"
    gt_bomgroup-bom_text = lt_data-bom_text."BOM文本
APPEND
 gt_bomgroup.

"
         HEADER DETAILS OF THE DIFFERENT gt_variants
CLEAR
 gt_variants.
gt_variants-bom_group_identification
 = 'BAPI_SMP_COL1'.
gt_variants-object_type
 = 'BOM'.
gt_variants-object_id
 = 'SIMPLE1'.
gt_variants-alternative_bom
 = '09'."備選物料清單 此處要填兩位數字,不夠補零
gt_variants-bom_status
 = '01'.  "BOM狀態
gt_variants-base_qty
 = '10'."基本數量
"
    gt_variants-base_unit = lt_data-bmein."計量單位
gt_variants-valid_from_date
 = sy-datum."生效日期
"
    gt_variants-alt_text = lt_data-stktx."可選文本
gt_variants-ltxt_lang
 = sy-langu.
gt_variants-langu_iso
 = sy-langu.
gt_variants-function
 = 'NEW'.  "NEW表示新建.
APPEND
 gt_variants.

CLEAR
 gt_materialrelations.
gt_materialrelations-bom_group_identification
 = 'BAPI_SMP_COL1'.  "可以為空
gt_materialrelations-material_long
 = '000000000005000021'.  "物料號
gt_materialrelations-plant
 = '2010'."工廠
gt_materialrelations-bom_usage
 = '1'."BOM用途
gt_materialrelations-alternative_bom
 = '09'."可選的BOM 此處要填兩位數字,不夠補零
APPEND
 gt_materialrelations.
"
"
    CLEAR gt_itemassignments.
"
    gt_itemassignments-bom_group_identification = ''. " 可以為空
"
    gt_itemassignments-sub_object_type = 'ITM'.
"
    gt_itemassignments-sub_object_id = object_id.
"
    gt_itemassignments-super_object_type = 'BOM'.
"
    gt_itemassignments-super_object_id = 'BOM1'.
"
    gt_itemassignments-valid_from_date = sy-datum.
"
    gt_itemassignments-function = 'NEW'.
"
    APPEND gt_itemassignments.

"
    CLEAR gw_subitemas.
"
    gw_subitemas-bom_group_identification = bom_group_identification.
"
    gw_subitemas-sub_object_type = 'SUI'.
"
    gw_subitemas-sub_object_id = 'SIM1'.
"
    gw_subitemas-super_object_type = 'ITM'.
"
    gw_subitemas-super_object_id = object_id.
"
    APPEND gw_subitemas TO gt_subitemas.

"取父物料的子件信息
item_no
 = item_no + 1.
CLEAR
 gt_items.
gt_items-bom_group_identification
 = 'BAPI_SMP_COL1'.  "可以為空
gt_items-object_type
 = 'ITM'.
gt_items-object_id
 = item_no.
gt_items-item_no
 = '0010'."項目
gt_items-item_cat
 = 'L'."項目類別
gt_items-component_long
 = '000000000004000012'."組件編碼
gt_items-comp_qty
 = '10'."組件數量
*gt_items-alt_item_group
 = gs_data-alpgr."項目替代組
gt_items-prod_rel
 = 'X'."標識:與生產相關項目
gt_items-cost_rel
 = ''."成本核算相關項的標識符

*IF
 gs_data-alpgr IS NOT INITIAL .
*
  gt_items-alt_item_strategy = '2'."替代項目:策略
*ENDIF.
*gt_items-alt_item_prio
 = gs_data-alprf."優先級

*gt_items-usage_prob
 = 100."以百分比表示的使用概率(備選項目)

"gt_items-comp_unit
 = gs_data-meins."組件計量單位
gt_items-item_text1
 = lv_text+0(40)."項目長文本
gt_items-item_text2
 = lv_text+40(80).
gt_items-ltxt_lang
 = sy-langu.  "這個參數一定要填
APPEND
 gt_items.

CLEAR
 gt_itemassignments.
gt_itemassignments-bom_group_identification
 = 'BAPI_SMP_COL1'. " 可以為空
gt_itemassignments-sub_object_type
 = 'ITM'.
gt_itemassignments-sub_object_id
 = item_no.
gt_itemassignments-super_object_type
 = 'BOM'.
gt_itemassignments-super_object_id
 = 'SIMPLE1'.
gt_itemassignments-valid_from_date
 = sy-datum.
gt_itemassignments-function
 = 'NEW'.
APPEND
 gt_itemassignments.

"BOM操作
CALL
 FUNCTION 'BAPI_MATERIAL_BOM_GROUP_CREATE'
  EXPORTING
*
   TESTRUN           = 'X'
    all_error         = 'X'
  TABLES
    bomgroup          = gt_bomgroup
    variants          = gt_variants
    items             = gt_items
    materialrelations = gt_materialrelations
    itemassignments   = gt_itemassignments
*
   subitemassignments = gt_subitemas
    return            = gt_return.

lv_check
 = 'S'.
LOOP
 AT gt_return INTO gs_return WHERE type = 'A' OR type = 'E'.
  lv_message = lv_message && gs_return-message.
  lv_check = 'E'.
ENDLOOP.

IF
 lv_check = 'S'.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.
*
  WRITE:GV_NUMBER.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM