This page is created to clarify the application logic of search in Personal Object Worklist and to provide a debugging guide to identify the root causes of an issue.
In the POWL the user has the possibility to search for documents using different selection criteria. During this process there are a few points that should be checked in order to exactly pinpoint the cause of an unwanted behavior.
To start the debugging set a breakpoint
- in Function Module POWL_QUERY_REFRESH,
- in Method MAP_SELCRITERIA_BO of class /SAPSRM/CL_SRC_SERVICE_BASE,
- in Method EXECUTE_SEARCH_INTERNAL of class /SAPSRM/CL_SRC_SRV_DB_* (* - documents dependent part, e.g.: SC, CTR, PO etc.).
If the search is started, the breakpoint will stop in FM POWL_QUERY_REFRESH. Here you should check if the maintained selection criteria are considered by system. This check can be done using attribute LT_CRIT_PARA after calling the method GET_UPDATED_SELCRIT.
In my example I received the following criteria in this attribute:
To know which selection criteria belong to the SELNAME values you can check variable in LT_CRIT_DEF.
If the selection criteria are correct, continue with the program run (F8). The second breakpoint will stop in Method MAP_SELCRITERIA_BO.
Here system maps the search criteria values to the search structure (MS_SEARCH_CRITERIA). At the end of this Method check if the values are correctly mapped into structure ES_SEARCH_CRITERIA.
If the values are correct, continue with the program run (F8). The third breakpoint will stop.
Here system decides whether it should read item or just header data (the main logic is the same for both). Follow the program accordingly. In case system reads item Method EXECUTE_SEARCH_INTERNAL_ITEM will be called. In this method you can check again if the criteria are still correct using variable MS_SEARCH_CRITERIA.
Then system fills the search parameters and calls FM BBP_PD_SC_GETLIST.
After the FM call check whether table LT_PDLIST_SC contains the correct result. This FM can be called more than once, so perform the check every time when the FM is called. Afterwards it is possible to change the result using BAdi BBP_WF_LIST. Check the results before and after the BAdi call.
If the results are still correct, you should check whether the authorization check changes the result (LT_PDLIST_SC) or not. This can be done after Method CHECK_AUTHORITY.
At the end if system found at least one document, the item data will be populated using FM BBP_PROCDOC_GETITEMLIST.