Hi Experts,
I am facing a issue.. I am creation a sales order using BAPI " BAPI_SALESORDER_CREATEFROMDAT2 "
In one scenario, I am able to create Sales Order with Status Profile..
But For second scenario, its giving error like "A BS 001 No status object is available for SDI 0" .
Between both scenario, only difference is Distribution channel and Condition record.
DATA : wa_order_header_in TYPE bapisdhd1,
gt_order_partners TYPE STANDARD TABLE OF bapiparnr,
gs_order_partners TYPE bapiparnr,
gs_order_partners1 TYPE bapiparnr,
gt_order_items_in TYPE STANDARD TABLE OF bapisditm,
gs_order_items_in TYPE bapisditm,
gt_order_conditions_in TYPE STANDARD TABLE OF bapicond,
gs_order_conditions_in TYPE bapicond,
gt_order_schedules_in TYPE STANDARD TABLE OF bapischdl,
gs_order_schedules_in TYPE bapischdl,
* gt_return TYPE STANDARD TABLE OF bapiret2,
* gs_return TYPE bapiret2,
gt_error TYPE STANDARD TABLE OF bapiret2,
gs_error TYPE bapiret2,
gt_log TYPE TABLE OF zsd_ecomerr,
gs_log TYPE zsd_ecomerr,
it_item_temp TYPE TABLE OF zst_sfdc_so_items_dom WITH HEADER LINE,
lt_return TYPE STANDARD TABLE OF bapiret2,
ls_return TYPE bapiret2,
lt_order_conditions_in TYPE STANDARD TABLE OF bapicond,
ls_order_conditions_in TYPE bapicond,
ls_sfdc TYPE zsd_sfdc_order .
DATA: wa_order_header_inx TYPE bapisdhd1x,
gt_order_items_inx TYPE STANDARD TABLE OF bapisditmx,
lt_order_items_inx TYPE STANDARD TABLE OF bapisditmx,
gs_order_items_inx TYPE bapisditmx,
gt_order_schedules_inx TYPE STANDARD TABLE OF bapischdlx,
gs_order_schedules_inx TYPE bapischdlx,
gt_order_conditions_inx TYPE STANDARD TABLE OF bapicondx,
gs_order_conditions_inx TYPE bapicondx,
lt_order_conditions_inx TYPE STANDARD TABLE OF bapicondx,
ls_order_conditions_inx TYPE bapicondx,
ls_order_items_inx TYPE bapisditmx,
lv_kbetr TYPE kbetr VALUE '10',
lv_curr TYPE waers ,
lv_ihrez TYPE ihrez ,
lv_knumh TYPE a005-knumh.
DATA:isrno LIKE vbap-posnr.
DATA: x_orderitemx LIKE bapisdh1x.
TYPES: BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
mwsbp TYPE vbap-mwsbp,
END OF ty_vbap.
DATA: lv_lfstk TYPE vbuk-lfstk,
lv_cmgst TYPE vbuk-cmgst,
lt_vbap TYPE TABLE OF ty_vbap,
ls_vbap TYPE ty_vbap,
lv_bstnk TYPE vbak-bstnk.
****// Checking PO Type. This is mandatory from SFDC
IF sfdc-potype <> '' .
****// Checking here, Whether SFDC Order ID already exist or not. ***//
SELECT SINGLE * FROM zsd_sfdc_order WHERE sfdcorder = sfdc-sfdcorder AND land1 = 'IN'.
IF sy-subrc <> 0.
****// SO creation Process
wa_order_header_in-doc_type = 'ZHOT'.
wa_order_header_in-sales_org = '2700'.
IF sfdc-potype = 'SFSD'. " S & D
wa_order_header_in-distr_chan = '30'.
wa_order_header_in-division = '00'.
ELSEIF sfdc-potype = 'SFHO'. " Hospitality
wa_order_header_in-distr_chan = '33'.
wa_order_header_in-division = '00'.
ENDIF.
wa_order_header_in-purch_date = sfdc-purch_date.
wa_order_header_in-purch_no_c = sfdc-sfdcorder. "SFDC Order ID
wa_order_header_in-doc_date = sy-datum.
wa_order_header_in-currency = 'INR'.
wa_order_header_in-ref_1 = sfdc-purch_no. "sfdc-sfdcorder.
wa_order_header_in-po_method = sfdc-potype.
wa_order_header_inx-updateflag = 'I'.
wa_order_header_inx-doc_type = 'X'.
wa_order_header_inx-sales_org = 'X'.
wa_order_header_inx-distr_chan = 'X'.
wa_order_header_inx-division = 'X'.
wa_order_header_inx-purch_no_c = 'X'.
wa_order_header_inx-purch_date = 'X'.
wa_order_header_inx-doc_date = 'X'.
wa_order_header_inx-currency = 'X'.
wa_order_header_inx-ref_1 = 'X'.
***// Ship to party
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = sfdc-kunag
IMPORTING
output = sfdc-kunag.
gs_order_partners-partn_numb = sfdc-kunag.
gs_order_partners-partn_role = 'WE'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_order_partners-partn_numb
IMPORTING
output = gs_order_partners-partn_numb.
APPEND gs_order_partners TO gt_order_partners.
CLEAR: gs_order_partners.
***// Sold to Party
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = sfdc-kunnr
IMPORTING
output = sfdc-kunnr.
gs_order_partners-partn_numb = sfdc-kunnr.
gs_order_partners-partn_role = 'AG'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_order_partners-partn_numb
IMPORTING
output = gs_order_partners-partn_numb.
APPEND gs_order_partners TO gt_order_partners.
CLEAR: gs_order_partners.
***// Clubed all materials
LOOP AT it_items.
it_item_temp-matnr = it_items-matnr.
it_item_temp-kwmeng = it_items-kwmeng.
it_item_temp-kwert = it_items-kwert.
it_item_temp-reg_dis = it_items-reg_dis.
it_item_temp-add_dis = it_items-add_dis.
it_item_temp-tann = it_items-tann.
COLLECT it_item_temp.
ENDLOOP.
***// Saving Line Item data
LOOP AT it_item_temp.
isrno = isrno + 10.
gs_order_items_in-itm_number = isrno.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = it_item_temp-matnr
IMPORTING
output = it_item_temp-matnr.
gs_order_items_in-material = it_item_temp-matnr.
gs_order_items_in-plant = sfdc-werks.
gs_order_items_in-currency = 'INR'.
IF it_item_temp-tann = 'X'.
gs_order_items_in-item_categ = 'TANN'.
ENDIF.
APPEND gs_order_items_in TO gt_order_items_in.
CLEAR gs_order_items_in.
SELECT SINGLE knumh
INTO lv_knumh
FROM a005
WHERE kappl = 'V'
AND kschl IN ('ZR04', 'ZR00')
AND vkorg = '2700'
AND kunnr = sfdc-kunnr
AND matnr = it_item_temp-matnr.
IF sy-subrc = 0.
SELECT SINGLE kbetr
INTO it_item_temp-kwert
FROM konp
WHERE knumh = lv_knumh.
ELSE.
***//
gs_order_conditions_in-itm_number = isrno.
IF sfdc-potype = 'SFSD' . " Sales and Distribution
gs_order_conditions_in-cond_type = 'ZR04'.
ELSEIF sfdc-potype = 'SFHO'. " Hospitality
gs_order_conditions_in-cond_type = 'ZR00'.
ENDIF.
it_item_temp-kwert = it_item_temp-kwert .
gs_order_conditions_in-cond_value = it_item_temp-kwert .
gs_order_conditions_in-currency = 'INR'.
APPEND gs_order_conditions_in TO gt_order_conditions_in.
CLEAR gs_order_conditions_in.
gs_order_conditions_inx-itm_number = isrno.
gs_order_conditions_inx-cond_type = 'X'.
gs_order_conditions_inx-cond_value = 'X'.
gs_order_conditions_inx-currency = 'X'.
gs_order_conditions_inx-updateflag = 'X'.
APPEND gs_order_conditions_inx TO gt_order_conditions_inx.
CLEAR gs_order_conditions_inx.
IF sfdc-potype = 'SFSD'.
***// Regular Discount to Customer
IF it_item_temp-reg_dis <> '0.00'.
gs_order_conditions_in-itm_number = isrno.
gs_order_conditions_in-cond_type = 'ZDID'.
gs_order_conditions_in-cond_value = it_item_temp-reg_dis * lv_kbetr. " 10 .
gs_order_conditions_in-currency = 'INR'.
APPEND gs_order_conditions_in TO gt_order_conditions_in.
CLEAR gs_order_conditions_in.
gs_order_conditions_inx-itm_number = isrno.
gs_order_conditions_inx-cond_type = 'X'.
gs_order_conditions_inx-cond_value = 'X'.
gs_order_conditions_inx-currency = 'X'.
gs_order_conditions_inx-updateflag = 'X'.
APPEND gs_order_conditions_inx TO gt_order_conditions_inx.
CLEAR gs_order_conditions_inx.
ENDIF.
***// Additional Discount to Customer
IF it_item_temp-add_dis <> '0.00'.
gs_order_conditions_in-itm_number = isrno.
gs_order_conditions_in-cond_type = 'ZINM'.
gs_order_conditions_in-cond_value = it_item_temp-add_dis * lv_kbetr.
gs_order_conditions_in-currency = 'INR'.
APPEND gs_order_conditions_in TO gt_order_conditions_in.
CLEAR gs_order_conditions_in.
gs_order_conditions_inx-itm_number = isrno.
gs_order_conditions_inx-cond_type = 'X'.
gs_order_conditions_inx-cond_value = 'X'.
gs_order_conditions_inx-currency = 'X'.
gs_order_conditions_inx-updateflag = 'X'.
APPEND gs_order_conditions_inx TO gt_order_conditions_inx.
CLEAR gs_order_conditions_inx.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
******** End Discount ********
LOOP AT gt_order_items_in INTO gs_order_items_in.
READ TABLE it_item_temp WITH KEY matnr = gs_order_items_in-material.
IF sy-subrc = 0.
gs_order_schedules_in-itm_number = gs_order_items_in-itm_number.
gs_order_schedules_in-req_qty = it_item_temp-kwmeng.
APPEND gs_order_schedules_in TO gt_order_schedules_in.
CLEAR gs_order_schedules_in.
gs_order_schedules_inx-itm_number = gs_order_items_in-itm_number.
gs_order_schedules_inx-req_qty = 'X'.
gs_order_schedules_inx-dlv_date = 'X'.
APPEND gs_order_schedules_inx TO gt_order_schedules_inx.
CLEAR gs_order_schedules_inx.
ENDIF.
ENDLOOP.
sfdcorder = sfdc-sfdcorder.
kunnr = sfdc-kunnr.
kunag = sfdc-kunag.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
* SALESDOCUMENTIN =
order_header_in = wa_order_header_in
order_header_inx = wa_order_header_inx
IMPORTING
salesdocument = vbeln
TABLES
return = gt_return
order_items_in = gt_order_items_in
order_items_inx = gt_order_items_inx
order_partners = gt_order_partners
order_schedules_in = gt_order_schedules_in
order_schedules_inx = gt_order_schedules_inx
order_conditions_in = gt_order_conditions_in
order_conditions_inx = gt_order_conditions_inx.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.