SAP BAPI_PO_CREATE1 Function Module for Create Purchase Order
BAPI_PO_CREATE1 is a standard bapi po create1 SAP function module available within SAP R/3 or S/4 Hana systems, depending on your version and release level. It is used for Create Purchase Order processing and below is the pattern details for this FM, showing its interface including any import and export parameters, exceptions etc. there is also a full "cut and paste" ABAP pattern code example, along with implementation ABAP coding, documentation and contribution comments specific to this or related objects.
See here to view full function module documentation and code listing for bapi po create1 FM, simply by entering the name BAPI_PO_CREATE1 into the relevant SAP transaction such as SE37 or SE38.
Function Group: 2012
Program Name: SAPL2012
Main Program: SAPL2012
Appliation area:
Release date: 06-May-2002
Mode(Normal, Remote etc): Remote-Enabled
Update:
Function BAPI_PO_CREATE1 pattern details
In-order to call this FM within your sap programs, simply using the below ABAP pattern details to trigger the function call...or see the full ABAP code listing at the end of this article. You can simply cut and paste this code into your ABAP progrom as it is, including variable declarations.CALL FUNCTION 'BAPI_PO_CREATE1'"Create Purchase Order.
EXPORTING
POHEADER = "Header Data
* NO_MESSAGING = "No message determination
* NO_MESSAGE_REQ = "No messages necessary
* NO_AUTHORITY = "No Authorization Check
* NO_PRICE_FROM_PO = "No Adoption of Price from Last Document
* PARK_COMPLETE = "Park Document if NOT Faulty
* PARK_UNCOMPLETE = "Park Document if Faulty
* POHEADERX = "Header Data (Change Parameter)
* POADDRVENDOR = "Address of Vendor
* TESTRUN = "Test Indicator
* MEMORY_UNCOMPLETE = "Hold Purchase Order if Faulty
* MEMORY_COMPLETE = "Hold Purchase Order if NOT Faulty
* POEXPIMPHEADER = "Export Trade: Header Data
* POEXPIMPHEADERX = "Foreign Trade: Change Bar: Header Data
* VERSIONS = "Version Management
IMPORTING
EXPPURCHASEORDER = "Purchasing Document Number
EXPHEADER = "Header Data
EXPPOEXPIMPHEADER = "Export Trade: Header Data
TABLES
* RETURN = "Return Parameter
* POCONDHEADER = "Conditions (Header)
* POCONDHEADERX = "Conditions (Header, Change Parameter)
* POCOND = "Conditions (Items)
* POCONDX = "Conditions (Items, Change Parameter)
* POLIMITS = "External Services: Limits
* POCONTRACTLIMITS = "External Services: Contract Limits
* POSERVICES = "External Services: Service Lines
* POSRVACCESSVALUES = "External Services: Account Assignment Distribution for Service Lines
* POSERVICESTEXT = "External Services: Service Long Text
* EXTENSIONIN = "Customer's Own Fields (Import Parameters)
* POITEM = "Item Data
* EXTENSIONOUT = "Customer's Own Fields (Export Parameters)
* POEXPIMPITEM = "Foreign Trade: Item Data
* POEXPIMPITEMX = "Foreign Trade: Change Parameter: Item Data
* POTEXTHEADER = "Header Texts
* POTEXTITEM = "Item Texts
* ALLVERSIONS = "All Versions (Export Parameter)
* POPARTNER = "Partner
* POCOMPONENTS = "BAPI Structure for Components
* POCOMPONENTSX = "Update Information for Components in BUS2012 API
* POSHIPPING = "BAPI Shipping Data for Stock Transport Orders
* POITEMX = "Item Data (Change Parameter)
* POSHIPPINGX = "BAPI Shipping Data Change Parameter
* POSHIPPINGEXP = "Export Structure for Shipping Data
* SERIALNUMBER = "Serial Numbers in Purchase Order BAPIs
* SERIALNUMBERX = "Change Parameter: Serial Number in Purchase Order BAPIs
* INVPLANHEADER = "Invoicing Plan Header Data
* INVPLANHEADERX = "Invoicing Plan Header Data (Change Parameter)
* INVPLANITEM = "Invoicing Plan Item Data
* INVPLANITEMX = "Invoicing Plan Item Data (Change Parameter)
* POADDRDELIVERY = "Addresses for Inward Delivery (Item)
* POSCHEDULE = "Delivery Schedule
* POSCHEDULEX = "Delivery Schedule (Change Parameter)
* POACCOUNT = "Account Assignment Fields
* POACCOUNTPROFITSEGMENT = "Reservation Profitability Segment: BAPI_PROFITABILITY_SEGMENT
* POACCOUNTX = "Account Assignment Fields (Change Parameter)
Customer Function user exits
Below is a list of CUSTOMER FUNCTION exit user exits that are available within this program and maybe relevant for this FM.EXIT_SAPL2012_001 Customer Exit for Creating an Enjoy Purchase Order Using BAPI_PO_CREATE1
EXIT_SAPL2012_002 Customer Exit for Changing an Enjoy Purchase Order Using BAPI_PO_CHANGE
EXIT_SAPL2012_003 Customer Exit for Creating an Enjoy Purchase Order Using BAPI_PO_CREATE1
EXIT_SAPL2012_004 Customer Exit for Changing an Enjoy Purchase Order Using BAPI_PO_CHANGE
IMPORTING Parameters details for BAPI_PO_CREATE1
POHEADER - Header Data
Data type: BAPIMEPOHEADEROptional: No
Call by Reference: No ( called with pass by value option)
NO_MESSAGING - No message determination
Data type: BAPIFLAG-BAPIFLAGOptional: Yes
Call by Reference: No ( called with pass by value option)
NO_MESSAGE_REQ - No messages necessary
Data type: BAPIFLAG-BAPIFLAGOptional: Yes
Call by Reference: No ( called with pass by value option)
NO_AUTHORITY - No Authorization Check
Data type: BAPIFLAG-BAPIFLAGOptional: Yes
Call by Reference: No ( called with pass by value option)
NO_PRICE_FROM_PO - No Adoption of Price from Last Document
Data type: BAPIFLAG-BAPIFLAGOptional: Yes
Call by Reference: No ( called with pass by value option)
PARK_COMPLETE - Park Document if NOT Faulty
Data type: BAPIFLAG-BAPIFLAGOptional: Yes
Call by Reference: No ( called with pass by value option)
PARK_UNCOMPLETE - Park Document if Faulty
Data type: BAPIFLAG-BAPIFLAGOptional: Yes
Call by Reference: No ( called with pass by value option)
POHEADERX - Header Data (Change Parameter)
Data type: BAPIMEPOHEADERXOptional: Yes
Call by Reference: No ( called with pass by value option)
POADDRVENDOR - Address of Vendor
Data type: BAPIMEPOADDRVENDOROptional: Yes
Call by Reference: No ( called with pass by value option)
TESTRUN - Test Indicator
Data type: BAPIFLAG-BAPIFLAGOptional: Yes
Call by Reference: No ( called with pass by value option)
MEMORY_UNCOMPLETE - Hold Purchase Order if Faulty
Data type: BAPIFLAG-BAPIFLAGOptional: Yes
Call by Reference: No ( called with pass by value option)
MEMORY_COMPLETE - Hold Purchase Order if NOT Faulty
Data type: BAPIFLAG-BAPIFLAGOptional: Yes
Call by Reference: No ( called with pass by value option)
POEXPIMPHEADER - Export Trade: Header Data
Data type: BAPIEIKPOptional: Yes
Call by Reference: No ( called with pass by value option)
POEXPIMPHEADERX - Foreign Trade: Change Bar: Header Data
Data type: BAPIEIKPXOptional: Yes
Call by Reference: No ( called with pass by value option)
VERSIONS - Version Management
Data type: BAPIMEDCMOptional: Yes
Call by Reference: No ( called with pass by value option)
EXPORTING Parameters details for BAPI_PO_CREATE1
EXPPURCHASEORDER - Purchasing Document Number
Data type: BAPIMEPOHEADER-PO_NUMBEROptional: No
Call by Reference: No ( called with pass by value option)
EXPHEADER - Header Data
Data type: BAPIMEPOHEADEROptional: No
Call by Reference: No ( called with pass by value option)
EXPPOEXPIMPHEADER - Export Trade: Header Data
Data type: BAPIEIKPOptional: No
Call by Reference: No ( called with pass by value option)
TABLES Parameters details for BAPI_PO_CREATE1
RETURN - Return Parameter
Data type: BAPIRET2Optional: Yes
Call by Reference: Yes
POCONDHEADER - Conditions (Header)
Data type: BAPIMEPOCONDHEADEROptional: Yes
Call by Reference: Yes
POCONDHEADERX - Conditions (Header, Change Parameter)
Data type: BAPIMEPOCONDHEADERXOptional: Yes
Call by Reference: Yes
POCOND - Conditions (Items)
Data type: BAPIMEPOCONDOptional: Yes
Call by Reference: Yes
POCONDX - Conditions (Items, Change Parameter)
Data type: BAPIMEPOCONDXOptional: Yes
Call by Reference: Yes
POLIMITS - External Services: Limits
Data type: BAPIESUHCOptional: Yes
Call by Reference: Yes
POCONTRACTLIMITS - External Services: Contract Limits
Data type: BAPIESUCCOptional: Yes
Call by Reference: Yes
POSERVICES - External Services: Service Lines
Data type: BAPIESLLCOptional: Yes
Call by Reference: Yes
POSRVACCESSVALUES - External Services: Account Assignment Distribution for Service Lines
Data type: BAPIESKLCOptional: Yes
Call by Reference: Yes
POSERVICESTEXT - External Services: Service Long Text
Data type: BAPIESLLTXOptional: Yes
Call by Reference: Yes
EXTENSIONIN - Customer's Own Fields (Import Parameters)
Data type: BAPIPAREXOptional: Yes
Call by Reference: Yes
POITEM - Item Data
Data type: BAPIMEPOITEMOptional: Yes
Call by Reference: Yes
EXTENSIONOUT - Customer's Own Fields (Export Parameters)
Data type: BAPIPAREXOptional: Yes
Call by Reference: Yes
POEXPIMPITEM - Foreign Trade: Item Data
Data type: BAPIEIPOOptional: Yes
Call by Reference: Yes
POEXPIMPITEMX - Foreign Trade: Change Parameter: Item Data
Data type: BAPIEIPOXOptional: Yes
Call by Reference: Yes
POTEXTHEADER - Header Texts
Data type: BAPIMEPOTEXTHEADEROptional: Yes
Call by Reference: Yes
POTEXTITEM - Item Texts
Data type: BAPIMEPOTEXTOptional: Yes
Call by Reference: Yes
ALLVERSIONS - All Versions (Export Parameter)
Data type: BAPIMEDCM_ALLVERSIONSOptional: Yes
Call by Reference: Yes
POPARTNER - Partner
Data type: BAPIEKKOPOptional: Yes
Call by Reference: Yes
POCOMPONENTS - BAPI Structure for Components
Data type: BAPIMEPOCOMPONENTOptional: Yes
Call by Reference: Yes
POCOMPONENTSX - Update Information for Components in BUS2012 API
Data type: BAPIMEPOCOMPONENTXOptional: Yes
Call by Reference: Yes
POSHIPPING - BAPI Shipping Data for Stock Transport Orders
Data type: BAPIITEMSHIPOptional: Yes
Call by Reference: Yes
POITEMX - Item Data (Change Parameter)
Data type: BAPIMEPOITEMXOptional: Yes
Call by Reference: Yes
POSHIPPINGX - BAPI Shipping Data Change Parameter
Data type: BAPIITEMSHIPXOptional: Yes
Call by Reference: Yes
POSHIPPINGEXP - Export Structure for Shipping Data
Data type: BAPIMEPOSHIPPEXPOptional: Yes
Call by Reference: Yes
SERIALNUMBER - Serial Numbers in Purchase Order BAPIs
Data type: BAPIMEPOSERIALNOOptional: Yes
Call by Reference: Yes
SERIALNUMBERX - Change Parameter: Serial Number in Purchase Order BAPIs
Data type: BAPIMEPOSERIALNOXOptional: Yes
Call by Reference: Yes
INVPLANHEADER - Invoicing Plan Header Data
Data type: BAPI_INVOICE_PLAN_HEADEROptional: Yes
Call by Reference: Yes
INVPLANHEADERX - Invoicing Plan Header Data (Change Parameter)
Data type: BAPI_INVOICE_PLAN_HEADERXOptional: Yes
Call by Reference: Yes
INVPLANITEM - Invoicing Plan Item Data
Data type: BAPI_INVOICE_PLAN_ITEMOptional: Yes
Call by Reference: Yes
INVPLANITEMX - Invoicing Plan Item Data (Change Parameter)
Data type: BAPI_INVOICE_PLAN_ITEMXOptional: Yes
Call by Reference: Yes
POADDRDELIVERY - Addresses for Inward Delivery (Item)
Data type: BAPIMEPOADDRDELIVERYOptional: Yes
Call by Reference: Yes
POSCHEDULE - Delivery Schedule
Data type: BAPIMEPOSCHEDULEOptional: Yes
Call by Reference: Yes
POSCHEDULEX - Delivery Schedule (Change Parameter)
Data type: BAPIMEPOSCHEDULXOptional: Yes
Call by Reference: Yes
POACCOUNT - Account Assignment Fields
Data type: BAPIMEPOACCOUNTOptional: Yes
Call by Reference: Yes
POACCOUNTPROFITSEGMENT - Reservation Profitability Segment: BAPI_PROFITABILITY_SEGMENT
Data type: BAPIMEPOACCOUNTPROFITSEGMENTOptional: Yes
Call by Reference: Yes
POACCOUNTX - Account Assignment Fields (Change Parameter)
Data type: BAPIMEPOACCOUNTXOptional: Yes
Call by Reference: Yes
Copy and paste ABAP code example for BAPI_PO_CREATE1 Function Module
The ABAP code below is a full code listing to execute function module POPUP_TO_CONFIRM including all data declarations. The code uses the original data declarations rather than the latest in-line data DECLARATION SYNTAX but I have included an ABAP code snippet at the end to show how declarations would look using the newer method of declaring data variables on the fly. This will allow you to compare and fully understand the new inline method. Please note some of the newer syntax such as the @DATA is not available until a later 4.70 service pack (SP8), which i why i have stuck to the origianl for this example.DATA: | ||||
lt_return | TYPE STANDARD TABLE OF BAPIRET2, " | |||
lv_poheader | TYPE BAPIMEPOHEADER, " | |||
lv_exppurchaseorder | TYPE BAPIMEPOHEADER-PO_NUMBER, " | |||
lv_no_messaging | TYPE BAPIFLAG-BAPIFLAG, " | |||
lt_pocondheader | TYPE STANDARD TABLE OF BAPIMEPOCONDHEADER, " | |||
lt_pocondheaderx | TYPE STANDARD TABLE OF BAPIMEPOCONDHEADERX, " | |||
lv_no_message_req | TYPE BAPIFLAG-BAPIFLAG, " | |||
lt_pocond | TYPE STANDARD TABLE OF BAPIMEPOCOND, " | |||
lv_no_authority | TYPE BAPIFLAG-BAPIFLAG, " | |||
lt_pocondx | TYPE STANDARD TABLE OF BAPIMEPOCONDX, " | |||
lv_no_price_from_po | TYPE BAPIFLAG-BAPIFLAG, " | |||
lt_polimits | TYPE STANDARD TABLE OF BAPIESUHC, " | |||
lv_park_complete | TYPE BAPIFLAG-BAPIFLAG, " | |||
lv_park_uncomplete | TYPE BAPIFLAG-BAPIFLAG, " | |||
lt_pocontractlimits | TYPE STANDARD TABLE OF BAPIESUCC, " | |||
lt_poservices | TYPE STANDARD TABLE OF BAPIESLLC, " | |||
lt_posrvaccessvalues | TYPE STANDARD TABLE OF BAPIESKLC, " | |||
lt_poservicestext | TYPE STANDARD TABLE OF BAPIESLLTX, " | |||
lt_extensionin | TYPE STANDARD TABLE OF BAPIPAREX, " | |||
lt_poitem | TYPE STANDARD TABLE OF BAPIMEPOITEM, " | |||
lv_expheader | TYPE BAPIMEPOHEADER, " | |||
lv_poheaderx | TYPE BAPIMEPOHEADERX, " | |||
lt_extensionout | TYPE STANDARD TABLE OF BAPIPAREX, " | |||
lt_poexpimpitem | TYPE STANDARD TABLE OF BAPIEIPO, " | |||
lt_poexpimpitemx | TYPE STANDARD TABLE OF BAPIEIPOX, " | |||
lt_potextheader | TYPE STANDARD TABLE OF BAPIMEPOTEXTHEADER, " | |||
lt_potextitem | TYPE STANDARD TABLE OF BAPIMEPOTEXT, " | |||
lt_allversions | TYPE STANDARD TABLE OF BAPIMEDCM_ALLVERSIONS, " | |||
lt_popartner | TYPE STANDARD TABLE OF BAPIEKKOP, " | |||
lt_pocomponents | TYPE STANDARD TABLE OF BAPIMEPOCOMPONENT, " | |||
lt_pocomponentsx | TYPE STANDARD TABLE OF BAPIMEPOCOMPONENTX, " | |||
lt_poshipping | TYPE STANDARD TABLE OF BAPIITEMSHIP, " | |||
lt_poitemx | TYPE STANDARD TABLE OF BAPIMEPOITEMX, " | |||
lv_poaddrvendor | TYPE BAPIMEPOADDRVENDOR, " | |||
lv_exppoexpimpheader | TYPE BAPIEIKP, " | |||
lt_poshippingx | TYPE STANDARD TABLE OF BAPIITEMSHIPX, " | |||
lt_poshippingexp | TYPE STANDARD TABLE OF BAPIMEPOSHIPPEXP, " | |||
lt_serialnumber | TYPE STANDARD TABLE OF BAPIMEPOSERIALNO, " | |||
lt_serialnumberx | TYPE STANDARD TABLE OF BAPIMEPOSERIALNOX, " | |||
lt_invplanheader | TYPE STANDARD TABLE OF BAPI_INVOICE_PLAN_HEADER, " | |||
lt_invplanheaderx | TYPE STANDARD TABLE OF BAPI_INVOICE_PLAN_HEADERX, " | |||
lt_invplanitem | TYPE STANDARD TABLE OF BAPI_INVOICE_PLAN_ITEM, " | |||
lt_invplanitemx | TYPE STANDARD TABLE OF BAPI_INVOICE_PLAN_ITEMX, " | |||
lv_testrun | TYPE BAPIFLAG-BAPIFLAG, " | |||
lt_poaddrdelivery | TYPE STANDARD TABLE OF BAPIMEPOADDRDELIVERY, " | |||
lt_poschedule | TYPE STANDARD TABLE OF BAPIMEPOSCHEDULE, " | |||
lv_memory_uncomplete | TYPE BAPIFLAG-BAPIFLAG, " | |||
lt_poschedulex | TYPE STANDARD TABLE OF BAPIMEPOSCHEDULX, " | |||
lv_memory_complete | TYPE BAPIFLAG-BAPIFLAG, " | |||
lt_poaccount | TYPE STANDARD TABLE OF BAPIMEPOACCOUNT, " | |||
lv_poexpimpheader | TYPE BAPIEIKP, " | |||
lv_poexpimpheaderx | TYPE BAPIEIKPX, " | |||
lt_poaccountprofitsegment | TYPE STANDARD TABLE OF BAPIMEPOACCOUNTPROFITSEGMENT, " | |||
lv_versions | TYPE BAPIMEDCM, " | |||
lt_poaccountx | TYPE STANDARD TABLE OF BAPIMEPOACCOUNTX. " |
  CALL FUNCTION 'BAPI_PO_CREATE1' "Create Purchase Order |
EXPORTING | ||
POHEADER | = lv_poheader | |
NO_MESSAGING | = lv_no_messaging | |
NO_MESSAGE_REQ | = lv_no_message_req | |
NO_AUTHORITY | = lv_no_authority | |
NO_PRICE_FROM_PO | = lv_no_price_from_po | |
PARK_COMPLETE | = lv_park_complete | |
PARK_UNCOMPLETE | = lv_park_uncomplete | |
POHEADERX | = lv_poheaderx | |
POADDRVENDOR | = lv_poaddrvendor | |
TESTRUN | = lv_testrun | |
MEMORY_UNCOMPLETE | = lv_memory_uncomplete | |
MEMORY_COMPLETE | = lv_memory_complete | |
POEXPIMPHEADER | = lv_poexpimpheader | |
POEXPIMPHEADERX | = lv_poexpimpheaderx | |
VERSIONS | = lv_versions | |
IMPORTING | ||
EXPPURCHASEORDER | = lv_exppurchaseorder | |
EXPHEADER | = lv_expheader | |
EXPPOEXPIMPHEADER | = lv_exppoexpimpheader | |
TABLES | ||
RETURN | = lt_return | |
POCONDHEADER | = lt_pocondheader | |
POCONDHEADERX | = lt_pocondheaderx | |
POCOND | = lt_pocond | |
POCONDX | = lt_pocondx | |
POLIMITS | = lt_polimits | |
POCONTRACTLIMITS | = lt_pocontractlimits | |
POSERVICES | = lt_poservices | |
POSRVACCESSVALUES | = lt_posrvaccessvalues | |
POSERVICESTEXT | = lt_poservicestext | |
EXTENSIONIN | = lt_extensionin | |
POITEM | = lt_poitem | |
EXTENSIONOUT | = lt_extensionout | |
POEXPIMPITEM | = lt_poexpimpitem | |
POEXPIMPITEMX | = lt_poexpimpitemx | |
POTEXTHEADER | = lt_potextheader | |
POTEXTITEM | = lt_potextitem | |
ALLVERSIONS | = lt_alltersions | |
POPARTNER | = lt_popartner | |
POCOMPONENTS | = lt_pocomponents | |
POCOMPONENTSX | = lt_pocomponentsx | |
POSHIPPING | = lt_poshipping | |
POITEMX | = lt_poitemx | |
POSHIPPINGX | = lt_poshippingx | |
POSHIPPINGEXP | = lt_poshippingexp | |
SERIALNUMBER | = lt_serialnumber | |
SERIALNUMBERX | = lt_serialnumberx | |
INVPLANHEADER | = lt_invplanheader | |
INVPLANHEADERX | = lt_invplanheaderx | |
INVPLANITEM | = lt_invplanitem | |
INVPLANITEMX | = lt_invplanitemx | |
POADDRDELIVERY | = lt_poaddrdelivery | |
POSCHEDULE | = lt_poschedule | |
POSCHEDULEX | = lt_poschedulex | |
POACCOUNT | = lt_poaccount | |
POACCOUNTPROFITSEGMENT | = lt_poaccountprofitsegment | |
POACCOUNTX | = lt_poaccountx | |
. " BAPI_PO_CREATE1 |
ABAP code using 7.40 inline data declarations to call FM BAPI_PO_CREATE1
The below ABAP code uses the newer in-line data declarations. This allows you to see the coding differences/benefits of the later inline syntax. Please note some of the newer syntax below, such as the @DATA is not available until 4.70 EHP 8."SELECT single PO_NUMBER FROM BAPIMEPOHEADER INTO @DATA(ld_exppurchaseorder). | ||||
"SELECT single BAPIFLAG FROM BAPIFLAG INTO @DATA(ld_no_messaging). | ||||
"SELECT single BAPIFLAG FROM BAPIFLAG INTO @DATA(ld_no_message_req). | ||||
"SELECT single BAPIFLAG FROM BAPIFLAG INTO @DATA(ld_no_authority). | ||||
"SELECT single BAPIFLAG FROM BAPIFLAG INTO @DATA(ld_no_price_from_po). | ||||
"SELECT single BAPIFLAG FROM BAPIFLAG INTO @DATA(ld_park_complete). | ||||
"SELECT single BAPIFLAG FROM BAPIFLAG INTO @DATA(ld_park_uncomplete). | ||||
"SELECT single BAPIFLAG FROM BAPIFLAG INTO @DATA(ld_testrun). | ||||
"SELECT single BAPIFLAG FROM BAPIFLAG INTO @DATA(ld_memory_uncomplete). | ||||
"SELECT single BAPIFLAG FROM BAPIFLAG INTO @DATA(ld_memory_complete). | ||||
Search for further information about these or an SAP related objects