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

about bapi?

Former Member
0 Likes
485

Developeing an interface program to upload the sales order data from legacy system to SAP using BAPI for Transaction VA01. explain me in detail?

3 REPLIES 3
Read only

Former Member
0 Likes
438

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

Read only

valter_oliveira
Active Contributor
0 Likes
438

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.

Read only

former_member156446
Active Contributor
0 Likes
438

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