UI Configuration determination logic introduction
This blog will try to introduce the Webclient UI Configuration determination logic to those friends who are new for this topic.
Suppose I log on Webclient UI via Business role SALESPRO and have opened Sales Order overview page and F2 to open technical information page, what are the meaning of the left four fields ( Searched For) and the right four fields ( <DEFAULT>) ?
Figure1 Technical information page
In UI workbench, there are 8 standard configuration pre-delivered by SAP and 1 configuration done by customer.
Figure2 View configuration list for Sales Order detail view
The SAP configuration data is storaged in table BSP_DL_XMLSTRX2 while customer configuration in BSPC_DL_XMLSTRX2.
The configuration determination logic could be summarized as the following:
1. The four fields config key, component usage, object type and object sub-type are evaluated by framework to determine which configuration should be loaded. The priorities of these four fields are different and hard coded by SAP, see following picture. These 22 table rows are called “Configuration Access sequence”.
2. Customer configuration precedes SAP configuration. If a customer configuration is evaluated and accepted, the framework will stop the determination process and load it.
Figure3 Access sequnce table
Briefly speaking, the configuration determination logic could be concluded as below process:
1. framework will build the access sequence table gt_access_sequence, which has 22 entries as listed in figure3.
2. framework will load the 8 sap configuration information( config key, component usage, object type and object subtype ) to internal table it_config_sap
and 1 customer configuration to it_config_cus.
3. LOOP AT gt_access_sequence, within each loop, check it_config_cus whether there are matched configuration. If found, mark it as “Found” configuration and stop the process. If not found ( ie, the 11 times LOOP finish ), the framework will LOOP AT gt_access_sequence again from beginning, but this time the table it_config_sap is checked instead.
Let’s use the SalesOrder detail view as example to make this process more clear:
1. Framework will try to load a configuration which matches the four fields displayed in debugger. These four fields are just considered as “Searched for” fields shown in figure 1.
Figure4 search key
2. load the SAP and customer configuration data:
The internal table looks exactly the same as what we see in UI workbench ( Figure 2 ):
3. if the determination is being executed in a customer system, there are totally 22 ( 11 for customer configuration and 11 for SAP configuration ) loop until a match is found.
the gt_access_sequence is filled according to Figure3.
For each fields, X means the corresponding field in it_config_cus or it_config_sap is checked with the search key passed in ( figure4 ),
space means <DEFAULT>.
All 11 times LOOP for it_config_cus failed, so it_config_sap is now evaluated.
The matched one is finally found in the last attempt, and since it belongs to SAP configuration, so in figure1 “Standard Configuration” is marked for Configuration Origin.