Stumbling through Data Migration with HANA Data Migration – LTMC and LTMOM
So there are way too many blogs about this. So I in my infinite wisdom decided to add one more. Crazy right?
This blog is covering some major stumbling points I had. Perhaps they are answered somewhere else. In fact I did eventually find some answers or I would’t be writing this blog.
Stumbling bumbling point 1:
The new Object
I created a new object for customer credit. Piece of cake right? First in case you didn’t know there is no longer “old” customer screens. Instead everything is together in one screen. Transaction BP or Create / Maintain / Display business partner. No big deal just a different layout. At this point I had no idea why SAP didn’t add customer credit to the customer object. Seems easy enough.
So I created a function module. It simply added the credit information. I used the SAP function module UKM_DB_UKMBP_CMS_EXECUTE. Yes it wasn’t released and it wasn’t remote enabled. I fixed it easy enough by wrapping a Z FM around it. I tested it. Success! It worked. Um. The Z function module worked.
Stumbling bumbling point 2:
Moving on LTMC
Tried it in LTMC – nope didn’t work there. Why? The customers didn’t have the “credit role”. I picked the wrong customer to test with. OK – so I added the BAPI, BAPI_BUPA_ROLE_EXIST_CHECK_2 and BAPI_BUPA_ROLE_ADD_2. This time I caught the issue while testing. The timing wasn’t working. I was running the execute function module before the role was finished creating. No big deal I created another new object for adding the role that would be ran first.
You guessed it, I tested everything in the function module. Yes! Everything worked.
Stumbling bumbling point 3:
Run in LTMC
So now to run it. Ran it in LTMC. Nothing worked. Not the role creation and then of course the credit object didn’t work. Why? Well after some work, debug does NOT work well with LTMC. I found out that the LTMC system did not automatically convert my numeric customers with the leading zeros.
Debug in the backgroud – to the very first time the new object is created.
Nice to know. So I fixed it. I ran it in LTMC and IT WORKED.
So my data was loading without issue. It was dependent on the customer load, and some other master data. But that was to be expected.
Stumbling Bumbling point 4
Instead of development client – on to the data load client
Now I moved to our data client. I successfully ran LTMC. YES! Again I thought I was done. But then I looked. No data there. Are you kidding me?
I finally after some searches, frustration and walking around trying to think of what could have happened, I looked at the short-dumps. There it was the program had short dumped. The error went something like this: “Function module xyz not found”.
What!? It worked fine in the different client. <Sigh>. Well after some more struggling, I figured out that I needed to generate the object in each different client I used. At a guess, the function module is not automatically generated. The LTMC object is generated. In other words, the object is still looking for the old function module. The generated function module is in the $TMP package.
So this note would probably have helped. We are too far along the process to delete data migrations. So we will just regenerate in each client. I did not use that note.
Stumbling Bumbling Done – I hope
Data has migrated from our spreadsheet.
A thing to note:
I could not find a way to download the error Excel file. So if it is an easy conversion fix, not a problem. If it is a configuration fix, not a problem. If there is something wrong with the Excel file on only certain records – that’s a problem. Also couldn’t find a way to delete all the records just loaded by the LTMC program. So I archived them. It took a bit to set up the archive object.
Also I was using this for “on-premise”.
Help to all of us if you’ve used this tool:
Please add anything else you had an issue with. Also if you solved some of the things in the “note” or something above. Please add that as well.
https://blogs.sap.com/2017/02/28/getting-started-with-the-s4hana-migration-cockpit-onpremise/ The interactive Demo was helpfull
I am glad that you are trying out the S/4 Migration cockpit and sharing the experience with the SAP community.
Regarding the "Stumbling Bumbling point 4" where you faced an ABAP dump, it is always better to use separate projects for different clients. So the better way should be :
You can delete the object if it does not pass the testing, work on development in DEV client and then repeat the above mentioned steps.
Regarding the excel with only issue records, atleast standard objects provide a "Delta" file after "Import" step with records which were not uploaded to system successfully. so you can download the new file with only error prone records and work on it. Maybe worth trying in a higher version of S/4 Migration cockpit?!
Thanks and Regards,
Learning, I am forever learning. It makes sense to have a different project for different clients. I guess I'm too used to working with ABAP that isn't client dependent. Great solution.
Excel only issue records - it does provide a delta. I haven't found a way to download it. I'll have to really start looking for that.
I'm using this tool on 1709. There might be something better? A note I missed.
Thank you so much for your reply.
The delta file creation ( new file based on only failed records ) should already be available in 1709 initial stack. Try with standard objects for example to get a feeling of how it works. If you are still failing to see the functionality , then please raise a message if you have issues.
Check the note 2596532.
Thanks and Regards,
I'll check the note. We get the file, we just can't download it.
Thank you for helpful blog.
I have a query. I updated Customer master standard template for BP roles. I updated BP role rule to custom roles. Once done it creates business partner with certain groupings only whereas manually we are able to create BP with same roles.
Error :- Business partner and customer number should be same .
I ran three different loads. One to create the customer. One to create the different BP roles - UKM_DB_UKMBP_CMS_EXECUTE. The last was to populate them. I was able to query the new system on the sort data (we put our old customer number on that). That gave me the cross reference from old to new customer. Then I was able to build my other files with the new customer.
Do u have any idea how to update the already migrated data with LTMC ?
I ended up archiving the objects, and deleting them from the system. However, I'm sure you could create an LTMC to change the data. Copy the existing LTMC and change the method of loading to a BAPI that changes the data? Something like that.
I have copied the object into another project.
But I am getting ‘Error while generating runtime object’ Validation step doesnot show any results.
Please can you help me how can resolve this issue.
So copying the object should not be a problem. Did you activate it? What were you migrating? When are you getting the error - there are steps in the process - which step are you on? Is there a short dump file or just the message?
The only time I got that error or something similar was when I didn't generate the object in a different client. For example our development client was 500 and our development testing client was 510. Because of the way this is set up, I activated it in 510 when I wanted to run it there. I also referenced a note that might help.
I did modify the system during a material master load, I was getting a DIM error. For that I ended up modifying the function module MARM_SPECIAL_CHECK_GEN. I hope there was a note out there that I just missed.
I could not able to upload Materials with Multiple plants at single instance . System is considering only one plant which is in first row in sheet “Plant Data”
Well that would be tedious. I didn’t have an issue with the plants. We did get them to go all at once. I’m not sure what the difference is. Did you have the system create your material number? That would be a difference. Remember for material views – don’t put the actual one character letter there, instead use the name you have in the maintenance status view. We did keep our old material numbers so the link was there between material/plant.
Thank you for adding an additional issue. 🙂
Step no 3- I ran the LTMC but nothing gets updated and there is no error message too. I used the standard function module UKM_DB_UKMBP_CMS_EXECUTE in LTMOM but it seems its not working. Do we need to run the BAPI commit also?
If you have already run LTMC and did the actual load one time then even if you delete the records they show loaded in SAP. You have to run DMC_FM_RESTART to actually delete the records from the table that is created when LTMC.
Now that doesn't sound like your issue. But it could be if you load more than once. I did not need a commit.
I had to load the records in two steps:
Did you check that everything is loading into LTMC? The simulation.
You can also set a breakpoint to make sure your data is loaded - why it isn't working...
Take a look at this blog:
It also has slides with it. They contain the credit solution that I ended up using.
Thanks Michelle for the suggestions. I just want to check if its possible to create migration object from scratch by using -UKM_DB_UKMBP_CMS_EXECUTE without copying into Z FM? if yes, then how to use the commit BAPI in LTMC.
I don't think you can use it directly. (But I could be wrong.) Here's what I did. I didn't need All the variables in the SAP function module.