Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Creation of saleorder with reference to order using BAPI_SALESORDER_CREATE

Former Member
0 Kudos

hello

iam trying to create a sale order with respect to order BAPI_SALESORDER_CREATEFROMDAT2.

the parameters i am passing is

*Fill the header information for the order.

wa_order_header_in-doc_type = Sales Doc type of order to be created.

wa_order_header_in-sales_org = sales org.

wa_order_header_in-distr_chan = distribution channel.

wa_order_header_in-division = division.

wa_order_header_in-ref_doc = order number(This is the order i refer to).

wa_order_header_in-refdoc_cat = 'C' (c stands for order).

*Fill the item level information for the order.

wa_order_items_in-itm_number = item number.

wa_order_items_in-material = material number.

wa_order_items_in-ref_doc = order number(This is the order i refer to).

wa_order_items_in-ref_doc_it = Item number of order i create.

wa_order_items_in-ref_doc_ca = 'C'.

APPEND wa_order_items_in TO i_order_items_in.

*Fill the partner information for the order.

wa_order_partners-partn_role = partner function.

wa_order_partners-partn_numb = partner number.

APPEND wa_order_partners TO i_order_partners.

& likewise conditions structure

i have done bapi_transaction_commit after bapi call.

probelm which i am facing is , BAPI is creating a new sale order.. but it is not creating a order with reference order.

thanks

5 REPLIES 5

jaideepsharma
Active Contributor
0 Kudos

Hi,

Try to populate reference document number and reference document category in order_header parameter. Also mark the fields as 'X' in order_header_inx parameter passed to bapi.

Hopefully it should work.

KR Jaideep,

Former Member
0 Kudos

Hi Manjunath,

See the below code and correct your code..

i Hope this will help you.


*Build Partner Information
clear l_order_partners .
l_order_partners-partn_role = 'AG'.
l_order_partners-partn_numb = '0000001002'.
append l_order_partners to li_order_partners.

*Update Flag
l_order_header_inx-updateflag = 'I'.

*Sales document type
l_order_header_in-doc_type = 'TA'.
l_order_header_inx-doc_type = 'X'.

*Sales Organization
l_order_header_in-sales_org = '1000'.
l_order_header_inx-sales_org = 'X'.

*Distribution Channel
l_order_header_in-distr_chan = '10'.
l_order_header_inx-distr_chan = 'X'.

*Division
l_order_header_in-division = '00'.
l_order_header_inx-division = 'X'.

*Purchase Order
l_order_header_in-purch_no_c = 'DG-19970626-300'.
l_order_header_inx-purch_no_c = 'X'.


*Build Order Items for 1 item
l_order_items_in-itm_number = '10'.
  l_order_items_inx-itm_number = '10'.


  l_order_items_in-material = 'P-100'.
  l_order_items_inx-material = 'X'.

  l_order_items_in-comp_quant = '1.000'.
  l_order_items_inx-comp_quant = 'X'.
  append l_order_items_in to li_order_items_in.

  l_order_items_inx-updateflag = 'I'.
  append l_order_items_inx to li_order_items_inx.


        call function 'BAPI_SALESORDER_CREATEFROMDAT2'
          exporting
            order_header_in               = l_order_header_in
            order_header_inx              = l_order_header_inx
            testrun                       = 'X'
          importing
            salesdocument                 = l_vbeln
          tables
            return                        = li_return
            order_items_in                = li_order_items_in
            order_items_inx               = li_order_items_inx
            order_partners                = li_order_partners.
                  .

Regards,

Prabhudas

Former Member
0 Kudos

see this example as how to add text and multiple lines...


  loop at it_tab into wa_tab.
        record_no = sy-tabix.
        serial_no = wa_tab-ser_no.
*       ORDER_TYPE =  WA_TAB-ORD_TYP.
        sales_office = wa_tab-sal_off.
        sales_group =  wa_tab-sal_grp.
        old_ref_no  = wa_tab-ref_shp_to_par.
        shipping_condition = wa_tab-ship_cond.

        perform sales_info using sales_office sales_group
 shipping_condition.
        condense shipping_condition.
        ship_cond = shipping_condition.

        on change of old_ref_no.
          refresh it_bapisdhead.
          refresh it_bapisdhead1x.
          refresh it_bapiparnr.

             wa_bapisdhead-doc_type     = wa_tab-ord_typ.
             wa_bapisdhead1x-doc_type   = 'X'.

             wa_bapisdhead-sales_org    = '5088'.
             wa_bapisdhead1x-sales_org  = 'X'.

             wa_bapisdhead-distr_chan   = '01'.
             wa_bapisdhead1x-distr_chan = 'X'.

             wa_bapisdhead-division     = '00'.
             wa_bapisdhead1x-division   = 'X'.

             wa_bapisdhead-sales_grp    = sales_group.
             wa_bapisdhead1x-sales_grp  = 'X'.

             wa_bapisdhead-sales_off    = sales_office.
             wa_bapisdhead1x-sales_off  = 'X'.

             wa_bapisdhead-purch_no_c   = wa_tab-po_no.
             wa_bapisdhead1x-purch_no_c = 'X'.

             wa_bapisdhead-purch_date   = wa_tab-po_date.
             wa_bapisdhead1x-purch_date = 'X'.

             wa_bapisdhead-req_date_h   = wa_tab-req_del_date.
             wa_bapisdhead1x-req_date_h = 'X'.

             wa_bapisdhead-incoterms1   = 'EXW'.
             wa_bapisdhead1x-incoterms1 = 'X'.

             wa_bapisdhead-incoterms2   = wa_tab-inco_terms2.
             wa_bapisdhead1x-incoterms2 = 'X'.

             wa_bapisdhead-ship_cond    = ship_cond.
             wa_bapisdhead1x-ship_cond  = 'X'.

             wa_bapisdhead-ref_1        = wa_tab-ref_sld_to_par.
             wa_bapisdhead1x-ref_1      = 'X'.

             wa_bapisdhead-ref_1_s      = wa_tab-ref_shp_to_par.
             wa_bapisdhead1x-ref_1_s    = 'X'.

             append wa_bapisdhead to it_bapisdhead.
             append wa_bapisdhead1x to it_bapisdhead1x.

             wa_bapiparnr-unload_pt    = wa_tab-unload_pt.
             wa_bapiparnr-partn_role   = 'AG'.
             wa_bapiparnr-partn_numb   = wa_tab-sld_to_par.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.

             wa_bapiparnr-partn_role   = 'VE'.
             wa_bapiparnr-partn_numb   = '777'.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.

             wa_bapiparnr-partn_role   = 'ZM'.
             wa_bapiparnr-partn_numb   = '999'.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.

           if wa_tab-bill_to_par <> ' '.
             wa_bapiparnr-partn_role   = 'RE'.
             wa_bapiparnr-partn_numb   = wa_tab-bill_to_par.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.
           endif.

           if wa_tab-payer <> ''.
             wa_bapiparnr-partn_role   = 'RG'.
             wa_bapiparnr-partn_numb   = wa_tab-payer.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.
           endif.

           if wa_tab-ship_to_par <> ''.
             wa_bapiparnr-partn_role   = 'WE'.
             wa_bapiparnr-partn_numb   = wa_tab-ship_to_par.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.
           endif.

           wa_bapisdtext-text_id   = 'Z113'.
           wa_bapisdtext-langu     = 'EN'.
           wa_bapisdtext-text_line = wa_tab-add_txt.
           append wa_bapisdtext to it_bapisdtext.
           clear wa_bapisdtext.

           if wa_tab-banker <> ''.
             wa_bapisdtext-text_id   = 'ZKT1'.
             wa_bapisdtext-langu     = 'EN'.
             wa_bapisdtext-text_line = wa_tab-banker.
             append wa_bapisdtext to it_bapisdtext.
             clear wa_bapisdtext.
           endif.

           if wa_tab-fwd_age <> ''.
             wa_bapisdtext-text_id   = 'ZKT1'.
             wa_bapisdtext-langu     = 'EN'.
             wa_bapisdtext-text_line = wa_tab-fwd_age.
             append wa_bapisdtext to it_bapisdtext.
             clear wa_bapisdtext.
           endif.
        endon.

*                  ***** ITEM LEVEL DATA *****
             wa_bapiitemin-material     = wa_tab-matno.
             wa_bapiiteminx-material    = 'X'.
             wa_bapiitemin-target_qty   = wa_tab-qty.
             wa_bapiiteminx-target_qty  = 'X'.
             wa_bapiitemin-plant        = wa_tab-plant.
             wa_bapiiteminx-plant       = 'X'.
             wa_bapiitemin-item_categ   = 'YAPS'.
             wa_bapiiteminx-item_categ  = 'X'.
             append wa_bapiitemin to it_bapiitemin.
             append wa_bapiiteminx to it_bapiiteminx.
             clear wa_bapiitemin.
             clear wa_bapiiteminx.

*             WA_BAPICOND-COND_TYPE      = 'PR00'.
*             WA_BAPICONDX-COND_TYPE     = 'X'.
             wa_bapicond-cond_value     = wa_tab-amt * wa_tab-qty.
             wa_bapicondx-cond_value    = 'X'.
             append wa_bapicond to it_bapicond.
             append wa_bapicondx to it_bapicondx.
             clear wa_bapicond.
             clear wa_bapicondx.

        at end of ref_shp_to_par.

          call function 'BAPI_SALESORDER_CREATEFROMDAT2'
            exporting
*             SALESDOCUMENTIN               =
              order_header_in               = wa_bapisdhead
              order_header_inx              = wa_bapisdhead1x
*             SENDER                        =
*             BINARY_RELATIONSHIPTYPE       =
*             INT_NUMBER_ASSIGNMENT         =
*             BEHAVE_WHEN_ERROR             =
*             LOGIC_SWITCH                  =
*             TESTRUN                       =
*             CONVERT                       = ' '
*           IMPORTING
*             SALESDOCUMENT                 =
            tables
              return                        = it_errmsg
              order_items_in                = it_bapiitemin
              order_items_inx               = it_bapiiteminx
              order_partners                = it_bapiparnr
*             ORDER_SCHEDULES_IN            =
*             ORDER_SCHEDULES_INX           =
              order_conditions_in           = it_bapicond
              order_conditions_inx          = it_bapicondx
*             ORDER_CFGS_REF                =
*             ORDER_CFGS_INST               =
*             ORDER_CFGS_PART_OF            =
*             ORDER_CFGS_VALUE              =
*             ORDER_CFGS_BLOB               =
*             ORDER_CFGS_VK                 =
*             ORDER_CFGS_REFINST            =
*             ORDER_CCARD                   =
              order_text                    = it_bapisdtext
*             ORDER_KEYS                    =
*             EXTENSIONIN                   =
*             PARTNERADDRESSES              =
                    .
    read table it_errmsg into wa_errmsg with key type = 'E'
    binary search.
    if sy-subrc ne 0.
             call function 'BAPI_TRANSACTION_COMMIT'
    endif.
endloop.

    

Former Member
0 Kudos

see this example as how to add text and multiple lines...


 loop at it_tab into wa_tab.
        record_no = sy-tabix.
        serial_no = wa_tab-ser_no.
        sales_office = wa_tab-sal_off.
        sales_group =  wa_tab-sal_grp.
        old_ref_no  = wa_tab-ref_shp_to_par.
        shipping_condition = wa_tab-ship_cond.

 on change of old_ref_no.
          refresh it_bapisdhead.
          refresh it_bapisdhead1x.
          refresh it_bapiparnr.

             wa_bapisdhead-doc_type     = wa_tab-ord_typ.
             wa_bapisdhead1x-doc_type   = 'X'.

             wa_bapisdhead-sales_org    = '5088'.
             wa_bapisdhead1x-sales_org  = 'X'.

             wa_bapisdhead-distr_chan   = '01'.
             wa_bapisdhead1x-distr_chan = 'X'.

             wa_bapisdhead-division     = '00'.
             wa_bapisdhead1x-division   = 'X'.

             wa_bapisdhead-sales_grp    = sales_group.
             wa_bapisdhead1x-sales_grp  = 'X'.

             wa_bapisdhead-sales_off    = sales_office.
             wa_bapisdhead1x-sales_off  = 'X'.

             wa_bapisdhead-purch_no_c   = wa_tab-po_no.
             wa_bapisdhead1x-purch_no_c = 'X'.

             wa_bapisdhead-purch_date   = wa_tab-po_date.
             wa_bapisdhead1x-purch_date = 'X'.

             wa_bapisdhead-req_date_h   = wa_tab-req_del_date.
             wa_bapisdhead1x-req_date_h = 'X'.

             wa_bapisdhead-incoterms1   = 'EXW'.
             wa_bapisdhead1x-incoterms1 = 'X'.

             wa_bapisdhead-incoterms2   = wa_tab-inco_terms2.
             wa_bapisdhead1x-incoterms2 = 'X'.

             wa_bapisdhead-ship_cond    = ship_cond.
             wa_bapisdhead1x-ship_cond  = 'X'.

             wa_bapisdhead-ref_1        = wa_tab-ref_sld_to_par.
             wa_bapisdhead1x-ref_1      = 'X'.

             wa_bapisdhead-ref_1_s      = wa_tab-ref_shp_to_par.
             wa_bapisdhead1x-ref_1_s    = 'X'.

             append wa_bapisdhead to it_bapisdhead.
             append wa_bapisdhead1x to it_bapisdhead1x.

             wa_bapiparnr-unload_pt    = wa_tab-unload_pt.
             wa_bapiparnr-partn_role   = 'AG'.
             wa_bapiparnr-partn_numb   = wa_tab-sld_to_par.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.

             wa_bapiparnr-partn_role   = 'VE'.
             wa_bapiparnr-partn_numb   = '777'.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.

             wa_bapiparnr-partn_role   = 'ZM'.
             wa_bapiparnr-partn_numb   = '999'.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.

           if wa_tab-bill_to_par <> ' '.
             wa_bapiparnr-partn_role   = 'RE'.
             wa_bapiparnr-partn_numb   = wa_tab-bill_to_par.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.
           endif.

           if wa_tab-payer <> ''.
             wa_bapiparnr-partn_role   = 'RG'.
             wa_bapiparnr-partn_numb   = wa_tab-payer.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.
           endif.

           if wa_tab-ship_to_par <> ''.
             wa_bapiparnr-partn_role   = 'WE'.
             wa_bapiparnr-partn_numb   = wa_tab-ship_to_par.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.
           endif.

           wa_bapisdtext-text_id   = 'Z113'.
           wa_bapisdtext-langu     = 'EN'.
           wa_bapisdtext-text_line = wa_tab-add_txt.
           append wa_bapisdtext to it_bapisdtext.
           clear wa_bapisdtext.

           if wa_tab-banker <> ''.
             wa_bapisdtext-text_id   = 'ZKT1'.
             wa_bapisdtext-langu     = 'EN'.
             wa_bapisdtext-text_line = wa_tab-banker.
             append wa_bapisdtext to it_bapisdtext.
             clear wa_bapisdtext.
           endif.

           if wa_tab-fwd_age <> ''.
             wa_bapisdtext-text_id   = 'ZKT1'.
             wa_bapisdtext-langu     = 'EN'.
             wa_bapisdtext-text_line = wa_tab-fwd_age.
             append wa_bapisdtext to it_bapisdtext.
             clear wa_bapisdtext.
           endif.
        endon.


          call function 'BAPI_SALESORDER_CREATEFROMDAT2'
            exporting
*             SALESDOCUMENTIN               =
              order_header_in               = wa_bapisdhead
              order_header_inx              = wa_bapisdhead1x
*             SENDER                        =
*             BINARY_RELATIONSHIPTYPE       =
*             INT_NUMBER_ASSIGNMENT         =
*             BEHAVE_WHEN_ERROR             =
*             LOGIC_SWITCH                  =
*             TESTRUN                       =
*             CONVERT                       = ' '
*           IMPORTING
*             SALESDOCUMENT                 =
            tables
              return                        = it_errmsg
              order_items_in                = it_bapiitemin
              order_items_inx               = it_bapiiteminx
              order_partners                = it_bapiparnr
*             ORDER_SCHEDULES_IN            =
*             ORDER_SCHEDULES_INX           =
              order_conditions_in           = it_bapicond
              order_conditions_inx          = it_bapicondx
*             ORDER_CFGS_REF                =
*             ORDER_CFGS_INST               =
*             ORDER_CFGS_PART_OF            =
*             ORDER_CFGS_VALUE              =
*             ORDER_CFGS_BLOB               =
*             ORDER_CFGS_VK                 =
*             ORDER_CFGS_REFINST            =
*             ORDER_CCARD                   =
              order_text                    = it_bapisdtext
*             ORDER_KEYS                    =
*             EXTENSIONIN                   =
*             PARTNERADDRESSES              =
                    .
read table it_errmsg into wa_errmsg with key type = 'E'
binary search.
       
       if sy-subrc ne 0.
call function 'BAPI_TRANSACTION_COMMIT'.
endif.

          

Former Member
0 Kudos

see this example as how to add text and multiple lines...


 loop at it_tab into wa_tab.
        record_no = sy-tabix.
        serial_no = wa_tab-ser_no.
        sales_office = wa_tab-sal_off.
        sales_group =  wa_tab-sal_grp.
        old_ref_no  = wa_tab-ref_shp_to_par.
        shipping_condition = wa_tab-ship_cond.

 on change of old_ref_no.
          refresh it_bapisdhead.
          refresh it_bapisdhead1x.
          refresh it_bapiparnr.

             wa_bapisdhead-doc_type     = wa_tab-ord_typ.
             wa_bapisdhead1x-doc_type   = 'X'.

             wa_bapisdhead-sales_org    = '5088'.
             wa_bapisdhead1x-sales_org  = 'X'.

             wa_bapisdhead-distr_chan   = '01'.
             wa_bapisdhead1x-distr_chan = 'X'.

             wa_bapisdhead-division     = '00'.
             wa_bapisdhead1x-division   = 'X'.

             wa_bapisdhead-sales_grp    = sales_group.
             wa_bapisdhead1x-sales_grp  = 'X'.

             wa_bapisdhead-sales_off    = sales_office.
             wa_bapisdhead1x-sales_off  = 'X'.

             wa_bapisdhead-purch_no_c   = wa_tab-po_no.
             wa_bapisdhead1x-purch_no_c = 'X'.

             wa_bapisdhead-purch_date   = wa_tab-po_date.
             wa_bapisdhead1x-purch_date = 'X'.

             wa_bapisdhead-req_date_h   = wa_tab-req_del_date.
             wa_bapisdhead1x-req_date_h = 'X'.

             wa_bapisdhead-incoterms1   = 'EXW'.
             wa_bapisdhead1x-incoterms1 = 'X'.

             wa_bapisdhead-incoterms2   = wa_tab-inco_terms2.
             wa_bapisdhead1x-incoterms2 = 'X'.

             wa_bapisdhead-ship_cond    = ship_cond.
             wa_bapisdhead1x-ship_cond  = 'X'.

             wa_bapisdhead-ref_1        = wa_tab-ref_sld_to_par.
             wa_bapisdhead1x-ref_1      = 'X'.

             wa_bapisdhead-ref_1_s      = wa_tab-ref_shp_to_par.
             wa_bapisdhead1x-ref_1_s    = 'X'.

             append wa_bapisdhead to it_bapisdhead.
             append wa_bapisdhead1x to it_bapisdhead1x.

             wa_bapiparnr-unload_pt    = wa_tab-unload_pt.
             wa_bapiparnr-partn_role   = 'AG'.
             wa_bapiparnr-partn_numb   = wa_tab-sld_to_par.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.

             wa_bapiparnr-partn_role   = 'VE'.
             wa_bapiparnr-partn_numb   = '777'.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.

             wa_bapiparnr-partn_role   = 'ZM'.
             wa_bapiparnr-partn_numb   = '999'.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.

           if wa_tab-bill_to_par <> ' '.
             wa_bapiparnr-partn_role   = 'RE'.
             wa_bapiparnr-partn_numb   = wa_tab-bill_to_par.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.
           endif.

           if wa_tab-payer <> ''.
             wa_bapiparnr-partn_role   = 'RG'.
             wa_bapiparnr-partn_numb   = wa_tab-payer.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.
           endif.

           if wa_tab-ship_to_par <> ''.
             wa_bapiparnr-partn_role   = 'WE'.
             wa_bapiparnr-partn_numb   = wa_tab-ship_to_par.
             append wa_bapiparnr to it_bapiparnr.
             clear wa_bapiparnr.
           endif.

           wa_bapisdtext-text_id   = 'Z113'.
           wa_bapisdtext-langu     = 'EN'.
           wa_bapisdtext-text_line = wa_tab-add_txt.
           append wa_bapisdtext to it_bapisdtext.
           clear wa_bapisdtext.

           if wa_tab-banker <> ''.
             wa_bapisdtext-text_id   = 'ZKT1'.
             wa_bapisdtext-langu     = 'EN'.
             wa_bapisdtext-text_line = wa_tab-banker.
             append wa_bapisdtext to it_bapisdtext.
             clear wa_bapisdtext.
           endif.

           if wa_tab-fwd_age <> ''.
             wa_bapisdtext-text_id   = 'ZKT1'.
             wa_bapisdtext-langu     = 'EN'.
             wa_bapisdtext-text_line = wa_tab-fwd_age.
             append wa_bapisdtext to it_bapisdtext.
             clear wa_bapisdtext.
           endif.
        endon.


          call function 'BAPI_SALESORDER_CREATEFROMDAT2'
            exporting
              order_header_in               = wa_bapisdhead
              order_header_inx              = wa_bapisdhead1x
            tables
              return                        = it_errmsg
              order_items_in                = it_bapiitemin
              order_items_inx               = it_bapiiteminx
              order_partners                = it_bapiparnr
              order_conditions_in           = it_bapicond
              order_conditions_inx          = it_bapicondx          .