I am responsible for CRM IBASE application( software component CRM-MD-INB) and recently we received a customer tickets complaining the behavior of Level up button. Let's use an example to demonstrate:
Suppose I have three IBASEs with external ID JERRY_IB1, JERRY_IB2 and JERRY_IB3.
JERRY_IB3 is included in both JERRY_IB1 and JERRY_IB2.
JERRY_IB3 contains one object component. When focus is kept on object component, we can click Level up button so that the focus is automatically switched to its parent, JERRY_IB3 instead. All the assignment blocks in the right part are displaying data of JERRY_IB3 now.
However, now focus is set on JERRY_IB3 and Level up button is disabled, since we are already in the root node of the current IBASE tree. But considering the global IBASE hierarchy, customer expects that they can set focus on JERRY_IB3 and click level up button, so that they could navigate to either JERRY_IB1 or JERRY_IB2. Currently this function is not available, the button id disabled.
Enhancement to fix the gap
Our PO considered this as an issue, so our team has released a note 2008482 to enhance the behavior of Level up button.
After enhancement, the level up button would be enabled for any IBASE which has a parent IBASE. In our case it works for JERRY_IB3. Once clicked, a pop up window will appear which lists all parent IBASEs and allows customer to specify which parent IBASE they could like to navigate to.
The detail about enhancement could be found in note and here just list them briefly:
1. enhance method GET_BUTTON of CL_IBHIER_TREE_IMPL to add the logic that if the current IBASE has parent IBASEs assigned, enable the level up button. The hierarchy is got via function module CRM_IBASE_COMP_FIND_MULTI. Since this getter would be called during earch roundtrip, for performance reasons the result is buffered in internal table gt_ibase_map. The buffer will be cleared when user navigates away from the tree view ( done in method DO_CLEANUP_CONTEXT ).
2. enhance method EH_ONLEVEL_UP of CL_IBHIER_TREE_IMPL: if selected IBASE has only one parent, navigate to it directly without popup displayed. For multiple parent case, the navigation is launched after user choose one from the popup window. The navigation is implemented via dynamic navigation.
For technical detail how to achieve dynamic navigation you can refer to document from Nawal Kishore.
3. develop a new view for popup display: CRMCMP_IBSEARCH/IBParentsListForLevelUp.
In case you have any question for this note or any other general questions regarding IBASE, feel free to discuss with me