Skip to Content
Personal Insights

SAP EAM Data Migration Part 4 – Functional Locations and Equipment

Hello All,

This is Part 4 in the series on the migration of SAP Plant Maintenance data from SAP ERP Central Component (ECC) to SAP S/4HANA® Cloud. In this blog post, I will review the functional locations and equipment objects and the key table relationships, tricks, tips and processes for migrating your data using the files approach.

Part 1 – Introduction can be found with this link Part 1

Part 2 – Work Centers can be found with this link Part 2

Part 3 – Characteristics and Classes can be found with this link Part 3

Functional Locations and Equipment

Functional Locations

A functional location is an object typically used to structure other technical objects in a hierarchical manner according to spatial, process or functional needs. The Functional Location and Equipment records are very similar and function in similar ways. To me the biggest difference is a Functional Location typically stays in place for a long time and Equipment is installed and dismantled from functional Locations as they are repaired or replaced.

Additional information can be found in the link to the SAP Help files – Functional Locations

For conversion purposes, the following objects can be linked to the Functional Locations:

  • Classes and Characteristics assigned
  • Long Text (Covered in a separate document)
  • Documents (through services for Object (GOS))
  • Document Info Records (not relevant for this Customer)
  • Equipment installed
  • Bills of Material (Material BoM’s are linked through the Construction Type Field SUBMT)
  • Functional Location BoM’s are linked internally.
  • Task Lists (both General and Functional Location Task Lists)
  • Maintenance Items
  • Permits (not relevant for this Customer)
  • Object Networks (not relevant for this Customer)
  • Master Warranty (not relevant for this Customer)
  • Inbound / Outbound Warranties (not relevant for this Customer)
  • Reference Functional Locations (not relevant for this Customer)
  • Industry Specific Objects (not relevant for this Customer)
  • Other SAP Module integration, FI, CO, MM, PS, QM etc.

Data Relationship Diagrams

In this series, I have included diagrams to explain some of the key relationships between the tables. The legend for the diagrams is as follows:








Data Relationships between Tables and Objects – Functional Locations

This specific Customer has over 100 different Structure Indicators (edit masks) that were used extensively and were explicitly linked to the superior Functional Location. There was virtually no system assigned hierarchy, mostly all manually assigned. They also used alternative labeling to change the functional location as they need to due to initial incorrect identification or improvements in the naming conventions as needed to simplify the identification of the relevant objects. These two items made the conversion a bit more complex than normal and a few additional steps were needed to address the peculiarities that this imposed.

File Preparation – Functional Locations

We needed to get the explicit structure extracted from SAP Enterprise Central Component (SAP ECC) so that we could make sure the loading of the functional locations was in the correct order. We used transaction IH01 to get the Structure for exporting. Transaction IH06 was used to clean up the list of valid Functional Locations.

IH01 – Structural Display of Functional Locations

  1. Run Transaction IH01 for Plant XXXX, no selection of Equipment or Bills of Material. Just want the functional location structure.
  2. Expand all.
  3. If needed add columns for Structure Indicator/Edit Mask, Superior Functional Locations, Location, System Status and any other fields that you might need.
  4. Download to spreadsheet. The entries will be spread out across many Columns and will require clean-up and consolidation.
  5. Insert Column in column A, called INDEX. Enter 1 to N for each row in the structure. Keep this for later sortation back to original list. Our list has over 100K entries.
    • (NOTE: If multiple structure Indicators are used, you cannot sort the list by functional location or by Superior Functional Location and get the relationships correct, you require the index to maintain the proper alignment of the superior to lower level functional locations.
  6. Sort by columns, b, c, d, e to AV, etc., and move rows until all are aligned (this is a time consuming and painful process!)
    • We aligned all the entries so that we had one column each for INDEX, Functional Location, Structural Indicator, Superior Location, Location and Status.
  7. Make sure the keep the index for the load file sequence in the Load File Template. Tell the Data Team to NOT sort the list prior to loading as it will prevent the functional locations from completely loading, no matter how many times they try to re-run it.
  8. Do VLOOKUP against IH06 for active Functional Locations / Superior Locations after the IH06 file is prepped and ready. Remove any that are no longer relevant.
  9. Check to make sure lower level functional locations are removed from superiors that are no longer relevant.

IH06 – list of functional locations

  1. Used to get current list of valid and active functional locations.
  2. Run transaction IH06 wide open.
  3. Execute and download list to excel format
  4. Delete any Functional Locations that have DELETED, ARCHIVED, SCRAPPED, DO NOT USE, etc. in the FL Label.
  5. If there is a Boneyard/Scrap Floc for items that are no longer valid, scrub these as well. Make sure to check that all the functional locations are flagged for INAC or DLFL. If not, work with business to review and determine if they can be set to INAC or DLFL.
  6. Once the superiors are deleted check to see if there are any FL’s under that superior that need to be removed that still reference the superior functional location in TPLMA.
  7. Verify data is correct, then use the list of functional locations to load it into IFLOT table field in SE16N.
  8. Do a VLOOKUP with IH01 to bring in INDEX using the functional location as the key INDEX.
  9. Review the #N/A and delete if INAC and DLFL. May need to keep the INAC, depending on Customer needs.
  10. Make any substitutions that you need to for Work Center IFLOT-LGWID = CRHD-OBJID
  11. Check cost centers against current cost center list and adjust as needed
  12. Check Locations (STORT) against config check table T001L
  13. Check Object Type (EQUART) against config check table T370K
  14. Check Catalog Profiles (RBNR) against config check table T352
  15. Check WBS Elements against PRPS if relevant.
  16. Remove any references to Internal Orders as they probably are not converting.

IFLOT – Table for Functional locations

  1. In SE16N, Table IFLOT, Enter valid Functional Locations (TPLNR) from cleaned IH06 file
  2. Execute and download list to excel format
  3. Align the file with the load file template
  4. Change the Company code (IWERK) as appropriate
  5. Change Plant Codes as appropriate for Plant, Maintenance Plant and Plant related to Work Center.
  6. Use CRHD to get the ARBPL (work center ID) for IFLOT-LGWID (VLOOKUP with OBJID). Validate that the work centers aren’t flagged for deletion or no longer valid. Get with team to fix any that are not correct.
  7. Check Object Type (EQUART) against config check table T370K
  8. Check Catalog Profiles (RBNR) against config check table T352
  9. Make sure to insert a temporary Column A in the load file for the INDEX (from IH01) and do a VLOOKUP to bring in the INDEX, sort the file by the INDEX.

ILOA – PM Object Location and Account Assignment

  1. In SE16N, Table ILOA, selection input, enter Functional Locations (TPLNR) from cleaned IH06 file and enter ILOAN from IFLOT (Loc/AccAssmt field)
  2. Run in Background
  3. Go to SM37 to view job
  4. Click on the Settings button and change the last page number to 999999.
  5. Use Save to local file button
  6. Downloaded spreadsheet will need to be cleaned up.
  7. Check assigned cost centers against valid Cost centers for S/4HANA.
  8. Check Locations (STORT) against config check table T001L

IFLOS – Functional Location Alternative Labeling (If Active)

  1. In SE16N, enter table IFLOS and copy the TPLNR from the cleaned version of IH06 and execute
  2. Execute and download list to excel format
  3. Select all fields (there are not many in this table) and Download to excel
  4. Primarily for reference if there are later issues with maintenance items, or functional location task lists.


An Equipment is an object that is maintained and maintenance tracked individually, where the objects maintenance history is important to be retained. The object can be removed from a Functional Location or Superior Equipment, repaired and then placed back into service, potentially at the same or different Functional Location or Superior Equipment.

Additional Information can be found in the link to the SAP Help files – Equipment

The following objects can linked to Equipment

  • Classes and Characteristics
  • Long Text (Covered in a separate Blog Post)
  • Documents (through services for Object – GOS)
  • Document Info Records (not relevant for this Customer)
  • Functional Locations
  • Bills of Material (Material BoM’s are linked through the Construction Type Field SUBMT and the Equip BoM’s are linked internally.
  • Task Lists, both General and Equipment Task Lists
  • Maintenance Items
  • Permits (not relevant for this Customer)
  • Object Networks (not relevant for this Customer)
  • Master Warranty (not relevant for this Customer)
  • Reference Functional Locations (not relevant for this Customer)
  • Inbound / Outbound Warranties (not relevant for this Customer)
  • Production Resources and Tools (PRT’s) (not relevant for this Customer)
  • Industry Specific Objects (not included in this document)
  • Other SAP Module integration, FI, CO, MM, PS, QM etc.

Data Relationships between Tables and Objects


This Customer has a Condition Based Maintenance solution that internally keeps track of the measuring points and counters to send notifications and trigger preventive maintenance work orders so they did not have any measurement points or counters in the SAP ECC System to convert.

This object was one of the easier ones as the Customer had standard configuration and functionality. We used transaction IH08 to get the list of Equipment downloaded from the Legacy System and clean it up for loading into SAP S/4HANA.

IH08 – Equipment List

  1. Transaction IH08, selection – Maintenance Plant XXXX, Status Excluded DLFL. (Check with Business for the ones marked INAC to verify exclusion.)
  2. Execute and download list to excel format
  3. VLOOKUP against valid functional locations. Some equipment is not installed in functional locations so be careful not to delete them. Status AVAL versus INST
  4. Also use it for ARBPL_LOCATION, ARBPL_ORG
  5. May need data under the Sales and Distribution or Serial Data section where applicable. (not this Customer)
  6. Let cost centers flow from functional locations except for equipment not installed at functional locations or where specific equipment may have a different cost center for settlement, then enter the cost center for the load file.
  7. Check assigned Company Code, Plant, Maintenance Plant, etc.
  8. Check cost centers against valid Cost centers for S/4HANA.

EQUI – Equipment master data

  1. In SE16N, enter table EQUI, Use EQUNR cleaned list from IH08 as input
  2. Execute and download list to excel format
  3. Don’t need field BEGRU, ELIEF, GWLEN
  4. Make any substitutions that you need to for Controlling Area, Plant, Maint. Plant, Cost Center, Work Center, etc.
  5. Check if Cost Center for Floc is the same for the Equipment, some may not be. Check with business to verify and adjust as needed.
  6. Check Valid Work Centers and Plant assigned
  7. Check Locations (STORT) against config check table T001L
  8. Check Object Type (EQUART) against config check table T370K
  9. Check Catalog Profiles (RBNR) against config check table T352

EQUZ – Equipment Usage Periods

  1. Use cleaned list from IH08 as selection criteria Equipment numbers (EQUNR)
  2. Execute and download list to excel format
  3. Use CRHD to get the ARBPL (work center ID) for EQUZ–GEWRK (VLOOKUP with OBJID). Validate that the work centers aren’t flagged for deletion.
  4. Sort by equipment number, DATVU Newest to Oldest
  5. Data < Remove Duplicates use only on EQUNR to remove all the duplicated entries.

EQKT – Equipment Short text

  1. Use equipment numbers from EQUI and layout EQKT
  2. Execute and download list to excel format
  3. Only need if different languages are in scope.

Load File Preparation and Template

Used the SAP S/4HANA Version 1709 Data Migration Workbench for the loading of the Functional Locations and Equipment.

Align the fields in the extract files with the fields in the load file template as needed. Not all fields from the extracts are needed for the load file. The load file templates for Functional Locations and Equipment had only one tab in the template for all of the data that this Customer required.

Current versions may have more fields and functionality so it is important to always use the up to date templates.

For additional information about migration templates, see the SAP Help Portal (currently available for SAP S/4HANA Cloud only): Choose <your release> → Product Assistance → English → Data Migration →  SAP S/4HANA Migration Cockpit  → Migration Objects for SAP S/4HANA  → Available Migration Objects.

Remember to pay attention to the validity dates and make sure they are coordinated with the objects that the Functional Locations and Equipment are relevant for.

After these files are loaded, if there are characteristics that need to have their values updates, there is a separate load file format for this as described in SAP EAM Data Migration Part 3 – Characteristics and Classes, see link above.

Functional Location

  1. Align Fields in IFLOT with load file template.
  2. Make sure to insert a temporary Column in the load file template for the INDEX (from IH01) and do a VLOOKUP to bring in the INDEX, sort the file by the INDEX.
  3. Copy records into template.
  4. Remind the data team to delete the INDEX before loading and to not sort the file after removing.


  1. Align Fields in EQUI with the load file template.
  2. Copy records into template.
  3. We added fields at the end for TIDNR, MSGRP, EQFNR as this version of the migration cockpit did not include these fields and they were important to the Customer.
  4. Split out into two load files, the Numeric Equipment numbers and the Alpha Equipment Numbers as the number ranges need to be changed for each load file accordingly.

Closing Comments

These were some of the easiest load files to prepare and format for loading. There are separate Blog Posts planned for the objects related to Functional Locations and Equipment, such as the bills of materials, task lists, long text and attachment made through services for object.  I hope this will help you as you convert your data to SAP S/4HANA.

Please stay tuned for the next Blog Post in this Series SAP EAM Data Migration Part 5 – Bills of Material, coming soon. I look forward to your comments, feedback and engaging conversation. Please like and follow my profile to get updates as new content is added.

You must be Logged on to comment or reply to a post.
  • Hello Michael,

    I have a question related to Functional location and equipment template.

    While loading Equipment LTMC template after Functional location in S4, will the fields like STORT, MAINTROOM, BEBER inherit the values from Functional location file ?

    I am trying to understand the data flow and also do we need to populate these fields once again in Equipment file?


  • I believe it will depend on which version of the SAP S/4HANA data migration cockpit you are using. Standard functionality will inherit values from the functional location naturally. If supplied on the equipment load files, these values become explicit and any updates in the functional location are not passed on to the lower level objects that have values entered explicitly due to the data origin flags being set.

    I hope this answers your question,


  • Hi Michael,

    Could you tell me how to upload Functional location and Superior Functional location both through LTMC ? When we upload superior functional location (TPLMA) values, system issues an error Function location already exists.

    How to upload both fields through LTMC ? If we don’t supplement values, SAP assigns superior functional location internally. But the user has superior functional location values that needs to be populated in SAP.

    • Sabarie,

      So you first need to make sure your load file is sorted correctly so that the superior is always created first, the then lower level functional locations should create correctly. This can be an issue if different structure indicators are used that have different sort indexes.

      In the load file record for a specific functional location, you should have the field TPLNR for the Functional location to be created and the TPLMA for the Superior Functional Location which must be created prior to creating the record for TPLNR.

      Hope this helps.


      • Hi Michael,

        Thanks for your reply.

        Does TPLMA needs to loaded first and as a separate file than TPLNR ? Do we need to do a two separate loads for functional location ?

        Please clarify.

        • There is no need for separate files. Just make sure your load file creates the TPLNR that will be used in lower level functional locations as the TPLMA first, then the lower ones can be loaded that reference the superior.

          so if you have a functional location XX, it is loaded first, then functional location XX-X can be loaded with the field TPLMA = XX.

          Does that help?

          • Hi Michael,

            The load file has both TPLNR and TPLMA in two different columns. How am I supposed to load Superior functional locations first TPLMA and then lower level functional loaction TPLNR ?

            Do I need to load the data twice?

            Please correct me if I am wrong.

            Step 1 - Create XX functional loactions first without TPLMA

            Step 2 - Create XX - X  as a second load file with XX in TPLMA field..

            So the data load file needs to be prepared accordingly??



          • That is one way, however it can all be done in one load if you first sort by TPLMA then TPLNR so that the superiors are created first, then the lower levels are created IF based on the structure hierarchy and the same structure Indicator is used.

            If there are multiple structure Indicators and the TPLMA is explicitly identified instead of using the natural hierarchy, you have a real issue and need to have the business give you the list in the proper hierarchy level as I discussed in the Blog Post above.

            Good Luck.

  • Hi Micheal,

    Thank you for the reply.

    Yes, we have TPLMA values that's explicitly identified and not following natural hierarchy. During upload, there was an error while uploading TPLMA " F.L already exists" because TPLNR was already created.

    Does both column values gets stored in same table? This is the issue I have been trying to figure it out for quite sometime.


    • They do get loaded into ITOB, however your issue may be that because of the sort, the superior is not getting created before the lower level one. You can try running the file multiple times to see if it picks up the superior, but in my case it would have never picked them up.

      You have a couple of alternatives, One is to go back to the business and have then put the file in the proper sequence. (If this is an SAP ECC to SAP S/4HANA conversion, you might be able to use IH01 from ECC as described above to get the correct sequence.)

      Another is to run the file without any TPLMA Field entries and then go an run an update (change) to add the TPLMA field to the existing records.

      I feel your pain...

  • Hello Micheal,

    Waiting for your next article. Also, can you please write about production resource tools ? Looking for some of the good articles and your style of writing is very clear and easy to understand..


  • Hi Michael,

    Can you please let me know how to load data for Task list ,In tasks list service lines .We see there is no segment to load the data for service lines for equipment task list or general task list.Please let me know .



    • I will be discussing task lists in a future Blog Post.

      I do have some questions regarding what you are asking about. Can you please provide some additional data regarding what you are trying to do, what errors are you getting and what version of SAP are you using?

      • Hi Michael,

        I want to load service  contracts data in sap hana ,we don't have standard template or load program. We had a requirement to load the data for service contracts data for below fields.

        Field Name Table Screen Field Name

        Please let me know how to load using which tools.





        • Srini,

          I have little experience with service contracts so I can not recommend the load tools to use. You might post a question tot he general community and see if there are others that have done this before.

          I suggest that you check the SAP Data Migration Objects page if you have not already done so for your version. a link is supplied HERE. 

          Good luck in your quest.

  • Hello Michael,

    you mentioned that assigning Long Text to Functional Location or Equipment is covered in a separate document.

    Does this document/blog exists? (I haven't found it.)

    Are you able to provide the link?

    Best Regards

    • Michael,

      Sorry for the delay, I have used the standard KSMW for adding long text using the direct input program /SAPDMC/SAP_LSMW_IMPORT_TEXTS (object 0001, method 0001). If this object is not immediately available in the standard system. Run the following program to make it available:/SAPDMC/SAP_LSMW_SXDA_TEXTS

      Use the Object ID for the long text for the specific Object that you are loading.

      The Object ID is usually a concatenation of the Client  + other values relative to the specific object being loaded.


      The header tab in the spread sheet looks like this;

      Record Type Texts: application object Name Text ID Language Key
      C C C C C
      1 10 70 4 2

      The Items tab in the spread sheet looks like this;

      Record Type Tag column Text Line
      C C C
      1 2 72


      I will be expanding this in another Blog Post soon.


      Michael Kernan

  • Hello Michael,


    Thanks for the effort in creating this blog series.


    Do you have any suggestions for how to avoid creating duplicate Equipment Records when creating serialized materials?

    We will be migrating equipment which is linked to existing serialized materials, and we wish to link the loaded equipment with the materials after they have been migrated, however the standard process when loading inventory for serialized materials, will automatically create the equipment records, which we would like to avoid.




    • Tyrone,

      Ii you do not need to maintain the same equipment number from Legacy, I suggest that you allow the equipment masters to be created during the inventory load and then go back and fill in the relevant data in the equipment record,  That will ensure the single serialized equipment record is created and maintained.

      If the Equipment record is to be the same as legacy, then it becomes tricky, as you may need to adjust the serial number profiles and the configuration for the goods movement to not create the equipment record during initial load, and allow the system to have the equipment number provided as part of the program. That will require a clever Abapper.


      Michael Kernan

  • Hi Michael,

    Me Again! 🙂


    What would be your recommendation for migrating Functional Location/Equipment Addresses, seeing as the LTMC template does not cater for this.




    • Tyrone,

      You may have two options. Option one is to add code to the Direct BDCDATA section to add the address information. An easier Option would be to first create the Functional Locations / Equipment and then create a recording to add the address information to the created records.

      Hope this helps.


      Michael Kernan

  • Hi Michael,

    Bravo & thank you for these exponentially helpful blog posts.

    I'm helping a client load functional locations via LTMC (from ECC to S/4), and we've encountered the following issue (bullet points to make it easier to follow):

    • Superior functional locations are created
    • Child functional locations are created, with the corresponding superior functional location included in the load file and also correctly displayed in IL03
    • Problem: Attributes such as cost center are not inherited by the child functional locations. This is only the case when we are looking at functional locations loaded via LTMC. Manually-created ones do not face the same issue. In the data origin box for cost centers, the option to select Superior Location as the data origin is also grayed out.

    Do you know if this is standard functionality, and is there a workaround for it?

    Thank you in advance,


    • Paulina,

      My experience with the LTMC is limited to an earlier version and that is why I was using the LSMW tools. I suggest that you repost this question to the general community for others that have more experience with the LTMC to provide their input.


      Michael Kernan