ā2012 May 25 7:20 PM
How to add the schedule line in the bapi BAPI_SALESORDER_CREATEFROMDAT2
.Schedule lines item delivery dates and quantity is given below in item flat file .How to add those to bapi..In which loop??And which structure to pass
This is flat files
header
| AUART | VKORG | VTWEG | SPART | KUNNR |
| OR | 1000 | 10 | 00 | 2000 |
| OR | 1000 | 10 | 00 | 2000 |
| OR | 3000 | 10 | 00 | 2000 |
| OR | 1000 | 10 | 00 | 2000 |
| OR | 2000 | 10 | 00 | 2000 |
| OR | 2000 | 10 | 00 | 2000 |
ITem
| POSNR | MATNR | ZMENG | WERKS | delivery date1 | quantity1 | deliverydate2 | quantity2 |
| 10 | M-10 | 10 | 1000 | 28.05.2012 | 5 | 05.06.2012 | 5 |
| 20 | M-11 | 12 | 1000 | 28.05.2012 | 6 | 05.06.2012 | 6 |
| 30 | M-12 | 15 | 1000 | 28.05.2012 | 8 | 05.06.2012 | 7 |
| 10 | M-11 | 5 | 1000 | 28.05.2012 | 5 | 05.06.2012 | 0 |
| 20 | M-12 | 10 | 1000 | 28.05.2012 | 5 | 05.06.2012 | 5 |
| 30 | HP01 | 20 | 1000 | 28.05.2012 | 1 | 05.06.2012 | 19 |
| 40 | M-14 | 12 | 1000 | 28.05.2012 | 2 | 05.06.2012 | 10 |
| 10 | M-10 | 16 | 2000 | 28.05.2012 | 3 | 05.06.2012 | 13 |
| 20 | M-15 | 14 | 1000 | 28.05.2012 | 4 | 05.06.2012 | 10 |
| 30 | HP-01 | 11 | 1000 | 28.05.2012 | 5 | 05.06.2012 | 6 |
Form bapi_data.
loop at it_bapi_det into wa_alv_grid.
lv_count = lv_count + 10.
clear wa_bapi_header.
wa_bapi_header-doc_type = 'OR'.
wa_bapi_header-sales_org = wa_alv_grid-vkorg.
wa_bapi_header-distr_chan = wa_alv_grid-vtweg.
wa_bapi_header-division = wa_alv_grid-spart.
wa_bapi_header-ref_doc = wa_alv_grid-vbeln.
wa_bapi_header-refdoc_cat = 'B'.
call function 'CONVERSION_EXIT_AUART_INPUT'
exporting
input = wa_bapi_header-doc_type
importing
output = wa_bapi_header-doc_type
.
wa_bapi_item-itm_number = lv_count.
wa_bapi_item-material = wa_alv_grid-matnr.
wa_bapi_item-target_qty = wa_alv_grid-kwmeng.
wa_bapi_item-ref_doc = wa_alv_grid-vbeln.
wa_bapi_item-ref_doc_it = lv_count.
wa_bapi_item-ref_doc_ca = 'B'.
append wa_bapi_item to it_bapi_item.
clear wa_bapi_item.
wa_bapi_itemx-itm_number = lv_count.
wa_bapi_itemx-material = 'X'.
wa_bapi_itemx-target_qty = 'X'.
wa_bapi_itemx-ref_doc = 'X'.
wa_bapi_itemx-ref_doc_it = 'X'.
wa_bapi_itemx-ref_doc_ca = 'X'.
append wa_bapi_itemx to it_bapi_itemx.
clear wa_bapi_itemx.
wa_bapi_partner-partn_role = 'AG'.
wa_bapi_partner-partn_numb = wa_alv_grid-kunnr.
append wa_bapi_partner to it_bapi_partner.
clear wa_bapi_partner.
at end of vbeln.
clear lv_count.
perform bapi_so_create.
endat.
endloop.
Endform.
form bapi_so_create .
wa_bapi_headerx-doc_type = 'X'.
wa_bapi_headerx-sales_org = 'X'.
wa_bapi_headerx-distr_chan = 'X'.
wa_bapi_headerx-division = 'X'.
call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
* SALESDOCUMENTIN =
order_header_in = wa_bapi_header
* ORDER_HEADER_INX = wa_bapi_headerx
* SENDER =
* BINARY_RELATIONSHIPTYPE =
* INT_NUMBER_ASSIGNMENT =
* BEHAVE_WHEN_ERROR =
* LOGIC_SWITCH =
* TESTRUN =
convert = 'X'
* IMPORTING
* SALESDOCUMENT =
tables
return = it_bapi_return1
order_items_in = it_bapi_item
order_items_inx = it_bapi_itemx
order_partners = it_bapi_partner
* ORDER_SCHEDULES_IN =
* ORDER_SCHEDULES_INX =
* 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 =
.
append lines of it_bapi_return1 to it_bapi_return2.
call function 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
endform. " BAPI_SO_CREATE
Moderator message : Search for available information, discussion locked.
Message was edited by: Vinod Kumar
ā2012 May 25 8:00 PM
* Fill schedule lines
lt_schedules_in-itm_number = '000010'.
lt_schedules_in-sched_line = '0001'.
lt_schedules_in-req_qty = p_menge.
APPEND lt_schedules_in.
* Fill schedule line flags
lt_schedules_inx-itm_number = '000010'.
lt_schedules_inx-sched_line = '0001'.
lt_schedules_inx-updateflag = 'X'.
lt_schedules_inx-req_qty = 'X'.
APPEND lt_schedules_inx.
* Fill schedule lines
lt_schedules_in-itm_number = '000020'.
lt_schedules_in-sched_line = '0001'.
lt_schedules_in-req_qty = p_menge.
APPEND lt_schedules_in.
* Fill schedule line flags
lt_schedules_inx-itm_number = '000020'.
lt_schedules_inx-sched_line = '0001'.
lt_schedules_inx-updateflag = 'X'.
lt_schedules_inx-req_qty = 'X'.
APPEND lt_schedules_inx.
* Call the BAPI to create the sales order.
CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1'
EXPORTING
sales_header_in = header
sales_header_inx = headerx
IMPORTING
salesdocument_ex = v_vbeln
TABLES
return = return
sales_items_in = item
sales_items_inx = itemx
sales_schedules_in = lt_schedules_in
sales_schedules_inx = lt_schedules_inx
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 the work.
COMMIT WORK AND WAIT.
WRITE: / 'Document ', v_vbeln, ' created'.
ENDIF.
Check this sample code.
Regards,
Shyam
ā2012 May 26 7:03 AM
Declare internal table like:
DATA: lw_vbeln LIKE vbak-vbeln.
DATA: lw_hd1 LIKE bapisdhead1.
DATA: lw_hd1x LIKE bapisdhead1x.
DATA: lt_itm LIKE bapisditem OCCURS 0 WITH HEADER LINE.
DATA: lt_itmx LIKE bapisditemx OCCURS 0 WITH HEADER LINE.
DATA: lt_pr LIKE bapipartnr OCCURS 0 WITH HEADER LINE.
DATA: lt_ret LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: lt_schdlx TYPE STANDARD TABLE OF bapischdlx
WITH HEADER LINE.
DATA: lt_schdl TYPE STANDARD TABLE OF bapischdl
WITH HEADER LINE.
*populating header data
lw_hd1-doc_type = dc.
lw_hd1-sales_org = '1111'.
lw_hd1-distr_chan = '10'.
lw_hd1-division = dev.
IF lw_hd1-doc_type = 'TA'.
lw_hd1-purch_no_c = 'By Verbal'.
ELSE.
lw_hd1-purch_no_c = ''.
ENDIF.
lw_hd1-purch_date = sy-datum.
lw_hd1-price_date = sy-datum.
lw_hd1-pmnttrms = 'C030'.
lw_hd1x-updateflag = 'I'.
lw_hd1x-doc_type = 'X'.
lw_hd1x-sales_org = 'X'.
lw_hd1x-distr_chan = 'X'.
lw_hd1x-division = 'X'.
lw_hd1x-purch_no_c = 'X'.
lw_hd1x-purch_date = 'X'.
lw_hd1x-price_date = 'X'.
lw_hd1x-pmnttrms = 'X'.
*populating the partner data.
lt_pr-partn_role = 'AG'.
lt_pr-partn_numb = '0000008000'.
APPEND lt_pr.
*populating the Item data from itab to lt_itm.
LOOP AT t_itab INTO w_itab.
lt_itm-itm_number = sy-tabix.
lt_itm-material = w_itab-matnr.
lt_itm-comp_quant = w_itab-req_qty.
lt_itm-plant = '2000'.
lt_itm-val_type = w_itab-val_type.
APPEND lt_itm.
lt_schdl-itm_number = sy-tabix.
lt_schdl-req_qty = w_itab-req_qty.
APPEND lt_schdl.
ENDLOOP.
*populating the Item data check box
lt_itmx-updateflag = 'I'.
lt_itmx-material = 'X'.
lt_itmx-comp_quant = 'X'.
lt_itmx-plant = 'X'.
lt_itmx-val_type = 'X'.
lt_itmx-itm_number = 'X'.
lt_itmx-val_type = 'X'.
APPEND lt_itmx.
**populating the schedule line check box data
lt_schdlx-updateflag = 'I'.
lt_schdlx-itm_number = 'X'.
lt_schdlx-req_qty = 'X'.
APPEND lt_schdlx.
*After that call BAPI
CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1'
EXPORTING
sales_header_in = lw_hd1
sales_header_inx = lw_hd1x
IMPORTING
salesdocument_ex = lw_vbeln
TABLES
return = lt_ret[]
sales_items_in = lt_itm[]
sales_items_inx = lt_itmx[]
sales_schedules_in = lt_schdl[]
sales_schedules_inx = lt_schdlx[]
sales_partners = lt_pr[].