Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Creating the Sales Order using the bapi BAPI_SALESORDER_CREATEFROMDAT2

Former Member
0 Likes
4,131

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

7 REPLIES 7
Read only

Former Member
0 Likes
2,320

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

Read only

0 Likes
2,320

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

Read only

Former Member
0 Likes
2,320

Hi,

Please call COMMIT WORK or COMMIT WORK AND WAIT after the Bapi call & check.

Thanks,

Best regards,

Prashant

Read only

Former Member
2,320

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

Read only

Former Member
0 Likes
2,320

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

Read only

Former Member
0 Likes
2,320

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'


> very important if you do not do this it will show an error which you are encountering

EXPORTING

wait = 'X'.

ELSE.

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

ENDIF.

Hope this helps you,

Abhijit G. Borkar

Read only

Former Member
0 Likes
2,320

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'.