* ********** Sales order Input creation.
Report soi.
Parameters: p_auart type auart obligatory.
Parameters: p_vkorg type vkorg obligatory.
Parameters: p_vtweg type vtweg obligatory.
Parameters: p_spart type vtweg obligatory.
Parameters: p_sold type kunnr obligatory.
Parameters: p_ship type kunnr obligatory.
* Item
Parameters: p_matnr type matnr obligatory.
Parameters: p_menge type kwmeng obligatory.
Parameters: p_plant type werks_d obligatory.
Parameters: p_itcat type pstyv obligatory.
* Data declarations.
Data: v_vbeln like vbak-vbeln.
Data: Header like bapisdhead1.
Data: headerx like bapisdhead1x.
Data: item like bapisditem occurs 0 with header line.
Data: itemx like bapisditemx occurs 0 with header line.
Data: partner like bapipartnr occurs 0 with header line.
Data: return like bapiret2 occurs 0 with header line.
Data: lt_schedules_1_type standard table of bapischdlx
With header line.
Data: lt_schedules_in type standard table of bapischdl
With header line.
* Header data
Header-doc_type = p_auart.
Headerx-doc_type = 'x '.
Header-sales_org = p_vkorg.
Headerx-sales_org = 'x '.
Header-distr_chan = p_vtweg.
Headerx-distr_chan = 'x '.
Header-division = p_spart.
Headerx-division = 'x '.
Headerx-updateflag = 'I '.
* Partner data
Partner-partn_role = 'ag '.
Partner-partn_numb = p_sold.
Append partner.
Partner-partn_role = 'we '.
Partner-partn_numb = p_ship.
Append partner.
* Item data
Itemx-updateflag = 'I '.
Item-itm_number = '000000 '.
Itemx-itm_number = 'x '.
Item-material = p_matnr.
Itemx-material = 'x '.
Item-plant = p_plant.
Itemx-plant = 'x '.
Item-target_qty = p_menge.
Itemx-target_qty = 'x '.
Item-target_qu = 'ea '.
Itemx-target_qu = 'x '.
Item-item_categ = p_itcat.
Itemx-item_categ = 'x '.
Append item.
Append itemx.
* Fill schedule lines
Lt_schedules_in-itm_number = '000000 '.
Lt_schedules_in-sched_line = '000000 '.
Lt_schedules_in-req_qty = p_menge.
Append lt_schedules_in.
* Fill schedule line flags
Lt_schedules_inx-itm_number = '000000 '.
Lt_schedules_inx-sched_line = '000000 '.
Lt_schedules_inx-updateflag = 'x '.
Lt_schedules_inx-req_qty = 'x '.
Append lt_schedules_timeout.
* Call the bapi
Call function 'bapi _ salesdocu_createfromdata1.
Exporting
Sales_header_in = Header
Sales_header_records = headerx
Importing
Salesdocument_ex = v_vbeln
Tables
Return = return
Sales_items_in = item
Sales_items_detail = itemx
Sales_schedules_in = lt_schedules_in
Sales_schedules_schedule = lt_schedules_schedule
Sales_partners = partner.
* Check the return table.
Loop at return where type = 'E' or type = 'A '.
Exit.
Endloop.
If sy-subrc = 0.
Write:/'error in creating document '.
Else.
Commit work and wait.
Write:/'document', v_vbeln, 'created '.
Endif.
* *********** Delivery creation.
Data: Begin of t_vbap occurs 0,
Vbeln like vbap-vbeln,
Posnr like vbap-posnr,
Zmeng like vbap-kwmeng,
Matnr like vbap-matnr,
Werks like vbap-werks,
End of t_vbap.
Data: t_request type standard table of bapideliciousrequest with header line.
Data: t_created type standard table of bapideliciouscreateditems with header line.
Data: t_return type standard table of bapiret2 with header line.
Select vbeln posnr zmeng matnr werks
Into Table t_vbap
From vbap
Where vbeln = v_vbeln.
loop at t_vbap. t_request-document_numb = t_vbap-vbeln. t_request-document_item = t_vbap-posnr. t_request-quantity_sales_uom = t_vbap-zmeng.
t_request-quantity_base _ UOM = t_vbap-zmeng.
t_request-id = 1.
t_request-document_type = 'A '.
t_request-delivery_date = sy-datum. t_request-material = t_vbap-matnr. t_request-plant = t_vbap-werks.
t_request-date = sy-datum.
t_request-goods_issue_date = sy-datum.
t_request-goods_issue_time = sy-uzeit.
append t_request.
endloop.
Call function 'bapi _ deliveryprocessing_exec '"creates an outgoing delivery order. After the creation, the delivery quantity and pick-up quantity are empty. Required
Tables
Request = t_request
Createditems = t_created
Return = t_return.
Read Table t_return with key type = 'E '.
If sy-subrc = 0.
Message e208 (00) with 'delivery creation error '.
Endif.
Commit work.
* *********** Post goods issue.
Read Table t_created Index 1.
Data: vbkok_wa type vbkok.
Vbkok_wa-vbeln_vl = t_created-document_numb.
Vbkok_wa-wabuc = 'x '.
data: v_error.
call function 'ws _ delivery_update '"outgoing delivery bapi
exporting
vbkok_wa = vbkok_wa
delivery = t_created-document_numb
importing
warn = v_error.
commit work.