Application Development and Automation 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: 
Read only

Create and Change functionality for Sales order

Former Member
0 Likes
588

Hii All,

Can any one please suggest me any Standard program or BAPI or IDOC for Sales order, it should cover create as well as change fuctionality of Sales order.

this is very urgent to me.

Suitable Answer will be Rewarded.

Thankyou,

Shobha.

2 REPLIES 2
Read only

Former Member
0 Likes
489

For change you can use:

BAPI_SALESORDER_CHANGE Sales order: Change Sales Order

For create you have the following choices:

BAPI_SALESORDER_CREATEFROMDAT1 Sales order: Create Sales Order

BAPI_SALESORDER_CREATEFROMDAT2 Sales order: Create Sales Order

BAPI_SALESORDER_CREATEFROMDATA Create Sales Order, No More Maintenance

BAPI_SALESDOCU_CREATEFROMDATA with business object 'BUS2032'

The difference between the create ones is the functionality you get e.g. create_from_data2 is the 'most powerful' but you also have to provide the most data. It just depends on what you want it to do.

In terms of IDOCS:

message type:

SALESORDER_CREATEFROMDAT201 or

SALESORDER_CREATEFROMDAT202 or

ORDERS05

Hope that helps,

Michael

Here is an example we use, you might want to populate additional fields or leave fields out in case you want different data to be transferred to the IDOC - however some fields are mandatory.

  • create the order header structure

ls_header-doc_type = ls_screen-order_type.

ls_header-sales_org = gc_vkorg_aa01.

ls_header-distr_chan = gc_distr_aa.

ls_header-division = gc_divis_aa.

ls_header-purch_no = ls_screen-po_num.

ls_header-po_method = ls_screen-po_source.

ls_header-ship_cond = ls_screen-ship_cond.

  • create partner input table (sold to)

ls_partner-partn_role = gc_role_sold.

ls_partner-partn_numb = ls_screen-sold_to.

APPEND ls_partner TO lt_partner.

  • create partner input table (ship to)

ls_partner-partn_role = gc_role_ship.

ls_partner-partn_numb = ls_screen-ship_to.

APPEND ls_partner TO lt_partner.

items are added by looping at a table

ls_item-material = <fs_upload>-matnr.

ls_item-req_qty = <fs_upload>-quantity.

  • process the quantity, it needs to be three decimals, because it

  • will be moved into a string in the BAPI and divided by 1000 before

  • it is moved back into a number field (1.500 => 001500 => 1.5)

ls_item-req_qty = ls_item-req_qty * 1000.

  • truncate remaining decimal places if exist (1.2525 => 1252.5 => 1252 => 1.252)

ls_item-req_qty = trunc( ls_item-req_qty ).

  • price is taken from the file

ls_item-cond_type = gc_cond_so_upld_price.

ls_item-cond_val1 = <fs_upload>-price.

  • condition one (price) is multiplied by 10 in the BAPI

ls_item-cond_val1 = ls_item-cond_val1 / 10.

  • no discount

ls_item-cd_type2 = gc_cond_so_upld_disc.

ls_item-cd_value2 = 0.

ls_item-item_categ = ls_screen-item_cat.

APPEND ls_item TO lt_item.

then BAPI is called

CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA'

EXPORTING

order_header_in = ls_header

business_object = gc_bus_obj

IMPORTING

SALESDOCUMENT = lv_vbeln

RETURN = ls_return

tables

order_items_in = lt_item

order_partners = lt_partner.

IF ls_return-type NE gc_msgty_error AND

ls_return-type NE gc_msgty_abend.

  • No errors where found

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

ELSE.

  • There was an error or abend

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

ENDIF.

Read only

Former Member
0 Likes
489

HI,

I am using Standard Program 'RVINVB10' for create Sales order.While executing the program i am getting the error like enter Sold-to-Party or Ship-to-Party even i enter those values.

pls give me solution.

Regards,

Shobha