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: BAPIMEPOHEADER
Optional: No
Call by Reference: No ( called with pass by value option)

NO_MESSAGING - No message determination

Data type: BAPIFLAG-BAPIFLAG
Optional: Yes
Call by Reference: No ( called with pass by value option)

NO_MESSAGE_REQ - No messages necessary

Data type: BAPIFLAG-BAPIFLAG
Optional: Yes
Call by Reference: No ( called with pass by value option)

NO_AUTHORITY - No Authorization Check

Data type: BAPIFLAG-BAPIFLAG
Optional: 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-BAPIFLAG
Optional: Yes
Call by Reference: No ( called with pass by value option)

PARK_COMPLETE - Park Document if NOT Faulty

Data type: BAPIFLAG-BAPIFLAG
Optional: Yes
Call by Reference: No ( called with pass by value option)

PARK_UNCOMPLETE - Park Document if Faulty

Data type: BAPIFLAG-BAPIFLAG
Optional: Yes
Call by Reference: No ( called with pass by value option)

POHEADERX - Header Data (Change Parameter)

Data type: BAPIMEPOHEADERX
Optional: Yes
Call by Reference: No ( called with pass by value option)

POADDRVENDOR - Address of Vendor

Data type: BAPIMEPOADDRVENDOR
Optional: Yes
Call by Reference: No ( called with pass by value option)

TESTRUN - Test Indicator

Data type: BAPIFLAG-BAPIFLAG
Optional: Yes
Call by Reference: No ( called with pass by value option)

MEMORY_UNCOMPLETE - Hold Purchase Order if Faulty

Data type: BAPIFLAG-BAPIFLAG
Optional: Yes
Call by Reference: No ( called with pass by value option)

MEMORY_COMPLETE - Hold Purchase Order if NOT Faulty

Data type: BAPIFLAG-BAPIFLAG
Optional: Yes
Call by Reference: No ( called with pass by value option)

POEXPIMPHEADER - Export Trade: Header Data

Data type: BAPIEIKP
Optional: Yes
Call by Reference: No ( called with pass by value option)

POEXPIMPHEADERX - Foreign Trade: Change Bar: Header Data

Data type: BAPIEIKPX
Optional: Yes
Call by Reference: No ( called with pass by value option)

VERSIONS - Version Management

Data type: BAPIMEDCM
Optional: 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_NUMBER
Optional: No
Call by Reference: No ( called with pass by value option)

EXPHEADER - Header Data

Data type: BAPIMEPOHEADER
Optional: No
Call by Reference: No ( called with pass by value option)

EXPPOEXPIMPHEADER - Export Trade: Header Data

Data type: BAPIEIKP
Optional: No
Call by Reference: No ( called with pass by value option)

TABLES Parameters details for BAPI_PO_CREATE1

RETURN - Return Parameter

Data type: BAPIRET2
Optional: Yes
Call by Reference: Yes

POCONDHEADER - Conditions (Header)

Data type: BAPIMEPOCONDHEADER
Optional: Yes
Call by Reference: Yes

POCONDHEADERX - Conditions (Header, Change Parameter)

Data type: BAPIMEPOCONDHEADERX
Optional: Yes
Call by Reference: Yes

POCOND - Conditions (Items)

Data type: BAPIMEPOCOND
Optional: Yes
Call by Reference: Yes

POCONDX - Conditions (Items, Change Parameter)

Data type: BAPIMEPOCONDX
Optional: Yes
Call by Reference: Yes

POLIMITS - External Services: Limits

Data type: BAPIESUHC
Optional: Yes
Call by Reference: Yes

POCONTRACTLIMITS - External Services: Contract Limits

Data type: BAPIESUCC
Optional: Yes
Call by Reference: Yes

POSERVICES - External Services: Service Lines

Data type: BAPIESLLC
Optional: Yes
Call by Reference: Yes

POSRVACCESSVALUES - External Services: Account Assignment Distribution for Service Lines

Data type: BAPIESKLC
Optional: Yes
Call by Reference: Yes

POSERVICESTEXT - External Services: Service Long Text

Data type: BAPIESLLTX
Optional: Yes
Call by Reference: Yes

EXTENSIONIN - Customer's Own Fields (Import Parameters)

Data type: BAPIPAREX
Optional: Yes
Call by Reference: Yes

POITEM - Item Data

Data type: BAPIMEPOITEM
Optional: Yes
Call by Reference: Yes

EXTENSIONOUT - Customer's Own Fields (Export Parameters)

Data type: BAPIPAREX
Optional: Yes
Call by Reference: Yes

POEXPIMPITEM - Foreign Trade: Item Data

Data type: BAPIEIPO
Optional: Yes
Call by Reference: Yes

POEXPIMPITEMX - Foreign Trade: Change Parameter: Item Data

Data type: BAPIEIPOX
Optional: Yes
Call by Reference: Yes

POTEXTHEADER - Header Texts

Data type: BAPIMEPOTEXTHEADER
Optional: Yes
Call by Reference: Yes

POTEXTITEM - Item Texts

Data type: BAPIMEPOTEXT
Optional: Yes
Call by Reference: Yes

ALLVERSIONS - All Versions (Export Parameter)

Data type: BAPIMEDCM_ALLVERSIONS
Optional: Yes
Call by Reference: Yes

POPARTNER - Partner

Data type: BAPIEKKOP
Optional: Yes
Call by Reference: Yes

POCOMPONENTS - BAPI Structure for Components

Data type: BAPIMEPOCOMPONENT
Optional: Yes
Call by Reference: Yes

POCOMPONENTSX - Update Information for Components in BUS2012 API

Data type: BAPIMEPOCOMPONENTX
Optional: Yes
Call by Reference: Yes

POSHIPPING - BAPI Shipping Data for Stock Transport Orders

Data type: BAPIITEMSHIP
Optional: Yes
Call by Reference: Yes

POITEMX - Item Data (Change Parameter)

Data type: BAPIMEPOITEMX
Optional: Yes
Call by Reference: Yes

POSHIPPINGX - BAPI Shipping Data Change Parameter

Data type: BAPIITEMSHIPX
Optional: Yes
Call by Reference: Yes

POSHIPPINGEXP - Export Structure for Shipping Data

Data type: BAPIMEPOSHIPPEXP
Optional: Yes
Call by Reference: Yes

SERIALNUMBER - Serial Numbers in Purchase Order BAPIs

Data type: BAPIMEPOSERIALNO
Optional: Yes
Call by Reference: Yes

SERIALNUMBERX - Change Parameter: Serial Number in Purchase Order BAPIs

Data type: BAPIMEPOSERIALNOX
Optional: Yes
Call by Reference: Yes

INVPLANHEADER - Invoicing Plan Header Data

Data type: BAPI_INVOICE_PLAN_HEADER
Optional: Yes
Call by Reference: Yes

INVPLANHEADERX - Invoicing Plan Header Data (Change Parameter)

Data type: BAPI_INVOICE_PLAN_HEADERX
Optional: Yes
Call by Reference: Yes

INVPLANITEM - Invoicing Plan Item Data

Data type: BAPI_INVOICE_PLAN_ITEM
Optional: Yes
Call by Reference: Yes

INVPLANITEMX - Invoicing Plan Item Data (Change Parameter)

Data type: BAPI_INVOICE_PLAN_ITEMX
Optional: Yes
Call by Reference: Yes

POADDRDELIVERY - Addresses for Inward Delivery (Item)

Data type: BAPIMEPOADDRDELIVERY
Optional: Yes
Call by Reference: Yes

POSCHEDULE - Delivery Schedule

Data type: BAPIMEPOSCHEDULE
Optional: Yes
Call by Reference: Yes

POSCHEDULEX - Delivery Schedule (Change Parameter)

Data type: BAPIMEPOSCHEDULX
Optional: Yes
Call by Reference: Yes

POACCOUNT - Account Assignment Fields

Data type: BAPIMEPOACCOUNT
Optional: Yes
Call by Reference: Yes

POACCOUNTPROFITSEGMENT - Reservation Profitability Segment: BAPI_PROFITABILITY_SEGMENT

Data type: BAPIMEPOACCOUNTPROFITSEGMENT
Optional: Yes
Call by Reference: Yes

POACCOUNTX - Account Assignment Fields (Change Parameter)

Data type: BAPIMEPOACCOUNTX
Optional: 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



Comments on this SAP object

What made you want to lookup this SAP object? Please tell us what you were looking for and anything you would like to be included on this page!