This page is created to help understanding the application logic behind POWL button availability.
This debugging guide can help understanding how system enables the button in POWL and what is the logic behind it. This page can be useful for identifying the root cause of an undesirable behavior of system.
For a detailed description of this functionality, for the relevant customizing and for possible solutions of common issues please refer to the following Wiki page: POWL button availability
The debugging should be started in the feeder class which belongs to the relevant POWL. To identify this please refer to the following Wiki page: How to identify used POWL query. The class looks like this: /SAPSRM/CL_CLL_PWL_* (* - feeder-dependent part, e.g.: A_PO, A_SC, A_CTR). If you have identified the class the debugging can be started in Method HANDLE_ACTION of this class.
This method will be called when an action is being performed. In our case if you select an item, system will determine which buttons should be enabled for the user. The ACTION_ID is POWL_LEAD_SEL and variable C_SELECTED shows how many lines were selected. If only one line was selected, the following code is called:
First system gets all the enabled actions from the customizing into variable MT_ACTIONS, then calls Method ENABLE_BUTTONS, where the application logic can be found.
The main logic is that initially system enables all the actions by default in table CT_ACTION_DEFS and then checks whether these actions should be disabled or not based on the customizing.
For example in case of button Create the following logic is called:
As you can see, if the action can't be found in table LT_ACTION, then system will clear the ENABLED flag of this action from table CT_ACTION_DEFS. In this case the Create button wouldn't be available for the user.
System determines whether the dropdown menus should be enabled for the user or not at the end of Method ENABLE_BUTTONS in Method REBUILD_DROPDOWNS.
In this Method system checks whether the enabled actions have dropdown actions maintained in the customizing. These options are in variable ACT_CHOICES. If the action has these dropdown choices and these choices are in the enabled actions table (CT_ACTION_DEFS), system enables these options for the user.