Community Ask a Question Write a Blog Post Login Personal Insights Michael Kernan September 23, 2020 | 4 minute read SAP EAM Data Migration Part 1 – Introduction 21 44 12,326 Follow Like RSS Feed Hello to the SAP Community, I am starting a series of blog posts around the migration of SAP Plant Maintenance data from SAP ERP Central Component (ECC) to SAP S/4HANA® Cloud. In this series you will learn some of the key table relationships, tricks, tips and processes for migrating your data using the files approach. I hope you will enjoy this series and learn what it takes to successfully migrate SAP Plant Maintenance data. Links to future blog posts will be updated as they are published 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 Part 4 – Functional Locations and Equipment can be found with this link Part 4 Part 5 – Bills of Materials can be found with this link Part 5 Part 6 – Task Lists can be found with this Link Part 6 Part 7 – Maintenance Items and Plans can be found with this Link Part 7 Part 8 – Open Notifications (Future Topic) Part 9 – Open Work Orders (Future Topic) Introduction I was recently a team lead for the SAP Enterprise Asset Management work stream that was part of a larger effort to migrate a Customer from SAP ECC to SAP S/4HANA Cloud version 1709. Overall, it was a very successful go-live, though not without some stress and headaches. I am writing a series of blog posts to walk through in some detail the methodology that was used to extract, transform and prepare the objects/files for loading into the new system. This Customer did not use SAP Data Services, nor was the Team allowed to directly connect to the legacy system. This required us to use the Files method to migrate the data to SAP S/4HANA Cloud. Hopefully you will find it to be an interesting journey and I hope you will tag along to see how it all ends up. The General Process The SAP S/4HANA Cloud Version 1709, SAP Data Migration Cockpit did not have all the SAP Plant Maintenance Data Objects that the Customer needed to use to migrate their data. A hybrid approach was undertaken to leverage what was available in the SAP Data Migration Cockpit and supplement with the SAP Legacy System Migration Workbench Tools as well as some Custom Development for the attachments to objects, open notifications and work orders. Generally, the overall process involved the download of tables using transaction code SE16N and other transactions from the Legacy SAP ECC System for SAP Plant Maintenance business processes to local drives. Once downloaded, there were steps to review, sort, clean-up, transform and select the records relevant for the conversion. After the tables were scrubbed, further steps to link tables based on key field relationships, extracted the relevant data records, aligned the records for the load file templates and then populated the load files for upload into SAP S/4HANA Cloud using the combination of tools already discussed above. While the SAP Legacy System Migration Workbench Tools are no longer supported in SAP S/4HANA, some still worked and provided a way to augment the SAP Data Migration Cockpit. There was an extensive effort to test, validate and check the data converted using the SAP Legacy System Migration Workbench Tools to ensure the data was converted completely and correctly. Subsequent releases of SAP S/4HANA and the SAP Data Migration Cockpit expand the capabilities and provide a more robust tool. EAM Data Objects Supporting the PM Business Process I would like to start with a basic review, so that it is clear what objects may be involved to enable the SAP Plant Maintenance Business Processes. The following diagram describes how the master data is integrated into the Planning and Work Order Processing functions for SAP Plant Maintenance. This is a simple diagram to identify the core objects. Master Data (orange) and Business Transactions (green) are shown as follows: Planning and Work Order Processing PM Data Object Relationships The following graphic shows the general relationships between some of the SAP Plant Maintenance Objects, master data (orange) and business transactions (green). It is similar to the above diagram and contains additional details and relationships to be considered. Not all of the objects are identified as the graphic would be too complex and the Customer did not use all of the objects, PM Data Object Relationships Objects Extracted from SAP ECC The following objects were extracted from the Legacy SAP ECC System. Work Centers HR Employee Assignment To Work Centers (Manually Created And Assigned in SAP S/4HANA Cloud) Characteristics Classes Characteristic Values assigned to the technical objects. Functional Locations Equipment Materials (Coordinated with the Materials Management Team) Equipment Bom Material Bom Functional Location Bom General Task Lists Equipment Task Lists Functional Locations Task Lists Maintenance Items Maintenance Plans Maintenance Plan Scheduling Open Notifications (Custom Extract and Load Program) Open Work Orders (Custom Extract and Load Program) Purchase Orders (coordinated with the Procurement Team) Attachments (Services For Objects) Long Text For Some Objects This is the start of a series of blog posts that will go into further details regarding the relevant objects, tables extracted that were used for the migration process and the key table relationships. Not all SAP Plant Maintenance relevant objects were used by the Customer. The above list focuses on the ones that were relevant. In the next blog post, A Journey in Data Migration Part 2 – Work Centers we will dive into the objects for the work centers, identifying the key relationships, tables and methods used to extract, clean-up and prepare the load files. DISCLAIMER: Community Ask a Question Write a Blog Post Login Personal Insights Michael Kernan September 25, 2020 | 10 minute read SAP EAM Data Migration Part 2 – Work Centers 19 16 6,409 Hello All, This is Part 2 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 work center object 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 1 has the links to the other Blog Posts Some of the information herein had been gathered from various SAP Blog Posts in the SAP Community, (References included where applicable) and some of it is my original work. I would like to thank all of those that have posted solutions and hopefully I have added some value that you find useful. A special thanks to Camilo Veloso (camiloveloso@hotmail.com) whose work done years back in putting a graphic of the SAP PM Table Relationships out on the internet was a time saver and many of the relationships started from that work. I have expanded the work into what is shown herein. Work Centers in SAP Plant Maintenance Work Centers are fundamental objects in SAP Plant Maintenance that drive a lot of functionality. Work Centers in SAP Plant Maintenance can be groups of people, individual production machines, unique equipment or tools that are used in maintaining other equipment and must be scheduled. Depending on the type or Work Center category, data is maintained accordingly. There is a difference between what is called the Main Work Center which is the supervisory group to ensure work gets done, the Work Center on the Work Order Operations which perform the specific operation and the Work Center as a production machine which is a reference object that can be used to show when production machines are to be scheduled for maintenance to minimize production loss. Work Centers, when used for people, are typically organized around a skill, trade or specific function. If the SAP Human Resources Module is in use, the internal employees can be linked to Work Centers for capacity planning, resource scheduling, qualifications assessment and assigning specific people to operations in the work order. There are also several ways that external contractors can be represented for similar assignments. The key components in a Work Center are the control key (internal vs external), capacity (how many resources are available and who can be assigned), costing (what cost center and activity type/rate are applicable), scheduling (when are the resources available) and qualifications (what skills are required to perform the work). Work Centers are used extensively throughout the SAP Plant Maintenance Objects. They are integrated in the equipment and functional locations that allow defaulting into notifications and work orders / operations, task lists, maintenance items, confirmations, just to name a few. Because of this integration into the SAP Plant Maintenance business processes, it is critical to get right and depending on the Customers requirements, the design for the Work Centers can vary from simple to quite complex. For the Work Center conversion the SAP S/4HANA Data Migration Workbench was used to load the Work Centers. This was a fairly straight forward extraction and conversion object for this Customer as standard functionality was maintained, hierarchies were not used nor were qualifications and skills used. 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: Work Centers Data Relationships between Tables and Objects The following Diagram describes the key relationships between the work center tables and other key objects that were relevant for the Customers migration efforts Steps To Extract The Tables And Prep The Load Files CRHD – Work Center Header 1. In Transaction SE16N, enter CRHD for the table, then select Work Center Object Type = A (OBJTY) and Category 0005 (VERWE), Plant #### (WERKS), Deletion indicator = Blank 2. Further refine list based on work center no longer relevant or is being consolidated (run transaction CR05 to get list of locked/deleted work centers and do VLOOKUP with CRHD) 3. Can also download table CRTX or CRHD_V1 with OBJID and get list of text for the work center descriptions. 4. In downloaded spreadsheet for CRHD, change the Control Key (STEUS) for all work centers as appropriate. 5. Optional – delete columns for PAR01- PAR06, PARU1 – PARU6, PARV1 – PARV6, VGM01 – VGM06, ZGR01 – ZGR06, if blank and any other empty columns. 6. Optional – ignore entries in MATYP, CPLGR, SORTB, these are on the technology tab and may not be relevant. 7. VGWTS = SAP0 (Standard Value Key) 8. Move KAPID column to Column A., Sort by OBJID initially. You will sort by KAPID later for other steps. 9. Once the list is set, save as CRHD_005_ALL all and use in later steps and other objects to look up work center name based on OBJID. 10. In the Work Center load template, Work Center Header tab: Insert column A for OBJID and align CRHD columns with data load template for copying into load file. 11. FORKN may need to be changed to SAP008 12. FORTN may need to be changed to SAP004. 13. PLANV may need to be 04 14. KTEXT needs to be brought in for the description of the work center in the load file. 15. KAPID in load file needs to be removed for the work center header tab. 16. VGDIM and VGARB in the work center header tab needs to have TIME and HR entered for every line item. 17. FORN1 needs to be SAP008 18. PDEST will need to be updated as the printer ID’s will all change. Update if known, enter the new printer ID, otherwise manually update after conversion once the printers are identified in the system.. 19. Sort by ARBPL A to Z CRHD_V1 – Work Center Generated Table View 1. In SE16N use refined list from CRHD to find work center description via VLOOKUP with OBJID between CRHD and CRHD_V1 and add to CRHD_005_ALL above. CRCA – Work Center Capacity Allocation 1. In SE16N use refined list from CRHD, use internal Work Center Number OBJID to get to valid Capacities. 2. Insert column A for ARBPL, and do a VLOOKUP between CRHD_005_ALL and CRCA using OBJID to get ARBPL. 3. KAPID is the internal ID for the Capacities that are applicable for each OBJID. 4. Valid from Date is BEGDA, End date is ENDDA (latest will always be ENDDA = 12/31/9999 5. Use KAPID to VLOOKUP entries valid in KAKO 6. In the Work Center load template, Work Center Capacity tab, Insert column A for OBJID and align CHRD columns with load template, for copying into load file. 7. FORKN = SAP008 for all entries. Might be different for other Customers. 8. Sort by ARBPL A to Z and CANUM lowest to highest. 9. Will be used on several of the Work Center load template tabs, (Work Center Capacity, Interval of Available Capacity, Capacity Shift Values and Work Center Cost Center.) CRCO – Assignment of Work Center to Cost Center 1. In SE16N use the Work Center Internal ID OBJID from CRHD to get the valid cost centers, activity type, etc. 2. Valid from Date is BEGDA, End date is ENDDA (latest will always be ENDDA = 12/31/9999, Filter on ENDDA not = to 12/31/9999, delete all entries. You should have two remaining entries for each work center. 3. Filter LANNUM = 1 and Delete entries 4. Change KOKR to XXXX as appropriate. 5. Check assigned cost centers against valid Cost centers for target system. 6. Make sure CRCO-FORML has SAP008 for all entries. This field will map to FORN1 in the Work Center load template, tab for Work Center Cost Center 7. Align table with Work Center load template, tab for Work Center Cost Center to copy into load file for work center and cost center 8. Check activity types in LSTAR in CRCO. In load file LSTAR = LARN1 Not LSTAR1 KAKO – Capacity Header data with short text 1. In SE16N use internal Capacity ID (KAPID from CRCA) to get the relevant records 2. Change HRS to HR for KAPEH and MEINS (Depends on Settings) 3. Factory Calendar: Change as needed to the valid calendars in the load file. 4. Add Columns for OBJID and ARBPL, do VLOOKUP with CRHD_005_all to get values based on KAPID. 5. BEGZT, ENDZT, and PAUSE are in Seconds, (60 sec x 60 min x 24 hours = 1 day) need to convert to Time units HH:MM:SS (Excel Time = Number of Seconds / 86400 to Days) Change cell format to Custom h:mm:ss. 6. Check for Capacity (ANZOR) = 0 There shouldn’t be any 0’s in the capacity of the work center. Need to go back to planners to find out what the capacity should be. 7. Check for (NGRAD) Utilization = 0, This means there is no capacity in the work center. Should 100% or 80% or 125% for example. 8. Sort by ARBPL A to Z. 9. Align table with Work Center load template, will be used on several tabs – Work Center Header tab, Work Center Capacity tab and Interval of Available Capacity tab to copy select fields into load file. KAZY- Capacity Header data with short text (Only if relevant) 1. In SE16N use internal Capacity ID (KAPID) from CRCA to get the relevant records. 2. Do a VLOOKUP against CRHD_005_all to get KAPID not included in KAZY, Add the missing work centers, default version 1 (VERSN) and copy values from another work center to all missing entries. 3. Only DATUB = from (Earliest Validity Date used across all master data elements) Ex.,1/1/2015 to 12/31/9999 where multiple KAPID and VERSN from 1 to 3. 4. Insert column A in KAZY for work center name (ARBPL) and do VLOOKUP with CRHD field KAPID to get ARBPL (in CRHD you may have to move column that is KAPID to column A) 5. Align table with Work Center load template, Interval of Available Capacity tab to copy into load file. 6. In the Work Center load file, the Intervals of Available Capacity tab to get DATUV, Insert Column to right of DATAB (Valid to) and call it DATUV (Valid From), for each version 01 and 03, create a formula that adds one day to the date in DATUB for the previous entry. If version 01 has a DATUB of 12/31/9999, no need for any formula. If there are multiple entries for version 03, then the first entry has a blank DATVU and the second entry has the formula to add one day to the DATUB to get the correct DATVU value. Example for DATVU Sort by ARBPL A to Z, VERSN low to high, DATUB Oldest to newest KAPA – Shift Parameters / Intervals (Only if relevant and if needed for conversion) 1. In SE16N use Capacity ID from CRCA to find relevant records. 2. Insert column B for ARBPL for work center name (ARBPL) and do VLOOKUP with CRHD field KAPID to get ARBPL (in CRHD you may have to move column that is KAPID to column A) 3. Also insert column for ARBPL and do a VLOOKUP with CRHD_005_all to get Valid entries for ARBPL, delete the #N/A entries as no longer valid. 4. Only need last intervals or ones in the future DATUB that start after base validity date, ex.,01/01/2015 5. BEGZT, EINZT, ENDZT, KAPAZ are in Seconds, need to convert to Time units HH:MM:SS (Excel Time = Number of Seconds / 86400) Change cell format to Custom hh:mm:ss. 6. Align entries with KAZY, remove VERSN 02 entries, 7. Insert Columns for WERKS (XXXX) and CANUM (512) to the right of ARBPL for ease in copying to load file. 8. Align table with Work Center load template, Capacity Shift Values tab to copy into load file. Final Load File Preparation 1. Align the fields in the extract files with the fields in the load file template as needed. Not all fields are needed for the load file. 2. Once load file is ready, remove from Work Center Header tab OBJID (Column A that was inserted earlier). Make sure field KAPID is blank as this is created internally upon initial load. 3. Once load file is complete remove from Work Center Capacity tab OBJID and KAPID (Columns A and B that were inserted earlier). 4. Once load file is complete remove from Work Center Interval of Available Capacity tab the KAPID (Column A that was inserted earlier). 5. Make sure Capacity Category = 002 (KAPAR) on the Work Center Header and the Work Center Capacity Tabs. 6. On Work Center Header Tab, make sure VGDIM and VGARB are filled out with TIME and HR respectively. Work Center Load File Structure Used the SAP S/4HANA Version 1709 Data Migration Workbench for the loading of the Work Centers for SAP Plant Maintenance. The load file has separate tabs for Header information, Capacity, Intervals, Shifts and Costing. 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): https://help.sap.com/s4hana. Choose <your release> → Product Assistance → English → Data Migration → SAP S/4HANA Migration Cockpit → Migration Objects for SAP S/4HANA → Available Migration Objects. Manual Conversion of Employee Assignment to Work Centers The SAP Human Resources (SAP HR) Mini-Masters were manually maintained by Customer for the employee scheduled absences as there was no integration between new Non-SAP Human Resource System and SAP S/4HANA. There are standard conversions available to load and it depends on the number of employees that are to be loaded. Customer chose to manually create the master data due to the relatively small number of records. HR Org Structure – to be created manually by SAP HR Consultant T-Code is PPOCE to manually create HR Mini-Masters – To be created manually by SAP HR Consultant T-Code is PA30 to manually create Assign Employees to Work Centers – This was a manual process as there were only about 100 people to be assigned to the work centers as part of the cutover using T-Code IR02, on the Capacity Header tab, use the HR Assignment button. We did some employee assignment to multiple work centers. Qualifications assigned to Employees – This was not relevant for this Customer. Closing Comments Make sure to use a validity start date (BEGDA) that is in the past far enough to accomodate the starting dates for Maintenance Plans, Task Lists, etc. Also work with the Finance Team to have the cost centers, activity types and rates with matching start dates so that there are no issues when trying to create objects and schedule maintenance plans for the first time. Validity Dates will cause all kinds of problems and errors so pay close attention to them! If the Customer does not need to use intervals of available capacity, it does make the conversion process easier. After golive and with discussions with the Customer, it was determined that the intervals of available capacity are always manually created when needed and we could have avoided this conversion piece and saved some time. Customer did not use the Work Center Hierarchies and I believe the SAP S/4HANA Data Migration Workbench does not yet support the creation of the Work Center Hierarchies. If anyone knows different, please let me know. This is an object that once the Cost Centers and Activity types are created by the Finance Team, can be loaded early, before cutover starts into the Production Client. Follow Like Please stay tuned for the next Blog Post in this Series SAP EAM Data Migration Part 3 – Characteristics and Classes, coming soon. I look forward to your comments, feedback and engaging conversation. Please follow my profile to get updates as new content is added. RSS Feed Assigned Tags PLM Enterprise Asset Management (EAM)/Plant Maintenance (PM) SAP S/4HANA SAP S/4HANA migration cockpit data conversion Alert Moderator data migration eam ecc View more... Similar Blog Posts SAP EAM Data Migration Part 1 - Introduction By Michael Kernan Sep 23, 2020 SAP Asset Intelligence Network Jump Page By Roopa Ravikumar Jan 22, 2018 Implementing Permit to Work with SAP WCM in S/4HANA - Part 3 By Arvind KULKARNI Sep 23, 2020 Related Questions Data Migration from ECC Enterprise Asset Management (EAM)/Plant Maintenance (PM) By Antonio Sanz Jun 03, 2019 Can we migrate mass PM orders with reference to functional location (not equipment)? By Vaibhav Manjarekar Nov 16, 2022 Implementation time of SAP EAM By Hernan Dario Rodriguez Sep 14, 2015 19 Comments You must be Logged on to comment or reply to a post. Rajasekhar Yadav Surabiboyena September 28, 2020 at 4:09 pm Hi Michael Awesome, Looking forward for further blog post, thank you for your time and information. Like 0 | Share Michael Kernan | Blog Post Author September 28, 2020 at 6:21 pm Your Welcome, please check the Like and also follow me to get updates as they occur. Like 1 | Share korlapati Manikanta November 25, 2020 at 5:12 pm Hi Michael, Thanks for your time and information. Like 0 | Share Chaouki Akir December 1, 2020 at 2:40 pm Assign Employees to Work Centers – This was a manual process as there were only about 100 people to be assigned to the work centers as part of the cutover using T-Code IR02, on the Capacity Header tab, use the HR Assignment button. We did some employee assignment to multiple work centers. We are using transaction LTMC to upload Work Center. But in the LTMC template file there is no tab for HR data (assignment to HR organizational entity). As far as you know, are there no standard object to upload this information (Work center : assignment to HR org. entity) ? Like 0 | Share Michael Kernan | Blog Post Author December 1, 2020 at 2:48 pm Chaouki, Depending on the version of the LTMC that you are using, you are correct. I suggest that if you have a large number of employees to assign to work centers that you look into a custom development. If you have a small number, then manual assignment is the way to go. Good luck. Like 0 | Share Chaouki Akir December 2, 2020 at 12:43 am Thank you Michael. There will be 250 Work Centers to upload. We are trying to create a specific LTMC object that will call HR function modules used by IR02 transaction to assign HR entity. Like 0 | Share Namit Kumar May 28, 2021 at 2:08 am Nice Document Like 0 | Share Suvrojoti Bhunia January 24, 2022 at 2:03 pm Hello Michael, Thanks for this document. It is really helpful in understanding the logic. I am working on Production resources and facing one issue. Our logic goes as below:Fetch the KAPID from KAKO and get the KAPAR(capacity Category) . Next we join KAPID from KAKO to CRCA to get the OBJID. Now for same OBJID in CRHD KAPID is missing or maintained as 000000. We are trying to implement this as in Work center template Header has capacity category and same category is there in Work Center Capacity view. But with the above discrepancy we are unable to place the category in header hence the LTMC fails. Can you please suggest if this is the correct way I am looking into this? Capacity category in header Capacity Category column in work center capacity Thanks in advance. Like 0 | Share Michael Kernan | Blog Post Author January 24, 2022 at 2:10 pm Are you also taking into account the OBJTY for the OBJID? Those are two are the keys to make sure the results are unique. Like 0 | Share Suvrojoti Bhunia January 24, 2022 at 6:28 pm Yes I am taking those fields when joining CRCA and CRHD. I am attaching the sample sql result data from our ecc schema of hana DB(ECC) where records are containing such data. Can such data be there in the source ECC system where the CRHD KAPID has no reference to CRCA/KAKO even though OBJID and OBJTY is same? Sample ECC source case Like 0 | Share Michael Kernan | Blog Post Author January 24, 2022 at 6:45 pm Have you looked in the ECC System to see what is being displayed in IR03 or CR03 for the specific work center in question? Look at the Capacity Tab and go to the header and details, check if there are multiple capacity segments assigned to the work center. Just a guess. Like 0 | Share Anajan Majumdar November 1, 2022 at 11:42 am Hi Michael, Thanks for your elaborate analysis. Pardon me but I think am still missing something. In the header tab we have Work Center/Resource. Can't we pass a new value (non existing Work center in CRHD) over there? If that can't be done then what's the process of 'creating' a new Work Center? I tried to pass a value in that field and it threw error in mapping state. Thanks a lot in advance! Regards, Ananjan Like 0 | Share Michael Kernan | Blog Post Author November 1, 2022 at 11:52 am What version of SAP S/4HANA are you implementing and are you using the Migration workbench tools for the upload of the work centers? Please make sure the OBJID fields are blank as per the instructions above. Also make sure the other tabs in the workbook are filled in correctly to complete the load efforts. Regards, K Like 0 | Share Anajan Majumdar November 1, 2022 at 1:53 pm Hi Michael, Thanks for your response. We are using 2020 version. I am using Migration cockpit (LTMC) and not migration workbench(LSMW) as of now. Let me attach here ss from the workbook that I am using. Could you please check once if you have couple of mins. Thanks a lot! Work Center Header Tab Work Center Capacity Tab Like 0 | Share Michael Kernan | Blog Post Author November 1, 2022 at 2:12 pm A couple of things to consider. Make sure your Work Center ID is within the allowable character length Make sure that some of the internal number do not have values in them. Make sure your formulas are correctly defined. Make sure the other tabs are correctly filled in to complete the build out of the file and load. What errors are you getting? Like 0 | Share Anajan Majumdar November 1, 2022 at 2:47 pm This is the issue am getting as of now. Made those couple of points double sure but can't see an issue there. LTMC Issue Like 0 | Share Michael Kernan | Blog Post Author November 1, 2022 at 2:54 pm Check the length of you work center ID, you have 11 Characters and ARBPL is 8 an Character field.. Is the CAF1 Plant a valid Plant? Like 0 | Share Anajan Majumdar November 1, 2022 at 3:29 pm Spot on the Master! Trimming it to 8 chars and solving few other config issues enabled us to load the data. Immense thanks for your help! A true savior! Like 0 | Share Michael Kernan | Blog Post Author November 1, 2022 at 3:34 pm no worries, glad it is working. Like 0 | Share Find us on Privacy Terms of Use Legal Disclosure Copyright Trademark Newsletter Support Community Ask a Question Write a Blog Post Login Personal Insights Michael Kernan September 29, 2020 | 10 minute read SAP EAM Data Migration Part 3 – Characteristics and Classes Follow 4 13 10,678 Hello All, Like RSS Feed This is Part 3 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 characteristic and classes 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 1 has the links to the other Blog Posts. Characteristics and Classes Definition A characteristic is an object that describe a property that serves to identify and differentiate between objects. Examples: length, color, weight, counters, and so on. The characteristic can be numeric, character, date/time, currency, or user defined. Characteristics are created centrally and used in various classes. Additional Characteristic Information – SAP Help A class groups together similar objects described by the same characteristics. The class types determine which objects can be assigned. Additional Class Information – SAP Help Characteristic values are then assigned to the specific characteristics in a class for the specific object, i.e. Functional Location, Equipment, Materials, etc. Needs to be a separate conversion so that the values are correctly assigned to the specific object. 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: References SAP Blog Post on Links for Classification Tables Data Relationships between Tables and Objects – Characteristics and Classes Steps To Extract The Tables And Prep The Load Files Characteristics Tables CABN – Characteristics 1. Use SE16N to download based on KSML valid Characteristic (KSML-IMERK = CABN-ATINN) Table contains the property of the Characteristic. It contains the type, description of the characteristic. 2. Some of the Field names are slightly different so be careful when mapping field to the load file. for example, MSEHI (unit of measure) is split into two fields MSEHI_1 (Base unit of measure ISO format) and MSEHI_2 (Currency key ISO Format. 3. Join between CABN, AUSP and other tables can be as follows: AUSP-ATINN = CABN-ATINN CABNT-ATINN = CABN-ATINN CABNT – Characteristics Descriptions 1. Use SE16N to download based on KSML valid Characteristic ((KSML-IMERK = CABNT-ATINN). 2. Table contains the property of the Characteristic. It contains the type and description of the characteristic. 3. Key is ATINN. 4. Can also be used if there are different languages in use (SPRAS). 5. Do a VLOOKUP to put the characteristic description in CABN using the ATINN between boith files. CAWN – Characteristics Values 1. Contains the allowed values for characteristics. (ATFLV for values and ATWRT for text) ATZHL is the item or position number in the list, 2. Key is ATINN. 3. Use for the load file as applicable CAWNT – Characteristics Values Text 1. Text Values for the characteristics 2. Key is ATINN. Class Tables Since Classes are groups of Characteristics that can be assigned to Technical Objects and other master data objects in SAP. In SAP Plant Maintenance, this Customer used Classes primarily on Functional Locations, Equipment. Task Lists, Materials, and Notifications. Classes were created specific to a Class Type (001, 300, 200 for Materials, 002 for equipment, 003 for functional locations and 015 for notifications). There are many other Class types, this is just the ones we used for this project. There were two separate load files for classes where some classes for class type 002 – equipment were duplicated with class type 003 – functional location. KLAH – Class 1. In SE16N, Table KLAH, select by Class Type to get concise list 2. Create INDEX if there are Classes used by more than one Class Type (If equipment and functional locations use the same classes) Concatenate the fields CLINT and KLART to identify the specific classes and class types. 3. KLAH-CLINT = SWOR-CLINT VLOOKUP between these two tables can get the Key Words with corresponding language key 4. Insert Column to right of CLINT, call it CLINT2 and copy/paste CLINT as values to get rid of leading zeros. Easier it look up other values. KLAT – Class Text 1. In SE16N, select values based on the Clint from KLAH 2. Download to excel 3. VLOOKUP with SWOR to find the class Key Words based on the CLINT KSML – Characteristics assigned to Class 1. Use SE16N and use the Classes from KLAH can be used to find the Characteristics that need to be created for the characteristics load file 2. Create INDEX if there are Classes used by more than one Class Type (If equipment and functional locations use the same classes) Concatenate the fields CLINT and KLART to identify the specific classes and class types. Load File Template for Characteristics and Classes Used the SAP S/4HANA Version 1709 Data Migration Workbench for the loading of the Characteristics and Classes in different template load files. For the Characteristics Load file we needed to separate out the allowed values to separate tabs in the spreadsheet by Character, Numeric or Currency as necessary for the load file template tabs. Do VLOOKUPS between the table extract s and the Load file tabs to find where the field names have changed and which tables fields are pulled from. In the Characteristic load templates, some of the field names are different than the legacy field names. POSNR is an internal counter for the load program and other fields need to be reviewed to identify the proper origin. 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. In the Characteristics Load file template, there are 9 separate Tabs for Attributes (header info), Descriptions, Allowed character based values, Allowed numeric values, Allowed currency based values, Description for character based values, Check table for references, Attributes additional data and Restrictions to class type. In the Classes Load file template there are 4 tabs, General data, Descriptions and key words, Long text and Characteristics. The Load files for Classes were separated into different load files for Class 002 – Equipment, 003 – Functional locations and 015 – Notifications 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): https://help.sap.com/s4hana. 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 class and characteristics are relevant for. Characteristic Values Assigned to Objects Where Classes and Characteristics are assigned to objects, example Equipment or Functional Locations, specific values may have been assigned to Characteristics to specifically identify the properties for that Object. Extracting the values assigned to the Characteristics of an Object can be complex, however SAP does have a way to make if a bit more simple. First a little information on some of the key relationships between the class and characteristics tables. Make sure and check to see in the class type configuration (transaction O1CL), if the “Multiple Objects Allowed” indicator is set. If set, then you need to go through INOB-CUOBJ to get the corresponding AUSP-OBJEK, If not set, then the values are in AUSP. When Flag MULTIOBJ is set; INOB-OBJEK = EQUI-OBJNR (If Numeric, 18 Char, remove first two characters “IE”, If has text, then just the EQUNR is used, no leading 0’s. INOB-OBJEK = IFLOT-OBJNR (18 Char. Remove first two characters “IF” + Leading 00 or ?0 if alt label active INOB-OBJEK = MARA/MARC-MATNR (18 Char with leading zeros) INOB-CUOBJ = PLKO-PLNTY+PLNNR+PLNAL AUSP – Characteristic Values This table saves the value of characteristic for a single business object (Functional Location, Equipment, Customer , material, etc. ). The AUSP-OBJEK refers to business object key, examples; Material Number from MARA-MATNR). Functional Location Object Number from IFLOT-OBJNR The value of the Characteristic can be found in AUSP-ATWRT (neutral value), AUSP-ATFLV for Date Values. INOB – Link between Internal number and Object INOB-CUOBJ = AUSP-OBJEK <<<<Characteristic value can be found here (TPLNR or EQUNR) INOB-CUOBJ = KSSK-OBJEK (Here you need to use the full digit of INOB-CUOBJ including the leading zero to find the KSSK-OBJEK.) To find classes assigned to functional locations or Equipment, get the value of CUOBJ from INOB by entering the functional location label (IFLOT) or the Equipment Record (EQUNR) in the INOB-OBJEK field. Then, look up CUOBJ (with padded zeros) in KSSK-OBJEK and use field CLINT to link to KLAH. To find classes assigned to functional locations or Equipment, get the value of CUOBJ from INOB by entering the functional location label (IFLOT) or the Equipment Record (EQUNR) in the INOB-OBJEK field. Then, look up CUOBJ (with padded zeros) in KSSK-OBJEK and use field CLINT to link to KLAH. If there is a “?” in front of the OBJEK entry as the first character for functional locations, this is a result of alternative labeling being used to change the functional location. You can add the field TPLNR to the INOB spreadsheet by a VLOOKUP with table IFLOT using the OBJEK field to get the TPLNR values. KSSK – Link of Objects to Classes KSSK-CLINT = KLAH-CLINT <<<<Class name can be found here Refer to KSSKAUSP Below for additional information on getting the actual values assigned to the characteristic. Table view KSSKAUSP – Brings it all together the easy way There is a generated view table KSSKAUSP that can be used to get the characteristic values assigned to the technical objects. It will duplicate the values when multiple classes are assigned, so you need to run for each class type (002 – Equipment, 003 – Functional Location, 015 – Notifications).Using SE16N, create separate files for the processing. (KSSKAUSP_002, KSSKAUSP_003, and KSSKAUSP_015) You will need to create several indexes. In KLAH, and KSSKAUSP_XXX, create INDEX that concatenates CLINT +_ + KLART. With leading Zero’s. used for VLOOKUP between KLAH and KSSKAUSP_XXX files to bring CLASS Name (CLASS) and if needed Class Group (KLAGR) into KSSKAUSP_XXX. In each file KSSKAUSP_XXX, create index “CLINT-IMERK” that concatenates the Internal Class Number and the Characteristic ID CLINT +_+ ATINN to be used for VLOOKUP between KSSKAUSP_XXX and KSML to get POSNR (Position number) . Equipment Characteristic Values In the file KSSK_AUSP_002, insert column for EQUNR to bring in the equipment number from EQUI using the OBJEK in EQUI. Insert field after KLART in KSSKAUSP_002 for EQUNR and use the VLOOKUP to get EQUNR using OBJEK between both tables. In file KSSKAUSP_002 insert Column for Class after KLART and use the INDEX field to VLOOKUP the Class name between KLAH and KSSKAUSP_002. In file KSSKAUSP_002 insert Column after ATINN for POSNR and use index CLIT-IMERK to get the POSNR from KSML. Check entries for #N/A to see if relevant or can be deleted. KSSKAUSP_002 Fields ready for use in load file CLINT-IMERK CLINT+ATINN INDEX CLINT+KLART OBJEK Key of object to be classified CLINT Internal Class Number KLART Class Type CLASS Class Name from KLAH EQUNR Equipment Number from EQUI ATINN Internal Characteristic POSNR Position number from KSML ATWRT Characteristic Value ATFLV Internal Floating Point From ATFLB Internal Floating Point To MAFID Indicator Object / Class ATZHL Characteristic Value Counter STATU Classificaiton Status ATCOD Code for value dependency LKENZ Deletion Indicator AENNR Change Number ATAWE Unit of Measure KSSKAENNR Change Number KSSKLKENZ Deletion Indicator ATIMB Characteristic number of user-defined type ATZIS Instance counter DATUV Valid from date KSSKDATUV Valid from date Note: not all of these fields are needed in the load file. Functional Location Characteristic Values Bring in Functional Location (TPLNR) using OBJEK in IFLOT. Insert field after KLART in KSSKAUSP_003 for TPLNR and use the VLOOKUP to get TPLNR using OBJEK between both tables. Create INDEX in KSSKAUSP_003 and in KLAH that combines CLINT + KLART, use to get Class name from KLAH for each entry in KSSKAUSP_003. Insert a new Column A and create INDEX CLINT-IMERK that combines CLINT + ATTINN, use to VLOOKUP to get POSNR from KSML. Check entries for #N/A to see if relevant or can be deleted. KSSKAUSP_003 Fields ready for use in load file CLINT-IMERK CLINT+ATINN INDEX CLINT+KLART OBJEK Key of object to be classified CLINT Internal Class Number KLART Class Type CLASS Class Name from KLAH TPLNR Functional Locaton from IFLOT ATINN Internal Characteristic POSNR Position number from KSML ATWRT Characteristic Value ATFLV Internal Floating Point From ATFLB Internal Floating Point To MAFID Indicator Object / Class ATZHL Characteristic Value Counter STATU Classificaiton Status ATCOD Code for value dependency LKENZ Deletion Indicator AENNR Change Number ATAWE Unit of Measure KSSKAENNR Change Number KSSKLKENZ Deletion Indicator ATIMB Characteristic number of user-defined type ATZIS Instance counter DATUV Valid from date KSSKDATUV Valid from date Notification Characteristic Values For this Customer, the notifications, depending on the catalog profile had classes and characteristics assigned for additional data captured as part of the work order closeout process. Since any information already captured was history and to remain in the Legacy system, available to view as needed. Customer did not need to extract and load any of this information into the converted notifications as it would have potentially caused duplicated information when extracted and used by the reliability engineers for analysis. Generally the same process mentioned above can be followed to extract the information from the generated view of KSSKAUSP for the class type 015. Load File Template for Characteristic Values Assignment Used the SAP S/4HANA Version 1709 Data Migration Workbench for the loading of the Characteristic values assigned to equipment and functional locations. The load file template has 4 tabs, Header, Numerical value allocation, Currency value allocation and Character value allocation. The Header tab must have one entry per Object, ie equipment number or functional location. The subsequent value allocation tabs have the Class type, Class name, Object number, Characteristic name, item number (POSNR) and Characteristic value, Characteristic Value Long Text, etc. The Field names in the Load file template may be different so pay close attention to the descriptions and align the extract file fields with the load file template. The load file template is used for multiple objects, so the MATNR field is equal to the EQUNR and TPLNR fields, differentiated by the class type. (I changed the fields in the load file template for each object and the Data Migration Team changed it back to MATNR.) Check with your Data Migration team to see what the current load file template requires. In the KSSKAUSP_XXX file, filter ATWRT for Blanks and copy the record lines with values in ATFLV to the load file for the tab Numerical value allocation, Filter ATWRT for non-blanks and copy the records with text in ATWRT to the Character value allocation tab. For some of the characteristics assigned to Classes, the Characteristic values have been overwritten and other values are assigned to the characteristic. The PIPING Class has the PIPE_INSPECTION_TYPE Characteristic values overwritten. These values will be in field OMERK in KSML. (The characteristics should be added to the base Characteristic values list.) Closing Comments We struggled for a while on how to get the specific characteristic values assigned to each object until finding the information on the generated view KSSKAUSP. That made all the difference for us and allowed a quick and efficient method for extracting and preparing the load files. I hope this will help you as well. Please stay tuned for the next Blog Post in this Series SAP EAM Data Migration Part 4 – Functional Locations and Equipment, coming soon. I look forward to your comments, feedback and engaging conversation. Please follow my profile to get updates as new content is added. Community Ask a Question Write a Blog Post Login Personal Insights Michael Kernan October 2, 2020 | 10 minute read SAP EAM Data Migration Part 4 – Functional Locations and Equipment Follow 31 17 11,538 Hello All, Like RSS Feed 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 1 has the links to the other Blog Posts. 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. Equipment 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): https://help.sap.com/s4hana. 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. Equipment 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. Alert Moderator Assigned Tags PLM Enterprise Asset Management (EAM)/Plant Maintenance (PM) SAP S/4HANA SAP S/4HANA migration cockpit data migration equipment functional location Plant Maintenance View more... Similar Blog Posts SAP EAM Data Migration Part 1 - Introduction By Michael Kernan Sep 23, 2020 SAP EAM Data Migration Part 3 - Characteristics and Classes By Michael Kernan Sep 29, 2020 SAP EAM Data Migration Part 6 – Task Lists By Michael Kernan Jan 24, 2022 Related Questions Can we migrate mass PM orders with reference to functional location (not equipment)? By Vaibhav Manjarekar Nov 16, 2022 Assign class/characteristics to equipment using migration cockpit By Shweta Gupta Aug 25, 2021 PM - Linking Function Locations By Former Member May 10, 2008 31 Comments You must be Logged on to comment or reply to a post. sabarie mohhan October 12, 2020 at 12:30 pm 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? Like 0 | Share Michael Kernan | Blog Post Author October 12, 2020 at 12:38 pm 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, Regards... Like 1 | Share sabarie mohhan October 21, 2020 at 3:36 pm 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. Like 0 | Share Michael Kernan | Blog Post Author October 21, 2020 at 5:10 pm 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. K Like 1 | Share sabarie mohhan October 21, 2020 at 5:26 pm 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. Like 0 | Share Michael Kernan | Blog Post Author October 21, 2020 at 5:40 pm 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? Like 1 | Share sabarie mohhan October 22, 2020 at 12:40 am 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?? Like 0 | Share Michael Kernan | Blog Post Author October 22, 2020 at 12:49 am 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. Like 1 | Share sabarie mohhan October 22, 2020 at 4:05 pm 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. Like 0 | Share Michael Kernan | Blog Post Author October 22, 2020 at 4:39 pm 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... Like 1 | Share sabarie mohhan October 22, 2020 at 9:41 pm When you say change (update ), you mean mass update TPLMA values using IL02 to the existing TPLNR records ?? Like 0 | Share Michael Kernan | Blog Post Author October 22, 2020 at 9:50 pm Correct. Like 1 | Share sabarie mohhan November 8, 2020 at 11:36 pm 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.. Thanks!! Like 1 | Share Michael Kernan | Blog Post Author November 9, 2020 at 1:17 pm Thanks for the suggestion, I will put it in the list for a future Blog Post. Like 0 | Share Srinivas Geminisetty November 12, 2020 at 5:39 am 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 . Thanks Like 0 | Share Michael Kernan | Blog Post Author November 12, 2020 at 11:57 pm 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? Like 0 | Share Srinivas Geminisetty November 17, 2020 at 11:03 am 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 EXTROW ESLL ESLL-EXTROW SRVPOS ESLL ESLL-SRVPOS KTEXT1 ESLL ESLL-KTEXT1 USERF1_TXT ESLL ESLL-USERF1_TXT MENGE ESLL ESLL-MENGE MEINS ESLL ESLL-MEINS TBTWR ESLL ESLL-TBTWR WAERS ESLH ESLH-WAERS MATKL ESLL ESLL-MATKL Please let me know how to load using which tools. Thanks srini Like 0 | Share Michael Kernan | Blog Post Author November 18, 2020 at 12:09 am 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. Like 0 | Share Michael Wolf March 17, 2021 at 8:04 am 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 Like 0 | Share Michael Kernan | Blog Post Author March 24, 2021 at 11:35 am 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 https://help.sap.com/saphelp_tm81/helpdata/en/fb/787039172511d2b428006094b944c8/content.htm?no_cache=true 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 Texts: Type application Name Text Language ID Key object C C C C C 1 10 70 4 2 STYPE OBJECT NAME ID SPRAS The Items tab in the spread sheet looks like this; Record Tag column Text Line C C C 1 2 72 STYPE TEXTFORMAT TEXTLINE Type I will be expanding this in another Blog Post soon. Regards, Michael Kernan Like 0 | Share Tyrone Scamaton March 24, 2021 at 7:46 am 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. Regards, Tyrone. Like 0 | Share Michael Kernan | Blog Post Author March 24, 2021 at 11:42 am 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. Regards, Michael Kernan Like 1 | Share Tyrone Scamaton March 24, 2021 at 12:22 pm Thank you Michael, will explore the 2 options. Like 0 | Share Tyrone Scamaton April 22, 2021 at 2:29 pm 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. Regards, Tyrone. Like 0 | Share Michael Kernan | Blog Post Author April 22, 2021 at 2:49 pm 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. Regards, Michael Kernan Like 1 | Share Paulina Dynak June 3, 2021 at 2:08 pm 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 Like 0 | Share Michael Kernan | Blog Post Author June 3, 2021 at 2:13 pm 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. Regards, Michael Kernan Like 0 | Share Paulina Dynak June 3, 2021 at 2:23 pm Hi Michael, Thanks for the quick response! Good suggestion - will do. Paulina Like 0 | Share Tatiana Benavides October 18, 2021 at 3:50 pm Nicely written and extremely helpful content Kelly! Keep going! Like 0 | Share Michael Kernan | Blog Post Author October 18, 2021 at 4:16 pm Thanks you, Enjoy and hope you are doing well. Like 0 | Share de Souza December 14, 2021 at 5:25 pm Hello Michael, how are you? congratulations for sharing your knowledge. The series is fantastic and I'm waiting for the next post. thank you so much Like 0 | Share Find us on Privacy Terms of Use Legal Disclosure Copyright Trademark Newsletter Support Community Follow Ask a Question Write a Blog Post Like Login RSS Feed Personal Insights Michael Kernan December 11, 2020 | 14 minute read SAP EAM Data Migration Part 5 – Bills of Materials 3 13 4,764 Hello All, This is Part 5 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 Bills of Materials including material assemblies, functional locations, equipment and Group BOM 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 1 has the links to the other Blog Posts. Maintenance Bills of Materials A maintenance bill of material (BOM) is a complete, formally structured list of the components making up a technical object or an assembly. The list contains the object numbers of the individual components together with their quantity and unit of measure. The components can be stock or non-stock spares or assemblies, which in turn can be described using maintenance BOMs. Used to structure and to identify spare parts available for technical objects. Additional information can be found in the link to the SAP Help files – Maintenance Bills of Materials Material Bills of Material (Assemblies), require an IBAU material type as the header and then the other Materials can be added as well as non-stock items and text items. The material assemblies can be reused on multiple objects as needed using the Construction Type (SUBMT) Field in the Functional and Equipment records. Equipment and Functional location BOMs are specific to one technical object and are linked internally to the technical object. I always assumed there was not a common way to manage these “individual” BOMs, yet the Group BOM concept was introduced a long time ago, I just never ran into an application for it, until now. The Material, Equipment and Functional Locational BOMs, can be Grouped (as alternatives / variants) by the assignment off a link through the BOM Group ID field (EXSTL). You can only link BOMS of similar type, ie., Equipment BOMs together or Functional Location BOMs together. You can then add the alternatives by adding the BOM Group ID to each individual BOM and then be able to identify which components are common or unique within each alternative BOM in a centralized place. SAP Plant Maintenance describes the Group BOMs as Variants and the general process to manually create them is a described in this link Create Variant BOM. The Display of the Variant BOMs is described in this link Display Variant BOM. This Customer used Group BOMS to manage Bill of Materials for things like Power Packs, UPS Battery Packs, Hoists and other objects where there are a lot of common parts and some variants between the technical objects. These were used primarily on equipment or functional location BOMS. Many of these variants were built manually over a period of 20 years and now the challenge was to get them extracted and built in one conversion effort, The Group BOMs were used to manage these BOMs centrally, to identify what components were similar or unique to each equipment or functional location BOM. There is a limit of 99 individual BOMS that can be grouped together with a common alternative ID. Additional groups were made by simply abbreviating the ID and adding a numeric sequence to the ID. BOM Group Conversions may not be supported with both the SAP S/4HANA Data Migration Cockpit (version dependent), however the standard SAP Legacy System Migration Workbench Tools does have a variant option. (See note below.) NOTE: Check Customizing settings – In Customizing for Bills of Material, set the following indicators under Define modification parameters: EC management active BOM validity maint. Rptd itm effctvty via external item ID – This indicator defines that an item can become effective again under the same external item ID. The system does not check the effectivity conditions, such as the Valid-from date. (We did not know this upfront and I suspect this was a cause for a lot of issues with the BOM Groups that caused us to go the path we did and then require a cleanup program as we did not come across this information until much later after golive. If I had to do it all over again, I expect that this setting might make all the difference in the conversion process we employed.) Things to keep in mind when preparing the files; Check MATNR’s against the MM Files to be converted and check validities for materials. If not in MM Files, check with PM and MM Teams for inclusion or exclusion. Check to change the cost elements as needed, for the items that are non-stock. Validity date for the BOM is very important and needs to be in alignment with the overall master data strategy for the SAP Plant Maintenance objects. Data Relationships between Tables Download BoM Data and Prepare Files MAST, EQST, TPST – Object BOM Links 1. In SE16N, table start with the tables for the assignment of BoMs to the objects (MAST, EQST and TPST). 2. MAST can be run for Plant XXXX, STLAN = 4. Should return a list of MATNR and STLNR combinations. Use this as input for STAS by Inserting a column A for INDEX1 and concatenate “M” for the STLTY and adding STLNR + STLAL. (Ylou may have more entries here than you need, will clean up later). The iNDEX1 should look something like this M_00123456_1 3. EQST can be run using the list of valid equipment numbers (EQUNR), Plant XXXX, STLAN = 4, and Category E. Use this as input for STAS by Inserting a column A for INDEX1 and concatenate “E” for the STLTY and adding STLNR + STLAL. The iNDEX1 should look something like this E_00000456_1 4. TPST can be run using the list of valid functional locations, Plant XXXX, STLAN = 4, and Category T. Use this as input for STAS by Inserting a column A for INDEX1 and concatenate “T” for the STLTY and adding STLNR + STLAL The iNDEX1 should look something like this T_00000345_1 STZU – BOM GROUP INFO 1. In SE16N, table STZU, run for each BOM Category E, M and T, using the STLNR values from the MAST, EQST and TPST tables respectively. In each file, insert Column A – INDEX and Concatenate the STLTY + STLNR. (You can also run it for the multiple BOM Categories and later filter by the Category.) 2. Insert a Column after STLNR, called “Valid Items” and do a VLOOKUP Between the STAS and STZU on the field STLTY to see if the items are still valid or no longer relevant, Delete them if #N/A. 3. The field EXSTL has the BOM Group ID and identifies a BoM as belonging to a BoM Group. Blank entries do not have BoM Groups assigned. This will be used to identify which load file will be used later. For our process, there will be two files needed, one to create the initial BOM / BOM Group combination and then and another to add the alternatives for that specific BOM Group. 4. For the BOM Groups, a separate STLAL will be created for each version in STKO Header and the technical object referenced. STLAL = 01 is the first Alternative, this has the initial definition of the BOM Group in EXSTL and is used to create the two files needed to load the BoMs. The second file will filter out the STLAL > 01 to get all the other alternatives. STAS – BOM -Header to Item Linkage 1. In SE16N, table STAS run for each Bom Category (STLTY) separately and use the STLNR values from the MAST, EQST and TPST BOM Object Links to get only the STLNR’s for that Bom Category (E, M, and T). I named the files STAS_E, STAS_M, STAS_T to keep them separated. 2. In each file, insert Column A and create INDEX, by concatenating STLTY, STLNR. Insert Column B and create INDEX1, by concatenating STLTY, STLNR and STLAL. 3. In each of the STAS Files insert a Column to the right of STASZ for EXSTL and one Column for EQUNR / MATNR / TPLNR combined field. 4. We can use INDEX to do a VLOOKUP to get which BOMs belong to BOM Groups (EXSTL) in the STZU table to add to STAS. 5. We can use INDEX1 to do a VLOOKUP to get the technical object each BOM is linked to (use INDEX1 in MAST, EQST or TPST to get technical Object Number (MATNR, EQUNR or TPLNR) and enter into the EQUNR / MATNR / TPLNR combined field. 6. We can also create INDEX3 in STAS and Concatenate STLTY, STLNR and STLKN to be able to link the Technical object to each line of STPO. STKO – BoM Header 1. In SE16N STKO, in field STLTY run selection separately for each E,M, & T. Select BLANK for deletion indicator and Deletion flag, 2. Execute then download files separately, name them STKO_HEADER_E, or M, or T as needed. 3. In each file, insert Column A and call it INDEX. Create INDEX by concatenating STLTY and STLNR 4. In each file, insert Column B and call it INDEX1. Create INDEX1 by concatenating STLTY and STLNR AND STLAL 5. In each file, insert Column to the right of STLNR (E) in STKO for TPLNR / EQUNR / MATNR, respectively). M – Materials E – Equipment T – Functional locations 6. In each file, use INDEX1 already created in MAST, EQST and TPST, to VLOOKUP the respective MATNR, EQUNR and TPLNR fields for STKO using INDEX1. Use MAST to get Materials (MATNR) via VLOOKUP with INDEX1 M+STLNR+STLAL for table STKO INDEX1. Use EQST to get Equipment (EQUNR) via VLOOKUP with INDEX1 E+STLNR+STLAL for table STKO INDEX1. Use TPST to get Functional location (TPLNR) via VLOOKUP with INDEX1 T+STLNR+STLAL for table STKO INDEX1 7. USE PLMZ to get task list linkage – see PLMZ Table info for additional information 8. Use INDEX to check for valid BoM items in STPO – Insert Column E, call it Valid items and do a VLOOKUP using INDEX in STPO to get valid BOM Headers that still have items, Use the STLTY field as the result. Filter and delete the entries in STKO that don’t have valid entries in STPO. STPO – Bom Items 1. In SE16N STKO, run the program for each STLTY – E, M,T & S separately. Select BLANK for deletion indicator and Deletion flag. 2. Execute then download files separately, name them STKO_E, or M, or T or S as needed. 3. In each file, create INDEX by concatenating STLTY and STLNR 4. Use the INDEX to check for valid BoM’s in STKO 5. Insert Column G for EXSTL and do a VLOOKUP using the INDEX with STZU to get the Group BOM ID’s associated. Where EXSTL is blank, these are not Group Bom’s and will be loaded in a different load file. 6. Insert Column C – INDEX3, Concatenate STLTY, STLNR and STLKN. Use this to VLOOKUP the Technical object assigned to the BOM Item in STAS. 7. Insert Column to the right of Field INDRK (material number), use VLOOKUP with Material Load File to find valid part numbers, filter with POSTP = L. 8. POSTP = T or N may have #N/A that may need to remain or if N, may need to change to T. 9. Check to see if parts that have #N/A are no longer needed and delete from STPO if no longer valid. 10. Check all POSTYP = N and correct Cost Elements, Purchasing Organization, Buyers, Vendors, etc. 11. Align Columns in STPO with the load file Items Tab to make copying easier BOM Load Files Prep Because of configuration settings identified above, we tried to use the Legacy System Migration Workbench Variant BOM Create (Object 0030, Method 0003 Create Variant BOM RCSBI030) and were not successful in getting this to work with the desired results. I believe that if we had known about the configuration changes needed, this method would have worked and saved a lot of time. I will explore further when I have another project that uses Group BOM.s. If anyone has experience with this, please share. So we decided to approach this in three separate load sequences. (Had separate load programs for each of the different objects (Equipment, Material, Functional Location) A. Create a file that has the BOMS without any Groups. Separate Files for Equipment, Materials and Functional locations where the EXSTL Field in STKO is blank and STLAL = 01. This allowed us to use the general structure for the Batch Input (RCSBI010 / 0001) for BOM create is as follows; BGR00 – Batch Input Structure for Session Data BICSK – Batch Input Structure for BOM Header Data (This example is for the equipment, the Material and Functional Location are similar with just different fields for the object id’s.) EQ_TOP = Parent Equipment EQUNR = Equipment Number WERKS = Plant STLAN = BOM Usage DATUV = Valid-From Date (BTCI) BMENG = Base quantity (BTCI) EXSTL = BOM group STLAL = Alternate BOM Number STLST = BOM status (BTCI) ZTEXT = BOM Text BICSP – Batch Input Structure for BOM Item Data EQ_TOP = Parent Equipment EKGRP = Purchasing Group FMENG = Fixed qty IDNRK = BOM component LIFNR = Account Number of Vendor or Creditor LIFZT = Delivery time in days MATKL = Material Group MEINS = Component Unit of Measure MENGE = Component quantity (BTCI) PEINH = Price unit (BTCI) POSNR = BOM Item Number POSTP = Item category (bill of material) PREIS = Price (BTCI) POTX1 = BOM Item Text (Line 1) POTX2 = BOM item text (line 2) PSWRK = Issuing plant SAKTO = Cost element SANIN = Indicator: item relevant to plant m SANKA = Indicator: item relevant to Costing SORTF = Sort String STKKZ = PM assembly indicator WAERS = Currency key (BTCI) EKORG = Purchasing organization BICSU – Batch Input Structure for BOM Sub-Item Data (Did not have any sub-items) For this file we only used the Header and Items, so our load file had just two tabs. B. The next file was to create the initial Group BOM Variant for all the first occurrences (STLST = 01) and EXSTL is not blank. This file has just one tab for the initial creation of the BOM Group information. Also use STZU for the header information. This SAP Legacy System Migration Workbench was a recording with just the fields we needed to create the BOM Header. TPLNR or EQUNR, depending on the object WERKS = Plant STLAN = 4 DATUV = Validity Date, be careful to align with other objects VTPNR or VEQNR depending on the object EXSTL = Variant ID ZTEXT = Text for Variant ID BMENG = 1 STLST = 1 C. The third file then added the alternative (Group) BOMS and items for each BOM. this used the general structure for the Batch Input (RCSBI010 / 0002) for BOM change is as follows; BGR00 – Batch Input Structure for Session Data BICSK – Batch Input Structure for BOM Header Data (This example is for the equipment, the Material and Functional Location are similar with just different fields for the object id’s. The Header is already created and we just need to give the information to change it.) EQ_TOP = Parent Equipment EQUNR = Equipment Number WERKS = Plant STLAN = BOM Usage DATUV = Valid-From Date (BTCI) BICSP – Batch Input Structure for BOM Item Data EQ_TOP = Parent Equipment EKGRP = Purchasing Group FMENG = Fixed qty IDNRK = BOM component LIFNR = Account Number of Vendor or Creditor LIFZT = Delivery time in days MATKL = Material Group MEINS = Component Unit of Measure MENGE = Component quantity (BTCI) PEINH = Price unit (BTCI) POSNR = BOM Item Number POSTP = Item category (bill of material) PREIS = Price (BTCI) POTX1 = BOM Item Text (Line 1) POTX2 = BOM item text (line 2) PSWRK = Issuing plant SAKTO = Cost element SANIN = Indicator: item relevant to plant m SANKA = Indicator: item relevant to Costing SORTF = Sort String STKKZ = PM assembly indicator WAERS = Currency key (BTCI) EKORG = Purchasing organization BICSU – Batch Input Structure for BOM Sub-Item Data (Did not have any sub-items) For this file we only used the Header and Items, so our load file had just two tabs. Equipment BoM STKO – BOM Header 1. This Table was a combined extract for the STLTY = E, M, T. 2. Remove all the line items corresponding to the field STLNR, which are not available in STPO. 3. Filter STLTY for E 4. In EQST insert Column A for INDEX and create INDEX by concatenating the above values for STLTY =E plus the STLNR for each table 5. Use EQST to get Equipment (EQUNR) via VLOOKUP with INDEX (E+STLNR) for table STKO- EQUNR 6. In STKO insert Column B call it TPLNR / EQUNR / MATNR, Use EQST to get Equipment (EQUNR) via VLOOKUP with INDEX (E+STLNR) for table STKO INDEX (Column B) 7. The STKO values are copied to Load file ‘BOM Header tab’ and ‘Interface for BOM Access tab’ against the respective fields. STPO – BOM Items 1. This Table was a combined extract for the STLTY = E, M, T. 2. Remove all the line items corresponding to the field STLNR, which are not available in STPO. 3. Filter STLTY for E. 4. Remove all the duplicates for the combination of fields STLNR and POSNR. 5. The STPO values are copied to Load file ‘BOM Item tab. Created the three separate load files defined above, filtering the header and items as needed to populate the load file templates. Material BoM STKO – BoM Header 1. This Table was a combined extract for the STLTY = E, M, T. 2. Remove all the line items corresponding to the field STLNR, which are not available in STPO. 3. Filter STLTY for M. 4. In STKO, insert Column A for INDEX and create INDEX by concatenating the values for STLTY = M plus the STLNR for each table. 5. In STKO insert Column B call it TPLNR / EQUNR / MATNR, Use MAST to get Material (MATNR) via VLOOKUP with INDEX (M+STLNR) for table STKO INDEX (Column B). 6. Sort by INDEX 7. The STKO values are copied to Load file ‘BOM Header tab’ STPO – BoM Items 1. This Table was a combined extract for the STLTY = E, M, T. 2. Remove all the line items corresponding to the field STLNR, which are not available in STPO. 3. Filter STLTY for M 4. Insert Column B call it TPLNR / EQUNR / MATNR, use the INDEX to VLOOKUP the values in STKO TPLNR / EQUNR / MATNR objects 5. Remove all the duplicates for the combination of fields STLNR and POSNR 6. The STPO values are copied to Load file ‘BOM Item tab’ MARA – Material Masters 1. SE16N Table MARA: Field LVORM = Blank and Select: Equal to. In field MTART enter ERSA, NLAG, IBAU. Run in Background. 2. Use MARA to get MATNR and Material Description if needed using INDRK Load Files and SAP Legacy System Migration Workbench 1. There were no BOM Groups for the Material BoMs so there is just one SAP Legacy System Migration Workbench and Load file with a tab for the header and a tab for the Items. 2. Used the general structure for the Batch Input (RCSBI010 / 0001) for BOM create is as follows; BGR00 – Batch Input Structure for Session Data BICSK – Batch Input Structure for BOM Header Data BICSP – Batch Input Structure for BOM Item Data BICSU – Batch Input Structure for BOM Sub-Item Data (Did not have any sub-items) Check that all the materials are valid and extended to the plant. Functional Location BoM STKO – BoM Header 1. This Table was a combined extract for the STLTY = E, M, T. 2. Remove all the line items corresponding to the field STLNR, which are not available in STPO. 3. Filter STLTY for T 4. In STKO, insert Column A for INDEX and create INDEX by concatenating the values for STLTY = T plus the STLNR for each table. 5. In STKO insert Column B call it TPLNR / EQUNR / MATNR, Use TPST to get Functional Location (TPLNR) via VLOOKUP with INDEX T+STLNR for table STKO INDEX (Column B) 6. The STKO values are copied to Load file ‘BOM Header tab’ and ‘Interface for BOM Access tab’ against the respective fields STPO – BoM Items Remove all the line items corresponding to the field STLNR, which are not available in STPO. Filter STLTY for T Remove all the duplicates for the combination of fields STLNR and POSNR The STPO values are copied to Load file ‘BOM Item tab’ Use TPST to get Functional location (TPLNR) via VLOOKUP with INDEX T+STLNR for table STKO INDEX (Column B) Created the three separate load files defined above, filtering the header and items as needed to populate the load file templates. Once we ran the load files, we discovered the variants were not grouped correctly as the Customizing settings – In Customizing for Bills of Material, set the following indicators under Define modification parameters were not set to allow the item numbers to be reused. We created a clean up program to align the like materials across all of the groups. It was not perfect, however it was a compromise that the Customer was able to manage. Closing Comments I learned a lot from going through this process, and seeing a valid application for the Group BoM functionality. The Customer built the relationships over many years and it was a challenge that we accepted to convert them so they could continue to manage their BoMs efficiently. 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 6 – Task Lists, 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. Alert Moderator Assigned Tags PLM Enterprise Asset Management (EAM)/Plant Maintenance (PM) SAP S/4HANA SAP S/4HANA migration cockpit data migration equipment bom functional location bom Group BOM View more... Similar Blog Posts SAP EAM Data Migration Part 1 - Introduction By Michael Kernan Sep 23, 2020 ASUG EAM Webcast Recap: “BOM Creation Where to Begin. Lose the Panic! It’s Easy”- Denbury Resources Community Ask a Question Write a Blog Post Login Personal Insights Michael Kernan January 24, 2022 | 22 minute read SAP EAM Data Migration Part 6 – Task Lists 10 6 2,823 Follow Like RSS Feed Hello All, This is Part 6 in the series on the migration of SAP Plant Maintenance data from SAP ERP Central Component (ECC) to SAP S/4HANA® Cloud. It has been a challenging time and being able to get back to writing some more Blog Posts is a welcomed time. Personally, I have been very busy helping Customers with their SAP Journey and continue to enjoy helping them succeed. In this blog post, I will review the Task Lists 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 1 has all of the links to the other blog posts. Some of the information herein had been gathered from various SAP Blog Posts in the SAP Community, (References included where applicable) and some of it is my original work. I would like to thank all of those that have posted solutions and hopefully I have added some value that you find useful. A special thanks to Camilo Veloso (camiloveloso@hotmail.com) whose work done years back in putting a graphic of the SAP PM Table Relationships out on the internet was a time saver and many of the relationships started from that work. I have expanded the work into what is shown herein. Some Basics Task Lists – General task Lists are reusable and many of the task lists are created this way. They have a Group number for the ID and a group counter (1-99) that represents a version that belongs to that group. The group counter can be longer than 99 by using a combination of Alpha and Numeric characters. Equipment and Functional Location Task Lists are specific to a technical object, also have group counters. These are used in Maintenance Items to link the Technical Object with the Task List Task lists have the following hierarchy of Objects: Task List Header Task List Header Long Text Operations Operation Long Text Materials PRT’s (Documents, Inspection Points, Equipment, Other) PRT Long Tet Maintenance Packages Strategies and Packages – are used to identify when specific operations in a task list are performed. The Strategies are selected in the task list header and the packages assigned to the individual operations in the task list. The strategies can be hierarchically inclusive or exclusive so when operations on a task list are to be performed at a specific package sequence, they can either be excluded or included in the work order. There is also functionality for the start and finish lag times so that a work order can be scheduled anytime within the start and finish lead times. Because of the limited number of strategies and packages used, the conversion of the strategies and packages was performed manually. 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: Task Lists Data Relationships between Tables From a SAP Blog by Nancy Guo See link below. When deletion indicator in routing tables is set PLPO-LOEKZ – LOEKZ in table PLPO is only set if you delete a sub-operation. PLAS-LOEKZ – Deleting an operation should set the deletion flag in table PLAS. See the explanation of this design in SAP note 43595. PLFL-LOEKZ – But deleting the entire sequence won’t set the indicator PLAS-LOEKZ, it will set PLFL-LOEKZ. If the operations are deleted online in the routing – via the transaction CA02/CA22 – the operations are no longer shown on the operations screen of the routing, but they are still in the table PLPO without a deletion flag. The PLPO entries are deleted if one runs the transaction CA98 with the radio button “Objects Deleted Online” set for the respective routings. PLMZ-LOEKZ – When deleting a component in CS02, the table PLMZ is NOT updated. Items in table PLMZ are only deleted (or flagged with PLMZ-LOEKZ) from CA02/CA12/CA22/CA32 by removing the component allocation assignment. This is because the assignment itself is NOT stored in table PLMZ. The component allocation is based upon a relationship between 2 tables, STPO and PLMZ. Deletion indicators are NOT set in table PLMZ when deleting BOM components from CS02. This is consistent to the design of the BOM and routing transactions. This behavior cannot be changed. It is recommended to remove the component allocation associated with the items of a BOM in a routing, before deleting the BOM or the items themselves. Otherwise, it may leave orphaned PLMZ entries in the system. https://blogs.sap.com/2016/09/07/when-deletion-indicator-is-set-in-routing-tables-plpoplasplflplmz/ File Preparation Activities There are some extensive preparation steps needed to get the extracted files ready for the load format. Be very mindful of the validity dates for the task lists as these will cause errors when calling the maintenance plans if there is no valid task lists when the plan is called. Due to the various hierarchies and other tables to be used for reference, the following file preparation activities are complex and require a good knowledge of excel. This is not an exhaustive list, and has the steps we went through to get the files ready to be loaded using the LSMW Tool (Legacy System Migration Workbench) even though it is not recommended for S/4HANA, in our case it still functioned for this object. Please be aware that it may not be available in future releases of S/4HANA. If you have any suggestions or additional tips, corrections or advice, please comment and share. In general, we used transaction SE16N to extract data from specific tables and then exported to Excel. In some cases we had other programs that created text files that we subsequently imported into Excel for further processing. Depending on your situation, you might need to add additional selection criteria for a table extract to get the data relevant for your project. PLKO – Task List Header Run SE16N to extract data from PLKO, Select for all types (A, E, T) on Plant XXXX do not select for deletion indicator or inactive. In load file, set fields VERWE (task list usage) and STATU (status) each to 4 if blank Extract results to excel for further processing. In Excel, move PLNTY, PLNNR, PLNAL, ZAEHL to columns near left side of spreadsheet. Insert column A and call it INDEX1, concatenate on PLNTY + PLNNR + PLNAL. This will be used to identify valid entries in PLAS and then entries in PLPO. That are no longer relevant. Filter LOEKZ = X and remove all entries with X. Filter DELKZ = X and remove all entries with X. Check that all task list has a description (KTEXT not blank), get with business to address if blank. Insert Column to the right of field of ARBID, label it ARBPL. Use cross reference to CRHD to get the ARBPL id (work center) for PLKO ARBID via VLOOKUP. Validate that the work centers aren’t flagged for deletion. Perform any necessary Work Center Substitutions Check that IWERK has XXXX in all entries. Sort table by PLNTY, PLNNR, PLNAL, ZAEHL (This ZAEHL is not the same as on PLAS or PLPO as they are separate internal counters.) Add Column to left of INDEX1. Call it VALID PLAS. Use INDEX 1 to do a VLOOKUP to PLAS for the PLNTY. Check for #N/A and manually verify they are relevant, between PLAS and PLPO manually copy the valid from date if missing. PLKO – Task List Header Clean-up to MPOS Need to verify which task lists are still in use in the Maintenance Items and which ones can be deleted. To do this, we will need to extract the values from MPLA and MPOS and export to Excel and then in Excel, create a TL_INDEX2 in MPOS_ALL by concatenating the PLNTY + PLNNR + PLNAL fields and then doing a VLOOKUP between PLKO and MPOS using the INDEX 1 in PLKO and the INDEX2 in MPOS using the WARPL field. As an Alternative, you might run IP18 – Display Maintenance Items to get the list of the Task Lists used in the Maintenance Items. Use this to look up what is in the extracted files. It will have field descriptions and not the SAP Field Names. (More information regarding the extraction for MPLA and MPOS will be discussed on Part 7 – Maintenance Plans coming soon.) In PLKO_ALL file, insert Column to the right of the Used in MPOS and label Keep or Go and request business to review and determine if the items in Used in MPOS are #N/A, do they want to keep it or not. PLKO – Task List Header Clean-up to TAPL/EAPL Need to get the technical objects associated with the Equipment or Functional Location Task Lists. Insert Column to the right of the Keep or Go and label it Technical Objects. This is for the T and E Task list types (PLNTY). For the PLNTY = T, use the file TAPL_ALL File, Insert Column A and label it INDEX1, In PLKO_ALL file filter the PLNTY for T. Do a VLOOKUP between TAPL and PLKO and bring in the TPLNR field into the PLKO Column for Technical Objects. Also check if the Functional Location is still valid For the PLNTY = E. use the file EAPL_ALL File, Insert Column A and label it INDEX1, concatenate the PLNTY + PLNNR + PLNAL. Move the EQUNR Column to the right of INDEX1. Concatenate the PLNTY + PLNNR + PLNAL. Move the TPLNR Column to the right of INDEX1. In PLKO_ALL file filter PLNTY for E. Do a VLOOKUP between EAPL and PLKO and bring in the EQUNR field into the PLKO Column for Technical Objects. Also check if the Functional Location is still valid for the assigned Equipment. Also need to scrub the ARBPL field and make sure the valid work centers are entered. PLAS – Selection of Operations and Activities Run SE16N to extract data from PLAS, select for all types (A, E, T), do not select for deletion indicator or inactive. You can also use the PLNTY, PLNNR and PLNAL values from the scrubbed extract for PLKO, just be careful to include the full range of PLNAL as selection values. Export the selection results to Excel for further processing. In Excel, insert column A and Call it INDEX1 and concatenate PLNTY + PLNNR + PLNAL. Use for VLOOKUPS between tables PLAS and PLKO to get which operations are connected to the group counter (PLNAL) and the operations/suboperations PLNKN. Insert column B and call it INDEX2. Concatenate PLNTY, PLNNR, PLNKN. Insert Column to the right of INDEX2 and label it Valid PLKO, Use INDEX1 to do a VLOOKUP to PLKO for the PLNTY. This will be used to identify valid entries between PLAS and PLKO. Insert Column to the right of the Valid PLKO, use INDEX2 to do a VLOOKUP to PLPO for the PLNTY. This will be used to identify valid entries between PLAS and PLPO IGNORE Entries in LOEKZ, will use it later. Sort table by PLNTY, PLNNR, PLNAL, ZAEHL PLPO – Task List Operations /activity In SE16N, to extract the data from PLPO, select the entries for PLNTY (Task list type = A, E, or T) and PLNNR, run all Plant = XXXX Export to Excel for further processing. In Excel, insert column A and Call it INDEX2 and concatenate PLNTY + PLNNR + PLNKN to find valid entries in table PLAS. Insert Column to right of INDEX2, call it Valid PLPO/PLAS and do a VLOOKUP between PLAS and PLPO, use the PLNTY to get the valid entries. Delete the #N/A entries. Insert Column to the right of PLNNR and label it PLAS_PLNAL. Use INDEX2 to do a VLOOKUP between PLPO and PLAS to get the PLNAL value from INDEX 2 in PLAS. Insert column A and call it INDEX1, concatenate PLNTY + PLNNR + PLAS_PLNAL This will be used to identify valid entries in PLPO and PLKO that are no longer relevant. Do the VLOOKUP between PLKO and PLPO use the PLNTY as the cross ref, delete any #N/A in PLPO that do not have valid entries in PLKO. Add column in PLPO next to INDEX 1, call it PLKOMATCH and lookup INDEX1 in PLKO to see if matching in PLPO. All #N/A’s in PLPO can be deleted as they are no longer valid in PLKO. After deleting the entries, delete the inserted column. Insert Column to the right of field of ARBID, label it ARBPL. Use CRHD_0005_All to get the ARBPL id (work center) for PLPO ARBID via VLOOKUP. Validate that the work centers aren’t flagged for deletion. Make any needed Work Center substitutions After downloading change STEUS values as needed for valid Control Keys. Check to change the cost elements as needed. Check to change any Vendors as needed Check the LARNT (Activity Types) and correct as needed. Check the entries in DAUNE, ARBEH for HR or HRS or other time units to be consistent. Field SUMNR has the sub operation numbers and VORNR has the Operation numbers. UVORN = SUMNR for the load file. Sort Table PLPO – Fields PLNTY, PLNNR, PLAS-PLNAL, PLNKN, VORNR, ZAEHL. NOTE: this will allow the sub operations to be shown in the correct relationship to the superior operation. Filter the PLAS_PLNAL and look at all the #N/A and check to see if there are values in SUMNR, copy the PLNAL number above the #N/A and replace the #N/A. If no value in SUMNR, delete these lines. PLWP – Allocation of Maintenance Packages to Operations Use SE16N for table PLWP, select Task List Type A, E, T, STRAT = XXXXXX Export results to Excel for further processing. In Excel, insert column A and Call it INDEX2 and concatenate PLNTY + PLNNR + PLNKN to find valid entries in table PLPO Do a VLOOKUP between PLWP and PLPO using INDEX 2 to find all the relevant matches (Insert temporary column to right of INDEX 2 to match the INDEX between PLWP and PLPO using PLNTY. Delete all the #N/A. (Will need to check if sub-operations are caught or not) You should have less entries in PLWP than in PLPO as not all the ones in PLPO have strategies and Packages. Remove the match column after the VLOOKUP. Sort By PLNTY, PLNNR, PLNAL, PLNKN (A-Z) and DATVU (Newest to Oldest) the go to Data > Remove Duplicates and only select the column INDEX 2. All the duplicated entries with older dates will be removed. Filter STRATU for non XXXX entries in PLPW and delete. Insert column A and call it INDEX1 on PLNTY + PLNNR + PLNAL Move PLNFL and ZAEHL to the right end of the data set. Insert two Columns to the right of PLNKN for VORNR and UVORN. Do VLOOKUP using INDEX 2 on PLPO to bring both values into the table. Check to see if any #N/A and look up in SAP ECC to verify. PLMZ – Allocation of BOM Items to operations Use SE16N for table PLMZ, Selection Criteria as follows, Task List Type A, E, T, Deletion Indicator = Blank, Inactive = Blank, STLTY = E, M, S, T Export Results to Excel for further processing. In Excel, insert column A and call it INDEX1 on PLNTY + PLNNR + PLNAL. Insert Column to right of INDEX1, do a VLOOKUP with INDEX 1 between PLMZ and PLPO, using PLNTY to get valid entries, Delete any #N/A in PLMZ Insert columns to Left of STLTY, for INDEX, INDEX2, INDEX3, for INDEX concatenate STLTY + STLNR, for INDEX2 concatenate STLTY + STLNR + STLAL for INDEX3 concatenate STLTY + STLNR + STLKN Go back in to STPO_S_ALL and insert a column to the right of INDEX, for INDEX 3, concatenate the STLTY + STLNR + STLKN To get the material numbers for the entries in PLMZ, filter the STLTY files for S only. Insert Column to right of WERK_STL for the MATNR/INDRK field. Do a VLOOKUP in PLMZ in the MATNR / INDRK Field Do a VLOOKUP from PLMZ to STPO_S_ALL using INDEX 3 to get the material numbers. Remember to un-filter the STLTY for all items. Got back to STPO_ALL_EMT and insert Column A for INDEX3, concatenate STLTY + STLNR + STLKN Filter STLTY for E Do a VLOOKUP in PLMZ in the MATNR / IDNRK Field Do a VLOOKUP from PLMZ to STPO_ALL_EMT using INDEX 3 to get the material numbers. Remember to un-filter the STLTY for all items. Align Fields to load file for components. Filter for the different PLNTY, copy the PLNNR, PLNAL, VORNR, IDNRK, MENGE to the load files. PLAB – Relationships between operations The relationships between the operations is not supported in the standard LSMW for Task Lists, so we had to create a custom program to load these relationships and it did not go as planned. In the program, to get the operation we used the Index Field (ENTRY_ACT) to select the operation and then get to the relationship sub-screen. The sequence that we had the operations sorted and processed actually resulted in the predecessors and successors being sequenced backwards across the entire task list. We did not know it happened this way until a User looked at the graphical scheduling view and all of the operations were sequenced in reverse. Op 10 was last and op 100 was first for example. It was not obvious by looking at the operations relationship sub screen. We had to correct this manually by removing a flag and allowed the operations to be sequenced correctly. What a learning experience that was. Will be more careful in the future to build and test the recordings extensively and look at the graphical view to make sure all is good. Use SE16N for table PLAB, select the entries for PLNTY (Task list type = A, E, or T) and PLNNR, and PLNAL, run all. Export results to excel for further processing In Excel, insert column A and Call it INDEX1 and concatenate PLNTY + PLNNR + PLNAL. Use for VLOOKUPS between table PLPO to get which operations valid. Insert Column B and table Valid_PLPO and do a VLOOKUP to PLPO to get valid operations. Insert column C and call it INDEX_PRED. Concatenate PLNTY, PLNNR, PLNKN. This is the predecessor operation. Use INDEX_PRED to do a VLOOKUP to PLPO to see if the predecessor operation is valid. Add Column to right of INDEX_PRED for PRED_Valid. Remove lines with #N/A. Insert Column to the right of PRED_VALID and call it INDEX_SUCCESSOR, create the index for the successor operation by concatenating the PLNTY + PLNRN + KNNRN Use INDEX_SUCCESSOR to do a VLOOKUP to PLPO to see if the successor operation is valid. All Column to the right of INDEX_SUCCESSOR and call it Succ_Valid. Remove lines with #N/A. The Fields PLNTY + PLNNR + PLNAL + PLNKN can be Concatenated (Predecessor) and used to look up the Predecessor Operation Number (VORNR) in PLPO. Add this column to the right of PLNKN and you may need to set up the same index in PLPO to enable the VLOOKUP. Add the Column for the VORNR_PRED to the right of the Predecessor Index. The Fields PLNTY + PLNRN + ALNRN + KNNRN can be concatenated (Successor) and used to lookup the Successor Operation Number (VORNR) in PLPO. Add this Column to the right of the VORNR_PRED and add a column to the right of Successor for the VORNR_Successor results. Note: These fields map to the PLNTY + PLNNR + PLNAL + PLNKN in PLPO. Depending on how the Programmer sets the relationship Type (AOBAR) You may need to specify the English or German Values FS = NF, SS = AF, FF = EF, SF = SF Check the ZEINH Values to make sure the units of Time are correct for the new system. for example, TAG = DAY = STD, JHR = YR, 10 = DAY = STD, etc.. Once we had the basic data all set up, we ran the task lists into the system and then had to create a cross reference list of the Task List header and operations to cross reference the relationships between operations. This required more Indexes and VLOOKUPS once we were able to extract the new Task Lists from the Target System. in the Task List Header, we used the Task List External ID (TL_EXTID) to enter the Legacy concatenated PLNTY, PLNNR and PLNAL so we could get a cross reference to the new Task List values for same fields. Load File Prep So a word of caution, We created the load file template as one excel spreadsheet with separate tabs for each part of the LSMW load file. Create the load files with all of the indexes on each tab that are described below and once complete, copy the file and remove the extra indexes, leaving only the RECORDNAME, INDEX2 and INDEX 3 if needed, in place for the different tabs. This will allow you a way to correct the data if you find inconsistencies. There are already many Blog Posts regarding how to create and run the Task List LSMW. Please search for them if you do not know all of the steps or want to get more familiar. The file preparation below only covers how to get the files ready to load and not the steps for running the LSMW Tool. Task Lists SAP Legacy System Migration Workbench General Notes When loading the task lists via SAP Legacy System Migration Workbench, you need to define a source structure as per the IBIP structure. Only the objects and levels needed are used. ZIBIPTLST – Task List Header (Level 1) ZIBIPTEXT – TL Header Text ZIBIPTLOP – TL Operations (Level 2) ZIBIPTEXTOP – TL OP Long Text ZIBIPMAT – TL OP Materials ZIBIPPRTS – TL OP Production Resource Tools ZIBIPTEXTPRTS – Long Text for PRTs (Level 3) ZIBIPMPAC – Maintenance Packages For each of these levels you need an identifier that links then together. In your source file. Use the existing field RECORDNAME for header and header long text, RECORDNAME and INDEX2 for operations, RECORDNAME and INDEX2 for all items below the operation (Ops Long text, Materials, and maintenance packages). o RECORDNAME and INDEX2 and INDEX 3 for long text of the PRTS (Not shown) This way the system can create the correct structure when it reads the data from the text files. EXAMPLE Source Fields in each of the LSMW structures ZIBIPTLST = Task List Header (Level 1) RECORDNAME = Record name ZIBIPTEXT = TL Header Text RECORDNAME = Record name ZIBIPTLOP = Task List Operations (Level 2) RECORDNAME = Record name INDEX2 = Operation Index ZIBIPTEXTOP = Operation Long Text RECORDNAME = Record name INDEX2 = Operation Index ZIBIPMPAC – Maintenance Packages RECORDNAME = Record name INDEX2 = Operation Index The RECORDNAME and INDEX Field identifiers are numeric and will disappear once the files are read and converted. Specify them in the source structure as 2 or more characters and remember to set the excel file up to have a length of 2 or more characters field. For the header file each line will be a new identifier 1,2,3, etc. For the operations, you will have multiple iterations of the RECORDNAME, depending on the number of operations. You will need a unique sequential number for the operations (INDEX2) from 1 to XXXX. For the operations load file change the following field names in source structures so that the looping of the operations will be correct. (The program expects the same values in the header and operations and that is not always the case so we will “fool” the program so that it brings in all the different operations we need and puts them in the correct order. ARBPL – ARBPL2 WERKS – WERKS2 TXTSP – TXTSP2 ANLZU – ANLZU2 ISTRU – ISTRU2 Also remember to change the name in the SAP Legacy System Migration Workbench file selection and mapping steps for the operations level fields. Fields DAUME and DAUMI can be removed from the standard fields and not mapped. At the header, enter STTAG (Validity date) in YYYMMDD format. Remember to go far enough in the past to accommodate the start of cycle for maintenance plans. THIS IS REALLY IMPORTANT!! SAP Legacy System Migration Workbench Transactions for Task List Create Equipment – IA01 Functional Location – IA11 General – IA05 SAP Legacy System Migration Workbench Task List Header Filter the file PLKO_ALL for A, E or T’s in PLNTY depending on which Type you are loading. You will need to create separate files for each of the PLNTY Types, A, E, T. For each load file, insert Column A and Create INDEX1 by concatenating the PLNTY, PLNNR and PLNAL (Task List Type, Group and Group Counter), Use the “_” between the fields. Copy the INDEX1 to the TL_EXTID field for future reference in the maintenance items load file. Insert Column B called RECORDNAME Create a sequential list of numbers starting with 1 to 9999 or as needed. Type A General can have internal number for the Group (PLNNR) Type E & T can only have external numbers for the Group (PLNNR) so leave it blank. Arrange Columns to match Load File and copy fields from PLKO to Load File Header. Check to make sure the planner group (VAGRP), Work Center (ARBPL, Plant (WERKS), are correct for the target system. Where there is long text for the header, an entry in TXTSP = EN is needed so that the long text will show. Make sure to populate STRNO for Functional Location Task Lists in addition to TPLNR, especially if the functional location label exceeds 30 characters. Keep INDEX1 in for now, it will be removed later prior to creating the text files. SAP Legacy System Migration Workbench Header Long Text Long text can be extracted via a number of methods that would be the subject of a completely separate SAP Blog. For this purpose, the Customer had a custom developed program that read the long text for the different objects and created text files for each object. These were brought into excel files using the Data Import Tools. Be careful to check for duplicate ” or ‘ characters when saving the text file. Also check for other strange characters in the long text. Excel does some funny things some times. Download the long text and then create INDEX1 by parsing out the TD Name fields to get the Task Type, Group and Group Counter. (PLNTY, PLNNR and PLNAL) Use the INDEX1 to do a VLOOKUP back to the header to get the RECORDNAME Values for each text line. This links the Header Long Text to the Header. Remove the INDEX1 when Load file is complete, prior to creating the text files. .SAP Legacy System Migration Workbench PLPO – Task List Operations /activity In the extract file, the field SUMNR is the reference to the PLNKN for the superior operation. Will need to take the VORNR that has a SUMNR value and move it to UVORN in the load file and Copy the VORNR of the superior operation. Insert Field next to VORNR and Call it UVORN. filter the SUMNR field and copy the VORNR to UVORN one at a time. Unfiltered and then copy the VORNR above the SUMNR to the SUMNR Line in VORNR. To find deleted operations add column to PLPO and PLAS and call it INDEX 4 PLNTY, PLNNR, PLAS_ PLNAL and VORNR. In PLPO, LOEKZ should not have any “X”‘s in it. Use this for the VLOOKUP. Then do a VLOOKUP in PLPO on LOEKZ in PLAS. Then delete the rows in PLPO that have an X. Check the #N/A to see if valid in DCE or if there is value in SUMNR (Change LOEKZ to 0) or if valid, change the PLNAN to the correct value and update INDEX and change LOEKZ to 0. Align fields with load file, Move SUMNR to the far right Use TAPL to do a VLOOKUP to bring in the FL label into TPLNR PLPO. Use EAPL to do a VLOOKUP to bring in the EQ Label into the EQUNR PLPO Check time units of measure Check for Correct Buyers, Cost Elements, etc. Filter for A, E or T’s in PLNTY, depending on the load file being prepped. Sort PLPO by PLNTY PLNNR PLNAL VORNR, UVORN then copy data from PLPO to the load templates. Be sure to filter by type before copying to templates. Insert Columns to left of VORNR in the load file for the following fields, INDEX1 INDEX4 Load File RECORDNAME INDEX2 Arrange Columns to match load file sequence and copy from PLPO to the load file Check to make sure that VORNR and UVORN Fields are in correct sequence so that the Superior Operation is first and the sub operation second. Will need to move them manually For field RECORDNAME, do a VLOOKUP back to the HEADER TAB, using INDEX1 as the key Remember to remove the INDEX1 and INDEX4Loadfile upon completion and prior to converting to text file. SAP Legacy System Migration Workbench Operation Long Text Make sure to check the length of the operation long text. The customizing for the long text line length is hidden in SAP Production -> Basic Data -> Routing -> Control Data -> Define Line Length for Long Texts. Make sure it is set to 72 Characters. This will generate a Transport if you change it. The extract of the long text for task lists is broken down into separate files by task list type (A, E, T) and by the Header (PLKO) and Operations (PLPO). The files for the task list type E and T have new group numbers as the number range for these are internally assigned by SAP. The task list type A has two different formats, number and Alpha/Numeric characters as these can be internally or externally assigned. Copy Long Text ID (TDNAME) to separate cell far right of text and call is TDNAME2. For the Operations Long Text, parse the long text ID (TDNAME2) to get the Client – 3 char, PLNTY – 1 char, PLNNR – 8 char, PLNKN – 8 char and ZAEHL – 8 char. Sort File by PLNTY, PLNNR, PLNKN and ZAEHL and Counter to get text in correct order. The Counter Field may or may not be in the extract, depending on the method used to extract the long text. Create INDEX_PLPO by Concatenating the PLNTY, PLNNR, PLNKN Insert Column for INDEX_PLKO Use INDEX_PLPO to do a VLOOKUP to PLAS to get the Values for INDEX_PLKO (PLNTY + PLNNR + PLNAL) Use INDEX_PLKO to get RECORDNAME values from the Task List Header Use INDEX_PLPO to get the INDEX2 form the Task List Operations Remove the INDEX_PLKO and INDEX_PLPO prior to creating the text file. SAP Legacy System Migration Workbench – PLMZ Components assigned to operations Filter for A, E or T’s in PLNTY depending on which Type you are loading. For each load file, insert Column A and Create INDEX1 by concatenating the PLNTY, PLNNR and PLNAL (Task List Type, Group and Group Counter), use the_ to separate the values. Create INDEX2 by Concatenating the PLNTY, PLNNR, PLNKN Create INDEX4Load File by Concatenating the PLNTY, PLNNR, PLNAL and VORNR Use the INDEX4Load File to do a VLOOKUP back to the header to get the RECORDNAME and INDEX1 Values for each text line. PLWP – Allocation of Maintenance Packages to Operations PLWP Table sorted as described above NOTE: there was only one Package assigned to any operation. This process worked for this Customer. Would have to review and change extract logic where there are multiple packages assigned to an operation. Filter for A, E, T depending on the load file in PLNTY In the load file, tab Maintenance Packages, copy the Key fields from the Operations Tab and Insert a column A for INDEX 4. Copy this from Operations Tab. Insert Column to the Left of Column STRAT and Call it PLKO_STRAT. Do a VLOOKUP between PLKO and PLWP using INDEX 1 to get STRAT from PLKO. Check STRAT MATCHES PLKO_STRAT do a VLOOKUP on the Strategies and Packages between PLWP and the Load File using INDEX 4 as the reference. Insert Column B for INDEX 1, Concatenate T _PLNNR_PLNAL. Insert Column to right of STRAT, call it STRAT2. Do a VLOOKUP between PLKO and PLWP in STRAT2 to find the STRAT in PLKO. IN PLWP, where the STRAT and STRAT2 Match with Strategy for first operation, copy STRAT and PAKET for other operations within the PLNNR Grouping. Check where STRAT is populated but PAKET is #N/A. Review and delete or update task list. Check where STRAT2 is #N/A but STRAT and PAKET have values. Check where STRAT2 is #N/A and STRAT has values but PAKET is #N/A Where STRAT2 is Blank and STRAT and PAKET is #N/A, delete all lines for the PLNNR Group Load file PLWP, remove the other indexes and leave only RecordName and Index2 Closing Comments Personally, the conversion of Task Lists is the most challenging object in Plant Maintenance. Getting the original files to load correctly was very stressful until we figured out the indexing and the field names that needed to be changed. Now, while a good bit of work goes into the clean up of the files, the loads go smoothly and I hope that you can learn from my experience and your data loads will go smooth as well. With the latest releases of SAP S/4HANA Migration Cockpit, there are LTMC tools that incorporate the Task List Conversions. I am looking forward to applying some of this to the new tools to see how it goes. Please stay tuned for the next Blog Post in this Series SAP EAM Data Migration Part 7 – Maintenance Plans, coming soon. I look forward to your comments, feedback and engaging conversation. Please follow my profile to get updates as new content is added. Community Ask a Question Write a Blog Post Login Personal Insights Michael Kernan February 2, 2022 | 13 minute read SAP EAM Data Migration Part 7 – Maintenance Plans 0 6 2,323 Follow Like RSS Feed Hello All, This is Part 7 in the series on the migration of SAP Plant Maintenance data from SAP ERP Central Component (ECC) to SAP S/4HANA® Cloud. It has been a challenging time and being able to get back to writing some more Blog Posts is a welcomed time. Personally, I have been very busy helping Customers with their SAP Journey and continue to enjoy helping them succeed. In this blog post, I will review the Maintenance Plan 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. It will also have links to all of the other posts in this series. Some of the information herein had been gathered from various SAP Blog Posts in the SAP Community, (References included where applicable) and some of it is my original work. I would like to thank all of those that have posted solutions and hopefully I have added some value that you find useful. A special thanks to Camilo Veloso (camiloveloso@hotmail.com) whose work done years back in putting a graphic of the SAP PM Table Relationships out on the internet was a time saver and many of the relationships started from that work. I have expanded the work into what is shown herein. Some Basics Maintenance Plans – The Maintenance Plans can be Strategy Based, Single Cycle, Counter Based or Multi-Counter Plans. There are options for calling them from Conditioned Based Maintenance systems. Customer uses Strategy Plans exclusively to give them control over the end date for the work orders (Late Lag on the maintenance package in the strategy). MPLA – Maintenance Plan MPOS – Maintenance Plan Item OBJK – Object List Maintenance Items – are basically the Technical Object and task list linkage, also the object list is created, and all linked to the Maintenance Plan. MPOS – Maintenance Plan Item OBJK – Object List 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: Maintenance Items and Plans Data Relationships between Tables File Preparation Activities There are some extensive preparation steps needed to get the extracted files ready for the load format. Be very mindful of the validity dates for the task lists as these will cause errors when calling the maintenance plans if there is no valid task lists when the plan is called. Due to the various hierarchies and other tables to be used for reference, the following file preparation activities are complex and require a good knowledge of excel. This is not an exhaustive list, and has the steps we went through to get the files ready to be loaded using the LSMW Tool (Legacy System Migration Workbench) even though it is not recommended for S/4HANA, in our case it still functioned for this object. Please be aware that it may not be available in future releases of S/4HANA. If you have any suggestions or additional tips, corrections or advice, please comment and share. In general, we used transaction SE16N to extract data from specific tables and then exported to Excel. In some cases we had other programs that created text files that we subsequently imported into Excel for further processing. Depending on your situation, you might need to add additional selection criteria for a table extract to get the data relevant for your project. Note: This Customer added to the descriptions of the maintenance plans when the plan was inactivated for a short time, or deactivated for a longer period. They did use the system flags for Inactive and Flagged for deletion so both ways needed to be checked to get the valid plans. We also used an external number range for the maintenance plans to match the legacy numbers as they had some condition based maintenance tied to measurement reading in a separate Process Control System that either call a create notification or a manual call of a maintenance plan, depending on the settings on the PI Tags. The maintenance items were kept internal as these were not tied tot he PI Tags. MPLA – Maintenance Plan Header – File Clean up Use SE16N for MPLA STRAT = Blank, XXXXXX, (Enter the specific strategies that are valid. Execute. (May be optional depending on how extensive the Customer uses Strategies. Filter description for “allocated”, “dealloc”, “Available”, “reuse”, “re-use”, “deleted”, “blocked” items and delete them from MPLA download. Run IP16 for all Maintenance Plans, look at the Status and get all plans that have the DLFL and/or INAC Status, use this to check the valid plans in MPLA. Download and save as IP16_Maint_Plans_CRTD.xlsx In MPLA Insert column B to right of WARPL named Status. Use IP16 report to do a VLOOKUP using WARPL in MPLA to see if WARPL is still valid from IP16 Report VLOOKUP for WARPL to get status (DLFL INAC). Check with Business prior to removal of WARPL’s that are DLFL. If only INAC, also have business to verify keep or go. Also have business enter the valid PLAN_SORT Values from the dropdown list of values. If used) After Clean-up of MPOS Table do a VLOOKUP between MPOS and MPLA to see if WARPL still have valid items, if not remove the plans. A separate effort to set the cycle start dates will be accomplished from the MHIS Tables and review by the business. Remove status columns for MPOS and MPLA after deletion. MPOS – Maintenance Plan Items – File Clean up From MPLA copy the WARPL and use as input in SE16N for table MPOS to download file Sort by description (PSTXT) Look for “deallocated” and “reuse” and “re-use” and “deleted” and “blocked” items and delete them Look at the strategies that are blank to see if items are deallocated and delete them. Insert column B to right of WARPL named Status. Use IP16 report to do a VLOOKUP between IP16 report and MPOS to see if WARPL is still valid Check with Business prior to removal of WARPL’s that are DLFL. If only INAC, also have business to verify keep or go. Filter MPOS-WARPL for Blanks and copy to new tab. Send to business to see if these are still valid. Check these against the valid Functional Locations and Equipment, (TPLNR and EQUNR) are #N/A delete them as they are no longer being converted. After Clean-up of MPOS Table do a VLOOKUP between MPOS and MPLA to see if WARPL is still valid. if not remove the items. Make needed Work Center substitutions The Columns for TL_INDEX and TLINDEX2 are used to validate between the PLKO and MPOS tables. Maintenance Item Translation Old to New Will need to create a translation table between the old Maintenance Item Number and the New Maintenance Item Number once the maintenance plans have been loaded in S/4Hana. Run Transaction IP18 Maintenance Items List in S/4 to get the new items and plans. Include the Maint plan number, item, description, functional location, and equipment, any other fields you want for validation are ok as well. Export to excel. Run IH08 and get a list of equipment, with the functional locations. Use this to update any equipment that is missing functional location in the Load file for the maintenance Plans and Items. Insert Column A and call it INDEX, concatenate the Maintenance plan number, functional location and equipment fields to make the INDEX In the load file for the maintenance plans and Items, on the items tab, Insert Column A and call it INDEX, concatenate the Maintenance plan number, functional location, and equipment fields to make the INDEX In the IP18 file insert Column A for old Maintenance item and do a VLOOKUP using the created INDEX and bring in the old maintenance item number into the file. Check for #N/A and check to see if the functional location was included in the load file for equipment items, copy the INDEX from the new file and update the old maintenance item or remove lines OBJK – Objects List Use SE16N for Table OBJK, use MPOS to get OBKNR >0 for the maintenance items and enter the Object List Fields OBKNR. Enter a W in the OBJVW field. Download list and lookup ILOAN using ILOA to get functional locations. Use IH08 to get functional locations for equipment. Filter out #N/A Use the translation of Old to new Maintenance Item Numbers to get the New WAPOS by doing a VLOOKUP on the Old Maint Item Number. Filter for OBKNR>0 and NEW WAPOS = #N/A and Delete Where OBKNR >0, copy the new maintenance item, Floc and Equip number into object load file. T351 – Maintenance Strategies Use SE16N to extract the data for the relevant strategies from table T3511P. Download to excel and save as T3511P Strat and Package.xlsx. In file T3511P Strat and Pack Insert temp column to right of ZAEHL, in new column F, use formula =C3*1 to convert the value in ZAEHL to a number, copy it down for all rows. Format it with General. Copy and paste values. Replace Values in ZAEHL with values from column D and Delete Column D. In the File T3511P Strat and Pack, insert Col A and Call INDEX. Concatenate the fields STRAT and ZAEHL, then convert to values. MPOS – Maintenance Plan Items Task List Cross Reference After the Equipment Task List and functional location load files complete, download list to spreadsheet with new groups, counters and external identification fields so that a translation can be made from the old group to the new group. Move the External Identification field to Column A. Insert 2 Columns in Maintenance plan load file, maintenance Items tab to the left of the PLNTY Field. In one column, concatenate the PLNTY_PLNNR_PLNAL fields Filter the PLNTY for E = Equipment or T = Functional locations, (A = General may not be needed if you used the legacy ID for the PLNTY). Do a VLOOKUP using the concatenated fields with the downloaded list for the Equipment task lists and get the new Group number. Save as values. Check the group counters and copy the new group numbers to the PLNNR field. Do the same for the functional location task lists and the PLNTY = T. Delete the two columns inserted in the load file after the functional locations are corrected Make sure to include the functional location for the equipment related items, use the IH08 report to get the functional locations Use the IH08 Report to validate the equipment numbers as well. Validate the work center in the Maint Plan tab. Updating Start of Cycle Dates for Maintenance Plans MHIS – Maintenance Plan History Download MHIS using list of maintenance plans from MPLA. NOTE: We did not have any Maintenance plans that created notifications. Would need to do something similar with the QMIH Table. We also did not have any counter-based plans, so that is not included here. Align columns per MHIS COLUMN DEFINITION list below. Copy and insert into separate excel file and paste – Transpose so that the field descriptions are across the top of the spreadsheet. Name file MHIS COLUMN DEFINITION, and align fields in MHIS MaintenancePlan WARPL Strategy STRAT Maint Plan Description WPTXT Package ZAEHL SchedulngType TERMA Call Number ABNUM Previous call VGNUM Cycle start STADT LastCallDate ABRUD LastPlanneddate NPLDO Last Completion LRMDT NextPlanned Date NPLDA Future Call date HORDA Compl.Predecess NPLDZ Fixed/Skippeddate FIXDA ManualCallDate MANDA SchedIndic. TERMK SchedStatus TSABR SchedStatus TSVBT SchedStatus TSENQ SchedStatus TSENM Sched. status TSTAT Changed by FIXDU Late Completion VERSCH Tolerance (+) TOLER CycModifFactor SFAKT Package cycle ZYKZT Lead float PUFFP Follow-up float PUFFN Time offset OFFZE Time offset OFFZO Filter on data field names (Row 2), not descriptions Delete unneeded Columns Save File as MHIS_Cleaned.xls and use this going forward. MHIS Clean-up (If you have a better way to clean up the start dates, please share!) In File MHI_Cleaned.xlsx Insert Column B for STRAT Do a VLOOKUP with MPLA to get strategies based on WARPL Insert Column C for Description of Maintenance Plan (WPTXT) Do a VLOOKUP with MPLA to get WPTXT In the file MHIS and the T351P file, insert Column B for INDEX and Concatenate the fields STRAT and ZAEHL, save as values Use File T3511P Strat and Pack to add ZYKL1, ZEIEH and KTEXT1 by inserting columns to the right of ZAEHL. Do a VLOOKUP from MHIS and T351P, using INDEX to get fields ZYKL1, ZEIEH and KTEXT1. Save as values. Save File. Close File T3511P Strat and Pack Filter STRAT and exclude strategies not relevant (ie for CBM, are not scheduled on routine basis) Filter STADT for Blanks (Manual Calls) Delete entries with manual calls, not strategy XXXXXX or XXXXXX Remove filter on STRAT Format ABNUM to 3 characters with leading zeros =TEXT(REF,”000”). Save as values. Initial Sort of File by WARPL A to Z, ABNUM Largest to Smallest, ABRUD Newest to Oldest Filter STRAT (Strategy = DU-WNH) and filter UoM (ZEIEH) for WK, and Last Completion Date (LRMDT) = blank, delete the entries as these are typically future calls or if in the past calls on hold. This should give you the weekly duration last completed. Filter STRAT (Strategy = DU-MNH) and filter UoM (ZEIEH) for MON and then filter Duration for 1 MON. and Last Completion Date (LRMDT) = blank, delete the entries as these are typically future calls or if in the past calls on hold. This should give you the Monthly duration last completed. Do the same for 2, 3, 4, 5, MON Durations For the durations that are 6 month and UP TO 11 MON, delete the blank LRMDT that are way in the past and leave the blank LRMDT that has dates for this year as these are orders that are probably In-Process. Any NEXT PLANNED DATE (dates for following years and beyond can be removed.) For the durations that are 12 mon or more don’t delete any rows for future dates. Menu Path Data > Remove Duplicates, unselect all, then select fields WARPL, WPTXT, Zaehl click OK to remove duplicate values This should be the list of maintenance plans and the last call date (ABRUD) SAVE FILE! Review file for duplicated WARPL Entries and check if the WPTEXT reflects multiple Frequencies and highlight them to see which dates should be used for the start of cycle. If the duplicated WARPL Entries have different frequencies (ZYK1) delete older entry(s) Check for WPTEXT not matching KTEXT1. Example – (60MON) in WPTEXT and 024 MONTH in KTEXT1 Insert column B to right of WARPL named Status. Use IP16 report to do a VLOOKUP between IP16 report and MPOS to see if WARPL is still valid For all status that is DLFL, delete. (Should be none) then delete status column after check. If there are multiple entries for WARPL, Do a second Sort by WARPL A to A, STRAT A to Z, NPLDO Newest to Oldest and ABNUM Largest to Smallest Menu Path Data > Remove Duplicates, unselect all, then select fields WARPL, STRAT, WPTEXT click OK to remove duplicate values Use NPLDO as the Cycle start date in the Maintenance Plan Load File If NPLDO is Blank, check ZYKL1 value and compare to last call date to see if applicable to be used. Check next planned date to see when it to occurs Update all dates to start at beginning of the month instead of middle Filter STRAT for XXXX02 (Weekly) and adjust last planned date so that start of cycle starts in current week or in the future if these are being deferred for starting the plans. Filter STRAT for XXXX01 (Monthly). Insert Column to right of NPLDO call it New Cycles Start Date (STADT2) Insert Formula =M3-14 to get date that starts at the beginning of the month. Remove filter on STRAT and save new STADT2 as values. (This will depend on if you are using forward or backwards scheduling. Customer changed from backwards to forward scheduling so we needed to adjust the start dates to the beginning of the month.) If date is blank or not at beginning of the month, adjust accordingly. For Blanks look at next planned date and back up date for the package duration. If the next planned date is 2019, use that date adjusted to the beginning of the month. If the ZYKL1 is 120, and if NPLDO is Blank, use 1/1/2020 as the start of cycle If there is a date check to see if coming due and only adjust if necessary Also check Last Completion and use it and look at cycle start, if at beginning of year, use the beginning of the year when last completed Check next planned date and subtract duration to see if it is more applicable. Check each of the durations separately and update the cycle start to reflect current dates that will drive the next call. Use the STADT2 as the start of cycle (STADT) in the load file. Use VLOOKUP to populate in the load file. LSMW for Maintenance Plans Like the task lists, the SAP Legacy System Migration Workbench uses a method to create the maintenance plans The IBIP structure is as follows; ZIBIPMPLA – Maintenance Plan ZIBIPMPOS – Maintenance Items ZIBIPTEXT – Long Text ZIBIPOLST – Object List You have different levels for example level 1 – header then below that level 2 – Maintenance Items, then below that you have level 3 – Long text, Object List. For each of these levels you need an identifier that links then together. In your source file. Use the existing field RECORDNAME for header, RECORDNAME and INDEX2 for Maintenance Items, Long Text RECORDNAME and INDEX2 and INDEX3 for all items below the Maintenance Items (Object List). This way the system can create the correct structure when it reads the data from the text files. ZIBIPMPLA – Maintenance Plan TCODE Transaction Code RECORDNAME IBIP: Name of the Data Transfer Rec ZIBIPMPOS – Maintenance Items TCODE Transaction Code RECORDNAME IBIP: Name of the Data Transfer Rec INDEX2 Item Index ZIBIPOLST – Object List TCODE Transaction Code RECORDNAME IBIP: Name of the Data Transfer Rec INDEX2 MPOS INDEX INDEX3 OBJLIST Index ZIBIPTEXT – Long Text TCODE IBIP:TCode (Only Entered in Header RECORDNAME IBIP: Name of the Data Transfer Rec INDEX2 MPOS INDEX Align the field from the tables with the load files and copy into the load file spreadsheets. If you are using the internal number range for the maintenance plans, WARPL = ! and WAPOS can be Blank on the MPOS File. If you r functional locations exceed 40 characters, make sure to copy them from TPLNR to STRNO in the MPOS File. Change the field names in the OBJK File and LSMW Source fields for TPLNR2, EQUNR2 and STRNO2. Make sure the mapping is updated. The identifiers are numeric and will disappear once the files are loaded. specify them in the source structure as 2 or more characters and remember to set the excel file up to have a length of 2 or more characters field. For the header file each line will be a new identifier 1,2,3, etc. Closing Comments The conversion of Maintenance Plans is fairly straight forward and the challenging part is the filtering of the MHIS Table, especially if there are a lot of calls in this table. We spent a lot of time with the business reviewing the new start dates to get aligned correctly and we got about 98% correct. There were a few that we had to restart, it was a pretty straight forward process an went quickly. With the latest releases of SAP S/4HANA Migration Cockpit, there are LTMC tools that incorporate the Maintenance Plan Conversions. I am looking forward to applying some of this to the new tools to see how it goes. Please stay tuned for the next Blog Post in this Series SAP EAM Data Migration Part 8 – Notifications, coming soon. I look forward to your comments, feedback and engaging conversation. Please follow my profile to get updates as new content is