Application Development 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: 

BAPI to create the PO using the PR number

Former Member
0 Kudos

Hi,

I need to create the PO using BAPI (BAPI POCREATE1) with reference to PR number.

Thanks

Lakshmi N

5 REPLIES 5

Former Member
0 Kudos

Hi,

Search the From by BAPI_Po_CREATE1

Regards

Sandipan

Former Member
0 Kudos

Hi lakshmi,

welcome.

Yes you can create PO's via BAPI_PO_CREATE1. You will have to write code around the BAPI call to populate all of the required parameters (see the BAPI's documentation in SE37) and then call BAPI_TRANSACTION_COMMIT after each call to save the actual PO.

Check this link:

thanks

nagendra

Former Member
0 Kudos

Hi Narasimha,

Check the sample code in this thread:

Regards,

Chandra Sekhar

Former Member
0 Kudos

Hi Lakshmi,

You can do it using BAPI POCREATE1.

The related fields are available in POITEM structure, fields are PREQ_NO and PREQ_ITEM.

Hope this will help.

Regards,

Nitin.

former_member1052991
Active Participant
0 Kudos

hi narasimhan,

try this code,

REPORT ZGPO_CREATION_BAPI.

DATA : GT_HEADER TYPE STANDARD TABLE OF BAPIMEPOHEADER,

GW_HEADER TYPE BAPIMEPOHEADER,

GT_HEADERX TYPE STANDARD TABLE OF BAPIMEPOHEADERX,

GW_HEADERX TYPE BAPIMEPOHEADERX,

GT_ITEM TYPE STANDARD TABLE OF BAPIMEPOITEM,

GW_ITEM TYPE BAPIMEPOITEM,

GT_ITEMX TYPE STANDARD TABLE OF BAPIMEPOITEMX,

GW_ITEMX TYPE BAPIMEPOITEMX,

GT_RETURN TYPE STANDARD TABLE OF BAPIRET2,

GW_RETURN TYPE BAPIRET2,

GW_LANGU TYPE SY-LANGU,

A TYPE BAPIRET2,

V_PONUMBER TYPE BAPIMEPOHEADER-PO_NUMBER. " Internal table and work area declaration for PO header and PO item

TYPES:BEGIN OF PO_STR,

COMPANY TYPE BAPIMEPOHEADER-COMP_CODE,

DOCTYPE TYPE BAPIMEPOHEADER-DOC_TYPE,

CDATE TYPE BAPIMEPOHEADER-CREAT_DATE,

VENDOR TYPE BAPIMEPOHEADER-VENDOR,

PUR_ORG TYPE BAPIMEPOHEADER-PURCH_ORG,

PUR_GRP TYPE BAPIMEPOHEADER-PUR_GROUP,

ITEM_NUM TYPE BAPIMEPOITEM-PO_ITEM,

MATERIAL TYPE BAPIMEPOITEM-MATERIAL,

PLANT TYPE BAPIMEPOITEM-PLANT,

QUANTITY(13) TYPE C,

END OF PO_STR. "Structure declaration

DATA :GT_POSTR TYPE STANDARD TABLE OF PO_STR,

GW_POSTR TYPE PO_STR,

V_PATH TYPE STRING. "Local internal table and work area declaration

CONSTANTS: C_X TYPE C VALUE 'X'.

PARAMETERS FILEPATH TYPE IBIPPARMS-PATH OBLIGATORY DEFAULT 'D:\Guna\desktop\Sample_BAPI_PO_Creation.txt'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILEPATH.

PERFORM GETFILEPATH USING FILEPATH.

START-OF-SELECTION. "Start-of-selection event is triggered

V_PATH = FILEPATH.

PERFORM UPLOAD.

GW_LANGU = SY-LANGU.

LOOP AT GT_POSTR INTO GW_POSTR.

*READ TABLE GT_POSTR INTO GW_POSTR INDEX 1.

GW_HEADER-COMP_CODE = GW_POSTR-COMPANY .

GW_HEADER-DOC_TYPE = GW_POSTR-DOCTYPE.

GW_HEADER-CREAT_DATE = GW_POSTR-CDATE .

GW_HEADER-VENDOR = GW_POSTR-VENDOR.

GW_HEADER-LANGU = GW_LANGU.

GW_HEADER-PURCH_ORG = GW_POSTR-PUR_ORG.

GW_HEADER-PUR_GROUP = GW_POSTR-PUR_GRP.

GW_HEADERX-COMP_CODE = C_X.

GW_HEADERX-DOC_TYPE = C_X.

GW_HEADERX-CREAT_DATE = C_X .

GW_HEADERX-VENDOR = C_X.

GW_HEADERX-LANGU = C_X.

GW_HEADERX-PURCH_ORG = C_X.

GW_HEADERX-PUR_GROUP = C_X.

GW_ITEM-PO_ITEM = GW_POSTR-ITEM_NUM.

GW_ITEM-MATERIAL = GW_POSTR-MATERIAL .

GW_ITEM-PLANT = GW_POSTR-PLANT.

GW_ITEM-QUANTITY = GW_POSTR-QUANTITY.

APPEND GW_ITEM TO GT_ITEM.

GW_ITEMX-PO_ITEM = GW_POSTR-ITEM_NUM.

GW_ITEMX-MATERIAL = C_X .

GW_ITEMX-PLANT = C_X.

GW_ITEMX-QUANTITY = C_X.

APPEND GW_ITEMX TO GT_ITEMX. "Assigning the flat file value to the work area

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

POHEADER = GW_HEADER

POHEADERX = GW_HEADERX

POADDRVENDOR =

TESTRUN =

MEMORY_UNCOMPLETE =

MEMORY_COMPLETE =

POEXPIMPHEADER =

POEXPIMPHEADERX =

VERSIONS =

NO_MESSAGING =

NO_MESSAGE_REQ =

NO_AUTHORITY =

NO_PRICE_FROM_PO =

IMPORTING

EXPPURCHASEORDER = V_PONUMBER

EXPHEADER =

EXPPOEXPIMPHEADER =

TABLES

RETURN = GT_RETURN

POITEM = GT_ITEM

POITEMX = GT_ITEMX

POADDRDELIVERY =

POSCHEDULE =

POSCHEDULEX =

POACCOUNT =

POACCOUNTPROFITSEGMENT =

POACCOUNTX =

POCONDHEADER =

POCONDHEADERX =

POCOND =

POCONDX =

POLIMITS =

POCONTRACTLIMITS =

POSERVICES =

POSRVACCESSVALUES =

POSERVICESTEXT =

EXTENSIONIN =

EXTENSIONOUT =

POEXPIMPITEM =

POEXPIMPITEMX =

POTEXTHEADER =

POTEXTITEM =

ALLVERSIONS =

POPARTNER =

POCOMPONENTS =

POCOMPONENTSX =

POSHIPPING =

POSHIPPINGX =

POSHIPPINGEXP =

. "BAPI PO creation function is called

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

IMPORTING

RETURN = A

.

*COMMIT WORK .

WRITE: V_PONUMBER.

CLEAR : GT_RETURN, GW_ITEM,GW_ITEMX,GT_ITEM,GT_ITEMX,

GW_HEADER,GW_HEADERX, V_PONUMBER. "All the work area is cleared

ENDLOOP.

*WRITE: V_PONUMBER.

&----


*& Form GETFILEPATH

&----


text

-


-->P_FILEPATH text

-


FORM GETFILEPATH USING P_FILEPATH.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SYST-CPROG

DYNPRO_NUMBER = SYST-DYNNR

IMPORTING

FILE_NAME = FILEPATH

.

ENDFORM. " GETFILEPATH

&----


*& Form UPLOAD

&----


text

-


--> p1 text

<-- p2 text

-


FORM UPLOAD .

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V_PATH

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = ' '

HEADER_LENGTH = 0

READ_BY_LINE = 'X'

DAT_MODE = ' '

CODEPAGE = ' '

IGNORE_CERR = ABAP_TRUE

REPLACEMENT = '#'

CHECK_BOM = ' '

VIRUS_SCAN_PROFILE =

NO_AUTH_CHECK = ' '

IMPORTING

FILELENGTH =

HEADER =

TABLES

DATA_TAB = GT_POSTR

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.

ENDIF.

ENDFORM. " UPLOADREPORT ZGPO_CREATION_BAPI.

DATA : GT_HEADER TYPE STANDARD TABLE OF BAPIMEPOHEADER,

GW_HEADER TYPE BAPIMEPOHEADER,

GT_HEADERX TYPE STANDARD TABLE OF BAPIMEPOHEADERX,

GW_HEADERX TYPE BAPIMEPOHEADERX,

GT_ITEM TYPE STANDARD TABLE OF BAPIMEPOITEM,

GW_ITEM TYPE BAPIMEPOITEM,

GT_ITEMX TYPE STANDARD TABLE OF BAPIMEPOITEMX,

GW_ITEMX TYPE BAPIMEPOITEMX,

GT_RETURN TYPE STANDARD TABLE OF BAPIRET2,

GW_RETURN TYPE BAPIRET2,

GW_LANGU TYPE SY-LANGU,

A TYPE BAPIRET2,

V_PONUMBER TYPE BAPIMEPOHEADER-PO_NUMBER. " Internal table and work area declaration for PO header and PO item

TYPES:BEGIN OF PO_STR,

COMPANY TYPE BAPIMEPOHEADER-COMP_CODE,

DOCTYPE TYPE BAPIMEPOHEADER-DOC_TYPE,

CDATE TYPE BAPIMEPOHEADER-CREAT_DATE,

VENDOR TYPE BAPIMEPOHEADER-VENDOR,

PUR_ORG TYPE BAPIMEPOHEADER-PURCH_ORG,

PUR_GRP TYPE BAPIMEPOHEADER-PUR_GROUP,

ITEM_NUM TYPE BAPIMEPOITEM-PO_ITEM,

MATERIAL TYPE BAPIMEPOITEM-MATERIAL,

PLANT TYPE BAPIMEPOITEM-PLANT,

QUANTITY(13) TYPE C,

END OF PO_STR. "Structure declaration

DATA :GT_POSTR TYPE STANDARD TABLE OF PO_STR,

GW_POSTR TYPE PO_STR,

V_PATH TYPE STRING. "Local internal table and work area declaration

CONSTANTS: C_X TYPE C VALUE 'X'.

PARAMETERS FILEPATH TYPE IBIPPARMS-PATH OBLIGATORY DEFAULT 'D:\Guna\desktop\Sample_BAPI_PO_Creation.txt'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILEPATH.

PERFORM GETFILEPATH USING FILEPATH.

START-OF-SELECTION. "Start-of-selection event is triggered

V_PATH = FILEPATH.

PERFORM UPLOAD.

GW_LANGU = SY-LANGU.

LOOP AT GT_POSTR INTO GW_POSTR.

*READ TABLE GT_POSTR INTO GW_POSTR INDEX 1.

GW_HEADER-COMP_CODE = GW_POSTR-COMPANY .

GW_HEADER-DOC_TYPE = GW_POSTR-DOCTYPE.

GW_HEADER-CREAT_DATE = GW_POSTR-CDATE .

GW_HEADER-VENDOR = GW_POSTR-VENDOR.

GW_HEADER-LANGU = GW_LANGU.

GW_HEADER-PURCH_ORG = GW_POSTR-PUR_ORG.

GW_HEADER-PUR_GROUP = GW_POSTR-PUR_GRP.

GW_HEADERX-COMP_CODE = C_X.

GW_HEADERX-DOC_TYPE = C_X.

GW_HEADERX-CREAT_DATE = C_X .

GW_HEADERX-VENDOR = C_X.

GW_HEADERX-LANGU = C_X.

GW_HEADERX-PURCH_ORG = C_X.

GW_HEADERX-PUR_GROUP = C_X.

GW_ITEM-PO_ITEM = GW_POSTR-ITEM_NUM.

GW_ITEM-MATERIAL = GW_POSTR-MATERIAL .

GW_ITEM-PLANT = GW_POSTR-PLANT.

GW_ITEM-QUANTITY = GW_POSTR-QUANTITY.

APPEND GW_ITEM TO GT_ITEM.

GW_ITEMX-PO_ITEM = GW_POSTR-ITEM_NUM.

GW_ITEMX-MATERIAL = C_X .

GW_ITEMX-PLANT = C_X.

GW_ITEMX-QUANTITY = C_X.

APPEND GW_ITEMX TO GT_ITEMX. "Assigning the flat file value to the work area

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

POHEADER = GW_HEADER

POHEADERX = GW_HEADERX

POADDRVENDOR =

TESTRUN =

MEMORY_UNCOMPLETE =

MEMORY_COMPLETE =

POEXPIMPHEADER =

POEXPIMPHEADERX =

VERSIONS =

NO_MESSAGING =

NO_MESSAGE_REQ =

NO_AUTHORITY =

NO_PRICE_FROM_PO =

IMPORTING

EXPPURCHASEORDER = V_PONUMBER

EXPHEADER =

EXPPOEXPIMPHEADER =

TABLES

RETURN = GT_RETURN

POITEM = GT_ITEM

POITEMX = GT_ITEMX

POADDRDELIVERY =

POSCHEDULE =

POSCHEDULEX =

POACCOUNT =

POACCOUNTPROFITSEGMENT =

POACCOUNTX =

POCONDHEADER =

POCONDHEADERX =

POCOND =

POCONDX =

POLIMITS =

POCONTRACTLIMITS =

POSERVICES =

POSRVACCESSVALUES =

POSERVICESTEXT =

EXTENSIONIN =

EXTENSIONOUT =

POEXPIMPITEM =

POEXPIMPITEMX =

POTEXTHEADER =

POTEXTITEM =

ALLVERSIONS =

POPARTNER =

POCOMPONENTS =

POCOMPONENTSX =

POSHIPPING =

POSHIPPINGX =

POSHIPPINGEXP =

. "BAPI PO creation function is called

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

IMPORTING

RETURN = A

.

*COMMIT WORK .

WRITE: V_PONUMBER.

CLEAR : GT_RETURN, GW_ITEM,GW_ITEMX,GT_ITEM,GT_ITEMX,

GW_HEADER,GW_HEADERX, V_PONUMBER. "All the work area is cleared

ENDLOOP.

*WRITE: V_PONUMBER.

&----


*& Form GETFILEPATH

&----


text

-


-->P_FILEPATH text

-


FORM GETFILEPATH USING P_FILEPATH.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SYST-CPROG

DYNPRO_NUMBER = SYST-DYNNR

IMPORTING

FILE_NAME = FILEPATH

.

ENDFORM. " GETFILEPATH

&----


*& Form UPLOAD

&----


text

-


--> p1 text

<-- p2 text

-


FORM UPLOAD .

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V_PATH

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = ' '

HEADER_LENGTH = 0

READ_BY_LINE = 'X'

DAT_MODE = ' '

CODEPAGE = ' '

IGNORE_CERR = ABAP_TRUE

REPLACEMENT = '#'

CHECK_BOM = ' '

VIRUS_SCAN_PROFILE =

NO_AUTH_CHECK = ' '

IMPORTING

FILELENGTH =

HEADER =

TABLES

DATA_TAB = GT_POSTR

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.

ENDIF.

ENDFORM. " UPLOADREPORT ZGPO_CREATION_BAPI.

DATA : GT_HEADER TYPE STANDARD TABLE OF BAPIMEPOHEADER,

GW_HEADER TYPE BAPIMEPOHEADER,

GT_HEADERX TYPE STANDARD TABLE OF BAPIMEPOHEADERX,

GW_HEADERX TYPE BAPIMEPOHEADERX,

GT_ITEM TYPE STANDARD TABLE OF BAPIMEPOITEM,

GW_ITEM TYPE BAPIMEPOITEM,

GT_ITEMX TYPE STANDARD TABLE OF BAPIMEPOITEMX,

GW_ITEMX TYPE BAPIMEPOITEMX,

GT_RETURN TYPE STANDARD TABLE OF BAPIRET2,

GW_RETURN TYPE BAPIRET2,

GW_LANGU TYPE SY-LANGU,

A TYPE BAPIRET2,

V_PONUMBER TYPE BAPIMEPOHEADER-PO_NUMBER. " Internal table and work area declaration for PO header and PO item

TYPES:BEGIN OF PO_STR,

COMPANY TYPE BAPIMEPOHEADER-COMP_CODE,

DOCTYPE TYPE BAPIMEPOHEADER-DOC_TYPE,

CDATE TYPE BAPIMEPOHEADER-CREAT_DATE,

VENDOR TYPE BAPIMEPOHEADER-VENDOR,

PUR_ORG TYPE BAPIMEPOHEADER-PURCH_ORG,

PUR_GRP TYPE BAPIMEPOHEADER-PUR_GROUP,

ITEM_NUM TYPE BAPIMEPOITEM-PO_ITEM,

MATERIAL TYPE BAPIMEPOITEM-MATERIAL,

PLANT TYPE BAPIMEPOITEM-PLANT,

QUANTITY(13) TYPE C,

END OF PO_STR. "Structure declaration

DATA :GT_POSTR TYPE STANDARD TABLE OF PO_STR,

GW_POSTR TYPE PO_STR,

V_PATH TYPE STRING. "Local internal table and work area declaration

CONSTANTS: C_X TYPE C VALUE 'X'.

PARAMETERS FILEPATH TYPE IBIPPARMS-PATH OBLIGATORY DEFAULT 'D:\Guna\desktop\Sample_BAPI_PO_Creation.txt'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILEPATH.

PERFORM GETFILEPATH USING FILEPATH.

START-OF-SELECTION. "Start-of-selection event is triggered

V_PATH = FILEPATH.

PERFORM UPLOAD.

GW_LANGU = SY-LANGU.

LOOP AT GT_POSTR INTO GW_POSTR.

*READ TABLE GT_POSTR INTO GW_POSTR INDEX 1.

GW_HEADER-COMP_CODE = GW_POSTR-COMPANY .

GW_HEADER-DOC_TYPE = GW_POSTR-DOCTYPE.

GW_HEADER-CREAT_DATE = GW_POSTR-CDATE .

GW_HEADER-VENDOR = GW_POSTR-VENDOR.

GW_HEADER-LANGU = GW_LANGU.

GW_HEADER-PURCH_ORG = GW_POSTR-PUR_ORG.

GW_HEADER-PUR_GROUP = GW_POSTR-PUR_GRP.

GW_HEADERX-COMP_CODE = C_X.

GW_HEADERX-DOC_TYPE = C_X.

GW_HEADERX-CREAT_DATE = C_X .

GW_HEADERX-VENDOR = C_X.

GW_HEADERX-LANGU = C_X.

GW_HEADERX-PURCH_ORG = C_X.

GW_HEADERX-PUR_GROUP = C_X.

GW_ITEM-PO_ITEM = GW_POSTR-ITEM_NUM.

GW_ITEM-MATERIAL = GW_POSTR-MATERIAL .

GW_ITEM-PLANT = GW_POSTR-PLANT.

GW_ITEM-QUANTITY = GW_POSTR-QUANTITY.

APPEND GW_ITEM TO GT_ITEM.

GW_ITEMX-PO_ITEM = GW_POSTR-ITEM_NUM.

GW_ITEMX-MATERIAL = C_X .

GW_ITEMX-PLANT = C_X.

GW_ITEMX-QUANTITY = C_X.

APPEND GW_ITEMX TO GT_ITEMX. "Assigning the flat file value to the work area

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

POHEADER = GW_HEADER

POHEADERX = GW_HEADERX

POADDRVENDOR =

TESTRUN =

MEMORY_UNCOMPLETE =

MEMORY_COMPLETE =

POEXPIMPHEADER =

POEXPIMPHEADERX =

VERSIONS =

NO_MESSAGING =

NO_MESSAGE_REQ =

NO_AUTHORITY =

NO_PRICE_FROM_PO =

IMPORTING

EXPPURCHASEORDER = V_PONUMBER

EXPHEADER =

EXPPOEXPIMPHEADER =

TABLES

RETURN = GT_RETURN

POITEM = GT_ITEM

POITEMX = GT_ITEMX

POADDRDELIVERY =

POSCHEDULE =

POSCHEDULEX =

POACCOUNT =

POACCOUNTPROFITSEGMENT =

POACCOUNTX =

POCONDHEADER =

POCONDHEADERX =

POCOND =

POCONDX =

POLIMITS =

POCONTRACTLIMITS =

POSERVICES =

POSRVACCESSVALUES =

POSERVICESTEXT =

EXTENSIONIN =

EXTENSIONOUT =

POEXPIMPITEM =

POEXPIMPITEMX =

POTEXTHEADER =

POTEXTITEM =

ALLVERSIONS =

POPARTNER =

POCOMPONENTS =

POCOMPONENTSX =

POSHIPPING =

POSHIPPINGX =

POSHIPPINGEXP =

. "BAPI PO creation function is called

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

IMPORTING

RETURN = A

.

*COMMIT WORK .

WRITE: V_PONUMBER.

CLEAR : GT_RETURN, GW_ITEM,GW_ITEMX,GT_ITEM,GT_ITEMX,

GW_HEADER,GW_HEADERX, V_PONUMBER. "All the work area is cleared

ENDLOOP.

*WRITE: V_PONUMBER.

&----


*& Form GETFILEPATH

&----


text

-


-->P_FILEPATH text

-


FORM GETFILEPATH USING P_FILEPATH.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SYST-CPROG

DYNPRO_NUMBER = SYST-DYNNR

IMPORTING

FILE_NAME = FILEPATH

.

ENDFORM. " GETFILEPATH

&----


*& Form UPLOAD

&----


text

-


--> p1 text

<-- p2 text

-


FORM UPLOAD .

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V_PATH

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = ' '

HEADER_LENGTH = 0

READ_BY_LINE = 'X'

DAT_MODE = ' '

CODEPAGE = ' '

IGNORE_CERR = ABAP_TRUE

REPLACEMENT = '#'

CHECK_BOM = ' '

VIRUS_SCAN_PROFILE =

NO_AUTH_CHECK = ' '

IMPORTING

FILELENGTH =

HEADER =

TABLES

DATA_TAB = GT_POSTR

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.

ENDIF.

ENDFORM. " UPLOADREPORT ZGPO_CREATION_BAPI.

DATA : GT_HEADER TYPE STANDARD TABLE OF BAPIMEPOHEADER,

GW_HEADER TYPE BAPIMEPOHEADER,

GT_HEADERX TYPE STANDARD TABLE OF BAPIMEPOHEADERX,

GW_HEADERX TYPE BAPIMEPOHEADERX,

GT_ITEM TYPE STANDARD TABLE OF BAPIMEPOITEM,

GW_ITEM TYPE BAPIMEPOITEM,

GT_ITEMX TYPE STANDARD TABLE OF BAPIMEPOITEMX,

GW_ITEMX TYPE BAPIMEPOITEMX,

GT_RETURN TYPE STANDARD TABLE OF BAPIRET2,

GW_RETURN TYPE BAPIRET2,

GW_LANGU TYPE SY-LANGU,

A TYPE BAPIRET2,

V_PONUMBER TYPE BAPIMEPOHEADER-PO_NUMBER. " Internal table and work area declaration for PO header and PO item

TYPES:BEGIN OF PO_STR,

COMPANY TYPE BAPIMEPOHEADER-COMP_CODE,

DOCTYPE TYPE BAPIMEPOHEADER-DOC_TYPE,

CDATE TYPE BAPIMEPOHEADER-CREAT_DATE,

VENDOR TYPE BAPIMEPOHEADER-VENDOR,

PUR_ORG TYPE BAPIMEPOHEADER-PURCH_ORG,

PUR_GRP TYPE BAPIMEPOHEADER-PUR_GROUP,

ITEM_NUM TYPE BAPIMEPOITEM-PO_ITEM,

MATERIAL TYPE BAPIMEPOITEM-MATERIAL,

PLANT TYPE BAPIMEPOITEM-PLANT,

QUANTITY(13) TYPE C,

END OF PO_STR. "Structure declaration

DATA :GT_POSTR TYPE STANDARD TABLE OF PO_STR,

GW_POSTR TYPE PO_STR,

V_PATH TYPE STRING. "Local internal table and work area declaration

CONSTANTS: C_X TYPE C VALUE 'X'.

PARAMETERS FILEPATH TYPE IBIPPARMS-PATH OBLIGATORY DEFAULT 'D:\Guna\desktop\Sample_BAPI_PO_Creation.txt'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILEPATH.

PERFORM GETFILEPATH USING FILEPATH.

START-OF-SELECTION. "Start-of-selection event is triggered

V_PATH = FILEPATH.

PERFORM UPLOAD.

GW_LANGU = SY-LANGU.

LOOP AT GT_POSTR INTO GW_POSTR.

*READ TABLE GT_POSTR INTO GW_POSTR INDEX 1.

GW_HEADER-COMP_CODE = GW_POSTR-COMPANY .

GW_HEADER-DOC_TYPE = GW_POSTR-DOCTYPE.

GW_HEADER-CREAT_DATE = GW_POSTR-CDATE .

GW_HEADER-VENDOR = GW_POSTR-VENDOR.

GW_HEADER-LANGU = GW_LANGU.

GW_HEADER-PURCH_ORG = GW_POSTR-PUR_ORG.

GW_HEADER-PUR_GROUP = GW_POSTR-PUR_GRP.

GW_HEADERX-COMP_CODE = C_X.

GW_HEADERX-DOC_TYPE = C_X.

GW_HEADERX-CREAT_DATE = C_X .

GW_HEADERX-VENDOR = C_X.

GW_HEADERX-LANGU = C_X.

GW_HEADERX-PURCH_ORG = C_X.

GW_HEADERX-PUR_GROUP = C_X.

GW_ITEM-PO_ITEM = GW_POSTR-ITEM_NUM.

GW_ITEM-MATERIAL = GW_POSTR-MATERIAL .

GW_ITEM-PLANT = GW_POSTR-PLANT.

GW_ITEM-QUANTITY = GW_POSTR-QUANTITY.

APPEND GW_ITEM TO GT_ITEM.

GW_ITEMX-PO_ITEM = GW_POSTR-ITEM_NUM.

GW_ITEMX-MATERIAL = C_X .

GW_ITEMX-PLANT = C_X.

GW_ITEMX-QUANTITY = C_X.

APPEND GW_ITEMX TO GT_ITEMX. "Assigning the flat file value to the work area

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

POHEADER = GW_HEADER

POHEADERX = GW_HEADERX

POADDRVENDOR =

TESTRUN =

MEMORY_UNCOMPLETE =

MEMORY_COMPLETE =

POEXPIMPHEADER =

POEXPIMPHEADERX =

VERSIONS =

NO_MESSAGING =

NO_MESSAGE_REQ =

NO_AUTHORITY =

NO_PRICE_FROM_PO =

IMPORTING

EXPPURCHASEORDER = V_PONUMBER

EXPHEADER =

EXPPOEXPIMPHEADER =

TABLES

RETURN = GT_RETURN

POITEM = GT_ITEM

POITEMX = GT_ITEMX

POADDRDELIVERY =

POSCHEDULE =

POSCHEDULEX =

POACCOUNT =

POACCOUNTPROFITSEGMENT =

POACCOUNTX =

POCONDHEADER =

POCONDHEADERX =

POCOND =

POCONDX =

POLIMITS =

POCONTRACTLIMITS =

POSERVICES =

POSRVACCESSVALUES =

POSERVICESTEXT =

EXTENSIONIN =

EXTENSIONOUT =

POEXPIMPITEM =

POEXPIMPITEMX =

POTEXTHEADER =

POTEXTITEM =

ALLVERSIONS =

POPARTNER =

POCOMPONENTS =

POCOMPONENTSX =

POSHIPPING =

POSHIPPINGX =

POSHIPPINGEXP =

. "BAPI PO creation function is called

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

IMPORTING

RETURN = A

.

*COMMIT WORK .

WRITE: V_PONUMBER.

CLEAR : GT_RETURN, GW_ITEM,GW_ITEMX,GT_ITEM,GT_ITEMX,

GW_HEADER,GW_HEADERX, V_PONUMBER. "All the work area is cleared

ENDLOOP.

*WRITE: V_PONUMBER.

&----


*& Form GETFILEPATH

&----


text

-


-->P_FILEPATH text

-


FORM GETFILEPATH USING P_FILEPATH.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SYST-CPROG

DYNPRO_NUMBER = SYST-DYNNR

IMPORTING

FILE_NAME = FILEPATH

.

ENDFORM. " GETFILEPATH

&----


*& Form UPLOAD

&----


text

-


--> p1 text

<-- p2 text

-


FORM UPLOAD .

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V_PATH

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = ' '

HEADER_LENGTH = 0

READ_BY_LINE = 'X'

DAT_MODE = ' '

CODEPAGE = ' '

IGNORE_CERR = ABAP_TRUE

REPLACEMENT = '#'

CHECK_BOM = ' '

VIRUS_SCAN_PROFILE =

NO_AUTH_CHECK = ' '

IMPORTING

FILELENGTH =

HEADER =

TABLES

DATA_TAB = GT_POSTR

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.

ENDIF.

ENDFORM. " UPLOAD

regards,

guna...