As a starting point, check if there is an entry with the name of the missing service in the table ICFSERVICE. For example, if the node "testhandler" is missing from transaction SICF, then call transaction SE16, enter TESTHANDLER (in uppercase letters) in the ICF_NAME field, and click Execute. Then proceed depending on the result:
1.) No entry is found in table ICFSERVICE
In this case, contact the responsible application team, or open a Customer Incident with the application component of the missing service. SICF services or nodes that are actually missing, need to be analyzed from application side - possibly a necessary Add-On is not installed, or a Business Function is not activated. It is also possible that the service has been manually deleted - check the change documents described in SAP Note 2270828.
2.) An entry is found in table ICFSERVICE, but transaction SICF still does not display the service
In this case, the most likely root cause is that the node IDs of the ICF nodes do not match. The SICF tree structure is based on the table ICFSERVICE and its fields ICFNODGUID (node ID) and ICFPARGUID (ID of the parent node). Each ICF service has a node ID and a parent node ID - if the service is trying to use an invalid parent node ID, then the service will not show up in the SICF tree. Possible root causes for mismatching node IDs are:
a. Nodes have been transported from several different systems, possibly with different SP levels.
We have two development systems D01 and D02, and one quality system Q01.
The service "testhandler" and its parent node "testparent" exist in systems D01 and D02. These two systems have different SP levels - as a result, also "testhandler" and "testparent" have different node IDs in D01 and D02. Now, if "testhandler" is transported from D01 to Q01, and "testparent" is transported from D02 to Q01, then the service "testhandler" will not show up in the ICF tree in system Q01.
b. Some nodes have been created manually in the system, others were transported.
We have a development system D01 and a quality system Q01.
The service "testhandler" and its parent node "testparent" exist in system D01. In system Q01, we create the node "testparent" manually - as a result, the node ID of "testparent" will be different in D01 and Q01. Now, if "testhandler" is transported from D01 to Q01, then the service "testhandler" will not show up in the ICF tree in system Q01.
Solution: Always transport ICF nodes from the same source system. If manual creation is necessary, then this needs to be done in the source system, and then transported to the destination System.