‎2010 Jan 11 5:29 AM
Hi,
My problem is , i have created one module pool program for accelerating the Sales Order creation.
I am using the bapi BAPI_SALESORDER_CREATEFROMDAT2 for sales order creation. After executing the program
bapi is given an errot that, incomplete sales order document is saved.
Can any body tell me plz what are the necessary fields i need to take in the header and item level , so that the complete
document will be saved through BAPI.
<removed_by_moderator>
Thanks
Edited by: Julius Bussche on Jan 11, 2010 12:09 PM
‎2010 Jan 11 5:36 AM
Hi,
Open the sales order which is created through your BAPI. Goto EDIT => Incompletion log. It will display the fields which are yet to be pouplated.
Once you pass those fields as well to the BAPI, it should resolve your issue.
Thanks,
Best regards,
Prashant
‎2010 Jan 11 5:57 AM
Hi Prashant,
you are right, but the bapi is showing the message that, Order No. XXX is saved but incomplete. But when i am going to view it in display mode, then the system is showing the message like no document is created with this document number.
Plz resolve my prob.
Thanks
‎2010 Jan 11 5:59 AM
Hi,
Please call COMMIT WORK or COMMIT WORK AND WAIT after the Bapi call & check.
Thanks,
Best regards,
Prashant
‎2010 Jan 11 6:45 AM
Hi,
for me following code worked:
ls_header-doc_type = gc_doc_type.
ls_header-sales_org = gc_vkorg.
ls_header-distr_chan = gc_vtweg.
ls_header-division = gc_sparte.
ls_header-sd_doc_cat = gc_doc_cat.
ls_item-po_itm_no = uv_posnr.
ls_item-plant = uv_werks.
ls_item-material = uv_matnr.
ls_item-sales_unit = uv_vrkme.
APPEND ls_item TO lt_items.
ls_partner-partn_role = 'WE'.
ls_partner-partn_numb = uv_kunnr.
APPEND ls_partner TO lt_partners.
ls_partner-partn_role = 'AG'.
ls_partner-partn_numb = uv_kunnr.
APPEND ls_partner TO lt_partners.
ls_schedules-itm_number = uv_posnr.
ls_schedules-req_date = p_date.
ls_schedules-req_qty = uv_qty.
ls_schedules-load_date = p_date.
ls_schedules-ms_date = p_date.
ls_schedules-gi_date = p_date.
APPEND ls_schedules TO lt_schedules.
call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
order_header_in = ls_header
testrun = p_test
importing
salesdocument = cv_salesdocument
tables
return = lt_return
order_items_in = lt_items
order_partners = lt_partners
order_schedules_in = lt_schedules
.
Do not forget to execute commit after processing.
Also check a documentation for the BAPI.
Regards,
Adrian
‎2010 Jan 11 8:19 AM
TABLES: VBAK, "Sales Document: Header Data
VBAP. "Sales Document: Item Data
*************************************WORK AREA DECELERATION************************
DATA: BEGIN OF WA_HEADER,
LI TYPE I, "LINE TYPE
AUART TYPE VBAK-AUART, "Sales Document Type
VKORG TYPE VBAK-VKORG, "Sales Organization
VTWEG TYPE VBAK-VTWEG, "Distribution Channel
SPART TYPE VBAK-SPART, "Division
KUNNR TYPE BAPIPARNR-PARTN_NUMB, "Customer number
END OF WA_HEADER.
DATA: BEGIN OF WA_ITEM,
LI TYPE I,
MATNR TYPE VBAP-MATNR, "MATERIAL NUMBER
ZMENG TYPE VBAP-ZMENG, "QUANTITY
END OF WA_ITEM.
***********************************INTERNAL TABLE DECELERATION***************************************
DATA: IT_HEADER LIKE TABLE OF WA_HEADER WITH HEADER LINE. "IT FOR HEADER
DATA: IT_ITEM LIKE TABLE OF WA_ITEM WITH HEADER LINE. "IT FOR ITEM
DATA: IT LIKE VBAK OCCURS 0 WITH HEADER LINE.
***************************SALES ORDER INTERNAL TABLE DECELERATION********************************
DATA:
HEADER TYPE TABLE OF BAPISDHEAD WITH HEADER LINE, "SALES HEADER DATA
ITEMS TYPE TABLE OF BAPIITEMIN WITH HEADER LINE, "SALES ITEM DATA
PARTNERS TYPE TABLE OF BAPIPARTNR WITH HEADER LINE. "SALLES PARTNERS
***********************************DYNAMIC FIEL PATH GETTING DECELERATION************************
DATA : HL_FIELD_NAME TYPE DYNPREAD-FIELDNAME VALUE 'G_P_SPATH', "SCREEN FIELD NAME
HL_FILE_NAME TYPE IBIPPARMS-PATH VALUE 'G_P_SPATH', "Local file for upload/download
IL_FIELD_NAME TYPE DYNPREAD-FIELDNAME VALUE 'G_P_EPATH', "SCREEN FIELD NAME
IL_FILE_NAME TYPE IBIPPARMS-PATH VALUE 'G_P_EPATH', "Local file for upload/download
FL_FIELD_NAME TYPE DYNPREAD-FIELDNAME VALUE 'G_P_EPATH', "SCREEN FIELD NAME
FL_FILE_NAME TYPE IBIPPARMS-PATH VALUE 'G_P_EPATH'. "Local file for upload/download
DATA : CTR TYPE I .
DATA : CTR2 TYPE STRING.
DATA : CTR1 TYPE STRING.
Sales document number
DATA : L_VBELN LIKE BAPIVBELN-VBELN.
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE T1.
SELECTION-SCREEN : SKIP.
PARAMETER : P_HPATH TYPE STRING.
PARAMETER : P_IPATH TYPE STRING.
SELECTION-SCREEN : SKIP.
SELECTION-SCREEN : END OF BLOCK B1.
SELECTION-SCREEN : BEGIN OF BLOCK B2 WITH FRAME TITLE T2.
SELECTION-SCREEN : SKIP.
SELECTION-SCREEN : BEGIN OF LINE.
SELECTION-SCREEN : PUSHBUTTON 10(14) UPLOAD USER-COMMAND CLICK1.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
******************************************INITIALIZATION.***************************************************
INITIALIZATION.
T1 = 'Putchase Order Source File Path'.
T2 = 'Push Button'.
UPLOAD = 'Upload'.
*******************************************AT SELECTION SCREE EVENT********************************************
AT SELECTION-SCREEN.
CASE SY-UCOMM.
WHEN 'CLICK1'.
IF P_HPATH IS INITIAL AND P_IPATH IS INITIAL. "CHECKING BTHE THE TEXT BOX
MESSAGE I009.
ELSE.
PERFORM SELECT. "CALLING THE SELECT SUBROUTINE
ENDIF.
WHEN OTHERS.
MESSAGE 'PRESS FORM BUTTON' TYPE 'I'. "WHEN EXECUTE BUTTON IS PRESSED
ENDCASE.
***********************************GETTING HEADER FIEL PATH*******************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_HPATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = HL_FIELD_NAME
IMPORTING
FILE_NAME = HL_FILE_NAME.
P_HPATH = HL_FILE_NAME.
***********************************GETTING ITEM FIEL PATH*******************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_IPATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = IL_FIELD_NAME
IMPORTING
FILE_NAME = IL_FILE_NAME.
P_IPATH = IL_FILE_NAME.
START-OF-SELECTION.
&----
*& Form SELECT
&----
text
----
--> p1 text
<-- p2 text
----
FORM SELECT .
CALL FUNCTION 'GUI_UPLOAD' " function resposible to get the local flat
EXPORTING " and upload it in a internal table
FILENAME = P_HPATH
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = '#'
TABLES
DATA_TAB = IT_HEADER.
CALL FUNCTION 'GUI_UPLOAD' " function resposible to get the local flat
EXPORTING " and upload it in a internal table
FILENAME = P_IPATH
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = '#'
TABLES
DATA_TAB = IT_ITEM.
LOOP AT IT_HEADER.
Initialize Header values
HEADER-DOC_TYPE = IT_HEADER-AUART.
HEADER-SALES_ORG = IT_HEADER-VKORG.
HEADER-DISTR_CHAN = IT_HEADER-VTWEG.
HEADER-DIVISION = IT_HEADER-SPART.
APPEND HEADER.
PARTNERS-PARTN_ROLE = 'WE'.
PARTNERS-PARTN_NUMB = IT_HEADER-KUNNR.
APPEND PARTNERS.
CTR = 10.
LOOP AT IT_ITEM WHERE LI = IT_HEADER-LI.
CTR2 = CTR.
CONCATENATE '0000' CTR2 INTO CTR1.
***Initialize Item values
ITEMS-ITM_NUMBER = IT_ITEM-ITEM.
ITEMS-ITM_NUMBER = CTR1.
ITEMS-MATERIAL = IT_ITEM-MATNR.
ITEMS-REQ_QTY = IT_ITEM-ZMENG.
APPEND ITEMS.
CTR = CTR + 10.
ENDLOOP.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT1'
EXPORTING
ORDER_HEADER_IN = HEADER "SALES HEADER DATA
IMPORTING
SALESDOCUMENT = L_VBELN "RETRIEVED SALES DOCUMENT NUMBER
TABLES
ORDER_ITEMS_IN = ITEMS "SALES ITEM LEVEL DATA
ORDER_PARTNERS = PARTNERS. "SAKES PARTNERS
APPEND L_VBELN TO IT.
COMMIT WORK AND WAIT.
CLEAR : HEADER , ITEMS[] ,PARTNERS,CTR,CTR1,CTR2.
REFRESH : ITEMS.
ENDLOOP.
IF IT[] IS NOT INITIAL.
LOOP AT IT.
WRITE: / 'SALES ORDER', IT-VBELN , 'CREATED'.
ENDLOOP.
LEAVE TO LIST-PROCESSING.
SET PF-STATUS SPACE.
ELSE.
MESSAGE I044.
ENDIF .
ENDFORM. " SELECT
‎2010 Jan 11 9:18 AM
Hi,
Try this,
CALL FUNCTION 'ISM_SALESORDER_CREATEFROMDAT2'
EXPORTING
order_header_in = lw_bapiheaderb
IMPORTING
salesdocument = lw_docnob
TABLES
return = lit_returnb
order_items_in = lit_bapiitemsb
order_partners = lit_bapiparnrb
order_schedules_in = lit_bapischdl
order_conditions_in = lit_bapicondsb.
CLEAR level1.
IF NOT lw_docnob IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
Hope this helps you,
Abhijit G. Borkar
‎2010 Jan 11 11:06 AM
Hi, Please check the following code and check whether any mandatory parameters are missing.
*****************************PREPARE HEADER DATA
Sales document type*
header-doc_type = ITAB_SODATA1-AUART.
headerx-doc_type = 'X'.
Sales organization*
header-sales_org = 5000.
header-DISTR_CHAN = ITAB_SODATA1-VTWEG.*
HEADER-DIVISION = ITAB_SODATA1-SPART.*
headerx-sales_org = 'X'.
Distribution channel*
header-distr_chan = 10.
headerx-distr_chan = 'X'.
***
Division*
header-division = 71.
headerx-division = 'X'.
headerx-updateflag = 'I'.*
****REQUIRED DATE
CALL FUNCTION 'CONVERT_DATE_TO_INTERN_FORMAT'
EXPORTING
DATUM = ITAB_SODATA1-ketdat
DTYPE = 'DATS'
IMPORTING
ERROR =*
IDATE = ITAB_SODATA1-ketdat
MESSG =*
MSGLN =*
.
HEADER-REQ_DATE_H = ITAB_SODATA1-ketdat.
HEADERX-REQ_DATE_H = 'X'.
IF HEADER-REQ_DATE_H = space.
HEADER-REQ_DATE_H = sy-datum.
ENDIF.
PO DETAILS*
HEADER-PURCH_NO_C = ITAB_SODATA1-BSTKD.
HEADER-PO_DAT_S = ITAB_SODATA1-BSTDK.
______________________________________________________________________________
PREPARE PARTNER DATA
Sold to PARTY
partner-partn_role = 'AG'.
partner-partn_numb = ITAB_SODATA1-SOLD.
APPEND partner.
Ship to PARTY
partner-partn_role = 'WE'.
partner-partn_numb = ITAB_SODATA1-SHIP.
APPEND partner.
DELIVERY ADDRESS.
partner-partn_role = 'DA'.
partner-partn_numb = ITAB_SODATA1-PARTNER.
APPEND partner.
APPEND ITAB_SODATA1 TO ITAB_SODATA2.
_______________________________________________________________________________
*****************************schedule item
schedule-ITM_NUMBER = ITEMNO.
schedulex-ITM_NUMBER = itemno.
****schedule line target quantity.
schedule-REQ_QTY = ITAB-KWMENG.
scheduleX-REQ_QTY = 'X'.
APPEND SCHEDULE.
APPEND SCHEDULEX.
commit work.
ITEMNO = ITEMNO + 10 .
APPEND item.
APPEND itemx.
_______________________________________________________________________
PREPARE ITEM DATA
item-itm_number = ITEMNO.
itemx-itm_number = 'X'.
ITAB_SODATA1-ITM_NUMBER = ITEMNO.
MODIFY ITAB_SODATA1 TRANSPORTING ITM_NUMBER.
*PO NUMBER OF TML / ESPARE
item-PURCH_NO_S = ITAB_SODATA1-BSTKD_E.
itemx-PURCH_NO_S = 'X'.
**PO DATE
CALL FUNCTION 'CONVERT_DATE_TO_INTERN_FORMAT'
EXPORTING
DATUM = ITAB_SODATA1-bstdk_e
DTYPE = 'DATS'
IMPORTING
ERROR =
IDATE = ITAB_SODATA1-bstdk_e
MESSG =
MSGLN =
.
item-PO_DAT_S = itab_sodata1-bstdk_e.
ITEMX-PO_DAT_S = 'X'.
PO ITEM NUMBER
item-PO_ITM_NO = ITAB_SODATA1-POSEX.
itemx-PO_ITM_NO = 'X'.
****PO ITEM NUMBER
item-poitm_no_s = ITAB_SODATA1-POSEX_E.
itemx-POITM_NO_S = 'X'.
Plant
item-plant = 302.
itemx-plant = 'X'.
STORAGE LOCATION
item-STORE_LOC = ITAB_SODATA1-LGORT.
itemx-STORE_LOC = 'X'.
Material
item-material = ITAB_SODATA1-MABNR.
itemx-material = 'X'.
TARGET Quantity
item-target_qty = ITAB_SODATA1-KWMENG.
itemx-target_qty = 'X'.
UNIT OF MEASURE
item-target_qU = 'EA'.
itemx-target_qU = 'X'.
***Target quantity unit of measure in ISO code
ITEM-T_UNIT_ISO = 'EA'.
ITEMX-T_UNIT_ISO = 'X'.
_________________________________________________________________________________
_________________________________________________________________________________
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
ORDER_HEADER_IN = header
ORDER_HEADER_INX = headerx
IMPORTING
SALESDOCUMENT = v_vbeln
TABLES
RETURN = return
ORDER_ITEMS_IN = item
ORDER_ITEMS_INX = itemx
ORDER_PARTNERS = partner
ORDER_SCHEDULES_IN = SCHEDULE
ORDER_SCHEDULES_INX = SCHEDULEX.
__________________________________________________________________________________
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN =
.
Commit the work.
COMMIT WORK AND WAIT.
CALL FUNCTION 'DEQUEUE_ALL'.