Sometimes you can bump into weird issues in SAP Solution Manager and you can really crack your head open looking for a solution. The solution might not even be complex but it’s not always easy to tell what’s going on and why the system behaves in a certain way.
During post processing after an upgrade to SAP Solution Manager 7.2 at customer side I bumped into an issue while creating a task list upon a change cycle for Change Request Management.
The strange thing for me was that the checks which are visible when you start creating the task list were all green as you can see below:
So this screen seems to state that the transport management (calculating transport tracks, checking TMS) is fine, that the system RFC (connectivity to the involved systems/clients) is also fine and that the number range (number range used for task list) is also fine.
This then tells me that I won’t have any problems to create the task list basically since everything is green.
In step 2 Define Scope, my landscape looked fined as well, step 3 I didn’t need because we’re not using cCTS and in step 4 you can a summary to complete the task list creation.
Error message gallore
Upon finishing the task list creation, an error appears:
So I click on “Details” to find out more which makes sense
So this then states my user-id (blanked it out since it’s customer specific information) tried to create a task list and failed to do so. More information is to be found in transaction SLG1, in the application log.
So I head over to the application log to check for this entry.
The application log shows my above screenshot. Failed to create CTS project in system AA1.
CTS projects are not created in all required development systems.
Looking for a solution
The obvious first thing I do is look for a relevant SAP note or knowledge article and search on SAP Community Network.
Nothing really, no relevant results.
So there seems to be something wrong when the system tries to create a CTS project in my development system that is known in my landscape for this change cycle / task list.
What I did next was debug through code, I first traced a part of this process using performance tracing to check what code the system was accessing to then debug through parts of the code by setting a breakpoint where I thought it was relevant.
What I noticed in the end was that the system was writing entries into table CTSPROJECT. The next thing that I noticed was that the client field in this table was being filled with the wrong client. I thought it was a coding error somehow and I opened up a customer message to SAP.
SAP support to the rescue
SAP support was helpful and had me check the technical system client properties in LMDB. In LMDB you can state which client represents which kind of role “development”,”production”, …
This looked fine and I played around testing with different values to see the effect on CHARM but it didn’t seem to have any effect really. So off to square one.
Then SAP support asked me to check the RFC destination and ensure it’s properly maintained as they noticed the client assignment was missing in that particular RFC destination used for the task list creation – the RFC destination assigned to the development environment.
RFC destination missing client assingment
I hadn’t given this thought yet because normally the RFC destinations are generated by SOLMAN_SETUP and as such, the client assignment would be present and you wouldn’t run into this problem as an effect.
This was in the end however the root cause that the task list creation failed because the system tried to create the CTS project in a different client but in the code a check is done against the role of the system also in terms of being development or not so it would always fail because the default client is a different client.
Caring is sharing
Since this is not documented anywhere nor checked by code I decided to share on SAP Community Network in case someone else bumps into this problem. I know this will be rather rare but then again, I bumped into it myself just recently so chances are this won’t be the last time someone else encounters it.