[SAP ABAP] - Custome Create BOM (Build of Material)

*&---------------------------------------------------------------------*
*& Report  YO_CC_TEST02
*&
*&---------------------------------------------------------------------*
*& Module : PP
*&
*&---------------------------------------------------------------------*

REPORT  yo_cc_test02.

PARAMETERS p_matnr LIKE mara-matnr DEFAULT '51200013',
             p_werks LIKE marc-werks DEFAULT '5620',
             p_stlan LIKE rc29n-stlan DEFAULT '1',
             p_stlal LIKE rc29n-stlal DEFAULT '06',
             p_datum LIKE sy-datum DEFAULT sy-datum.

PARAMETERS p_mat01 LIKE mara-matnr DEFAULT '51300004',
             p_quant1 LIKE rc29p-menge DEFAULT '10000',
             p_mat02 LIKE mara-matnr DEFAULT '51300002',
             p_quant2 LIKE rc29p-menge DEFAULT '1000'.


DATA:
gi_bomgroup LIKE bapi1080_bgr_c OCCURS WITH HEADER LINE,
gi_variants LIKE bapi1080_bom_c OCCURS WITH HEADER LINE,
gi_items LIKE bapi1080_itm_c OCCURS WITH HEADER LINE,
gi_matrel LIKE bapi1080_mbm_c OCCURS WITH HEADER LINE,
gi_itemas LIKE bapi1080_rel_itm_bom_c OCCURS WITH HEADER LINE,
gi_return LIKE bapiret2 OCCURS WITH HEADER LINE.

DATA lw_return LIKE bapiret2.
DATA fc_message LIKE sy-lisel.

START-OF-SELECTION.

* Fill the data
* Material BoM Group Header Data
  CLEAR gi_bomgroup.
  gi_bomgroup-bom_group_identification 'BAPI_SMP_COL1'.
  gi_bomgroup-object_type 'BGR'.
  gi_bomgroup-object_id 'SIMPLE1'.
  gi_bomgroup-created_in_plant p_werks.
  gi_bomgroup-bom_usage p_stlan" YOU COULD CHANGE THE BOM USAGE TO YOUR needs
  gi_bomgroup-ltxt_lang sy-langu.
  gi_bomgroup-technical_type ' '.
  gi_bomgroup-bom_text 'Simple BoM - FM'.
  APPEND gi_bomgroup.

* Header Details of the different variants
  CLEAR gi_variants.
  gi_variants-bom_group_identification 'BAPI_SMP_COL1'.
  gi_variants-object_type 'BOM'.
  gi_variants-object_id 'SIMPLE1'.
  gi_variants-alternative_bom p_stlal.
*gi_variants-bom_status = '01'.
*gi_variants-base_qty = '1.000'.
  gi_variants-valid_from_date p_datum.
  gi_variants-function 'NEW'.
  APPEND gi_variants.

* Details of the materials of the different variants
  CLEAR gi_matrel.
  gi_matrel-bom_group_identification 'BAPI_SMP_COL1'.
  gi_matrel-material p_matnr.
  gi_matrel-plant p_werks.
  gi_matrel-bom_usage p_stlan.
  gi_matrel-alternative_bom p_stlal.
  APPEND gi_matrel.

* Details of the items of the variants
  CLEAR gi_items.
  gi_items-bom_group_identification 'BAPI_SMP_COL1'.
  gi_items-object_type 'ITM'.
  gi_items-object_id 'SIMPLE1'.
  gi_items-item_no '0010'.
  gi_items-item_cat 'L'.
  gi_items-component p_mat01.
  gi_items-comp_qty p_quant1.
  gi_items-valid_from_date p_datum.
  APPEND gi_items.

  CLEAR gi_items.
  gi_items-bom_group_identification 'BAPI_SMP_COL1'.
  gi_items-object_type 'ITM'.
  gi_items-object_id 'SIMPLE1'.
  gi_items-item_no '0020'.
  gi_items-item_cat 'L'.
  gi_items-component p_mat02.
  gi_items-comp_qty p_quant2.
  gi_items-valid_from_date p_datum.
  APPEND gi_items.

* Linking items to the corresponding variants
  CLEAR gi_itemas.
  gi_itemas-bom_group_identification 'BAPI_SMP_COL1'.
  gi_itemas-sub_object_type 'ITM'.
  gi_itemas-sub_object_id 'SIMPLE1'.
  gi_itemas-super_object_type 'BOM'.
  gi_itemas-super_object_id 'SIMPLE1'.
  gi_itemas-valid_from_date p_datum.
  gi_itemas-function 'NEW'.
  APPEND gi_itemas.

* Create variants
  CALL FUNCTION 'BAPI_MATERIAL_BOM_GROUP_CREATE'
    EXPORTING
      all_error         'X'
    TABLES
      bomgroup          gi_bomgroup
      variants          gi_variants
      items             gi_items
      materialrelations gi_matrel
      itemassignments   gi_itemas
      return            gi_return.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.


  LOOP AT gi_return INTO lw_return.
    CALL FUNCTION 'RPY_MESSAGE_COMPOSE'
      EXPORTING
        language       sy-langu
        message_id     lw_return-id
        message_number lw_return-number
        message_var1   lw_return-message_v1
        message_var2   lw_return-message_v2
        message_var3   lw_return-message_v3
        message_var4   lw_return-message_v4
      IMPORTING
        message_text   fc_message.

    WRITE:/ fc_message.

  ENDLOOP.

Comments