BOM Creation with SubItem
Does anyone has readymade code for creating Material BOM with SubItems.
I have this sample code (I got this from web and changed to add subitem logic) which is creating subitems.
but I have 2 problems.
1. The Subitems get created for all the components.
2. The code is written to create multiple subitems but only create 1 subitem.
I am new to ABAP, just stared a month back. Any help is appreciated.
My Sample Code:
REPORT y_bapi3.
This code will create a material BoM for the material
LSMWTEST12 with the components LSMWTEST14 and LSMWTEST50.
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_subitems LIKE bapi1080_sui_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_subitemas LIKE BAPI1080_REL_SUI_ITM_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 = 'BGR'.
it_bomgroup-object_id = 'SIMPLE1'.
it_bomgroup-CREATED_IN_PLANT = '1000'.
it_bomgroup-bom_usage = '1'. "YOU COULD CHANGE THE BOM USAGE TO YOUR
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-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 = '1.000'.
it_variants-valid_from_date = sy-datum.
it_variants-function = 'NEW'.
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 = 'LSMWTEST14'.
it_items-comp_qty = '2.00'.
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_items-item_no = '0020'.
it_items-item_cat = 'L'.
it_items-component = 'LSMWTEST50'.
it_items-comp_qty = '3.00'.
it_items-valid_from_date = sy-datum.
APPEND it_items.
*Details of the subitems of the variants
CLEAR it_subitems.
it_subitems-bom_group_identification = 'BAPI_SMP_COL1'.
it_subitems-object_type = 'SUI'.
it_subitems-object_id = 'SIM1'.
it_subitems-subitem_no = '0001'.
it_subitems-INSTALLATION_POINT = 'ab1'.
it_subitems-subitem_qty = '1'.
APPEND it_subitems.
CLEAR it_subitems.
it_subitems-bom_group_identification = 'BAPI_SMP_COL1'.
it_subitems-object_type = 'SUI'.
it_subitems-object_id = 'SIM1'.
it_subitems-subitem_no = '0002'.
it_subitems-INSTALLATION_POINT = 'ab2'.
it_subitems-subitem_qty = '1'.
APPEND it_subitems.
Details of the materials of the different variants
CLEAR it_matrel.
it_matrel-bom_group_identification = 'BAPI_SMP_COL1'.
it_matrel-material = 'LSMWTEST12'.
it_matrel-plant = '1000'.
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 = 'NEW'.
APPEND it_itemas.
Linking subitems to the corresponding variants
CLEAR it_subitemas.
it_subitemas-bom_group_identification = 'BAPI_SMP_COL1'.
it_subitemas-sub_object_type = 'SUI'.
it_subitemas-sub_object_id = 'SIM1'.
it_subitemas-super_object_type = 'ITM'.
it_subitemas-super_object_id = 'SIMPLE1'.
APPEND it_subitemas.
Create variants
CALL FUNCTION 'BAPI_MATERIAL_BOM_GROUP_CREATE'
EXPORTING
all_error = 'X'
TABLES
bomgroup = it_bomgroup
variants = it_variants
items = it_items
subitems = it_subitems
materialrelations = it_matrel
itemassignments = it_itemas
subitemassignments = it_subitemas
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.
-Uday Malgundkar
Hi uday,
i am facing the same problem while creating multiple sub-items per item.can u plz suggest me for this issue?
only one subitem is creating for each item .This bapi is not taking multiple sub-items.i tried , by passing this bapi for each subitem & clearing the subitem field for each time. but only one sub-item is creating.
can u plz give any sample code where sub-item details will be there?
ur help will be highly appreaciated.it is urgent yar.
Thanks & Regards
pabitra
Similar Messages
-
Automise CS61 BOM creation with reference to Sales order
Hi Experts.
Need your help in fixing one scenario:
We have scenarion data coming from third party containing BOM data with respect to Sales order.
We are using XI/PI,
1: Do we have any idoc for CS61 master creation. (Not likely to move in bdc ....etc)
2: How to Create multilevel in that....
Please guide .. Help is appreciable.
Regards
Deepak SodhiHi,
You will need to make assignment from So item to Delivery item please check if copy control is maintained at item level. Also make sure that Copy controls are maintianed for the billing document from the SO & Delivery both as this would be the next step. -
Hi Team,
I have created the BOM with usage 4 (Plant Maintenance) for the finished goods material in CS01. For the same finished goods material, i am creating the routing in CA01 with routing usage as 4. I have assigned some work center in the routing operation overview. Now i am selecting the button "Component Allocation" in the routing, the system is fetching the BOM details of the finished goods material with BOM usgae 1 (production). It is not fetching the BOM details with BOM usage 4 in the routing component allocation view .
I would like to see the BOM components with BOM usage 4 in the routing component allocation view. How to get it?
Please guide me.
pskDear PSK,
You cannot assign the BOM components created for BOM usage 4 in the routing -component assignment.
If my understanding is correct,then this is the standard SAP behaviour,wherein to add the items relevant to plant maintenance
does not gets copied into the production order.
Regards
Mangalraj.S -
BOM creation with variable size item
Dear Experts,
I want to create BOM with 'R'-Variable size item, Can U tell me exact procedure step by step to How to create BOM with R- Variable size item?
Regards,
Shivkumar DachawarHi,
T-Code-CS01
1. Enter the material for which you want to create BOM, Plan and BOM usage.
2. Select the item category "R", enter the component. Now you will be taken to the "Variable item data" screen.
3. Enter the datas of Size 1, 2 & 3 (as required) and the unit of the size & number. System will calculate the "Qty of var- size item" in the unit assigned to the basic data of the material master of the component.
4. Save
Note: You can change the unit of the variable size item as per your requirement in OS28
Hope this helps.
-Thaila Shree -
Automate BOM creation with script
Hi all
I'like to create an Excel macro that would upload a BOM for a specific equipment using SAP Script.
where i'm struggling right now is on determining the first available position in the ib02 tab
in the example the first line available for insertion of a new item would be the 53 one.
When i ran the script recorder i get the following code
session.findById("wnd[0]/tbar[0]/okcd").text = "/nib02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 7
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 14
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 21
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 28
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 35
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 42
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 49
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 56
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 63
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 70
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 76
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 69
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 62
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 61
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 60
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 59
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 58
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 57
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 56
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 55
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 54
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 53
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-POSTP[1,2]").setFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-POSTP[1,2]").caretPosition = 0
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-POSTP[1,2]").text = "I"
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-IDNRK[2,2]").text = "TEST_1117"
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-IDNRK[2,2]").setFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-IDNRK[2,2]").caretPosition = 9
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/subPOS_PHPT:SAPLCSDI:0830/txtRC29P-MENGE").text = "1"
session.findById("wnd[0]/usr/subPOS_PHPT:SAPLCSDI:0830/txtRC29P-MENGE").caretPosition = 1
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press
thanks a lot for your inputHi Umur
Thanks for the tip.
this is working very well.
another option is to check is one of the field is empty.
If no then increment a counter
if yes then you have reach the first available line and you can use the counter to identify it in the script
here is an example :
k = 0
While session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-POSTP[1," & CStr(k) & "]").Text <> ""
k = k + 1
Wend
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-POSTP[1," & CStr(k) & "]").Text = item_type -
BOM changes(Not creation) with EC Number
Hi
I want to make the ECN as mandatory while changing the BOM,not for creation.
I tried by setting OS27,OS25 settings for BOM. I tried BOM creation with status 3(With history requirement). System gives only warning message,not the error message.(Message no. 29045)
I tried to make the Change number field as mandatory,but it applies it to CS01 & CS02. I want only in CS02.
Plse help me out if any knows the soultion.Dear Sudhar,
1.Please check in OS27 - Tick mark is included for EC Management Active &
BOM validity manitained and History Requirement.
2.In OS25 - For History Requirement.
3.Get the help from ABAP consultant,to make use of field exit for the particular
screen CS02 ,which has got a screen number.The system will not allow the user
to enter into the next screen unless that field is not filled.
4.Check for the Auth.Object C_STUE_NOH
With this Logic only we are using in my present project.
Check & reply.
Regards
Mangal -
Reg: Creation of BOM along with Alternative BOM
Hi Experts,
I have written the below code for creating BOM along with Alternative BOM, I'm getting the following error.
W BAPI1080 028
Error/warning when checking the structure of the BOM group with ID=
A BAPI1080 002
Basic data for (BOM) group available twice
A BAPI 001
No instance of object type BOMGroup has been created. External reference:
W BAPI1080 028
Error/warning when checking the structure of the BOM group with ID=
A BAPI1080 002
Basic data for (BOM) group available twice
A BAPI 001
No instance of object type BOMGroup has been created. External reference:
Please find the piece of code below.
SORT it_bom01 BY matnr idnrk posnr ASCENDING.
LOOP AT it_bom01 INTO wa_bom01.
AT NEW matnr.
CLEAR:
it_bomgroup[],
wa_bomgroup,
it_variants[],
wa_variants,
it_items[],
wa_items,
it_matrel[],
wa_matrel,
it_itemas[],
wa_itemas,
it_return.
ENDAT.
* Material BoM Group Header Data
wa_bomgroup-bom_group_identification = 'IDENTIFICATION'.
wa_bomgroup-object_type = 'BGR'.
wa_bomgroup-object_id = 'ID'.
wa_bomgroup-bom_usage = wa_bom01-stlan.
wa_bomgroup-ltxt_lang = sy-langu.
wa_bomgroup-technical_type = ' '.
* wa_bomgroup-bom_text = .
wa_bomgroup-created_in_plant = wa_bom01-werks.
APPEND wa_bomgroup TO it_bomgroup.
* Header Details of the different variants
wa_variants-bom_group_identification = 'IDENTIFICATION'.
wa_variants-object_type = 'BOM'.
wa_variants-object_id = 'ID'.
wa_variants-alternative_bom = wa_bom01-stlal.
wa_variants-bom_status = wa_bom01-stlst.
wa_variants-base_qty = wa_bom01-bmeng.
wa_variants-valid_from_date = wa_bom01-datuv.
wa_variants-alt_text = wa_bom01-alt_text.
wa_variants-function = 'NEW'.
APPEND wa_variants TO it_variants.
* Details of the items of the variants
wa_items-bom_group_identification = 'IDENTIFICATION'.
wa_items-object_type = 'ITM'.
wa_items-object_id = 'ID'.
wa_items-item_no = wa_bom01-posnr.
wa_items-item_cat = wa_bom01-postp.
wa_items-component = wa_bom01-idnrk.
wa_items-comp_qty = wa_bom01-menge.
wa_items-valid_from_date = wa_bom01-datuv.
APPEND wa_items TO it_items.
* Details of the materials of the different variants
CLEAR it_matrel.
wa_matrel-bom_group_identification = 'IDENTIFICATION'.
wa_matrel-material = wa_bom01-matnr.
wa_matrel-plant = wa_bom01-werks.
wa_matrel-bom_usage = wa_bom01-stlan.
wa_matrel-alternative_bom = wa_bom01-stlal.
APPEND wa_matrel TO it_matrel.
* Linking items to the corresponding variants
CLEAR it_itemas.
wa_itemas-bom_group_identification = 'IDENTIFICATION'.
wa_itemas-sub_object_type = 'ITM'.
wa_itemas-sub_object_id = 'ID'.
wa_itemas-super_object_type = 'BOM'.
wa_itemas-super_object_id = wa_bom01-matnr.
wa_itemas-valid_from_date = wa_bom01-datuv.
wa_itemas-function = 'NEW'.
APPEND wa_itemas TO it_itemas.
AT END OF matnr.
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.
ENDAT.
ENDLOOP.
Thanks and Regards,
Abdur RafiqueHi Sree,
I used your code, I removed the levels because, i have only one level 'the lineitems'. Please find the modified code below. I'm not able to create the BOM, it throws an error as "BOM is recursive". I checked the header and item contents before passing to FM, it is correct.
Please help me with the solution.
REPORT zbom_sdn.
TYPE-POOLS: truxs.
DATA: bom_header LIKE cad_bicsk,
bom_item TYPE TABLE OF cad_bom_item WITH HEADER LINE,
bom_sub_item TYPE TABLE OF cssubitem WITH HEADER LINE,
dms_class_data TYPE TABLE OF cls_charac WITH HEADER LINE,
sap_field_data TYPE TABLE OF rfcdmsdata WITH HEADER LINE,
e_return LIKE cad_return-value,
e_message LIKE message-msgtx,
e_message_len LIKE cad_return-message_len.
DATA v_item TYPE i.
TYPES : BEGIN OF ty_data,
matnr TYPE cad_bicsk-matnr," Material
werks TYPE csap_mbom-werks," Plant
stlan TYPE csap_mbom-stlan," BOM Usage
datuv TYPE csap_mbom-datuv," Valid From
* posnr TYPE stpo_api03-item_no," Item Number
idnrk TYPE stpo_api03-component," BOM Component
postp TYPE stpo_api03-item_categ," Item category
menge TYPE cad_bom_item-menge," Quantity
bmeng TYPE stko_api01-base_quan," Base Qty
stlst TYPE stko_api01-bom_status," BOM Status
stlal TYPE csap_mbom-stlal," Alternative BOM
alt_text TYPE stko_api01-alt_text," Alternative BOM text
END OF ty_data.
DATA : it_data TYPE TABLE OF ty_data ,
wa_data TYPE ty_data.
DATA: wa_raw TYPE truxs_t_text_data.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.
PARAMETER : p_file TYPE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
program_name = syst-repid
dynpro_number = syst-dynnr
CHANGING
file_name = p_file.
START-OF-SELECTION.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = wa_raw " Work Table
i_filename = p_file
TABLES
i_tab_converted_data = it_data[] " Actual Table
EXCEPTIONS
conversion_failed = 1
OTHERS = 2 .
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR: bom_header, bom_item, bom_sub_item.
REFRESH: bom_item, bom_sub_item.
DATA : v_lineitem TYPE sposn VALUE '0000',
v_slineitem TYPE sposn VALUE '0'.
LOOP AT it_data INTO wa_data.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_data-matnr
IMPORTING
output = wa_data-matnr.
* fill BOM header
CLEAR bom_header.
bom_header-matnr = wa_data-matnr. "'000000000200000016'.
bom_header-stlal = wa_data-stlal. " Alternative Bom
bom_header-werks = wa_data-werks. "'1000'.
bom_header-stlan = wa_data-stlan. "'3'.
bom_header-bmeng = wa_data-bmeng.
bom_header-cadkz = 'X'.
bom_header-stktx = wa_data-alt_text.
* bom_header-ztext = wa_data-text.
bom_header-datuv = wa_data-datuv."'01.10.2010'.
* fill item
v_lineitem = v_lineitem + 10.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_lineitem
IMPORTING
output = v_lineitem.
* bom_item-upskz = 'X'. " If We hav the Sub items Enable it.
bom_item-idnrk = wa_data-matnr. "'000000000200000017'.
bom_item-posnr = v_lineitem.
bom_item-postp = wa_data-postp."'L'.
bom_item-menge = wa_data-menge. "'1'.
* bom_item-fmeng = wa_data-fqty.
APPEND bom_item.
CLEAR: bom_item.
AT END OF matnr.
CALL FUNCTION 'CAD_CREATE_BOM_WITH_SUB_ITEMS'
EXPORTING
i_bom_header = bom_header
i_auto_posnr = ''
IMPORTING
e_return = e_return
e_message = e_message
e_message_len = e_message_len
e_bom_header = bom_header
TABLES
bom_item = bom_item
bom_sub_item = bom_sub_item
dms_class_data = dms_class_data
sap_field_data = sap_field_data
EXCEPTIONS
OTHERS = 1.
REFRESH bom_item.
WRITE : e_message.
ENDAT.
CLEAR wa_data.
ENDLOOP.
Thanks and Regards,
Abdur Rafique -
What is use of Item Category N(non-stock item) in BOM creation
Dear Experts,
What is use of Item Category N(non-stock item) in BOM creation ?
regards
rajakarthikHi,
This item category is used for components which are not kept in stock if they are used in a bill of material (BOM). Non-stock items can be entered in the BOM with or without a master record. To enter a non-stock item without a master record, you must simply enter a descriptive text.
When you use this item category, the system automatically creates a purchase requisition for these components,
Special functions
The following functions are supported for non-stock items
You maintain purchasing data for non-stock items in the bill of material.
In the planning run, the system generates purchase requisitions
instead of dependent requirements for components that are procured directly. When you configure your R/3 System for MRP, you can define whether direct procurement is triggered by the planning run or by production order management.
Product costing processes take valuation data from the BOM item.
The system determines the release strategy on the basis of the price data you enter. The material group is required to produce a purchase requisition.
Pavan -
Comparing the BOM usage with the actual usage for materials.
Hi All
My client want to compare the BOM usage with the actual usage and have a report for this within a period? More specified they want to calculate the BOM usage, based on the requirement quantity from confirmation - but with out the scrap %. mulitplied with the confimed quantity of the header material.
The actual usage should be based on goods issuing from stock, either as goods issue to order (backflushing) or as goods issue to cost center.
I havent been able to indentiy a standard report for doing this - does some of you know a standard report?
- I was thinking of the following method:
Look at tabel RESB and compare it with MSEG, but I have some diferent problems with this.
- In resb there is no qty before scrap.
- The data amount from MSEG, is so huge so it is not possible to make a data search for a whole period (eg. month)
Br. MThere is one std report MCRX which gives a comparison of quanity in order and actual consumption,
if it doesnt meet your need, you may have to create a custom report.
logic can be find the quantites as per BOM for the produced quantities
issued quantities to the order
tables you may need are AUFK AUFM
AFKO, STAS STPO
MSEG, MKPO
JEST ( if you want to filter using order status) -
Error message display for PO creation with reference to internal orders
Sir,
While creating PO with Tcode ME21N (item category I) with reference to ' Internal Order with Funds provided (Tcode KO12), system displaying error message when Budget is exceeded.
But when Funds provision is not mentioned (Funds value is initial in KO12) , error message is not being given by the system during Po creation with ME21N.
Where should I configure in img(Tcode SPRO) , so that system will throw error mesage while creating PO without Budget Provision (Funds not mentioned ) in Internal Orders.
Regards,
Srinivasa MurthyHi Anupam,
The error message display as follows. (when the PO Price exceeds the Planned Funds kept for internal order)
This error comes during PO creation Process and PO can not be saved. This error message display is correct.
Item 001 Order 600643 budget exceeded
Message no. BP604
Diagnosis
In document item 001 Order 600643, budget for fiscal year 2009 was exceeded by 99,960,000.00 INR.
But my question is 'when funds have not at all been mentioned for the internal order' then system has to throw the same error as mentioned above. But it is not happening. System is allowing the PO to save which is not correct.
Regards,
Srinivasa Murthy -
Po Creation With Reference to contract
Dear Experts
We are creating the purchase order with reference to contract the contract quantity not copied to po. it is asking to enter the qty. but it should copy the contract quantity. the same contract price also not copied to po. it is copying from the info record price.
my scenario is at the time of po creation with reference to contract it should copy the contract qty and price any copy control assignment is there or any other settings required.
Please help
Regards
AnandHi,
If a contract with one of your principal vendors exists for a material, you can create purchase orders referencing this contract. Purchase orders created in this way are called contract release orders.
The price, vendor data, terms of payment, delivery costs, and any instructions to the vendor are adopted from the contract automatically.
If you have created the contract & info records is also exists then system will give priority to contract to determine the conditions.
Please check the source list ,whether contract is maintained over there or not.
Thanks,
AMIT -
Hi All,
I have to create a file upload program to create service PO's with BAPI_PO_CREATE1. Please if anyone can give me a example of it it would be great.
Thanks.
MalindaHi ,
Check out this program .
use this program for creating service po's using bapi.
*& Report ZMM_PO_CREATE1 *
REPORT ZMM_PO_CREATE1 .
data : POHEADER like BAPIMEPOHEADER occurs 0 with header line,
POHEADERX like BAPIMEPOHEADERX occurs 0 with header line,
POITEM like BAPIMEPOITEM occurs 0 with header line,
POITEMX like BAPIMEPOITEMX occurs 0 with header line,
POESLLC like BAPIESLLC occurs 0 with header line,
POACCOUNT like BAPIMEPOACCOUNT occurs 0 with header line,
POACCOUNTX like BAPIMEPOACCOUNTX occurs 0 with header line,
POCONDHEADER like BAPIMEPOCONDHEADER occurs 0 with header line,
POCONDHEADERX like BAPIMEPOCONDHEADERX occurs 0 with header line,
POCOND like BAPIMEPOCOND occurs 0 with header line,
RETURN like BAPIRET2 occurs 0 with header line.
data : po_no(10).
data : begin of it_head occurs 0,
ref(10),
bsart like ekko-bsart,
lifnr like ekko-lifnr,
ekorg like ekko-ekorg,
ekgrp like ekko-ekgrp,
bukrs like ekko-bukrs,
verkf like ekko-verkf,
telf1 like ekko-telf1,
ihrez like ekko-ihrez,
unsez like ekko-unsez,
kdatb(10),
kdate(10),
end of it_head.
data : begin of it_det occurs 0,
ref(10),
knttp like ekpo-knttp,
pstyp like ekpo-pstyp,
txz01 like ekpo-txz01,
matkl like ekpo-matkl,
werks like ekpo-werks,
afnam like ekpo-afnam,
ktext1 like esll-ktext1,
srvpos like esll-srvpos,
frmval1 like esll-frmval1,
frmval2 like esll-frmval2,
menge like esll-menge,
kostl like eskn-kostl,
sakto like eskn-sakto,
zzcode like eskn-zzcode,
kbetr like konv-kbetr,
end of it_det.
data : c_col1 TYPE i VALUE '0001',
c_col2 TYPE i VALUE '0002',
c_col3 TYPE i VALUE '0003',
c_col4 TYPE i VALUE '0004',
c_col5 TYPE i VALUE '0005',
c_col6 TYPE i VALUE '0006',
c_col7 TYPE i VALUE '0007',
c_col8 TYPE i VALUE '0008',
c_col9 TYPE i VALUE '0009',
c_col10 TYPE i VALUE '0010',
c_col11 TYPE i VALUE '0011',
c_col12 TYPE i VALUE '0012',
c_col13 TYPE i VALUE '0013',
c_col14 TYPE i VALUE '0014',
c_col15 TYPE i VALUE '0015',
c_col16 TYPE i VALUE '0016'.
data : v_currentrow type i,
v_currentrow1 type i.
data : itab_head like ALSMEX_TABLINE occurs 0 with header line,
itab_det like ALSMEX_TABLINE occurs 0 with header line.
data : file_head type RLGRAP-FILENAME,
file_item type RLGRAP-FILENAME.
file_head = 'C:Documents and SettingsDesktophead.xls'.
file_item = 'C:Documents and SettingsDesktopitem.xls'.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = file_head
i_begin_col = 1
i_begin_row = 1
i_end_col = 12
i_end_row = 50
tables
intern = itab_head
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3
IF sy-subrc 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = file_item
i_begin_col = 1
i_begin_row = 1
i_end_col = 16
i_end_row = 50
tables
intern = itab_det
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3
IF sy-subrc 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF itab_head[] IS INITIAL.
WRITE:/ 'No Header Data Exists '.
STOP.
ELSE.
sort itab_head by row col.
read table itab_head index 1.
v_currentrow = itab_head-row.
loop at itab_head.
if itab_head-row ne v_currentrow.
APPEND it_head.
v_currentrow = itab_head-row.
ENDIF.
CASE itab_head-col.
WHEN c_col1.
it_head-ref = itab_head-value.
WHEN c_col2.
it_head-bsart = itab_head-value.
WHEN c_col3.
it_head-lifnr = itab_head-value.
WHEN c_col4.
it_head-ekorg = itab_head-value.
WHEN c_col5.
it_head-ekgrp = itab_head-value.
WHEN c_col6.
it_head-bukrs = itab_head-value.
WHEN c_col7.
it_head-verkf = itab_head-value.
WHEN c_col8.
it_head-telf1 = itab_head-value.
WHEN c_col9.
it_head-ihrez = itab_head-value.
WHEN c_col10.
it_head-unsez = itab_head-value.
WHEN c_col11.
it_head-kdatb = itab_head-value.
WHEN c_col12.
it_head-kdate = itab_head-value.
ENDCASE.
ENDLOOP.
APPEND it_head.
CLEAR it_head.
ENDIF.
IF itab_det[] IS INITIAL.
WRITE:/ 'No Item Data Exists '.
STOP.
ELSE.
sort itab_det by row col.
read table itab_det index 1.
v_currentrow1 = itab_det-row.
loop at itab_det.
if itab_det-row ne v_currentrow1.
APPEND it_det.
v_currentrow1 = itab_det-row.
ENDIF.
CASE itab_det-col.
WHEN c_col1.
it_det-ref = itab_det-value.
WHEN c_col2.
it_det-knttp = itab_det-value.
WHEN c_col3.
it_det-pstyp = itab_det-value.
WHEN c_col4.
it_det-txz01 = itab_det-value.
WHEN c_col5.
it_det-matkl = itab_det-value.
WHEN c_col6.
it_det-werks = itab_det-value.
WHEN c_col7.
it_det-afnam = itab_det-value.
WHEN c_col8.
it_det-srvpos = itab_det-value.
WHEN c_col9.
it_det-ktext1 = itab_det-value.
WHEN c_col10.
it_det-frmval1 = itab_det-value.
WHEN c_col11.
it_det-frmval2 = itab_det-value.
WHEN c_col12.
it_det-menge = itab_det-value.
WHEN c_col13.
it_det-kostl = itab_det-value.
WHEN c_col14.
it_det-sakto = itab_det-value.
WHEN c_col15.
it_det-zzcode = itab_det-value.
WHEN c_col16.
it_det-kbetr = itab_det-value.
ENDCASE.
ENDLOOP.
APPEND it_det.
CLEAR it_det.
ENDIF.
loop at it_head.
poheader-doc_type = it_head-bsart.
poheader-vendor = it_head-lifnr.
poheader-purch_org = it_head-ekorg.
poheader-pur_group = it_head-ekgrp.
poheader-comp_code = it_head-bukrs.
poheader-sales_pers = it_head-verkf.
poheader-telephone = it_head-telf1.
poheader-REF_1 = it_head-ihrez.
poheader-OUR_REF = it_head-unsez.
poheader-VPER_START = it_head-kdatb.
poheader-VPER_END = it_head-kdate.
loop at it_det where ref = it_head-ref.
poitem-acctasscat = it_det-knttp.
poitem-item_cat = it_det-pstyp.
poitem-short_text = it_det-txz01.
poitem-matl_group = it_det-matkl.
poitem-plant = it_det-werks.
poitem-PREQ_NAME = it_det-afnam.
POESLLC-SERVICE = it_det-srvpos.
POESLLC-SHORT_TEXT = it_det-ktext1.
POESLLC-FORM_VAL1 = it_det-frmval1.
POESLLC-FORM_VAL2 = it_det-frmval2.
POESLLC-QUANTITY = it_det-menge.
POACCOUNT-COSTCENTER = it_det-kostl.
POACCOUNT-GL_ACCOUNT = it_det-sakto.
POCONDHEADER-COND_TYPE = 'R000'.
POCONDHEADER-COND_VALUE = it_det-kbetr.
endloop.
endloop.
poheaderx-doc_type = 'X'.
poheaderx-vendor = 'X'.
poheaderx-purch_org = 'X'.
poheaderx-pur_group = 'X'.
poheaderx-comp_code = 'X'.
poheaderx-sales_pers = 'X'.
poheaderx-telephone = 'X'.
poheaderx-REF_1 = 'X'.
poheaderx-OUR_REF = 'X'.
poheaderx-VPER_START = 'X'.
poheaderx-VPER_END = 'X'.
poitemx-acctasscat = 'X'.
poitemx-item_cat = 'X'.
poitemx-short_text = 'X'.
poitemx-matl_group = 'X'.
poitemx-plant = 'X'.
poitemx-PREQ_NAME = 'X'.
*POESLLCx-SHORT_TEXT = 'X'.
POACCOUNTx-COSTCENTER = 'X'.
POACCOUNTx-GL_ACCOUNT = 'X'.
POCONDHEADER-cond_type = 'X'.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = poheader
POHEADERX = poheaderx
POADDRVENDOR =
TESTRUN =
MEMORY_UNCOMPLETE =
MEMORY_COMPLETE =
POEXPIMPHEADER =
POEXPIMPHEADERX =
VERSIONS =
NO_MESSAGING =
NO_MESSAGE_REQ =
NO_AUTHORITY =
NO_PRICE_FROM_PO =
IMPORTING
EXPPURCHASEORDER = po_no
EXPHEADER =
EXPPOEXPIMPHEADER =
TABLES
RETURN = return
POITEM = poitem
POITEMX = poitemx
POADDRDELIVERY =
POSCHEDULE =
POSCHEDULEX =
POACCOUNT = poaccount
POACCOUNTPROFITSEGMENT =
POACCOUNTX = poaccountx
POCONDHEADER = pocondheader
POCONDHEADERX = pocondheaderx
POCOND =
POCONDX =
POLIMITS =
POCONTRACTLIMITS =
POSERVICES = poesllc
POSRVACCESSVALUES =
POSERVICESTEXT =
EXTENSIONIN =
EXTENSIONOUT =
POEXPIMPITEM =
POEXPIMPITEMX =
POTEXTHEADER =
POTEXTITEM =
ALLVERSIONS =
POPARTNER =
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN =
if sy-subrc = 0.
loop at return.
write return-MESSAGE_V1.
write po_no.
endloop.
endif.
Also check this link
[Service Order through BAPI|Service PO creation with BAPI; -
BAPI for Outbound Delivery Creation with reference to Sales Order - VL01N
Hi Everybody,
We are in ECC 5.0 version.
I want to create a enhancement for Outbound Delivery Creation with reference to a Sales Order.
Is any BAPI available for this ?
Any input on this will be very much helpfull.
Please suggest any BAPI available for this, or should I go for BDC using VL01N or VL04 ?
Thanks in advance.
regards,
Nagarajan.JHi Nagarajan,
The BAPI BAPI_DELIVERYPROCESSING_EXEC meets your requirement. You can create delivery with reference to sales order.
The below is the sample code...
data:lt_request like bapideliciousrequest
occurs 0 with header line,
lt_createditems like bapideliciouscreateditems
occurs 0 with header line,
lt_return like bapiret2
occurs 0 with header line.
lt_request-document_type = 'A'.
lt_request-document_numb = vbeln.
lt_request-document_item = posnr.
lt_request-material = matnr.
lt_request-plant = werks.
lt_request-stge_loc = lgort.
lt_request-quantity_base__uom = base_uom_qty.
lt_request-delivery_date = sy-datum.
append lt_request.
call function 'BAPI_DELIVERYPROCESSING_EXEC'
EXPORTING
DELIVERY_EXTEND =
TECHN_CONTROL =
tables
request = lt_request
createditems = lt_createditems
return = lt_return.
loop at lt_return where type = 'A'
or type = 'E'.
exit.
endloop.
if sy-subrc <> 0.
Use the BAPI for Commit
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'H'.
endif.
Thanks
Ramakrishna -
BAPI for Outbound Delivery Creation with reference to Sales Order
Dear all,
I'm on R/3 4.6B platform and to develop an RFC for outbound Delivery creation instead of using the standard VL01N transaction.
I've review BAPI for Outbound Delivery Creation with reference to Sales Order - VL01N thread which suggest BAPI_DELIVERYPROCESSING_EXEC .
However, in 4.6B, that function module doesn't exist. Appreciate any suggestion and or workaround.
Thanks.
Steven
Edited by: Steven Khoo on Mar 25, 2010 7:13 AM
Edited by: Steven Khoo on Mar 25, 2010 7:14 AMNot required anymore
-
Create ecatt script for one sales order creation with multiple line items
Hi ,
I want to create a ecatt script for one sales order creation with multiple line items. Preferably SAP GUI.
This selection of data will be from an external file/ variants which will have only one row of data in it.
Firstly: I have to sort the external file having same PO Numbers in an order.Group them together.
Second: I have to create sales order for those many line items having same PO Number.
Best Regard
TaranumHi Micky
Firstl you should upload the Line items for a particular sales Order in an Internal table
and then pass that internal table to your BAPI during your coding corresponding to a particu;lar sales order
In case of any issues pls revert back
Reward points if helpful
Regards
Hitesh
Maybe you are looking for
-
Planned Delivery Conditions in PO
Dear Experts , If I maintain a planned delivery condition eg freight for a particular PO & save it , the system picks the same condition type again the next time i make the PO . I want to avoid this . I want the condition values to be put manually ev
-
Screensaver does not start automatically after installing ML
I can activate using hot corners but I've tried multiple delay times and it will not start. Must be missing something simple. Not having any issues accessing the same photos/images as on Lion, BTW
-
Using the firewire 800 port for my firewire 400 devices
I will be purchasing, at long last, a new mac mini to replace my faithful and well behaved G4 mac mini. I have a 20" cinema display and an external firewire 400 backup drive with the same form factor that sits below the mini. I would like to continue
-
Nested Dashboard navigating to wrong Path OBIEE 11.1.1.5
Hello gurus I have created nested dashboard with hep of below thread. But I am facing an issue. I am not sure whether I am wrong some where or its a Bug. Just to make sure we are using OBIEE 11.1.1.5. Thread to create Nested Dashboards : Nested Dashb
-
I know about the alert msgbox. But, In my jsp, I want to display a Message Box with OK and Cancel Button and based on the selection of the button, I want to take different actions.