BAPI_SALESORDER_CREATEFROMDAT2 - Sales Order Create

Please help with an exact code which this BAPI is used for creating Sales order so that I can refer.

*&---------------------------------------------------------------------*
*& Report  ZBAPI_SALESORDER_CREATE
*&
*&---------------------------------------------------------------------*
*&
*& Author : Karthik
*&---------------------------------------------------------------------*

REPORT  ZBAPI_SALESORDER_CREATE.

data : ORDER_HEADER_IN like BAPISDHD1.
data : ORDER_ITEMS_IN like BAPISDITM occurs 0 with
header line.
data : RETURN like BAPIRET2 occurs 0 with header line.
data : ORDER_PARTNERS like BAPIPARNR occurs 0 with
header line.
DATA : ORDER_KEYS LIKE BAPISDKEY OCCURS 0 WITH HEADER
LINE.
data : ORDER_SCHEDULES_IN like BAPISCHDL occurs 0 with
header line.
data : BEGIN OF TAB OCCURS 0,
        SRNO(4),
        DOC_TYPE like ORDER_HEADER_IN-dOC_TYPE,
        SALES_ORG LIKE ORDER_HEADER_IN-SALES_ORG,
        DISTR_CHAN LIKE ORDER_HEADER_IN-DISTR_CHAN,
        DIVISION like ORDER_HEADER_IN-DIVISION,
*        REQ_DATE_H(10),
        PURCH_DATE(10),
        PMNTTRMS LIKE ORDER_HEADER_IN-PMNTTRMS,
        PURCH_NO_C LIKE ORDER_HEADER_IN-PURCH_NO_C,
        ITM_NUMBER like BAPISDITM-ITM_NUMBER,
        CUST_MAT22 LIKE ORDER_ITEMS_IN-CUST_MAT22,
        PLANT LIKE ORDER_ITEMS_IN-PLANT,
        TARGET_QTY LIKE ORDER_ITEMS_IN-TARGET_QTY,
        PARTN_ROLE LIKE ORDER_PARTNERS-PARTN_ROLE,
        PARTN_NUMB LIKE ORDER_PARTNERS-PARTN_NUMB,
      END OF TAB.

data: itab1 like alsmex_tabline occurs 0 with header
line.
DATA: gd_currentrow type i.
data : PURCHASEORDER like ekko-ebeln.
Data: tot_rec type i,     "Total Records
     gd_update type i,   "Main Table Increement Counter
     gd_lines type i,    "Success Table increement Counter
     w_textout like t100-text. "VARIABLE TO GET ERRORLOG
data : begin of it_success occurs 0,
        SALESDOCUMENT LIKE BAPIVBELN-VBELN,  "PROJECT
      end of it_success.

data : begin of it_error occurs 0,
        srno(4),
        err_msg(73) TYPE c,    "TO RETREIVE ERROR MESSAGES
     end of it_error.
data : srno(4).
DATA : SALESDOCUMENT LIKE  BAPIVBELN-VBELN.
selection-screen begin of block b1 with frame.
skip 3.
parameter:p_infile like rlgrap-filename obligatory.
skip 3.
selection-screen end  of block b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
  PERFORM value_help.

start-of-selection.

  call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = p_infile
      i_begin_col             = '1'
      i_begin_row             = '2' "Do not require
headings
      i_end_col               = '22'
      i_end_row               = '10000'
    TABLES
      intern                  = itab1
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      others                  = 3.
  if sy-subrc <> 0.
    message e010(zz) with text-001. "Problem uploading
Excel Spreadsheet
  endif.

*perform open_group.

  sort itab1 by row col.

* Get first row retrieved
  read table itab1 index 1.

* Set first row retrieved to current row
  gd_currentrow = itab1-row.

  loop at itab1.

* Reset values for next row
    if itab1-row ne gd_currentrow.
      append tab .
      clear tab.
      gd_currentrow = itab1-row.
    endif.
    SHIFT ITAB1-VALUE LEFT DELETING LEADING SPACE.
    case itab1-col.

      when '0001'.
        TAB-SRNO = itab1-value.
      when '0002'.
        TAB-DOC_TYPE = itab1-value.
      when '0003'.
        TAB-SALES_ORG = itab1-value.
      when '0004'.
        TAB-DISTR_CHAN = itab1-value.
      when '0005'.
        TAB-DIVISION = itab1-value.
*      when '0006'.
*        TAB-REQ_DATE_H =  itab1-value.
      when '0006'.
        TAB-PURCH_DATE = itab1-value.
      when '0007'.
        TAB-PMNTTRMS = itab1-value.
      when '0008'.
        TAB-PURCH_NO_C = itab1-value.
        when '0009'.
        TAB-ITM_NUMBER = itab1-value.
       when '0010'.
        TAB-CUST_MAT22 = itab1-value.
      when '0011'.
        TAB-PLANT  = itab1-value.
      when '0012'.
        TAB-TARGET_QTY = itab1-value.
      when '0013'.
        TAB-PARTN_ROLE = itab1-value.
      when '0014'.
        TAB-PARTN_NUMB = itab1-value.
    endcase.
  endloop.
  append tab.
  clear tab.

  sort tab by SRNO.

  LOOP AT TAB.
*    concatenate tab-REQ_DATE_H+4(4)
tab-REQ_DATE_H+2(2) tab-REQ_DATE_H+0(2) into
tab-REQ_DATE_H.
    concatenate tab-PURCH_DATE+4(4)
tab-PURCH_DATE+2(2) tab-PURCH_DATE+0(2) into
tab-PURCH_DATE.

    SRNO = TAB-SRNO.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = tab-PARTN_NUMB
      IMPORTING
        OUTPUT = tab-PARTN_NUMB.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = tab-CUST_MAT22
      IMPORTING
        OUTPUT = tab-CUST_MAT22.

    IF TAB-SRNO = SRNO.
      ORDER_HEADER_IN-DOC_TYPE = TAB-DOC_TYPE.
      ORDER_HEADER_IN-SALES_ORG = TAB-SALES_ORG.
      ORDER_HEADER_IN-DISTR_CHAN = TAB-DISTR_CHAN.
*      ORDER_HEADER_IN-REQ_DATE_H = TAB-REQ_DATE_H.
      ORDER_HEADER_IN-PURCH_DATE = TAB-PURCH_DATE.
      ORDER_HEADER_IN-PMNTTRMS = TAB-PMNTTRMS.
      ORDER_HEADER_IN-PURCH_NO_C = TAB-PURCH_NO_C.
      ORDER_HEADER_IN-DIVISION  = tab-DIVISION.
      ORDER_ITEMS_IN-ITM_NUMBER = tab-ITM_NUMBER.
      ORDER_ITEMS_IN-material = TAB-CUST_MAT22.
      ORDER_ITEMS_IN-PLANT      = TAB-PLANT.
      APPEND ORDER_ITEMS_IN.

      ORDER_PARTNERS-PARTN_ROLE = TAB-PARTN_ROLE.
      ORDER_PARTNERS-PARTN_NUMB = TAB-PARTN_NUMB.
      APPEND ORDER_PARTNERS.

      ORDER_SCHEDULES_IN-ITM_NUMBER = tab-ITM_NUMBER.
      ORDER_SCHEDULES_IN-REQ_QTY = tab-TARGET_QTY.
      append ORDER_SCHEDULES_IN.
    ENDIF.

    AT END OF SRNO.
      CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
        EXPORTING
*            SALESDOCUMENTIN               =
             ORDER_HEADER_IN               = ORDER_HEADER_IN
*            ORDER_HEADER_INX              =
*            SENDER                        =
*            BINARY_RELATIONSHIPTYPE       =
*            INT_NUMBER_ASSIGNMENT         =
*            BEHAVE_WHEN_ERROR             =
*            LOGIC_SWITCH                  =
*            TESTRUN                       =
*            CONVERT                       = ' '
       IMPORTING
         SALESDOCUMENT                 = SALESDOCUMENT
        TABLES
         RETURN                        = RETURN
             ORDER_ITEMS_IN                = ORDER_ITEMS_IN
*            ORDER_ITEMS_INX               =
             ORDER_PARTNERS                = ORDER_PARTNERS
             ORDER_SCHEDULES_IN            = 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                    = ORDER_KEYS
*            EXTENSIONIN                   =
*            PARTNERADDRESSES              =
                .

      IF SALESDOCUMENT <> SPACE.
        commit work.
        ADD 1 TO gd_update.
        it_success-SALESDOCUMENT = SALESDOCUMENT.
        append it_success.
        CLEAR :SALESDOCUMENT,ORDER_HEADER_IN.
        REFRESH : RETURN,ORDER_ITEMS_IN,ORDER_PARTNERS.
      ELSE.
        loop at return.
          it_error-SRNO = tab-SRNO.
          it_error-err_msg = return-MESSAGE .
          Append it_error.
        ENDLOOP.
        CLEAR :SALESDOCUMENT,ORDER_HEADER_IN.
        REFRESH : RETURN,ORDER_ITEMS_IN,ORDER_PARTNERS.
      ENDIF.
    endat.
  endloop.
  DESCRIBE TABLE it_success LINES gd_lines.
  IF gd_lines GT 0.
*     Display result report column headings
    PERFORM display_column_headings.
*     Display result report
    PERFORM DISPLAY_SUCESS.
  ENDIF.

* IF SUCESS FAILS Display Error Report
  DESCRIBE TABLE it_error LINES gd_lines.
  IF gd_lines GT 0.
    PERFORM errorheadings.
    PERFORM errorreport.
  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  display_column_headings
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_column_headings.
  WRITE:2 ' Success Report '(014) COLOR COL_POSITIVE.
  SKIP.
  WRITE:2 'The following records inserted
successfully:'(013).
  WRITE:/ sy-uline(15).

  FORMAT COLOR COL_HEADING.
  WRITE:/      sy-vline,
           (10) 'Sales order'(004), sy-vline.

  WRITE:/ sy-uline(15).
ENDFORM.                    "display_column_headings
*Subroutine to display SUCESS REPORT
FORM DISPLAY_SUCESS.
  FORMAT COLOR COL_NORMAL.
  LOOP AT it_success.
    WRITE:/      sy-vline,
        (10)  it_success-SALESDOCUMENT, sy-vline.

    CLEAR it_success.
  ENDLOOP.
  WRITE:/ sy-uline(15).
  REFRESH: it_success.
  FORMAT COLOR COL_BACKGROUND.
ENDFORM.                               "
DISPLAY_REPORT
*&---------------------------------------------------------------------*
*&      Form  errorreport
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM errorreport.
  LOOP AT it_error.
    WRITE:/      sy-vline,
            (10) it_error-SRNO, sy-vline,
             (40) it_error-err_msg, sy-vline.

  ENDLOOP.
  WRITE:/ sy-uline(104).
  REFRESH: it_error.

endform.                    "errorreport

*&---------------------------------------------------------------------*
*&      Form  ERRORHEADINGS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM ERRORHEADINGS.
  SKIP.
  WRITE:2 ' Error Report '(007) COLOR COL_NEGATIVE.
  SKIP.
  WRITE:2 'The following records failed during
update:'(008).
  WRITE:/ sy-uline(104).
  FORMAT COLOR COL_HEADING.
  WRITE:/      sy-vline,
          (10) 'ERROR.'(009), sy-vline.

  WRITE:/ sy-uline(104).
  FORMAT COLOR COL_NORMAL.
ENDFORM.                    "ERRORHEADINGS
**&---------------------------------------------------------------------
**
**&      Form  value_help
**&---------------------------------------------------------------------
**
**       text
**----------------------------------------------------------------------
**
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------
**
FORM value_help .
  CALL FUNCTION 'DSVAS_DOC_WS_FILENAME_GET_50'
    EXPORTING
      DEF_FILENAME     = ' '
      DEF_PATH         = ' '
      MASK             = ',*.*,*.*.'
      MODE             = 'O'
      TITLE            = ' '
    IMPORTING
      FILENAME         = p_infile
    EXCEPTIONS
      INV_WINSYS       = 1
      NO_BATCH         = 2
      SELECTION_CANCEL = 3
      SELECTION_ERROR  = 4
      OTHERS           = 5.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


endform.                    "value_help

Get help for your ABAP problems
ABAP Forum - Do you have a ABAP Question?

ABAP Programming Books
ABAP Books - Certification, BAPI, Java, Web Programming, Smart Forms, Sapscripts Reference Books

More ABAP Q & A
ABAP Questions

ABAP Tips
ABAP Forum for Discussion and Samples Program Codes for Abapers

Best regards,
SAP Basis, ABAP Programming and Other IMG Stuff
http://www.erpgreat.com

All the site contents are Copyright © www.erpgreat.com and the content authors. All rights reserved.
All product names are trademarks of their respective companies.  The site www.erpgreat.com is in no way affiliated with SAP AG. 
Every effort is made to ensure the content integrity.  Information used on this site is at your own risk. 
 The content on this site may not be reproduced or redistributed without the express written permission of 
www.erpgreat.com or the content authors.