SAP EAM Data Migration Part 6 – Task Lists
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 (email@example.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.
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
Operation Long Text
PRT’s (Documents, Inspection Points, Equipment, Other)
PRT Long Tet
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.
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/sub-operations 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.
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,
- INDEX4 Load File
- 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
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.
This is a great series of posts. I'm reading them right now and will definitely reference them again when it's time to do our migration. Thank you so much for spending time doing this, it's greatly appreciated.
Thank you and best of luck in you migration.
Really useful for all PM/EAM consultants .Thank you so much .In the same way how to extend Masters for from one plant to another plant while merging plant A with Plant B.Example in company code 1100 i have plant 1158 and the masters in 1158 needs to be merged in 1058 plant of company code 1000.In case of merger very much useful if any such document kindly share at firstname.lastname@example.org
In my project i created new work centers as wc's are not possible to extend.
Equipments extended by dismantling Functional locations and changed plant,planner groups,work centers,cost center.
Functional locations created new ones as they are having company code at 1st level of edit mask
Task list also by removing operations extended to plant etc
There was a separate team that did the material master conversion and the related tables to extract from. I am sure if you search the SAP Community, you will find your answers. Good Luck and glad you enjoyed the Blog Post.
Thanks, it's very helpful.
for one thing, how to upload this by lsmw? can use standard batch input 0490? and how to allocate maintance package for each operation?
Thank you for identifying this, I missed adding the packages to the LSMW structure and have updated the Blog Post to show where the maintenance packages are included in the LSMW..
Hope this helps.
Great Job Michael!.
Currently doing a work-as-you-read and this is really straightforward. The table structure is invaluable in order to cleanse data. Next time I think I'll use an Access database or similar in order to keep cleansed data available throuought the migration.
The number of excel files keep stacking up 🙂
Any ideas if/when you'll do the Notifications and Orders? I saw that Open Notifications have been added to Migration Cockpit, so I guess we'll stick with that one.
Glad it helps. If you scroll tot he top of this Blog Post and click on the link for the first post, it has the links to the Post 8 - notifications and Post 9 - Work orders where we did create a custom conversion program fir the notifications and related work orders. This was in version 1709 where there was not a standard migration workbench objects for these items.
Best wishes on your efforts,
First of all, thanks a lot for the tremendous effort and the very useful series.
As a newbie to the PM implementation and the migration cockpit, I am struggling with the errors I receive while simulating or migrating tables to the system (Although the systems tells you the cell of error). Is there a directory or glossary for those errors?
Glad you are enjoying the Blog Post. Please repost your question to the general community as others that the relevant expertise in the migration tools will be able to assist you. Also please identify which version of SAP S/4HANA you are using and if Cloud or On-Premise.