Skip to Content
Author's profile photo Michelle Crapo

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.

Helpful Links:   The interactive Demo was helpfull

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Dharshan A
      Dharshan A

      Hi Michelle,

      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 :

      1. Create a new project in the data load client .
      2. In LTMOM, copy the object from project created in DEV client to the new project in data load client. This should be done in data load client

      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,

      Dharshan A


      Author's profile photo Michelle Crapo
      Michelle Crapo
      Blog Post Author

      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.


      Author's profile photo Dharshan A
      Dharshan A

      Hi Michelle,

      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,

      Dharshan A

      Author's profile photo Michelle Crapo
      Michelle Crapo
      Blog Post Author

      I'll check the note.  We get the file, we just can't download it.

      Author's profile photo khushbu dave
      khushbu dave

      Hi Michael,


      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 .


      Best Regards,


      Author's profile photo Michelle Crapo
      Michelle Crapo
      Blog Post Author

      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.

      Author's profile photo Sara Amzil
      Sara Amzil

      Hello Michelle,

      Do u have any idea how to update the already migrated data with LTMC ?



      Author's profile photo Michelle Crapo
      Michelle Crapo
      Blog Post Author

      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.


      Author's profile photo khushbu dave
      khushbu dave

      Hi Michelle,

      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.




      Author's profile photo Michelle Crapo
      Michelle Crapo
      Blog Post Author

      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.


      Author's profile photo MohanKishore Pathipati
      MohanKishore Pathipati

      Hello Michelle

      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”



      Author's profile photo Michelle Crapo
      Michelle Crapo
      Blog Post Author

      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.  🙂



      Author's profile photo S S
      S S

      Hi Michele,

      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?

      Author's profile photo Michelle Crapo
      Michelle Crapo
      Blog Post Author

      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:

      1. Load the Role first.  (for the credit role, it also required a credit segment - this is part of config and you may not need one)
      2. Load the credit data.  I did use the function module  UKM_DB_UKMBP_CMS_EXECUTE and copied it to Z_UKM_DB_UKMBP_CMS_EXECUTE2.
      3. I did a commit in my version of UKM_DB_UKMBP_CMS_EXECUTE.

      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.


      Author's profile photo S S
      S S

      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.

      Author's profile photo Michelle Crapo
      Michelle Crapo
      Blog Post Author

      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.

        data: ls_crd type ukm_s_bp_cms_upd,
              lt_crd type standard table of ukm_s_bp_cms_upd.
        clear: ls_crd,
        data: numc10(10) type n.
        if partner co '0123456789 '.
          numc10 = partner.
          clear partner.
          partner = numc10.
      * Move to table for SAP FM
        ls_crd-client = sy-mandt.
        ls_crd-partner = partner.
        ls_crd-check_rule = check_rule.
        ls_crd-risk_class = risk_class.
        ls_crd-credit_group = credit_group.
        ls_crd-limit_rule = 'STANDARD'.
        ls_crd-change_id = 'I'. "change_id'.
        append ls_crd to lt_crd.
        loop at  n_ukmbp_cms_sgm.
          clear n_ukmbp_cms_sgm-partner.
          n_ukmbp_cms_sgm-partner = partner.
          n_ukmbp_cms_sgm-change_id = 'I'.
          modify  n_ukmbp_cms_sgm index sy-tabix.
      * Run the function module - no return value
        call function 'UKM_DB_UKMBP_CMS_EXECUTE'
            n_ukmbp_cms     = lt_crd
            n_ukmbp_cms_sgm = n_ukmbp_cms_sgm[].
        commit work.