‎2007 Sep 11 3:02 PM
hello folks,
Can anyone guide me what are the mandatory parameters to be passed to the above bapi to create the sales oder.
Thanks a lot for your anticipation
Nitesha
‎2007 Sep 11 3:04 PM
Hi,
Here is the exampel program
*&---------------------------------------------------------------------*
*& Report Z_CREATE_WITH_REFERENCE *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT Z_CREATE_WITH_REFERENCE .
DATA ls_bapi_view TYPE order_view.
DATA lt_salesdocuments TYPE TABLE OF sales_key.
DATA lt_order_headers_out TYPE TABLE OF bapisdhd.
DATA lt_order_items_out TYPE TABLE OF bapisdit.
DATA lt_order_schedules_out TYPE TABLE OF bapisdhedu.
DATA lt_order_conditions_out TYPE TABLE OF bapisdcond.
DATA lt_order_partners_out TYPE TABLE OF bapisdpart.
DATA: lv_logic_switch TYPE bapisdls.
DATA lv_salesdocument TYPE bapivbeln-vbeln.
DATA lt_return TYPE TABLE OF bapiret2.
DATA lt_order_items_in TYPE TABLE OF bapisditm.
DATA lt_order_schedules_in TYPE TABLE OF bapischdl.
DATA lt_order_partners TYPE TABLE OF bapiparnr.
DATA lt_order_conditions_in TYPE TABLE OF bapicond.
DATA: ls_return TYPE bapiret2.
DATA: ls_header_out TYPE bapisdhd.
DATA ls_order_header_in TYPE bapisdhd1.
DATA: ls_item_out TYPE bapisdit.
DATA: ls_order_items_in TYPE bapisditm.
DATA: ls_order_schedules_in TYPE bapischdl.
DATA: ls_schedules_out TYPE bapisdhedu.
DATA: ls_order_partners_out TYPE bapisdpart.
DATA: ls_order_partners TYPE bapiparnr.
DATA ls_order_conditions_in TYPE bapicond.
DATA: ls_conditions_out TYPE bapisdcond.
PARAMETERS: pa_key TYPE sales_key, "ref_doc
pa_auart TYPE vbak-auart, "doc_type
pa_itmno TYPE vbap-posnr, "itm_number
pa_qty TYPE vbep-wmeng, "Order quantity
pa_prart TYPE kond-knprs, "condition type
pa_purno TYPE vbkd-bstkd. "order number
ls_bapi_view-header = 'X'.
ls_bapi_view-item = 'X'.
ls_bapi_view-sdschedule = 'X'.
ls_bapi_view-sdcond = 'X'.
ls_bapi_view-partner = 'X'.
APPEND pa_key TO lt_salesdocuments.
CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST'
EXPORTING
i_bapi_view = ls_bapi_view
* I_MEMORY_READ =
TABLES
sales_documents = lt_salesdocuments
order_headers_out = lt_order_headers_out
order_items_out = lt_order_items_out
order_schedules_out = lt_order_schedules_out
* ORDER_BUSINESS_OUT =
order_partners_out = lt_order_partners_out
* ORDER_ADDRESS_OUT =
* ORDER_STATUSHEADERS_OUT =
* ORDER_STATUSITEMS_OUT =
order_conditions_out = lt_order_conditions_out
* ORDER_COND_HEAD =
* ORDER_COND_ITEM =
* ORDER_COND_QTY_SCALE =
* ORDER_COND_VAL_SCALE =
* ORDER_CONTRACTS_OUT =
* ORDER_TEXTHEADERS_OUT =
* ORDER_TEXTLINES_OUT =
* ORDER_FLOWS_OUT =
* ORDER_CFGS_CUREFS_OUT =
* ORDER_CFGS_CUCFGS_OUT =
* ORDER_CFGS_CUINS_OUT =
* ORDER_CFGS_CUPRTS_OUT =
* ORDER_CFGS_CUVALS_OUT =
* ORDER_CFGS_CUBLBS_OUT =
* ORDER_CFGS_CUVKS_OUT =
* ORDER_BILLINGPLANS_OUT =
* ORDER_BILLINGDATES_OUT =
* ORDER_CREDITCARDS_OUT =
* EXTENSIONOUT =
.
************************************************************************
** PREPARE DATA
* fill header data
IF NOT lt_order_headers_out[] IS INITIAL.
READ TABLE lt_order_headers_out INTO ls_header_out INDEX 1.
ls_order_header_in-doc_type = pa_auart.
ls_order_header_in-sales_org = ls_header_out-sales_org.
ls_order_header_in-distr_chan = ls_header_out-distr_chan.
ls_order_header_in-division = ls_header_out-division.
ls_order_header_in-ref_doc = pa_key.
ls_order_header_in-purch_no_c = pa_purno.
ls_order_header_in-refdoc_cat = ls_header_out-sd_doc_cat.
ENDIF.
* fill item data
IF pa_itmno NE 0.
** if itm_number is selected
READ TABLE lt_order_items_out INTO ls_item_out
WITH KEY itm_number = pa_itmno.
IF sy-subrc = 0.
PERFORM add_items.
PERFORM add_schedules.
IF pa_prart CA 'BCG'.
PERFORM add_conditions.
ENDIF.
ENDIF.
ELSE.
** for all items
LOOP AT lt_order_items_out INTO ls_item_out.
PERFORM add_items.
PERFORM add_schedules.
IF pa_prart CA 'ABCG'.
PERFORM add_conditions.
ENDIF.
ENDLOOP.
ENDIF.
* fill partner data
*READ TABLE lt_order_partners_out INTO ls_order_partners_out
* WITH KEY partn_role = 'AG'.
*IF sy-subrc = 0.
ls_order_partners-partn_role = 'AG'.
ls_order_partners-partn_numb = '0080004792'.
APPEND ls_order_partners TO lt_order_partners.
ls_order_partners-partn_role = 'RG'.
ls_order_partners-partn_numb = '0050005330'.
APPEND ls_order_partners TO lt_order_partners.
ls_order_partners-partn_role = 'RE'.
ls_order_partners-partn_numb = '0060004063'.
APPEND ls_order_partners TO lt_order_partners.
ls_order_partners-partn_role = 'WE'.
ls_order_partners-partn_numb = '0090001310'.
APPEND ls_order_partners TO lt_order_partners.
ls_order_partners-partn_role = 'AP'.
ls_order_partners-partn_numb = '0000195370'.
APPEND ls_order_partners TO lt_order_partners.
*ENDIF.
*fill logic switch
lv_logic_switch-pricing = pa_prart.
*** END OF PREPARE DATA
************************************************************************
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
* SALESDOCUMENTIN =
order_header_in = ls_order_header_in
* ORDER_HEADER_INX =
* SENDER =
* BINARY_RELATIONSHIPTYPE =
* INT_NUMBER_ASSIGNMENT =
* BEHAVE_WHEN_ERROR =
logic_switch = lv_logic_switch
* TESTRUN =
* CONVERT = ' '
IMPORTING
salesdocument = lv_salesdocument
TABLES
return = lt_return
order_items_in = lt_order_items_in
* ORDER_ITEMS_INX =
order_partners = lt_order_partners
order_schedules_in = lt_order_schedules_in
* ORDER_SCHEDULES_INX =
order_conditions_in = lt_order_conditions_in
* ORDER_CONDITIONS_INX =
* 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 =
* ORDER_KEYS =
* EXTENSIONIN =
* PARTNERADDRESSES =
.
LOOP AT lt_return INTO ls_return.
WRITE:/ ls_return-type,
ls_return-id,
ls_return-number,
ls_return-message.
ENDLOOP.
IF NOT lv_salesdocument IS INITIAL.
COMMIT WORK.
ENDIF.
*&---------------------------------------------------------------------*
*& Form add_schedules
*&---------------------------------------------------------------------*
FORM add_schedules . "add schedules to item
LOOP AT lt_order_schedules_out INTO ls_schedules_out
WHERE itm_number = ls_item_out-itm_number.
ls_order_schedules_in-itm_number = ls_schedules_out-itm_number.
IF NOT pa_qty IS INITIAL AND NOT ls_schedules_out-req_qty = 0.
ls_order_schedules_in-req_qty = pa_qty.
ELSE.
ls_order_schedules_in-req_qty = ls_schedules_out-req_qty.
ENDIF.
ls_order_schedules_in-sched_line = ls_schedules_out-sched_line.
APPEND ls_order_schedules_in TO lt_order_schedules_in.
ENDLOOP.
IF sy-subrc <> 0.
ls_order_schedules_in-itm_number = ls_item_out-itm_number.
ls_order_schedules_in-sched_line = '001'.
ls_order_schedules_in-req_qty = pa_qty.
APPEND ls_order_schedules_in TO lt_order_schedules_in.
ENDIF.
ENDFORM. " add_schedules
*&---------------------------------------------------------------------*
*& Form add_items
*&---------------------------------------------------------------------*
FORM add_items .
ls_order_items_in-itm_number = ls_item_out-itm_number.
ls_order_items_in-material = ls_item_out-material.
ls_order_items_in-ref_doc = pa_key.
ls_order_items_in-ref_doc_it = ls_item_out-itm_number.
ls_order_items_in-ref_doc_ca = ls_header_out-sd_doc_cat.
APPEND ls_order_items_in TO lt_order_items_in.
ENDFORM. " add_items
*&---------------------------------------------------------------------*
*& Form add_conditions
*&---------------------------------------------------------------------*
FORM add_conditions. " add conditions to item
LOOP AT lt_order_conditions_out INTO ls_conditions_out
WHERE itm_number = ls_item_out-itm_number
AND NOT cond_type IS INITIAL.
CLEAR ls_order_conditions_in.
MOVE-CORRESPONDING ls_conditions_out TO ls_order_conditions_in.
ls_order_conditions_in-cond_unit = ls_conditions_out-cond_d_unt.
APPEND ls_order_conditions_in TO lt_order_conditions_in.
ENDLOOP.
ENDFORM. " add_conditionsRegards
Sudheer