Jump to a template (12)
- MD61Planned Independent Requirements
- MD11Planned Order
- CO01Production Order
- COR1Process Order
- CO11NProduction Order Confirmation
- MFBFRepetitive Manufacturing Backflush
- IW21Maintenance Notification
- IW31Maintenance Order
- IK11Measurement and Counter Readings
- QM01Quality Notification
- QE01Inspection Results Recording
- CAT2Time Sheet Entry
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.
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.
BAPI_REQUIREMENTS_CREATEWatch DemoOne of only two interfaces in this set that commit themselves by default. The schedule table is six fields, which is the whole demand plan.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Material | REQUIREMENTS_ITEM | MATERIAL | |
| Plant | REQUIREMENTS_ITEM | PLANT | |
| Version | REQUIREMENTS_ITEM | VERSION | 00 is the usual active version. |
| Version Active | REQUIREMENTS_ITEM | VERS_ACTIV | X. Without it MRP ignores the plan entirely. |
| Date Type | REQUIREMENTS_SCHEDULE_IN | DATE_TYPE | 1 day, 2 week, 3 month. |
| Requirement Date | REQUIREMENTS_SCHEDULE_IN | REQ_DATE | YYYYMMDD. |
| Planned Quantity | REQUIREMENTS_SCHEDULE_IN | REQ_QTY |
SAP Planned Order Upload Template (MD11)
Create planned orders in bulk. One row is one planned order.
BAPI_PLANNEDORDER_CREATEWatch DemoA compact interface. Note that RETURN here is the older BAPIRETURN1 type, which has a different layout from BAPIRET2.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Material | HEADERDATA | MATERIAL | |
| Planning Plant | HEADERDATA | PLAN_PLANT | |
| Order Profile | HEADERDATA | PLDORD_PROFILE | Decides the order category. LA stock order for in-house production, KD make to order, NB external procurement, PE project order. |
| Quantity | HEADERDATA | TOTAL_PLORD_QTY | |
| Start Date | HEADERDATA | ORDER_START_DATE | YYYYMMDD. |
| Finish Date | HEADERDATA | ORDER_FIN_DATE | YYYYMMDD. |
SAP Production Order Upload Template (CO01)
Create production orders in bulk. One row is one order.
BAPI_PRODORD_CREATEWatch DemoAn unusually simple interface: one importing structure and no tables at all. The routing and BOM are pulled from master data.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Material | ORDERDATA | MATERIAL | The material being produced. |
| Plant | ORDERDATA | PLANT | |
| Order Type | ORDERDATA | ORDER_TYPE | Drives number range and settlement. |
| Quantity | ORDERDATA | QUANTITY | |
| Basic Start Date | ORDERDATA | BASIC_START_DATE | YYYYMMDD. |
| Basic End Date | ORDERDATA | BASIC_END_DATE | YYYYMMDD. |
SAP Process Order Upload Template (COR1)
Create process orders from master recipes. One row is one order.
BAPI_PROCORD_CREATEWatch DemoAn unusually thin interface. One importing structure, three exports, and no tables at all.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Material | ORDERDATA | MATERIAL | The material being produced. |
| Plant | ORDERDATA | PLANT | |
| Order Type | ORDERDATA | ORDER_TYPE | PI01 is the standard process order type. |
| Quantity | ORDERDATA | QUANTITY | |
| Quantity Unit | ORDERDATA | QUANTITY_UOM | The internal SAP unit key. There is no ISO alternative in this interface. |
| Basic Start Date | ORDERDATA | BASIC_START_DATE | YYYYMMDD. |
| Basic End Date | ORDERDATA | BASIC_END_DATE | YYYYMMDD. |
SAP Production Order Confirmation Upload Template (CO11N)
Confirm yields, scrap and activities against production order operations. One row is one confirmation.
BAPI_PRODORDCONF_CREATE_TTWatch DemoA time ticket confirmation. Goods movements can ride along with it, but only if you supply the index table that links them.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Order Number | TIMETICKETS | ORDERID | Twelve characters. |
| Operation | TIMETICKETS | OPERATION | Four characters, for example 0010. |
| Posting Date | TIMETICKETS | POSTG_DATE | Period must be open. YYYYMMDD. |
| Yield | TIMETICKETS | YIELD | Good quantity confirmed. |
| Confirmation Unit | TIMETICKETS | CONF_QUAN_UNIT |
SAP Repetitive Manufacturing Backflush Upload Template (MFBF)
Backflush production in a make to stock repetitive environment. One row is one backflush.
BAPI_REPMANCONF1_CREATE_MTSWatch DemoThree flat importing structures and a control structure whose codes are zero padded, which is where Excel gets in the way.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Backflush Type | BFLUSHFLAGS | BCKFLTYPE | Two characters with the leading zero. 01 is a final backflush. |
| Material | BFLUSHDATAGEN | MATERIALNR | |
| Production Plant | BFLUSHDATAGEN | PRODPLANT | |
| Production Version | BFLUSHDATAGEN | PRODVERSION | Ties the material to its line and rate routing. |
| Receiving Storage Loc | BFLUSHDATAGEN | STORAGELOC | |
| Posting Date | BFLUSHDATAGEN | POSTDATE | Period must be open. YYYYMMDD. |
| Backflush Quantity | BFLUSHDATAGEN | BACKFLQUANT | |
| Unit of Measure | BFLUSHDATAGEN | UNITOFMEASURE |
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.
BAPI_ALM_NOTIF_CREATEWatch DemoA two step interface. The create call builds the notification in memory and a separate save call is what gives it a real number.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Notification Type | NOTIF_TYPE | NOTIF_TYPE | A separate parameter. M1 malfunction, M2 activity, M3 request. |
| Short Text | NOTIFHEADER | SHORT_TEXT | Forty characters. What is wrong. |
| Planning Plant | NOTIFHEADER | PLANPLANT | |
| Item Sort Number | NOTITEM | ITEM_SORT_NO | Four digits. Without it the item is silently dropped. |
| Item Description | NOTITEM | DESCRIPT | Forty characters. |
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.
BAPI_ALM_ORDER_MAINTAINWatch DemoA method driven interface. An instruction list says what to do and in what order, and the data sits in parallel tables.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Order Ref | IT_METHODS | REFNUMBER | Your own grouping key. Becomes the reference number in the method list. |
| Order Type | IT_HEADER | ORDER_TYPE | PM01 is the usual maintenance order type. |
| Short Text | IT_HEADER | SHORT_TEXT | Forty characters. |
| Planning Plant | IT_HEADER | PLANPLANT |
SAP Measurement Document Upload Template (IK11)
Record meter and measurement readings against measuring points. One row is one reading.
MEASUREM_DOCUM_RFC_SINGLE_001Watch DemoNot a BAPI. This is an RFC enabled function module with classical exceptions and a commit that is on by default.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Measuring Point | MEASUREMENT_POINT | POINT | Twelve characters, zero padded. |
| Reading Date | READING_DATE | IDATE | YYYYMMDD. |
| Reading Time | READING_TIME | ITIME | HHMMSS. |
| Recorded Value | RECORDED_VALUE | RECDC | Text, not a number. Use the decimal notation of whoever runs the load. |
| Recorded Unit | RECORDED_UNIT | UNITR | The unit the reading was taken in. |
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.
BAPI_QUALNOT_CREATEWatch DemoThe quality twin of the maintenance notification interface, with the same two step create and save behaviour.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Notification Type | NOTIF_TYPE | NOTIF_TYPE | A separate parameter. Q1 supplier, Q2 customer, Q3 internal. |
| Short Text | NOTIFHEADER | SHORT_TEXT | Forty characters. |
| Item Sort Number | NOTITEM | ITEM_SORT_NO | Four digits. Without it the item is silently dropped. |
| Item Description | NOTITEM | DESCRIPT | Forty characters. |
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.
BAPI_INSPOPER_RECORDRESULTSWatch DemoA three level hierarchy: characteristic, then sample, then individual measured value. Every numeric field is a character field.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Inspection Lot | INSPLOT | INSPLOT | Twelve digits. |
| Operation | INSPOPER | INSPOPER | Four characters. |
| Characteristic Number | CHAR_RESULTS | INSPCHAR | Four digits, sequential within the lot operation. Read it from the lot, do not type it. |
| Valuation | CHAR_RESULTS | EVALUATION | A accepted, R rejected. |
| Closed | CHAR_RESULTS | CLOSED | X closes the characteristic. Without it the operation stays open. |
| Result Number | SINGLE_RESULTS | RES_NO | Four digits. The counter for the inspection unit. |
| Result Value | SINGLE_RESULTS | RES_VALUE | Character field, CHAR 22. Format the column as text. |
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.
BAPI_CATIMESHEETMGR_INSERTWatch DemoInsert only. There is no key to re-run against, so a second load of the same file creates a second set of records.
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
| Column | SAP structure | SAP field | Note |
|---|---|---|---|
| Work Date | CATSRECORDS_IN | WORKDATE | One row per day. YYYYMMDD. |
| Personnel Number | CATSRECORDS_IN | EMPLOYEENUMBER | Eight digits. |
| Hours | CATSRECORDS_IN | CATSHOURS | Two 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
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