SAP purchase requisition automation means raising requisitions, the internal request to buy, from data rather than typing each line into ME51N. PostNow runs it from Excel: every requisition line is a row, and the add-in posts the set with the standard BAPI_PR_CREATE, attaching each line's account assignment, checking the values, and committing the requisitions in one run, with any SAP error put into plain language.
This is a twelve-step worked example of creating purchase requisitions from Excel to SAP, whether each row stands alone or several lines roll up into one requisition. Keep the mapping and you have a requisition Excel template ready for the next demand list. It works on classic ECC and on S/4HANA, where procurement still raises requisitions behind ME51N and the same Enjoy BAPI. Past a one-time setup, whoever runs the load needs no ABAP and no developer.
Why create requisitions from Excel instead of keying ME51N
Raising a requisition manually in ME51N means setting the document type, then adding each line with its material, plant, quantity, delivery date, and account assignment so the cost lands in the right place. One or two lines is quick. A maintenance plan, a project's demand list, or a department's monthly requests becomes a long sheet of lines keyed one at a time, and a wrong account assignment or a missing plant only shows once the line is rejected.
Creating purchase requisitions from Excel changes the shape of the work. The demand already sits in a spreadsheet, often out of planning or a budget file, and each line posts in a single governed run. For a routine bulk requisition creation or a one-off mass purchase requisition upload, the awkward parts, picking the function, mapping the line and account-assignment fields, getting dates right, and reading MM messages, are taken care of. The twelve steps that follow cover the whole flow.
Before you start: what you need
- Your requisition lines in Excel, one per row, with a column for each field and, where lines roll up, a shared requisition reference so they group together.
- SAP authorization to create requisitions, the access you would use for
ME51N, across the document types, plants, and purchasing groups you are loading. - PostNow in Excel, linked through to your SAP system. Its function modules are deployed to SAP once at setup; after that, the requisition loads run from the task pane.
Your requisition Excel template: the fields SAP expects
A requisition is, in the main, a set of lines, each carrying what to buy and where to charge it, so the template is line-centric. These are the fields a requisition load depends on; carry them, and confirm the materials, plants, and cost objects they name already exist.
| Excel column | SAP field | Why it matters |
|---|---|---|
| Document type | DOC_TYPE | Sets the requisition type and number range, NB by default |
| Material | MATERIAL | The item requested; or a short text plus material group for a non-stock line |
| Plant | PLANT | Where the material is needed; must exist (T001W) |
| Quantity / delivery date | QUANTITY / DELIV_DATE | How much is needed and by when |
| Account assignment category | ACCTASSCAT | K for cost center, A for asset, P for project; routes the cost |
| Purchasing group | PUR_GROUP | Who is responsible for procuring the line (T024) |
BAPI_PR_CREATE builds the requisition around PRITEM line items, each with its account assignment in PRACCOUNT and a parallel PRITEMX structure flagging which fields to write, and it returns the new requisition number. The document is only persisted once BAPI_TRANSACTION_COMMIT runs. Step 2 has PostNow's function finder pick BAPI_PR_CREATE, pull its structures in, and take care of the commit.The purchase requisition load, step by step
Lay out and open your sheet
Put each requisition line on a row under headers like Document Type, Material, Plant, Quantity, Delivery Date, Account Assignment, Cost Object, and Purchasing Group, adding a shared Requisition Ref where lines should roll up. Open the workbook and raise the PostNow task pane beside it.
Choose the requisition BAPI
A standard call does the posting, so there is nothing to record. In the function finder, pick what the task calls for:
- For new requisitions, take
BAPI_PR_CREATE, the Enjoy requisition BAPI SAP recommends over the older call - Each line carries its own account assignment, so the cost object travels with the item
- The requisition is saved only on commit, which PostNow issues after each successful post
Confirm the function and PostNow brings in its item and account-assignment structures, ready to line up with your columns, so ME51N stays shut.

Look over the structures it returns
What comes back is line-centric: a light header, the line items, their account assignment, and the result. Because it mirrors how a requisition is built, a glance shows what belongs to each line:
That tells you, before any mapping, which columns sit on the line and which set its account assignment.
Open the Mapping Designer
Picking the BAPI loads the Mapping Designer with a line for every item and account-assignment field. Two things matter here:
- Extensions are detected. Append fields your system adds to the requisition item are pulled in automatically.
- You can add your own. Anything missed you place manually, so standard and custom fields ride in one load.


Match columns with Mapping AI AI
Now attach the structures to your data. Mapping AI proposes an Excel column for each line and account-assignment field, reading your headers or a screenshot you drop in, and you confirm or adjust, useful when a line mixes purchasing fields with a cost object.
Auto Map and stamp the headers
Run Auto Map to fix the mapping and write SAP-tagged headers across the sheet. Each field is bound to its column, and where lines should roll up you set the requisition grouping here. From this point the workbook is the template.


Set formatting and the X indicators
A field's properties decide how its value is sent: leading zeros on material numbers, upper case on codes, a date format on the delivery date, the right decimals on quantity, defaults, and regex.
For changes, the parallel PRITEMX structure decides what is written: the field changes only when its indicator is raised. Rather than ticking those manually, PostNow spots the fields you have edited and raises their indicators automatically, so amending a batch of requisitions stays limited to the values you changed.

Vet the lines in Excel first
There is a good case for checking first: a procurement error usually arrives as a short code after a line has already failed. Validate pulls the check forward, measuring every row against SAP's length, format, and required-field rules and marking the cells at fault, so the sheet is clean before any line goes.
Confirm against live SAP
Good formatting is no guarantee a value exists, a cost center can read fine and be locked or absent. To test it, open the field's properties, enable field validation, and supply the check table and field, a material against MARA, a plant against T001W, or a cost center against CSKS. Select the cell, run Validate master data, and PostNow checks live SAP for the value before you depend on it.
Shape the load with loops and conditions
When the file needs structure beyond a flat list, set it up first:
- Loops: the create call steps down your line rows, and where you have grouped them, the lines sharing a reference roll up into one requisition.
- IF conditions: handle only the lines that qualify, for instance posting a line only where a quantity is present, or skipping rows flagged as already ordered.
Set the scope, post, and review AI
Choose the range with Run Scope, a single line first, then the rest, and press Run. A few aids:
- Run log: results appear live and drop into a log column beside each row in Excel.
- Payload view: open the exact data sent to SAP for any requisition, so a failure is never a guess.
- AI error review: AI Review reads the procurement message and lays out, in plain words, what blocked the line and where to look.
- RETURN per requisition: the BAPI reports per document, and PostNow writes the new requisition number back beside the line it belongs to.
Publish and roll it out to the team
When the run comes back clean, publish. The configuration becomes a script the team runs unchanged, they open it, paste their lines, and post, with no mapping to rebuild and no need to know the BAPI underneath. A one-time build becomes the standard way to raise requisitions.
Let's talk
Bring a real demand list and a live SAP connection to a working session. We will map the lines and their account assignment, validate, and post the requisitions for real, with AI taking the strain. No slide decks.
Frequently asked questions
What is SAP purchase requisition automation?
ME51N. With PostNow the requisition lines stay in Excel and post in one governed run via BAPI_PR_CREATE, while AI maps the fields, checks the values, and explains any MM error.How do you create purchase requisitions in SAP from Excel?
BAPI_PR_CREATE and commits the document, so there is no ME51N keying and no ABAP.Which BAPI creates SAP purchase requisitions?
BAPI_PR_CREATE, the Enjoy requisition BAPI, creates requisitions around PRITEM line items with a parallel PRITEMX indicator structure and a PRACCOUNT account assignment, returning the new requisition number. It is persisted by BAPI_TRANSACTION_COMMIT, which PostNow runs for you.