09-18-2008 8:08 AM
Hi,
I need to create the PO using BAPI (BAPI POCREATE1) with reference to PR number.
Thanks
Lakshmi N
09-18-2008 8:11 AM
09-18-2008 8:12 AM
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
09-18-2008 8:12 AM
09-18-2008 8:14 AM
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.
09-18-2008 8:16 AM
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...