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 Sodhi

    Hi,
    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.

  • BOM creation with usage 4

    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.
    psk

    Dear 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 Dachawar

    Hi,
      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 input

    Hi 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 Rafique

    Hi 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
    rajakarthik

    Hi,
    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. M

    There 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 Murthy

    Hi 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
    Anand

    Hi,
    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

  • Service PO creation with BAPI

    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.
    Malinda

    Hi ,
           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.J

    Hi 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 AM

    Not 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
    Taranum

    Hi 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

  • MsgBox in jsp

    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.