‎2008 May 15 6:13 PM
Developeing an interface program to upload the sales order data from legacy system to SAP using BAPI for Transaction VA01. explain me in detail?
‎2008 May 15 6:19 PM
Hi,
I am giving you the code for Purchase Order.
You can refer this code to create Sales Order.
The process is same...but The interface name changes here.
REPORT ZM_BAPI_PURCHDOCU_CREATE_01.
*----
User defined structure for Creation of PO using BAPI
*----
DATA: BEGIN OF IT_POMAIN OCCURS 0,
BUKRS(4), "cOMAPNY cODE
ESART(4), "Purchasing Document Type
ELIFN(10), "Vendor's account number
SPRAS(1), "Language Key
EKORG(4), "Purchasing Organization
BKGRP(3), "Purchasing group
WAERS(5), "Currency Key
RESWK(4), "Supplying Plant in case of stock transport order
EBELP(6), "Item Number of Purchasing Document
MATERIAL(18), "Material Number
EWERK(4), "Plant
LGORT_D(4), "Storage location
MATKL(9), "Material group
BSTMG(13), "Purchase order quantity
BSTME(3), "Order unit
BAPICUREXT(28), "Currency amount for BAPIS (with 9 decimal places)
EEIND(10), "Delivery date
ETBDT(8), "Order date of schedule line
END OF IT_POMAIN,
*----
Structures for PO Header and Tables for PO Item Data
*----
WA_POHEADER TYPE BAPIMEPOHEADER,
WA_POHEADERX TYPE BAPIMEPOHEADERX,
IT_ITEM TYPE STANDARD TABLE OF BAPIMEPOITEM WITH HEADER LINE,
IT_ITEMX TYPE STANDARD TABLE OF BAPIMEPOITEMX WITH HEADER LINE,
IT_SCHEDULE TYPE STANDARD TABLE OF BAPIMEPOSCHEDULE WITH HEADER LINE,
IT_SCHEDULEX TYPE STANDARD TABLE OF BAPIMEPOSCHEDULX WITH HEADER LINE,
******Bapi return table for Messages...
IT_RETURN TYPE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE.
*----
Designing Selection Screen
*----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
PARAMETERS: P_FILE TYPE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
*----
AT LINE SELECTION to give Value request for File Name p_file
*----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM GET_F4.
*----
START OF SELECTION
*----
START-OF-SELECTION.
DATA: LV_INFILE TYPE STRING.
LV_INFILE = P_FILE.
*----
Function Module to Upload Data from Flalt file to Internal Table
*----
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = LV_INFILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
tables
data_tab = IT_POMAIN
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
PERFORM POPULATE_BAPISTRUCT. " Populating Bapi structures
PERFORM PO_CREATE. " Creating PO using BAPI
ENDIF.
*----
END OF SELECTION
*----
END-OF-SELECTION.
PERFORM GET_ERROR. " Getting Error Records
&----
*& Form GET_F4
&----
Subroutine to get Flat File Name
----
form GET_F4 .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE.
endform. " GET_F4
&----
*& Form POPULATE_BAPISTRUCT
&----
Subroutine to Populate BAPI PO Header & Item Structures
----
form POPULATE_BAPISTRUCT .
READ TABLE IT_POMAIN INDEX SY-TABIX.
Populating BAPI Header Data
WA_POHEADER-COMP_CODE = IT_POMAIN-BUKRS.
WA_POHEADER-DOC_TYPE = IT_POMAIN-ESART.
WA_POHEADER-VENDOR = IT_POMAIN-ELIFN.
WA_POHEADER-LANGU = IT_POMAIN-SPRAS.
WA_POHEADER-PURCH_ORG = IT_POMAIN-EKORG.
WA_POHEADER-PUR_GROUP = IT_POMAIN-BKGRP.
WA_POHEADER-CURRENCY = IT_POMAIN-WAERS.
WA_POHEADER-SUPPL_PLNT = IT_POMAIN-RESWK.
Populating BAPI Header X Data
WA_POHEADERX-COMP_CODE = 'X'.
WA_POHEADERX-DOC_TYPE = 'X'.
WA_POHEADERX-VENDOR = 'X'.
WA_POHEADERX-LANGU = 'X'.
WA_POHEADERX-PURCH_ORG = 'X'.
WA_POHEADERX-PUR_GROUP = 'X'.
WA_POHEADERX-CURRENCY = 'X'.
WA_POHEADERX-SUPPL_PLNT = 'X'.
Populating BAPI Item Data
IT_ITEM-PO_ITEM = IT_POMAIN-EBELP.
IT_ITEM-MATERIAL = IT_POMAIN-MATERIAL.
IT_ITEM-PLANT = IT_POMAIN-EWERK.
IT_ITEM-STGE_LOC = IT_POMAIN-LGORT_D.
IT_ITEM-MATL_GROUP = IT_POMAIN-MATKL.
IT_ITEM-QUANTITY = IT_POMAIN-BSTMG.
IT_ITEM-PO_UNIT = IT_POMAIN-BSTME.
IT_ITEM-NET_PRICE = IT_POMAIN-BAPICUREXT.
APPEND IT_ITEM.
Populating BAPI Item X Data
IT_ITEMX-PO_ITEM = IT_POMAIN-EBELP.
IT_ITEMX-MATERIAL = 'X'.
IT_ITEMX-PLANT = 'X'.
IT_ITEMX-STGE_LOC = 'X'.
IT_ITEMX-MATL_GROUP = 'X'.
IT_ITEMX-QUANTITY = 'X'.
IT_ITEMX-PO_UNIT = 'X'.
IT_ITEMX-NET_PRICE = 'X'.
APPEND IT_ITEMX.
IT_SCHEDULE-PO_ITEM = IT_POMAIN-EBELP.
IT_SCHEDULE-DELIVERY_DATE = IT_POMAIN-EEIND.
IT_SCHEDULE-PO_DATE = IT_POMAIN-ETBDT.
APPEND IT_SCHEDULE.
IT_SCHEDULEX-PO_ITEM = IT_POMAIN-EBELP.
IT_SCHEDULEX-DELIVERY_DATE = 'X'.
IT_SCHEDULEX-PO_DATE = 'X'.
APPEND IT_SCHEDULEX.
endform. " POPULATE_BAPISTRUCT
&----
*& Form PO_CREATE
&----
Subroutine to Create PO using exsting BAPI FM -- BAPI_PO_CREATE
----
form PO_CREATE .
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = WA_POHEADER
POHEADERX = WA_POHEADERX
IMPORTING
EXPPURCHASEORDER =
EXPHEADER =
EXPPOEXPIMPHEADER =
TABLES
RETURN = IT_RETURN
POITEM = IT_ITEM
POITEMX = IT_ITEMX
POSCHEDULE = IT_SCHEDULE
POSCHEDULEX = IT_SCHEDULEX.
APPEND IT_RETURN.
endform. " PO_CREATE
&----
*& Form GET_ERROR
&----
Subroutine for Error Handling using Bapi return structure
and update the databse using BAPI_TRANSACTION_COMMIT
----
form GET_ERROR .
READ TABLE IT_RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC <> 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT IT_RETURN.
WRITE:/ IT_RETURN-TYPE,
IT_RETURN-MESSAGE.
ENDLOOP.
ELSE.
LOOP AT IT_RETURN.
WRITE:/ IT_RETURN-TYPE,
IT_RETURN-MESSAGE.
ENDLOOP.
ENDIF.
endform. " GET_ERROR
Regards
Sandeep Reddy
‎2008 May 15 6:20 PM
Hello.
Considering you have a CSV, for example.
Step1: import the data into an internal table using FM GUI_UPLOAD or UPLOAD depending where you'll put the file
Step2: create sales orders using FM BAPI_SALESORDER_CREATEFROMDAT2
Step3: after each one, use FM BAPI_TRANSACTION_COMMIT.
Best regards.
Valter Oliveira.
‎2008 May 15 6:20 PM
Hi Chandu welcome to SDN.. this is not learning forum.. u can take the support of [E learnings|https://www.sdn.sap.com/irj/sdn/elearn] of SAP to learn ABAP... please read the forum rules before posting..
check this link for ur answer:http://www.sap-img.com/fu036.htm