Quantcast
Channel: SCN : Unanswered Discussions - ABAP Development
Viewing all articles
Browse latest Browse all 8768

How to change the header of Material BOM in a program for alternative BOM ?

$
0
0

Requirement: An Inbound IDOC creates /change/delete Alternative Material BOM. The Alternative Material BOM can have alternative values from 1 to 99.

ISSUE: I am good with CREATE and DELETE BOM. The issue is with CHANGE of header Material BOM. The fields which we need to change in the header is the base quantity, BOM status, Lot Size from and Lot Size to. Please note that I am able to change the item details of the BOM with FM CSAI_BOM_MAINTAIN. I find no FM /BAPI which would change the header of a material BOM.

 

Please NOTE that I am using BAPI_MATERIAL_BOM_GROUP_CREATE to create alternative Material BOM. This has a parameter in TABLES called "VARIANTS" which has a field CS_FUNCTION which can have value from NEW/CHG/DEL .Also ,there is another parameter in TABLES called "ITEMASSIGNMENTS" which has a field CS_FUNCTION which can have value from NEW/CHG/DEL which implies this FM will allow us to change the BOM. But this does not work when I use it for CHANGE scenario with CHG value. I debugged this BAPI and observed it requires a STNLR(Bill of Material) value . This field is not there in any of the structure. I am not sure if I am passing the right parameters to it.

Let me know if the parameters are passed correctly for CHANGE scenario.

 

Also let me know if there is any other way(FM/BAPI)  to update the Header of the Material BOM ?

Here is the code I am using:

 

 

*&---------------------------------------------------------------------*

*& Report  ZTEST_S_E

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*



REPORT  ZTEST_S_E.

* This code will create a material BoM for the material

* MAINMATERIAL with the components COMPON1 and COMPON2.



* Data Declaration

DATA:

it_bomgroup LIKE bapi1080_bgr_c OCCURS 0 WITH HEADER LINE,

it_variants LIKE bapi1080_bom_c OCCURS 0 WITH HEADER LINE,

it_items LIKE bapi1080_itm_c OCCURS 0 WITH HEADER LINE,

it_matrel LIKE bapi1080_mbm_c OCCURS 0 WITH HEADER LINE,

it_itemas LIKE bapi1080_rel_itm_bom_c OCCURS 0 WITH HEADER LINE,

it_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.



* Fill the data

* Material BoM Group Header Data

CLEAR it_bomgroup.

it_bomgroup-bom_group_identification = 'BAPI_SMP_COL1'.

it_bomgroup-object_type = 'BOM'.

it_bomgroup-object_id = 'SIMPLE1'.

it_bomgroup-bom_usage = '1'. " YOU COULD CHANGE THE BOM USAGE TO YOUR

*NEEDS

it_bomgroup-ltxt_lang = sy-langu.

it_bomgroup-technical_type = ' '.

it_bomgroup-bom_text = 'Simple BoM - FM'.

APPEND it_bomgroup.



* Header Details of the different variants

CLEAR it_variants.

it_variants-CHANGE_NO  = '500000000349'.

it_variants-bom_group_identification = 'BAPI_SMP_COL1'.

it_variants-object_type = 'BOM'.

it_variants-object_id = 'SIMPLE1'.

it_variants-alternative_bom = '01'.

it_variants-bom_status = '01'.

it_variants-base_qty = '2.000'.

it_variants-valid_from_date = sy-datum.

it_variants-function = 'CHG'.

APPEND it_variants.



* Details of the items of the variants

CLEAR it_items.

it_items-bom_group_identification = 'BAPI_SMP_COL1'.

it_items-object_type = 'ITM'.

it_items-object_id = 'SIMPLE1'.

it_items-item_no = '0010'.

it_items-item_cat = 'L'.

it_items-component = '030790490'.

it_items-comp_qty = '2'.

it_items-valid_from_date = sy-datum.

APPEND it_items.



CLEAR it_items.

it_items-bom_group_identification = 'BAPI_SMP_COL1'.

it_items-object_type = 'ITM'.

it_items-object_id = 'SIMPLE1'.

it_itemas-change_no = '500000000138'.

it_items-item_no = '0020'.

it_items-item_cat = 'L'.

it_items-component = '030790490'.

it_items-comp_qty = '3'.

it_items-valid_from_date = sy-datum.

APPEND it_items.





* Details of the materials of the different variants

CLEAR it_matrel.

it_matrel-bom_group_identification = 'BAPI_SMP_COL1'.

it_matrel-material = '030790490'.

it_matrel-bom_usage = '1'.

it_matrel-alternative_bom = '01'.

APPEND it_matrel.



* Linking items to the corresponding variants

CLEAR it_itemas.

it_itemas-bom_group_identification = 'BAPI_SMP_COL1'.

it_itemas-sub_object_type = 'ITM'.

it_itemas-sub_object_id = 'SIMPLE1'.

it_itemas-super_object_type = 'BOM'.

it_itemas-super_object_id = 'SIMPLE1'.

it_itemas-valid_from_date = sy-datum.

it_itemas-function = 'CHG'.

APPEND it_itemas.



* Create variants

CALL FUNCTION 'BAPI_MATERIAL_BOM_GROUP_CREATE'

EXPORTING

all_error = 'X'

TABLES

bomgroup = it_bomgroup

variants = it_variants

items = it_items

materialrelations = it_matrel

itemassignments = it_itemas

return = it_return.



CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.



LOOP AT it_return.

WRITE:/ it_return-type, it_return-id, it_return-number,

it_return-message.

ENDLOOP.

 

 

Let me know if the parameters are passed correctly for CHANGE scenario.

 

Also let me know if there is any other way(FM/BAPI)  to update the Header of the Material BOM ?


Viewing all articles
Browse latest Browse all 8768

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>