Uploaded by studylib

SAP EAM enterprise asset management PM plant Maintenance FULL vipx

advertisement
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
Related documents
Download