SAP PP, PM and QM Upload Templates

12 Excel templates for SAP production, plant maintenance and quality: planned orders, planned independent requirements, production orders, process orders, production confirmations, repetitive manufacturing backflushes, maintenance notifications, maintenance orders, measurement documents, quality notifications, results recording and time sheet entries.

Jump to a template (12)
  1. MD61Planned Independent Requirements
  2. MD11Planned Order
  3. CO01Production Order
  4. COR1Process Order
  5. CO11NProduction Order Confirmation
  6. MFBFRepetitive Manufacturing Backflush
  7. IW21Maintenance Notification
  8. IW31Maintenance Order
  9. IK11Measurement and Counter Readings
  10. QM01Quality Notification
  11. QE01Inspection Results Recording
  12. CAT2Time Sheet Entry
Production, maintenance and quality templates on GitHubFree under the MIT licence, with a README and FAQ for this area.
View on GitHub →

Loading order and dependencies

Planning data loads before orders: planned independent requirements, then planned orders, then production or process orders. Confirmations come after the orders exist and reference them by order and operation. On the maintenance side, notifications before orders, since an order usually references the notification that raised it. Functional locations and equipment are master data and sit on the master data page, but they have to exist before any maintenance notification or order can reference them.

Use this sequence whenever these files serve as SAP migration templates in an S/4HANA migration, and again for mass loads after go live.

Using these templates with the SAP Migration Cockpit or LSMW

Production, maintenance and quality data load last in an SAP data migration, once the objects they reference exist. The column to field mapping is the same mapping the SAP Migration Cockpit and LSMW both need. Teams use these templates to stage orders and notifications before an S/4HANA migration go live, then keep them for the mass change work afterwards.

MD61Production PlanningHeader and detail rows 7 of 15 columns mandatory

SAP Planned Independent Requirements Upload Template (MD61)

Load the demand plan. An H row is a material, plant and version, and the D rows are its periods.

Posts throughBAPI_REQUIREMENTS_CREATEWatch Demo

One of only two interfaces in this set that commit themselves by default. The schedule table is six fields, which is the whole demand plan.

T-codeMD61

What to watchLeave the version active flag blank and the requirements are created but inactive, so MRP ignores them entirely and the upload looks like it did nothing. This is the most common failure on a demand plan load and it produces no error at all.

Mandatory fields 7 fields
ColumnSAP structureSAP fieldNote
MaterialREQUIREMENTS_ITEMMATERIAL
PlantREQUIREMENTS_ITEMPLANT
VersionREQUIREMENTS_ITEMVERSION00 is the usual active version.
Version ActiveREQUIREMENTS_ITEMVERS_ACTIVX. Without it MRP ignores the plan entirely.
Date TypeREQUIREMENTS_SCHEDULE_INDATE_TYPE1 day, 2 week, 3 month.
Requirement DateREQUIREMENTS_SCHEDULE_INREQ_DATEYYYYMMDD.
Planned QuantityREQUIREMENTS_SCHEDULE_INREQ_QTY
MD11Production PlanningOne row per record 6 of 20 columns mandatory

SAP Planned Order Upload Template (MD11)

Create planned orders in bulk. One row is one planned order.

Posts throughBAPI_PLANNEDORDER_CREATEWatch Demo

A compact interface. Note that RETURN here is the older BAPIRETURN1 type, which has a different layout from BAPIRET2.

T-codeMD11

What to watchRETURN here is a single exporting BAPIRETURN1, the older return type with a different layout from BAPIRET2. Error parsing written for BAPIRET2 reads the wrong fields or does not compile at all. This is the same trap as the production order BAPI, one step worse.

Mandatory fields 6 fields
ColumnSAP structureSAP fieldNote
MaterialHEADERDATAMATERIAL
Planning PlantHEADERDATAPLAN_PLANT
Order ProfileHEADERDATAPLDORD_PROFILEDecides the order category. LA stock order for in-house production, KD make to order, NB external procurement, PE project order.
QuantityHEADERDATATOTAL_PLORD_QTY
Start DateHEADERDATAORDER_START_DATEYYYYMMDD.
Finish DateHEADERDATAORDER_FIN_DATEYYYYMMDD.
CO01Production PlanningOne row per record 6 of 22 columns mandatory

SAP Production Order Upload Template (CO01)

Create production orders in bulk. One row is one order.

Posts throughBAPI_PRODORD_CREATEWatch Demo

An unusually simple interface: one importing structure and no tables at all. The routing and BOM are pulled from master data.

T-codeCO01

What to watchRETURN on this BAPI is a single exporting structure, not a table. Every other interface in this set except the planned order one uses a RETURN table, so shared error handling breaks here. It also means exactly one message comes back, so a failed create tells you far less than usual.

Mandatory fields 6 fields
ColumnSAP structureSAP fieldNote
MaterialORDERDATAMATERIALThe material being produced.
PlantORDERDATAPLANT
Order TypeORDERDATAORDER_TYPEDrives number range and settlement.
QuantityORDERDATAQUANTITY
Basic Start DateORDERDATABASIC_START_DATEYYYYMMDD.
Basic End DateORDERDATABASIC_END_DATEYYYYMMDD.
COR1Production PlanningOne row per record 7 of 25 columns mandatory

SAP Process Order Upload Template (COR1)

Create process orders from master recipes. One row is one order.

Posts throughBAPI_PROCORD_CREATEWatch Demo

An unusually thin interface. One importing structure, three exports, and no tables at all.

T-codeCOR1

What to watchThe unit of measure field here has no ISO twin. Nearly every other structure in this set carries a matching field ending in _ISO so you can send PCE instead of ST. BAPI_PI_ORDER_CREATE does not, so QUANTITY_UOM must be the internal SAP unit key. The WBS element field has the same shape of trap: it is the eight digit internal number, not the readable form.

Mandatory fields 7 fields
ColumnSAP structureSAP fieldNote
MaterialORDERDATAMATERIALThe material being produced.
PlantORDERDATAPLANT
Order TypeORDERDATAORDER_TYPEPI01 is the standard process order type.
QuantityORDERDATAQUANTITY
Quantity UnitORDERDATAQUANTITY_UOMThe internal SAP unit key. There is no ISO alternative in this interface.
Basic Start DateORDERDATABASIC_START_DATEYYYYMMDD.
Basic End DateORDERDATABASIC_END_DATEYYYYMMDD.
CO11NProduction PlanningOne row per record 5 of 26 columns mandatory

SAP Production Order Confirmation Upload Template (CO11N)

Confirm yields, scrap and activities against production order operations. One row is one confirmation.

Posts throughBAPI_PRODORDCONF_CREATE_TTWatch Demo

A time ticket confirmation. Goods movements can ride along with it, but only if you supply the index table that links them.

T-codeCO11N

What to watchThe single RETURN can come back clean while individual confirmation lines were rejected. It is a BAPIRET1 with ten fields and no row or field reference. The per line result is in DETAIL_RETURN, and the FLG_LOCKED flag there means the order was locked, not that anything posted. Read only RETURN and a half failed run looks like a success.

Mandatory fields 5 fields
ColumnSAP structureSAP fieldNote
Order NumberTIMETICKETSORDERIDTwelve characters.
OperationTIMETICKETSOPERATIONFour characters, for example 0010.
Posting DateTIMETICKETSPOSTG_DATEPeriod must be open. YYYYMMDD.
YieldTIMETICKETSYIELDGood quantity confirmed.
Confirmation UnitTIMETICKETSCONF_QUAN_UNIT
MFBFProduction PlanningOne row per record 8 of 26 columns mandatory

SAP Repetitive Manufacturing Backflush Upload Template (MFBF)

Backflush production in a make to stock repetitive environment. One row is one backflush.

Posts throughBAPI_REPMANCONF1_CREATE_MTSWatch Demo

Three flat importing structures and a control structure whose codes are zero padded, which is where Excel gets in the way.

T-codeMFBF

What to watchThe backflush type is a two character code with a leading zero: 01 is a final backflush, 02 a reporting point backflush, 10 a separate activity backflush. Excel strips the zero and writes 1 or 2, which the interface either rejects or reads as something else entirely. Format that column as text, which this template already does.

Mandatory fields 8 fields
ColumnSAP structureSAP fieldNote
Backflush TypeBFLUSHFLAGSBCKFLTYPETwo characters with the leading zero. 01 is a final backflush.
MaterialBFLUSHDATAGENMATERIALNR
Production PlantBFLUSHDATAGENPRODPLANT
Production VersionBFLUSHDATAGENPRODVERSIONTies the material to its line and rate routing.
Receiving Storage LocBFLUSHDATAGENSTORAGELOC
Posting DateBFLUSHDATAGENPOSTDATEPeriod must be open. YYYYMMDD.
Backflush QuantityBFLUSHDATAGENBACKFLQUANT
Unit of MeasureBFLUSHDATAGENUNITOFMEASURE
IW21Plant MaintenanceHeader and detail rows 5 of 32 columns mandatory

SAP Maintenance Notification Upload Template (IW21)

Raise maintenance notifications with their items, causes and tasks. An H row is the notification, D rows are the items.

Posts throughBAPI_ALM_NOTIF_CREATEWatch Demo

A two step interface. The create call builds the notification in memory and a separate save call is what gives it a real number.

T-codeIW21

What to watchThe number that comes back from the create call is temporary. The real notification number only appears in the NOTIFHEADER export of BAPI_ALM_NOTIF_SAVE. A load that writes the create number into its result column records a number that does not exist, and a load that skips the save call altogether reports success and creates nothing.

Mandatory fields 5 fields
ColumnSAP structureSAP fieldNote
Notification TypeNOTIF_TYPENOTIF_TYPEA separate parameter. M1 malfunction, M2 activity, M3 request.
Short TextNOTIFHEADERSHORT_TEXTForty characters. What is wrong.
Planning PlantNOTIFHEADERPLANPLANT
Item Sort NumberNOTITEMITEM_SORT_NOFour digits. Without it the item is silently dropped.
Item DescriptionNOTITEMDESCRIPTForty characters.
IW31Plant MaintenanceHeader and detail rows 4 of 32 columns mandatory

SAP Maintenance Order Upload Template (IW31)

Create maintenance orders with their operations and components. An H row is the order, D rows are the operations.

Posts throughBAPI_ALM_ORDER_MAINTAINWatch Demo

A method driven interface. An instruction list says what to do and in what order, and the data sits in parallel tables.

T-codeIW31

What to watchThe order number never appears in RETURN. For internal numbering you leave the order number blank, put the placeholder %00000000001 in the method rows, and read the issued number out of ET_NUMBERS, which pairs the placeholder you sent with the number SAP assigned. Reuse the same placeholder for two orders in one call and every row collapses into one order.

Mandatory fields 4 fields
ColumnSAP structureSAP fieldNote
Order RefIT_METHODSREFNUMBERYour own grouping key. Becomes the reference number in the method list.
Order TypeIT_HEADERORDER_TYPEPM01 is the usual maintenance order type.
Short TextIT_HEADERSHORT_TEXTForty characters.
Planning PlantIT_HEADERPLANPLANT
IK11Plant MaintenanceOne row per record 5 of 15 columns mandatory

SAP Measurement Document Upload Template (IK11)

Record meter and measurement readings against measuring points. One row is one reading.

Posts throughMEASUREM_DOCUM_RFC_SINGLE_001Watch Demo

Not a BAPI. This is an RFC enabled function module with classical exceptions and a commit that is on by default.

T-codeIK11

What to watchThere is no BAPI for this. BAPI_MEASUREMENTDOCUM_CREATE does not exist in the repository, and no BAPI_* module sits in the measuring point package at all. The interface people actually use is MEASUREM_DOCUM_RFC_SINGLE_001, which is RFC enabled. It behaves differently from every BAPI in this library: no BAPIRET2, classical exceptions, and it commits on its own.

Mandatory fields 5 fields
ColumnSAP structureSAP fieldNote
Measuring PointMEASUREMENT_POINTPOINTTwelve characters, zero padded.
Reading DateREADING_DATEIDATEYYYYMMDD.
Reading TimeREADING_TIMEITIMEHHMMSS.
Recorded ValueRECORDED_VALUERECDCText, not a number. Use the decimal notation of whoever runs the load.
Recorded UnitRECORDED_UNITUNITRThe unit the reading was taken in.
QM01Quality ManagementHeader and detail rows 4 of 32 columns mandatory

SAP Quality Notification Upload Template (QM01)

Raise quality notifications against suppliers, customers or production. An H row is the notification, D rows are the items.

Posts throughBAPI_QUALNOT_CREATEWatch Demo

The quality twin of the maintenance notification interface, with the same two step create and save behaviour.

T-codeQM01

What to watchThe work centre field takes a number, not a code. WORK_CTR is data element LGWID, NUMC 8, the work centre's internal object ID. Type a readable work centre such as ASSY01 into it and the call fails saying the value cannot be converted to a numeric type. Look up the object ID in CRHD and load that.

Mandatory fields 4 fields
ColumnSAP structureSAP fieldNote
Notification TypeNOTIF_TYPENOTIF_TYPEA separate parameter. Q1 supplier, Q2 customer, Q3 internal.
Short TextNOTIFHEADERSHORT_TEXTForty characters.
Item Sort NumberNOTITEMITEM_SORT_NOFour digits. Without it the item is silently dropped.
Item DescriptionNOTITEMDESCRIPTForty characters.
QE01Quality ManagementHeader and detail rows 7 of 26 columns mandatory

SAP Inspection Results Recording Upload Template (QE01)

Record inspection results against a lot operation. An H row is the characteristic, D rows are the single values.

Posts throughBAPI_INSPOPER_RECORDRESULTSWatch Demo

A three level hierarchy: characteristic, then sample, then individual measured value. Every numeric field is a character field.

T-codeQE01

What to watchThe characteristic number is not the master inspection characteristic code. INSPCHAR is a sequential number assigned to that characteristic within that lot operation when the lot was created, so it depends on the plan version and cannot be typed in from master data. Read it first with BAPI_INSPOPER_GETDETAIL and join it onto your rows.

Mandatory fields 7 fields
ColumnSAP structureSAP fieldNote
Inspection LotINSPLOTINSPLOTTwelve digits.
OperationINSPOPERINSPOPERFour characters.
Characteristic NumberCHAR_RESULTSINSPCHARFour digits, sequential within the lot operation. Read it from the lot, do not type it.
ValuationCHAR_RESULTSEVALUATIONA accepted, R rejected.
ClosedCHAR_RESULTSCLOSEDX closes the characteristic. Without it the operation stays open.
Result NumberSINGLE_RESULTSRES_NOFour digits. The counter for the inspection unit.
Result ValueSINGLE_RESULTSRES_VALUECharacter field, CHAR 22. Format the column as text.
CAT2Cross ApplicationOne row per record 3 of 23 columns mandatory

SAP Time Sheet Entry Upload Template (CAT2)

Load time sheet records against cost centres, orders, projects and networks. One row is one day's entry.

Posts throughBAPI_CATIMESHEETMGR_INSERTWatch Demo

Insert only. There is no key to re-run against, so a second load of the same file creates a second set of records.

T-codeCAT2

What to watchThe hours field holds at most 99.99. CATSHOURS is a quantity of length four with two decimals, so a weekly total in one row overflows it and a third decimal is silently truncated. Enter hours per day, two decimals, or use the start and end times and let CATS work the duration out.

Mandatory fields 3 fields
ColumnSAP structureSAP fieldNote
Work DateCATSRECORDS_INWORKDATEOne row per day. YYYYMMDD.
Personnel NumberCATSRECORDS_INEMPLOYEENUMBEREight digits.
HoursCATSRECORDS_INCATSHOURSTwo decimals, maximum 99.99. Per day, not per week.

After the template

Posting these templates to SAP

Filling in a template is the easy half. PostNow.ai is the other half: it loads the sheet, checks every row against your live SAP system, and posts it through the same SAP interface named on the template, under your own SAP user and authorisations. Nothing is written that you could not write yourself in the SAP GUI, and every row that fails is reported with the SAP message that caused it.

  • Load the sheet
  • Check every row in live SAP
  • Post through the SAP interface
Start your 14 day free trial Runs under your own SAP login and authorisations.

FAQ

Frequently asked questions

How do I upload production order confirmations from Excel?

Use the production confirmation template, which posts through BAPI_PRODORDCONF_CREATE_TT. It takes yields, scrap, rework and up to six activity quantities per operation. One thing to watch: the single return message can come back clean while individual confirmation lines were rejected, so the per line result has to be read from the detail table.

Why does my planned independent requirements upload appear to work but MRP ignores it?

Because the version active flag was left blank. Requirements are created but stay inactive, so MRP does not see them, and the interface returns no error at all. This is the most common failure on a demand plan load. The planned independent requirements template makes that flag a mandatory column.

How do I load production and maintenance data into SAP without custom development?

PostNow.ai posts these templates through the standard SAP interfaces they name, validating each row against your live system first. That matters more here than elsewhere, because several of these interfaces have unusual shapes: one needs an ordered instruction list, one commits itself by default, and one returns a temporary document number until a second call is made. PostNow.ai handles each correctly.

Why is the maintenance notification number I get back not in SAP?

Because the create call returns a temporary number. The real notification number only appears after a separate save call, and a load that stops at create reports success and creates nothing. The same applies to quality notifications. Both templates document the required call sequence on their BAPI Mapping tab.

Can I record measurement and counter readings in bulk?

Yes, using the measurement document template. Note that there is no BAPI for this: SAP exposes an RFC enabled function module instead, which behaves differently from every BAPI in this set. It commits itself unless you switch that off, and the reading value is a character field in the user's decimal notation rather than a number.

How do I upload time sheet entries into CATS?

Use the time sheet template, which posts through BAPI_CATIMESHEETMGR_INSERT. It is insert only with no key of its own, so running the same file twice creates two sets of records. Keep a marker column in the sheet and use the simulation flag on the interface to validate a file before posting it.

Can I confirm production in bulk at period end?

Yes, and this is one of the heaviest manual jobs in a typical plant. The confirmation and backflush templates take a full period of entries in one sheet. PostNow.ai posts them line by line through the SAP interface with every row validated first, and writes the confirmation number back beside the row that created it so the reconciliation is already done.

Keep going

More SAP upload templates