You are on page 1of 44

SAP ECC 6.

00 April 2007 English

How to… Develop POWER Lists
How-to Guide: SAP Best Practices for New A1 Enablement Kit

SAP AG Dietmar-Hopp-Allee 16 69190 Walldorf Germany

SAP Best Practices

How to Develop POWER Lists

Copyright

© Copyright 2007 SAP AG. All rights reserved. No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP AG. The information contained herein may be changed without prior notice. Some software products marketed by SAP AG and its distributors contain proprietary software components of other software vendors. Microsoft, Windows, Outlook, Excel, and PowerPoint are registered trademarks of Microsoft Corporation. IBM, DB2, DB2 Universal Database, OS/2, Parallel Sysplex, MVS/ESA, AIX, S/390, AS/400, OS/390, OS/400, iSeries, pSeries, xSeries, zSeries, System i, System i5, System p, System p5, System x, System z, System z9, z/OS, AFP, Intelligent Miner, WebSphere, Netfinity, Tivoli, Informix, i5/OS, POWER, POWER5, POWER5+, OpenPower and PowerPC are trademarks or registered trademarks of IBM Corporation. Adobe, the Adobe logo, Acrobat, PostScript, and Reader are either trademarks or registered trademarks of Adobe Systems Incorporated in the United States and/or other countries. Oracle is a registered trademark of Oracle Corporation. UNIX, X/Open, OSF/1, and Motif are registered trademarks of the Open Group. Citrix, ICA, Program Neighborhood, MetaFrame, WinFrame, VideoFrame, and MultiWin are trademarks or registered trademarks of Citrix Systems, Inc. HTML, XML, XHTML, and W3C are trademarks or registered trademarks of W3C®, World Wide Web Consortium, Massachusetts Institute of Technology. Java is a registered trademark of Sun Microsystems, Inc. JavaScript is a registered trademark of Sun Microsystems, Inc., used under license for technology invented and implemented by Netscape. MaxDB is a trademark of MySQL AB, Sweden. SAP, R/3, mySAP, mySAP.com, xApps, xApp, SAP NetWeaver, and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP AG in Germany and in several other countries all over the world. All other product and service names mentioned are the trademarks of their respective companies. Data contained in this document serves information purposes only. National product specifications may vary. These materials are subject to change without notice. These materials are provided by SAP AG and its affiliated companies ("SAP Group") for informational purposes only, without representation or warranty of any kind, and SAP Group shall not be liable for errors or omissions with respect to the materials. The only warranties for SAP Group products and services are those that are set forth in the express warranty statements accompanying such products and services, if any. Nothing herein should be construed as constituting an additional warranty.

© SAP AG

Page 2 of 44

SAP Best Practices

How to Develop POWER Lists

Icons
Icon Meaning Caution Example Note or Tip Recommendation Syntax

Typographic Conventions
Type Style Example text Description Words or characters that appear on the screen. These include field names, screen titles, pushbuttons as well as menu names, paths and options. Cross-references to other documentation. Example text EXAMPLE TEXT Emphasized words or phrases in body text, titles of graphics and tables. Names of elements in the system. These include report names, program names, transaction codes, table names, and individual key words of a programming language, when surrounded by body text, for example, SELECT and INCLUDE. Screen output. This includes file and directory names and their paths, messages, source code, names of variables and parameters as well as names of installation, upgrade and database tools. Keys on the keyboard, for example, function keys (such as F2) or the ENTER key. Exact user entry. These are words or characters that you enter in the system exactly as they appear in the documentation. Variable user entry. Pointed brackets indicate that you replace these words and characters with appropriate entries.

Example text

EXAMPLE TEXT

Example text <Example text>

© SAP AG

Page 3 of 44

SAP Best Practices

How to Develop POWER Lists

Contents
How to Develop POWER Lists.....................................................................................................5 1 2 3 Purpose ...............................................................................................................................5 Prerequisites ........................................................................................................................5 Development of own POWER Lists.......................................................................................5 3.1 3.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 4 Basic Concept of POWER Lists ..................................................................................5 POWER List Design ...................................................................................................6 POWER List Implementation ......................................................................................7 Creating a new POWER List...................................................................................7 Maintainance of the Feeder Class methods ............................................................9 Register a POWER List and make it visible...........................................................11 Create a Query for a POWER List ........................................................................13 Connecting a POWER List to a Role.....................................................................16 POWER List Cache and User defined queries ......................................................18

Description of the Feeder Interface.....................................................................................19 4.1 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 Description of the Feeder Interface IF_POWL_FEEDER...........................................19 Method GET_ACTIONS .......................................................................................19 Method GET_ACTION_CONF ..............................................................................22 Method GET_SEL_CRITERIA ..............................................................................23 Method GET_FIELD_CATALOG ..........................................................................27 Method GET_OBJECT_DEFINITION....................................................................33 Method GET_OBJECTS.......................................................................................34 Method GET_DETAIL_COMP ..............................................................................37 Method HANDLE_ACTION...................................................................................38

© SAP AG

Page 4 of 44

The central idea is that all properties of a POWER List (the whole scope described in HOW_TO_USE) can be specified via one central. forwards the data to a POWER List’s internal cache and refreshes the POWER List on the user’s client on demand. 3 Development of own POWER Lists 3. This way an easy to handle though powerful tool is provided to modify pre-defined POWER Lists resp. develop own ones. see the documentation: Available POWER Lists in SAP A1N. For information about the available POWER Lists and the scope of their functions.1 Basic Concept of POWER Lists The POWER List is basically a framework that can list business objects and allows specific activities (actions) based on these business objects. role management and maintenance of cross client views. The Feeder Class The feeder class communicates with the database selecting specific data. 2 Prerequisites Required Authorizations for development. Moreover the feeder class includes the handling of actions initiated by the user while pressing a button. In the main part.SAP Best Practices How to Develop POWER Lists How to Develop POWER Lists 1 Purpose This guide describes the technical background as well as the concept of POWER Lists. POWER List Framework Feeder Class Backend Database POWER List Cache © SAP AG Page 5 of 44 . and services. standardized class (the so called feeder class). the development of own POWER List is explained.

APPLID POWER List Framework Feeder Class Backend Database POWER List Cache Beneath development of an own feeder the creation of a new POWER List requires the definition and assignment of an APPLID and assignment to appropriate roles as well. From a technical point of view a so called APPLID (application identifier) determines. in most cases. The roles are the access point to all the POWER Lists in the system. please also note the following aspect of the whole concept.SAP Best Practices How to Develop POWER Lists Embedded into a well defined framework the feeder class is the central and most important place while developing or modifying POWER Lists.2 POWER List Design Before starting developing a feeder (and a new POWER Lists). which POWERL List (POWL Application) will be called. Most common questions: Where can I find the data? What are the data types? Which function modules can be used? Do I need to develop own function modules? © SAP AG Page 6 of 44 . it is possible to arrange several different POWER Lists from SAP and/or Partners into one or several roles. Role Dependency As the connection between the user and the POWER Lists is done via the roles. only. POWER Lists are launched as “homepages” within the canvas area of the SAP NetWeaver Business Client while having the navigation panel on the left side. 3. The most important step to highlight is the design phase. For a good design you should at least have a draft available for: The data you want to select. Developing the coding is one task of a sequence you need to do. Developing a POWER Lists doesn’t mean to develop some feeder coding. Therefore the assignment of APPLIDs to a particular role determines which POWER List will be available for the role. Therefore developing an own POWER List in principle means developing an own feeder. While exceptions may apply. another aspect of POWER Lists must be mentioned: the role dependency. Be aware that a good design upfront can not only speed up the process of developing the coding but also to increase the efficiency of the final POWER List and the way the user can work with it. Before we can go into details on the feeder class and its specific methods.

3. this needs to be checked in every case. In all cases. 3.3 POWER List Implementation SAP ships pre-defined POWER Lists with the new version of SAP All-in-One. On the Class Builder: Initial Screen screen. or to slightly modify them. but also with a user which doesn’t hold SAP_ALL or similar authorization. not only with real data.SAP Best Practices How to Develop POWER Lists The selection criteria you want to offer. They can leverage from the SAP Power Lists or they can develop completely new POWER Lists from scratch. because of these customer specific settings and needs to be adjusted. However instead of developing a new class from the scratch we will use the pre-defined interface IF_POWL_FEEDER and modify the contained methods afterwards. a pre-defined POWER List cannot be used as it is. Procedure 1. These lists can be used as templates to define other POWER Lists. Make sure. In some cases. Access the transaction choosing one of the following navigation options: SAP ECC menu Transaction code Tools SE24 ABAP Workbench Class Builder 2. However. you also need to test your POWER List. Most common questions: What are the actions? Button names? Can I use function modules? Will the buttons launch transactions? Detailed component. make the following entries: Field name Object Type User action and values Specify the name of your new feeder using the prefix “Z” or “Y” to ensure your feeder is developed in the customer namespace 3. For sure. also SAP Partners can pre-define POWER Lists for their customers. that you are testing in a real environment. as the business objects in the system for sure depend on the customizing settings of the customer. especially for the pre-defined setting you might add to your feeder. © SAP AG Page 7 of 44 . A customer could also use them directly without modification. Most common questions: Do I need the detailed component? Which data do I need to show up in the detailed view? After developing the coding. Choose Create. Most common questions: Which selection makes sense for the user? Are there performance impacts to be considered? The buttons you want to include.1 Use Creating a new POWER List We will create a new feeder via the Class Builder. 3. SAP recommends to copy the pre-defined POWER Lists into customer namespace (Z* or Y*) to avoid conflicts in later system upgrades.

7. It might be useful to copy an existing feeder class and modify the copied version according to your needs. Example This example shows. Move to tab Interfaces on the Class Builder: Change Class screen Field name Interface User action and values Insert IF_POWL_FEEDER Comment This is the interface provided by SAP that contains all methods for the feeder Choose Enter to save the specified value. Via transactions POWL_TYPER and FPB_MAINTAIN_HIER the APPLID as well as the Name of the corresponding feeder can be found out. Access the transaction choosing one of the following navigation options: SAP ECC menu Transaction code Tools SE24 ABAP Workbench Class Builder © SAP AG Page 8 of 44 . On the Create Object Directory Entry subscreen choose a package for the new development Field name Package User action and values Specify the package name or choose via F4-help Choose Enter in order to acknowledge the package or Local Object in case of a local development. instead of create press Copy from the menue. 6. As basis you should choose a POWER List that matches your requirements the closest. 5. 8. how to copy the existing feeder class for Vendors: 1. Just specify that feeder name in the initial screen of the class builder (SE24).SAP Best Practices How to Develop POWER Lists 4. Press the Save button. In the dialog box Object Type leave the fields Name and the default option Class as they are and press Enter. Result All available methods and attributes of the feeder class are uploaded into the class builder and can now be modified according to your requirements (please see Maintainance of the Feeder Class methods for a description of all feeder class methods). On the Create Class screen provide an appropriate description for your POWER List Field name Description User action and values Appropriate Description for the new POWER List Leave all other fields as they are and choose Save.

Otherwise use transaction SE24 to modify the newly created feeder. to develop a simple feeder are: Define a data container (Method “GET_OBJECT_DEFINITION”) This method is used to define the container (e. From there. If you have just created a new class and are still in the screen Class Builder: Change Class you can proceed with specifying the code for the methods required (4). The mandatory steps to take. Field name Copy to 5.3. In the dialog box Copy provide an appropriate name for the target feeder class. On the screen Class Builder: Change Class choose tab Methods. make the following entries: Field name Object Type 3. which only shows business objects. © SAP AG Page 9 of 44 . Choose Change. Choose Copy Class/Interface (CTRL+F5).g. there are mandatory methods and optional ones. a new window will open up. Access the transaction choosing one of the following navigation options: SAP ECC menu Transaction code Tools SE24 ABAP Workbench Class Builder 2. the method specific coding takes place. 1. On the Class Builder: Initial Screen screen. make the following entries: Field name Object Type User action and values /KYK/CL_MM_POWL_VENDOR_LIST 3. If you enter a method by double-clicking on it. you can then improve your feeder step by step.SAP Best Practices How to Develop POWER Lists 2.2 Maintainance of the Feeder Class methods After creation of a new feeder class (described in Creating a new POWER List) all available methods of the class are available and can be specified. Not all methods provided by the POWER List interface need to be used from the start. Please see the SAP NetWeaver-Help on ABAP Workbench: Tools Class Builder for a general description how to make developments with the class builder. specify field types) where the selected data gets stored. 3. You could activate the copied class by pressing Activate (Ctrl+F3) and proceed with Register a POWER List and make it visible. In this window. You can start developing a simple feeder. Press Continue (Enter). User action and values e.g. Caching and other mechanisms of the POWER Lists User action and values Specify the name of the feeder you want to modify. Z_MM_POWL_VENDOR_LIST At this point you have created a 1:1-copy of feeder the class for Vendors. 4. On the Class Builder: Initial Screen screen. 4.

(see details and example for Method GET_SEL_CRITERIA). Second you need to define the actions which should be initiated if the user presses such a button. This could be helpful if you have large data sets where a horizontal scrolling is too time consuming or not quite usable. (see details and example for Method GET_DETAIL_COMP) © SAP AG Page 10 of 44 . you can register the POWER List as described in Registering a POWER List and make it visible and enhance it step by step. index and more (GET ACTIONS). So there is no need to explicitly take care on things like caching data and so on. With maintaining only these two methods with coding. However. Enable the detail component feature (Method “GET_DETAIL_COMP”) This method can be used in case you want to show a detailed view of a specific business object below the POWER List. Define the field catalog (Method ‘GET_FIELD_CATALOG”) (see details and example for Method GET_FIELD_CATALOG) Define buttons and their actions (Methods “GET_ACTIONS” & “HANDLE_ACTION”) By maintaining the two methods GET_ACTIONS and HANDLE_ACTION. a feeder with minimal functionality is available. you have a huge variety of options to improve the POWER Lists significantly. the resulting POWER List will be more or less unusable. The action can simply be launching a transaction and forwarding the business object parameters to it. In this case. Think of a business object you can delete via a button in the POWER list. Since there is no default query defined yet. A confirmation dialog box could ask whether the user is sure to delete this object (see details and example for Method GET_ACTION_CONF). (see details and example for Method GET_ACTIONS and HANDLE_ACTION) Define a confirmation dialog box (Method “GET_ACTION_CONF”) Using this method allows you to throw a dialog box with some information like a confirmation. Or it could be used to simplify a whole process by using the buttons to call several function modules in a sequence automating the process in the background based on the selected item(s) in the POWER List.g. select * from xyz) or a complex selection where you use existing SAP function modules or your own coding (see details and example for Method GET_OBJECTS ). The following additional methods are part of the standard feeder interface: Define selection criteria (Method “GET_SEL_CRITERIA”) With this method you can define. which selection criteria is visible and selectable by the user. You could offer the selection criteria “billing date” so that the user can later retrieve the data directly the way he searches for it. the detailed component offers a good alternative as it provides a detailed view area below the list. First you need to define the buttons with name. if you want to test the feeder at this stage. (see details and example for Method GET_OBJECT_DEFINITION ) Retrieve data from the backend system (Method “GET_OBJECTS”) Here you need to define the data retrieval itself. where you can show all the different fields without the need of horizontal scrolling. This can be either a very simple database select (e. Example: You have a POWER List showing billing documents.SAP Best Practices How to Develop POWER Lists technology will be handled automatically in the background based on these settings.

Access the transaction choosing the following navigation option: Transaction code FPB_MAINTAIN_HIER 2. 7. Creating an APPLID for the POWER List Use First of all. it is important to notice. 5. Specifying the POWER List Type As next step. Moreover you have to ensure that all standard feeder methods are activated before the POWER List can be used. Choose Save. choose Display <-> Change (Ctrl + F1). even if they are empty. define a POWER List type and introduce it to the roles. that the types are exactly the feeders we can develop. you need to specify the so called APPLID (Application ID). User action and values Specify an APPLID for the POWER Application Specify an appropriate description. choose OK. At this point it becomes clear. 3. (Feeder Type must be activated) Procedure © SAP AG Page 11 of 44 . With other words. In the grid Personalization Hierarchy. In the dialog box Caution Table is cross client. The APPLID is more or less just a name to specify. that none of the standard feeder methods must be deleted. Specify a transport order in the upcoming dialog. you need to specify the POWER List type. This ID will later be used in the role to specify the target (your feeder) which will then be shown as POWER List homepage in the SAP Net Weaver Business Client. Procedure 1. 4. make the following entry: Field name Personalization Hierarchy Text 6. We have seen that a POWER List provides 1 to n types of object types a user can select from.3. it needs to be made visible to the roles. On the Display View “Personalization Hierarchy”: Overview screen. 3. we need to define our feeder as possible POWER List type.3 Register a POWER List and make it visible After a feeder is developed. Basically. From the menu bar choose New Entries. Otherwise a shortdump is likely to occur during execution. However. this means we need to register the feeder under a specific APPLID.SAP Best Practices How to Develop POWER Lists Not all of the methods described above need to be maintained to get a working POWER List.

Access the transaction choosing the following navigation option: Transaction code POWL_TYPER 2.SAP Best Practices How to Develop POWER Lists 1. we connect the APPLID with the type and make it visible to the role. Sync. On the View: Type Definition screen. Specify a transport order in the upcoming dialog. Procedure 1. 6. choose OK. Access the transaction choosing the following navigation option: Transaction code POWL_TYPE 2. make the following entry: Field name Application Role Type 4. If the checkbox is set. Role assignment for the POWER List Type Finally. now. the system messages will be shown instead of the generic one) 5. On the New Entries: Details of Added Entries screen. From the menu bar choose New Entries 4. no message wrapping takes place on refresh. User action and values Choose APPLID defined in FPB_MAINTAIN_HIER via F4-help Optional field. Choose Save. Choose Save. Wrapping This checkbox can be set to enforce synchronous query refreshes. (In case of errors during refresh. In the dialog box Caution Table is cross client. From the menu bar choose New Entries. make the following entry Field name Type Description Feeder Class User action and values Specify an appropriate name as Feeder Type Specify an appropriate description Choose the feeder class via F4-help A new feeder won’t be available in the dialog box until it is activated. Specify a transport order in the upcoming dialog. 3. that I can select my APPLID in a role item. specify only if a role dependent mapping is required Choose the POWER List Type defined in POWL_TYPE via F4-help © SAP AG Page 12 of 44 . 5. 3. In detail this means. Call No Msg.

(GET_SELCRITERIA specifies the parameters available). Procedure 1. 6. Define your settings. In case the flag is set. Call User action and values Provide an appropriate Identifier for the Query Specify a descrption for the Query Choose the POWER List Type via F4-help This checkbox can be set to enforce synchronous query refreshes. it will be empty. On the Maintain Table Views: Initial screen. you can set the query. Finally. © SAP AG Page 13 of 44 . Basically the POWER List should work at this point. the difference here is. Specify a transport order in the upcoming dialog boxes.3. Test a POWER List via SAP Menu describes an easy way to test the newly created POWER List using the Favorites of SAP Menu. 3. however. press the Check button followed by the Accept button.SAP Best Practices How to Develop POWER Lists It might be useful to check the mappings that have been made so far. From the menu bar choose New Entries. that this setting is available system wide and is therefore available to every user. Now you can maintain the query parameters and the query settings Button “Query Parameters” Here you can set the parameters the same way as you would do it as a user creating a new query. Access the transaction choosing the following navigation option: Transaction code POWL_QUERY 2. since there is no default query defined yet. make the following entry: Field name Query ID Description Type Sync. Here you can define a query (QUERYID) and connect it to a POWER Lists type. However. Choose Save. 3. 5. the option applies to all queries connected to the type and then overrides the setting for the query itself Default ALV Layout view (optional) Layout 4. Two additional buttons “Query Parameters” and “Query Settings” will be available in the menu bar now.4 Create a Query for a POWER List Define the Query Use Default queries are defined using the transaction “POWL_QUERY”. Use the Back button (F3) from the menu to leave the screen and re-enter it by double clicking on the newly created Query ID.

Procedure 1. 5.1 Test a POWER List via SAP Menu Before a newly created POWER List is connected to the roles and the UI of the NetWeaver Business Client. Choose Save and specify a transport order in the upcoming dialogs boxes. © SAP AG Page 14 of 44 . the query needs to be introduced to the roles. Specify a transport order in the upcoming dialog. the user has to activate it in the NW Business Client during List definition 3. Your POWER List should now come up with a predefined query. Therefore the APPLID and the QUERYID get mapped to each other. you can specify several attributes mapped to each single selection criteria.SAP Best Practices How to Develop POWER Lists Button Query Settings In the upcoming window. On the New Entries: Details of Added Entries screen. User action and values Choose APPLID defined in FPB_MAINTAIN_HIER via F4-help Optional field. make the following entry: Field name Application Role Query ID Category Category sequence no Query sequence no Tab sequence no Activate 4.4. there is an easy way to test the POWER List via the Favorites folder of the SAP Menu of the back-end system. Choose Save. 3. if unset. 7.3. Access the transaction choosing the following navigation option: Transaction code POWL_QUERYR 2. From the menu bar choose New Entries. Role assignment for the Query Type As with the type. specify only if a role dependent mapping is required Choose the Query ID via F4-help Category (category assignment for Link Matrix-mode) Sequence number for POWL query category Sequence no for a query Sequence number for a query tabstrip Flag: query is activated.

Value 5. Normally the activation should have been done during system setup for using the Netweaver Busiess Client. On the Maintain Service screen leave the default values as they are and press Execute (F8). Using the SAP Menu © SAP AG Page 15 of 44 . Field name Web Dynpro Applicat. 2. On the Web Dynpro Application subcreen. 3. In the Virtual Hosts/ Services tree control locate the node sap/bc/webdynpro. 4. Access the transaction choosing the following navigation option: Transaction code SICF 2. For a complete functionality test however it is recommended to make the POWER List available in the Business Client and test it with different users and roles. Procedure 1.SAP Best Practices How to Develop POWER Lists Prequisites Ensure that the Webdnpro service is activated. Especially the correctness of type mapping and the standard query can be checked in an easy way. Right click on the node and choose Activate Service from the context menu. make the following entries. This way the basic functionalities of a new development can be tested independent from the NetWeaver Business Client. Choose OK. Specify the APPLID defined for the POWER List to test. Navigate to the initial screen of the SAP Easy Access Menu. Do a right-click on Favorites and choose Add other objects from the context menu. 3. Choose Web Dynpro Application from the upcoming dialog box list. Description Protocol Start Mode Parameter User action and values Insert POWL Specify a description for the Favorite Leave checkbox HTTPS unchecked Leave option Browser APPLID Be sure to select the parameter via F4-help. Perform the following steps in case the service is inactive: 1. Result By double-click on the created Favorite the specified POWER List will be displayed in a separate Browser window.

10. 6.SAP Best Practices How to Develop POWER Lists .3. since the target transactions must be specifed for the specific roles.5 Connecting a POWER List to a Role Prequisites Ensure that the Webdnpro service is activated. Field name Web Dynpro Applicat. 5. OBN-navigation cannot be tested anyway. Choose Change. Choose OK. Normally the activation should have been done during system setup for using the Netweaver Busiess Client. 3. On the screen Change Role navigate to tab Menu. Value 9. Coose entry Web Dynpro Application on the upcoming subscreen Add additional objects. Press Save. Description Protocol Start Mode Parameter User action and values Insert POWL Specify a description for the Favorite Leave checkbox HTTPS unchecked Leave option Browser APPLID Be sure to select the parameter via F4-help. 4. 7. Specify the APPLID defined for the POWER List to be assigned User action and values Specify the role to be maintained © SAP AG Page 16 of 44 . Choose Others. Access the transaction choosing one of the following navigation options: SAP ECC menu Transaction code Tools Administration Administration Roles PFCG User Maintenance Role 2. Navigate to the specific folder within the role menu. 8. Please use transaction SICF in case the service is inactive (as described in Test a POWER List via SAP Menu). Procedure 1. make the following entries. On the Role Maintenance screen make the following entry: Field name Role 3. On the Web Dynpro Application subscreen.

On the upcomming popup screen Additional Details make the following entries: Field name Description Invisible User action and values Appropriate description Check Invisible and leave all other checkboxes unckecked. On the Role Maintenance screen make the following entry: Field name Role 3. it is necessary to add it on the Menu tab (button Transactions) of the Change Role screen.doc. Please remember to maintain appropriate Authorizations for the new entry as it is described in the guide K53_How_to_Guide_EN_DE. In case the POWER List feeder uses OBN-navigation (method HANDLE_ACTION) and is supposed to call a target transaction. 10. Access the transaction choosing one of the following navigation options: SAP ECC menu Transaction code Tools Administration Administration Roles PFCG User Maintenance Role 2. 6. 9. In the upcomming popup Select Method make the following entries: © SAP AG Page 17 of 44 . User action and values Specify the role to be maintained 7. On the upcomming popup screen Assign Transactions make the following entry: Field name Transaction User action and values Target transaction to be called 8. 11. Navigate to the specific folder within the role menu. Press the Insert Method button 12. Press button Transaction . Procedure 1. Here it it also possible to assign the Business Objectsmethod to the specific transaction and to map the Business Object-parameters.SAP Best Practices How to Develop POWER Lists Result The POWER List is available as new node in the role menu and can be tested via Execute from the context menu (right click). 4. On the screen Change Role navigate to tab Menu. Choose Change. 5. Right click on the newly created entry and choose Additional Details from the Context Menu. in group Business Object. Press button Assign transactions.

Select the Business Object-method to be used for OBN-navigation. 3.g. set flag ‘Discard old cached results © SAP AG Page 18 of 44 .3. Sometimes it might be desired to delete all user defined queries. Repeat this action for each parameter to be mapped. Acknowledege all open popups with Enter. 14. POWL_WLOAD: refresh POWL cache when changing POWERLIST logic during a session POWL_D01: delete all queries per applid and user POWL_WLOAD: define refresh interval for cached queries. 17. Prees the Save button. That is the object specified in method HANDLE_ACTION of the feeder class. 16. Press Enter. 13. User action and values Screen field of the transaction (can be found out e. which can be executed via transaction SE38.doc. That is the method specified in method HANDLE_ACTION of the feeder class Please see Example for method HANDLE_ACTION for details. During the development phase of new POWER List it might be useful to refresh the cache.via F1-help in the transaction screen). Choose the parameter to be mapped to screen field via F4-help. In the upcomming popup Parameter Mapping make the following entries: Press the Insert Parameter Field name Transaction Value button and specify the parameter mapping. especially when the POWER List logic or the underlying query has been changed. For this purpose the following reports are provided.6 POWER List Cache and User defined queries As described in the document K51_How_to_Use_Guide_EN_DE. Type Method User action and values Select the Object Type to be used for OBN-navigation. the queries of a POWER List selection are stored temporarily in a special cache. 15.SAP Best Practices How to Develop POWER Lists Field name Obj.

you can leave this flag unset. Parameters Importing I_USERNAME I_APPLID I_TYPE I_SELCRIT_PARA I_LANGU the user ID the current portal user is mapped to Application ID identifying the current POWL Iview the POWL type ID as registered current selection criteria assignments Language Key Exporting E_ACTIONS_CHANGED In case none of the action definitions supplied to the Feeder via C_ACTION_DEFS had to be changed. Field name ACTIONID CARDINALITY Description Appropriate identifier for the action which can be referenced to in Method HANDLE_ACTION Action dependency from selection cardinality S – At least one object has to be selected. I – Ignore selection (i.SAP Best Practices How to Develop POWER Lists 4 Description of the Feeder Interface 4. you have a huge variety of options to improve the POWER Lists significantly. The following table describes the structure and meaning of such a record. Or it could be used to simplify a whole process by using the buttons to call several function modules in a sequence automating the process in the background based on the selected item(s) in the POWER List.1.1 Method GET_ACTIONS Purpose Define buttons and their actions (Methods “GET_ACTIONS” & “HANDLE_ACTION”) By maintaining the two methods GET_ACTIONS and HANDLE_ACTION. First you need to define the buttons with name. action is always active) © SAP AG Page 19 of 44 . For each action to be defined a record has to be added to table C_ACTION_DEFS. Second you need to define the actions which should be initiated if the user presses such a button.e. you have to set it to 'X' (set if uncertain) Changing C_ACTION_DEFS Supplies the current explicit action definitions for the query to the Feeder.1 Description of the Feeder Interface IF_POWL_FEEDER 4. index and more (GET ACTIONS). Otherwise. The action can simply be launching a transaction and forwarding the business object parameters to it.

DATA: lstru_action_def TYPE powl_actdescr_sty. Three action buttons are added to the toolbar. FIELD-SYMBOLS: <action_def> TYPE powl_actdescr_sty. lstru_action_def-add_separator = 'X'. l_bwconnected TYPE xflag. METHOD IF_POWL_FEEDER~GET_ACTIONS. related info records lstru_action_def-actionid = 'INFOREC'.SAP Best Practices How to Develop POWER Lists PLACEMENT ENABLED PLACEMENTINDX IMAGESOURCE TEXT TOOLTIP ADD_SEPARATOR ACT_CHOICES Placement B – Toolbar . * if first call add action definitions IF c_action_defs IS INITIAL. (C – Context menu [not supported yet]) Flag: action enabled/ disabled Index of placement Path to an action icon Action description text (e. lstru_action_def-text = text-001. lstru_action_def-placement = c_feeder_action_toolbar. button text) Action tooltip Flag to add a seperator after the action item Action Choice For labels or help texts it is recommended to define text elements (language dependency) instead of using static literals. DATA: lref_my_badi TYPE REF TO badi_feeder_vendor. ltab_action_def TYPE powl_actdescr_tty.g. INSERT lstru_action_def INTO TABLE ltab_action_def. * display partner functions lstru_action_def-actionid = 'DISPLAY'. lstru_action_def-enabled = c_true. Example The following example shows the GET_ACTIONS method of standard feeder class /KYK/CL_POWL_VENDOR. lstru_action_def-placementindx = 1. lstru_action_def-cardinality = c_feeder_action_sel_req. * © SAP AG Page 20 of 44 .

ENDMETHOD. "#EC NOTEXT constants C_FEEDER_VIEWTYPE_BASIC type XCHAR value '1'. "#EC NOTEXT constants C_FEEDER_PARTYPE_INPUT type XCHAR value 'I'. INSERT lstru_action_def INTO TABLE ltab_action_def. "#EC NOTEXT constants C_OBN_OP_DSPSRCOFSPLY type STRING value 'dspsrcofsply'. "#EC NOTEXT constants C_FEEDER_VIEWTYPE_PURCH type XCHAR value '2'. data MT_CURRENT_SELCRIT_VALUES type RSPARAMS_TT . lstru_action_def-cardinality = c_feeder_action_sel_req. lstru_action_def-placement = c_feeder_action_toolbar. c_action_defs = ltab_action_def. lstru_action_def-enabled = c_true. "#EC NOTEXT constants C_YES type XCHAR value 'Y'. e_actions_changed = c_true. data M_NEW_VIEWTYPE type XCHAR . lstru_action_def-placement = c_feeder_action_toolbar. The constants used are defined in the private section of the class: private section. lstru_action_def-placementindx = 3. data MT_FIELDCATALOG type POWL_FIELDCAT_TTY . lstru_action_def-placementindx = 2. "#EC NOTEXT constants C_SOS_USE_VEN type XCHAR value 'V'. "#EC NOTEXT constants C_FEEDER_SELTYPE_INTER type XCHAR value 'I'. data M_AUTH_GRANTED type XCHAR . INSERT lstru_action_def INTO TABLE ltab_action_def. "#EC NOTEXT constants C_FEEDER_PARTYPE_CHECKBOX type XCHAR value 'C'. "#EC NOTEXT constants C_FEEDER_VIEWTYPE_TOTAL type XCHAR value '0'. "#EC NOTEXT constants C_FEEDER_SELCRIT_PARAM type XCHAR value 'P'. data M_AUTH_CHECKED type XCHAR . data M_CURRENT_VIEWTYPE type XCHAR . lstru_action_def-text = text-009. * related agreements lstru_action_def-actionid = 'AGREEMENTS'. "#EC NOTEXT constants C_FEEDER_SELTYPE_ALL type XCHAR value 'A'. "#EC NOTEXT constants C_OBN_OP_PARTNER type STRING value 'dsppartfct'. "#EC NOTEXT constants C_OBN_SYS_ALIAS_COMMON type STRING value 'SAP_ERP_Common'. lstru_action_def-enabled = c_true. "#EC NOTEXT constants C_SOS_USE_MAT type XCHAR value 'M'. "#EC NOTEXT constants C_FEEDER_VIEWTYPE_FIN type XCHAR value '3'. "#EC NOTEXT constants C_FALSE type XFLAG value ''. "#EC NOTEXT constants C_FEEDER_ACTION_SEL_REQ type XCHAR value 'S'. "#EC NOTEXT constants C_FEEDER_SELTYPE_MULT type XCHAR value 'M'. lstru_action_def-text = text-002. "#EC NOTEXT constants C_OBN_VENDOR type STRING value 'supplier'. constants C_TRUE type XFLAG value 'X'.SAP Best Practices How to Develop POWER Lists lstru_action_def-cardinality = c_feeder_action_sel_req. data MT_FIELDINFOS type DDFIELDS . "#EC NOTEXT constants C_FEEDER_PARTYPE_DROP type XCHAR value 'D'. "#EC NOTEXT © SAP AG Page 21 of 44 . ENDIF. "#EC NOTEXT constants C_FEEDER_SELCRIT_SELECT type XCHAR value 'S'. lstru_action_def-add_separator = ''. "#EC NOTEXT constants C_FEEDER_ACTION_TOOLBAR type XCHAR value 'B'.

data: l_test LIKE LINE OF E_CONF_MESSAGE.SAP Best Practices How to Develop POWER Lists constants C_BW_INFOBJ_GRP_VENDOR type STRING value '0GN_VENDOR__0CI_GRP_PAR'.e.2 Method GET_ACTION_CONF Purpose Define a confirmation pop-up (Method “GET_ACTION_CONF”) Using this method allows you to throw a pop-up with some information like a confirmation. Think of a business object you can delete via a button in the POWER list. "#EC NOTEXT constants C_BW_INFOBJ_GEN_VENDOR type STRING value '0GN_VENDOR'. HANDLE_ACTION for details) result table line index for cell-based actions Language Key Exporting E_CONF_MESSAGE the confirmation message to be displayed before actual execution of the action identified by I_ACTIONID I_ACTION_INDEX I_LANGU Example The following example exemplarily shows a simple message to be shown before object deletion. CASE i_actionid.f. A confirmation pop-up could ask whether the user is sure to delete this object. method IF_POWL_FEEDER~GET_ACTION_CONF. © SAP AG Page 22 of 44 . marked) by the user only relevant for editable query results table-. l_test = ‘Really delete selected lines?’. "#EC NOTEXT 4. The action must be defined in GET_ACTIONS. The confirmation choice will be available in method HANDLE_ACTION via import parameter I_ACTION_CONF. Parameters Importing I_USERNAME I_APPLID I_TYPE I_ACTIONID I_RESULT_TAB I_SELECTED I_CHANGED the user ID the current portal user is mapped to Application ID identifying the current POWL Iview the POWL type ID as registered Action identifier (defined in method GET_ACTIONS) the current query results (adhering to GET_OBJECT_DEFINITION) the table line indices of the query results currently selected (i. WHEN ‘DELETE’.change information on those query results changed by the user since most recent enabling of POWL "dirty" state (c.1. "#EC NOTEXT constants C_OBN_OP_LAUNCHBW type STRING value 'launchbw'.

supplies the current selection criteria default values to the Feeder. Supplies the current selection criteria definitions to the Feeder. How to Develop POWER Lists 4. you have to set it to 'X'. Note that selection criteria default values are cached on database upon each query refresh. Otherwise. Note that selection criteria definitions are cached on database upon query refresh default values for selection criteria. if the criterion allows single or multi value range. E_DEFAULT_VAL_CHANGED C_DEFAULT_VALUES For each selection criterion a record has to be added to table C_SELCRIT_DEFS in order to specify the UI-properties of the respective field. You could offer the selection criteria “billing date” so that the user can later retrieve the data directly the way he searches for it. you can leave this flag unset. Return. (set if uncertain) if none of the selection criteria default values supplied to the Feeder via C_DEFAULT_VALUES had to be changed. Example: You have a POWER List showing billing documents. Parameters Importing I_USERNAME I_APPLID I_TYPE I_LANGU the user ID the current portal user is mapped to Application ID identifying the current POWL Iview the POWL type ID as registered Language Key Exporting E_SELCRIT_DEFS_CHANGED if none of the selection criteria definitions supplied to the Feeder via C_SELCRIT_DEFS had to be changed.SAP Best Practices Insert l_test into table e_conf_message. you can leave this flag unset. Field name SELNAME KIND Description ID of the selection criterion Specifies. Allowd values are P and S.3 Method GET_SEL_CRITERIA Purpose With this method you can define which selection criteria are visible and selectable by the user. P stands for Parameter and defines a single value input. The following table describes the structure and meaning of such a record. S stands for Select option and provides a multi value input resp. (set if uncertain) Changing C_SELCRIT_DEFS Selection criteria meta description.1. intervals © SAP AG Page 23 of 44 . Otherwise. WHEN OTHERS. you have to set it to 'X'.

Can be ommited if standard is used. OVS handler class for own F4-help (must implement interface IF_POWL_OVS). Otherwise the settings specified in the coding cannot be overridden. If no header is specified the criterion will be grouped under the same header as the preceding criterion. Flag to set the field readonly in the UI: X – flag is set.SAP Best Practices How to Develop POWER Lists PARAM_TYPE Display type for simple parameters I – Input field. Can be ommited in case the default help is to be used. empty means unset. T textline Criteria type for select options (in case KIND = S) A . Datatype Name Name of the DDIC reference Name of the specific field in the reference table. Name of the DDIC search help. I Select-option without multiselect. empty means unset. M . empty means unset. The underlying type POWL_NAMEVALUE_TTY requires data in form of Key/Value – pairs. This flag determines if the criterion will be available as Quick Search criterion: X – flag is set.Select-option with interval and multi-selection.Select-option without interval This flag can be set to allow the change of properties MANDATORY. Output length Field label of the criterion Tooltip for the criterion Additional headline for the criterion. By specifying this parameter a validation check for the input can be defined. © SAP AG Page 24 of 44 . D – dropdown list. READ_ONLY and HIDDEN. manually (Transaction POWL_QUERY). Flag to set the field hidden in the UI: X – flag is set. empty means unset. Flag to set the field mandatory in the UI: X – flag is set. Decimals for selcrits SELOPT_TYPE ALLOW_ADMIN_CHANGE MANDATORY READ_ONLY HIDDEN QUICKSEARCH_CRIT DATATYPE REF_TABLE REF_FIELD OUTPUTLEN CRITTEXT TOOLTIP HEADER OVS_HANDLER_NAME VALID_VALUES DDIC_SHLP DECIMALS The example below shows exemplarily how the table C_SELCRIT_DEFS is to be used in this method. C – Checkbox.

"M & I multi-selection " select option " input field " Select-option with interval and © SAP AG Page 25 of 44 . Field name SELNAME KIND Description ID of the selection criterion Specifies. NE – not equal LOW value HIGH value SIGN OPTION LOW HIGH Example The following example shows the GET_SEL_CRITERIA method of standard feeder class /KYK/CL_MM_POWL_VENDOR_LIST. ls_selcrit-param_type = 'I'. Allowd values are P and S. a relation between the value and the corresponding criterion is established via field SELNAME. S stands for Select option and provides a multi value input resp. IF mt_selcriteria IS INITIAL. if the criterion allows single or multi value range. it is recommended to define text elements (language dependency) instead of using static literals. intervals Sign before a criterion I – include values. The two selection criteria ‘Vendor’ and ‘Purchasing Organization’ are defined as Input fields (param_type = I) without multiselect (selopt_type = I). E – exclude values Selection option EQ – equal. TYPE rsparams. In this method it is also possible to define default values for the selection criteria (or for a subset of them). P stands for Parameter and defines a single value input. TOOLTIP etc. LTless. ls_selcrit-kind = 'S'. * LFA1-LIFNR CLEAR ls_selcrit. LE – less or equal. The default values have to be added to table C_DEFAULT_VALUES.SAP Best Practices How to Develop POWER Lists For labels or help texts like CRITTEXT. ls_selcrit-selopt_type = 'I'. Criterion S_LIFNR (Vendor) uses reference field LIFNR (Account Number) of table LFA1 (Vendor Master). criterion S_EKORG (Purchasing Organization) uses reference field EKORG (Purchasing Organization) of table T024E (Purchasing Organizations) METHOD if_powl_feeder~get_sel_criteria. GE – greater or equal. * define selection criteria available for this feeder * in this case corresponding to report ERPSLS_CUSTOMERS * fill private object attribut MT_SELCRITERIA & MT_CRITERIA_DEFAULT DATA: ls_selcrit ls_criteria_default TYPE powl_selcrit_sty. ls_selcrit-selname = 'S_LIFNR'. GT – greater .

mt_criteria_default. ls_selcrit-allow_admin_change = 'X'. APPEND ls_selcrit TO mt_selcriteria. 'X'. INCLUDE TYPE /kyk/v_lfa1m1. LOEVM TYPE LOEVM_B. © SAP AG Page 26 of 44 . CLEAR c_default_values. " select option ls_selcrit-param_type = 'I'. " input field ls_selcrit-selopt_type = 'I'. Parameters mt_selcriteria and mt_criteria_default are defined in the private section of the class: private section. ls_selcrit-selname = 'S_EKORG'. BUKRS TYPE BUKRS.SAP Best Practices ls_selcrit-quicksearch_crit = 'X'. types: BEGIN OF ty_ls_seltab. types: ty_lt_vendor TYPE STANDARD TABLE OF ty_ls_vendor . ls_selcrit-ref_field = 'EKORG'. c_selcrit_defs = mt_selcriteria. "A. sign TYPE char1. M & I " Select-option with interval and multi-selection ls_selcrit-quicksearch_crit = 'X'. * * * How to Develop POWER Lists ----------------------------------RF02K-EKORG ----------------------------------CLEAR ls_selcrit. e_selcrit_defs_changed = 'X'. ZTERM TYPE DZTERM. option TYPE char2. SPERR TYPE SPERB_B. ENDMETHOD. ls_selcrit-ddic_shlp = 'H_T024E'. ls_selcrit-datatype = 'LIFNR'. ENDIF. mt_selcriteria. ls_selcrit-ref_field = 'LIFNR'. ls_selcrit-ddic_shlp = 'KRED_C'. APPEND ls_selcrit TO mt_selcriteria. ls_selcrit-ref_table = 'T024E'. = = = = 'X'. types: BEGIN OF ty_ls_vendor. TYPES END OF ty_ls_vendor . ls_selcrit-kind = 'S'. c_default_values = mt_criteria_default. ls_selcrit-allow_admin_change = 'X'. ls_selcrit-ref_table = 'LFA1'. e_selcrit_defs_changed e_default_val_changed c_selcrit_defs c_default_values ELSE.

"#EC NOTEXT constants GC_ACTION_EXTEND type POWL_ACTIONID_TY value 'EXT'. Each entry in the field catalog is a reference to one column of the actual (internal) query results table as delivered by GET_OBJECTS and defines the rendering of this column. data MT_SELCRITERIA type POWL_SELCRIT_TTY . data MT_RESULT type TY_LT_VENDOR . "#EC NOTEXT constants GC_ACTION_EDIT type POWL_ACTIONID_TY value 'AEN'. "#EC NOTEXT constants GC_ACTION_CREATE_REF type POWL_ACTIONID_TY value 'REF'. The set of available columns is defined by GET_OBJECT_DEFINITION.1. "#EC NOTEXT constants GC_ACTION_DELETE type POWL_ACTIONID_TY value 'DEL'. END OF ty_ls_seltab .SAP Best Practices low TYPE char40. © SAP AG Page 27 of 44 . How to Develop POWER Lists constants GC_ACTION_DISPLAY type POWL_ACTIONID_TY value 'ANZ'. 4.4 Method GET_FIELD_CATALOG Purpose This method describes the field catalog to be used for query results table and the UI properties of the particular fields. data MT_FIELDCAT type POWL_FIELDCAT_TTY . high TYPE char40. "#EC NOTEXT data MT_ACTIONS type POWL_ACTDESCR_TTY . Parameters Importing I_USERNAME I_APPLID I_TYPE I_LANGU I_SELCRIT_VALUES the user ID the current portal user is mapped to Application ID identifying the current POWL Iview the POWL type ID as registered Language Key the selection criteria values of the current query Exporting E_FIELDCAT_CHANGED E_VISIBLE_COLS_COUNT E_VISIBLE_ROWS_COUNT Flag: catalog in C_FIELDCAT changed (set if uncertain) number of concurrently visible table columns number of concurrently visible table rows Changing C_FIELDCAT supplies the current field catalog to the Feeder. data MT_CRITERIA_DEFAULT type RSPARAMS_TT . types: ty_lt_seltab TYPE STANDARD TABLE OF ty_ls_seltab . "#EC NOTEXT constants GC_ACTION_CREATE type POWL_ACTIONID_TY value 'ANL'. Note that each internal results column not referenced by a field catalog entry will be rendered as text view per default.

Note that the field catalog is cached on database upon each queryrefresh. For several of the properties shown below.dropdown by key.input field.link to url. R – Right The fixed columns will always be displayed in the ALV (even if you reduce the number of displayed columns in the layout settings. the column IDs in the field catalog and the action IDs receivable by HANDLE_ACTION have the same domain). this will trigger a call of HANDLE_ACTION. The ALV builds a block with the fixed and one with the unfixed columns (the fixed columns will always be shown as first in the table).SAP Best Practices How to Develop POWER Lists There are passive cell renderers (as text views. this restricts only the unfixed columns).progress indicator Output justification L. Such actions are defined as "implicit actions". you have to set it to 'X'. The following table describes the properties that can be set via C_FIELDCAT.link to action. CK – checkbox. supplying the column ID as action ID. IM – image.g. Static Text Outtab column reference determining text Flag to set the column editable Outtab column reference determining cell edittability Text wrapping is enabled outtab column reference determining textual wrapping Source for icon display H_ALIGN FIXED TEXT TEXT_REF EDITABLE EDITABLE_REF WRAPPING WRAPPING_REF ICON_SRC © SAP AG Page 28 of 44 . (Therefore. exporting E_FIELDCAT_CHANGED: if none of the field catalog entries supplied to the Feeder via C_FIELDCAT had to be changed. there are two different ways to specify their behavior: either a static value is provided.Left. or a reference to a different column (normally a technical column) is specified. TEXT as static text and TEXT_REF as reference to different column). IN . Parameter C_FIELDCAT determines the cell renderer for each outtab column. DK . Otherwise. in the latter case the behavior of the specific cell is determined by the cellvalue of the coressponding reference column (e. Field name COLID COLPOS WIDTH HEADER HEADER_BY_DDIC DISPLAY_TYPE Description Unique reference to the column (defined in method GET_OBJECT_DEFINITION) Postion of the column within the output grid Output length of the field Column header text Use header text from DDIC Display style for the column TV – textview. If the user clicks on a table cell with active cell renderer. C – Center. PI . LA . input fields or checkboxes) and active ones (button and link to action). BT – button. you can leave this flag unset. LU . which applies for the whole column.

Q – Quantity outtab column reference for currency/quantity Outtab column reference determining sort order index outtab column reference containing filter value OVS handler class for own F4-help (must implement interface IF_POWL_OVS). The underlying type POWL_NAMEVALUE_TTY requires data in form of Key/Value – pairs Name of the DDIC search help. Can be ommited in case the default help is to be used Percentage of progress indicator outtab column reference determining progress percentage Semantic column color 0 to 19 outtab column reference for cell color Flag to set cell value to null outtab column reference for setting cell value to null ENABLED ENABLED_REF TOOLTIP TOOLTIP_REF ALLOW_FILTER ALLOW_SORT CQ CQ_REF SORT_REF FILTER_REF OVS_HANDLER_NAME VALID_VALUES DDIC_SHLP PROGR_PERCENT PROGR_PERCENT_REF COLOR COLOR_REF SET_NULL SET_NULL_REF Example © SAP AG Page 29 of 44 .SAP Best Practices How to Develop POWER Lists ICON_SRC_REF ICON_FIRST ICON_FIRST_REF CBOX_CHECK CBOX_CHECK_REF COL_VISIBLE TECHNICAL_COL outtab column reference determining icon source Icon positioning outtab column reference for icon positioning Checkbox state outtab column reference determining checkbox state Outtab column is visible Flag to specify the column as a technical column. Can be ommited if standard is used. By specifying this parameter a validation check for the input can be defined. The column is invisible but in contrast to a ‘hidden’ column it is not available via user settings. Flag to enable the column outtab column reference determining enabled status Tooltip Text outtab column reference determining tooltip Outtab column can be used as filter Sort is allowed for the outtab column Type of CQ_REF field C – currency.

add_colpos. during runtime it will be available in the Setting-dialog of the POWER List within the UI. ls_fieldcat-width = 5. DEFINE add_colpos. * 1. * 1. METHOD if_powl_feeder~get_field_catalog. ls_fieldcat-colid = 'LIFNR'.. ls_fieldcat-header_by_ddic = 'X'. ls_fieldcat-editable = ' '.. ls_fieldcat-colid = 'MANDT'. add_colpos. ls_fieldcat-fixed = 'X'. WHEN 'KYK_FI_VENDOR_LIST_MM'. add 1 to l_seqnr. ls_fieldcat-h_align = 'L'. ls_fieldcat-width = 5. EKORG CLEAR ls_fieldcat.. ls_fieldcat-fixed = 'X'. IF mt_fieldcat IS INITIAL. ls_fieldcat-h_align = 'L'. ls_dfies TYPE dfies. ls_fieldcat-col_visible = ' '. ls_fieldcat-editable = ' '. l_seqnr TYPE int4. DATA: ls_fieldcat TYPE powl_fieldcat_sty.SAP Best Practices How to Develop POWER Lists The following example shows the GET_FIELD_CATALOG method of standard feeder class /KYK/CL_MM_POWL_VENDOR_LIST. WHEN OTHERS. END-OF-DEFINITION. INSERT ls_fieldcat INTO TABLE mt_fieldcat. WHEN 'KYK_FI_VENDOR_LIST_AP'. MANDT CLEAR ls_fieldcat. ls_fieldcat-col_visible = 'X'. LIFNR CLEAR ls_fieldcat. Column MANDT (Client) is defined as a hidden column (col_visible = ‘ ’). ls_fcat TYPE lvc_s_fcat. © SAP AG Page 30 of 44 . * * * * define field catalog corresponding to MT_RESULT !! COLID = corresponding field in MT_RESULT structure type definition ! ( see method 'get_object_definition') 'REF'-attributes the same . * ls_fieldcat-allow_sort = 'X'. ENDCASE.. INSERT ls_fieldcat INTO TABLE mt_fieldcat. ls_fieldcat-colpos = l_seqnr. * ls_fieldcat-allow_sort = 'X'. ls_fieldcat-colid = 'EKORG'. * 2. add_colpos. CASE i_type . ls_fieldcat-header_by_ddic = 'X'.

ls_fieldcat-col_visible = 'X'. ls_fieldcat-allow_sort = 'X'. ls_fieldcat-allow_sort = 'X'. ls_fieldcat-fixed = 'X'. ls_fieldcat-h_align = 'L'. INSERT ls_fieldcat INTO TABLE mt_fieldcat. ls_fieldcat-width = 5. ls_fieldcat-fixed = 'X'. ls_fieldcat-colid = 'NAME1'. ORT01 CLEAR ls_fieldcat. ls_fieldcat-allow_sort = 'X'. ls_fieldcat-editable = ' '. ls_fieldcat-fixed = 'X'. ls_fieldcat-width = 5. add_colpos. NAME1 CLEAR ls_fieldcat. ls_fieldcat-colid = 'ORT01'. ls_fieldcat-h_align = 'L'. INSERT ls_fieldcat INTO TABLE mt_fieldcat. ls_fieldcat-allow_sort = 'X'. ls_fieldcat-header_by_ddic = 'X'. ls_fieldcat-header_by_ddic = 'X'. INSERT ls_fieldcat INTO TABLE mt_fieldcat. ls_fieldcat-header_by_ddic = 'X'. LAND1 CLEAR ls_fieldcat. * 5. add_colpos. ls_fieldcat-editable = ' '. ls_fieldcat-col_visible = 'X'. add_colpos. TELF1 CLEAR ls_fieldcat. ls_fieldcat-width = 10. © SAP AG Page 31 of 44 . ls_fieldcat-h_align = 'L'. INSERT ls_fieldcat INTO TABLE mt_fieldcat.SAP Best Practices ls_fieldcat-header_by_ddic = 'X'. ls_fieldcat-col_visible = 'X'. How to Develop POWER Lists * * 3. ls_fieldcat-allow_sort = 'X'. * 8. MCOD1 CLEAR ls_fieldcat. ls_fieldcat-fixed = 'X'. * 4. INSERT ls_fieldcat INTO TABLE mt_fieldcat. ls_fieldcat-width = 10. ls_fieldcat-fixed = 'X'. * 5. ls_fieldcat-col_visible = 'X'. ls_fieldcat-colid = 'TELF1'. add_colpos. ls_fieldcat-header_by_ddic = 'X'. ls_fieldcat-h_align = 'L'. ls_fieldcat-colid = 'LAND1'. ls_fieldcat-editable = ' '. ls_fieldcat-editable = ' '. ls_fieldcat-editable = ' '. ls_fieldcat-col_visible = 'X'. ls_fieldcat-width = 5.

c_fieldcat = mt_fieldcat. add_colpos. e_visible_cols_count = 11. Parameter mt_fieldcat is defined in the private section of the class: private section. types: BEGIN OF ty_ls_seltab. c_fieldcat = mt_fieldcat. ls_fieldcat-width = 5. INSERT ls_fieldcat INTO TABLE mt_fieldcat. types: ty_lt_vendor TYPE STANDARD TABLE OF ty_ls_vendor . INSERT ls_fieldcat INTO TABLE mt_fieldcat. ZTERM TYPE DZTERM. add_colpos. ls_fieldcat-colid = 'VERKF'. ls_fieldcat-header_by_ddic = 'X'. ls_fieldcat-editable = ' '.SAP Best Practices ls_fieldcat-colid = 'MCOD1'. INSERT ls_fieldcat INTO TABLE mt_fieldcat. TYPES END OF ty_ls_vendor . ls_fieldcat-col_visible = 'X'. add_colpos. ELSE. BUKRS TYPE BUKRS. ls_fieldcat-allow_sort = 'X'. ls_fieldcat-editable = ' '. INCLUDE TYPE /kyk/v_lfa1m1. * 6. types: BEGIN OF ty_ls_vendor. ls_fieldcat-allow_sort = 'X'. INCO1 CLEAR ls_fieldcat. ls_fieldcat-col_visible = 'X'. * * 7. ls_fieldcat-header_by_ddic = 'X'. ls_fieldcat-fixed = ' '. © SAP AG Page 32 of 44 . ls_fieldcat-width = 30. SPERR TYPE SPERB_B. ls_fieldcat-allow_sort = 'X'. LOEVM TYPE LOEVM_B. ls_fieldcat-fixed = ' '. ENDIF. How to Develop POWER Lists * * ENDMETHOD. e_fieldcat_changed = 'X'. ls_fieldcat-fixed = 'X'. ls_fieldcat-colid = 'INCO1'. ls_fieldcat-editable = ' '. ls_fieldcat-header_by_ddic = 'X'. ls_fieldcat-col_visible = 'X'. VERKF CLEAR ls_fieldcat. ls_fieldcat-width = 30.

data MT_FIELDCAT type POWL_FIELDCAT_TTY . types: ty_lt_seltab TYPE STANDARD TABLE OF ty_ls_seltab .g. low TYPE char40. "#EC NOTEXT data MT_ACTIONS type POWL_ACTDESCR_TTY . data MT_SELCRITERIA type POWL_SELCRIT_TTY . (defines the datatype of the actual (internal) query results table as to be delivered by GET_OBJECTS) Parameters Importing I_TYPE I_LANGU the POWL type ID as registered Language Key Exporting E_OBJECT_DEF The table type definition of the actual (internal) query results table as instance of CL_ABAP_TABLEDESCR.5 Method GET_OBJECT_DEFINITION Purpose Define data container (Method “GET_OBJECT_DEFINITION”) This method is used to define the container (e. How to Develop POWER Lists constants GC_ACTION_DISPLAY type POWL_ACTIONID_TY value 'ANZ'. END OF ty_ls_seltab . So there is no need to explicitly take care on things like caching data and so on.1. specify field types) where the selected data gets stored. "#EC NOTEXT constants GC_ACTION_CREATE_REF type POWL_ACTIONID_TY value 'REF'. high TYPE char40. Method descibe_by_data of class cl_abap_tabledesc is an easy way to assign the type definition to export parameter E_OBJECT_DEF. Caching and other mechanisms of the POWER Lists technology will be handled automatically in the background based on these settings. "#EC NOTEXT constants GC_ACTION_DELETE type POWL_ACTIONID_TY value 'DEL'. "#EC NOTEXT constants GC_ACTION_EDIT type POWL_ACTIONID_TY value 'AEN'.SAP Best Practices sign TYPE char1. Example The following example shows the GET_OBJECT_DEFINITION method of standard feeder class /KYK/CL_MM_POWL_VENDOR_LIST. © SAP AG Page 33 of 44 . data MT_CRITERIA_DEFAULT type RSPARAMS_TT . "#EC NOTEXT constants GC_ACTION_EXTEND type POWL_ACTIONID_TY value 'EXT'. "#EC NOTEXT constants GC_ACTION_CREATE type POWL_ACTIONID_TY value 'ANL'. 4. option TYPE char2. data MT_RESULT type TY_LT_VENDOR .

option TYPE char2. "#EC NOTEXT constants GC_ACTION_EDIT type POWL_ACTIONID_TY value 'AEN'. INCLUDE TYPE /kyk/v_lfa1m1.SAP Best Practices How to Develop POWER Lists METHOD if_powl_feeder~get_object_definition.g. constants GC_ACTION_DISPLAY type POWL_ACTIONID_TY value 'ANZ'. data MT_RESULT type TY_LT_VENDOR . high TYPE char40. select * from xyz) or a complex selection where you use existing SAP function modules or your own coding. types: BEGIN OF ty_ls_vendor. SPERR TYPE SPERB_B. LOEVM TYPE LOEVM_B. ENDMETHOD. low TYPE char40. data MT_FIELDCAT type POWL_FIELDCAT_TTY . sign TYPE char1. data MT_CRITERIA_DEFAULT type RSPARAMS_TT .6 Method GET_OBJECTS Purpose Retrieve data from the backend system (Method “GET_OBJECTS”) Here you need to define the data retrieval itself. "#EC NOTEXT data MT_ACTIONS type POWL_ACTDESCR_TTY . types: ty_lt_seltab TYPE STANDARD TABLE OF ty_ls_seltab . "#EC NOTEXT constants GC_ACTION_CREATE_REF type POWL_ACTIONID_TY value 'REF'.1. "#EC NOTEXT constants GC_ACTION_DELETE type POWL_ACTIONID_TY value 'DEL'. "#EC NOTEXT constants GC_ACTION_CREATE type POWL_ACTIONID_TY value 'ANL'. END OF ty_ls_seltab . Parameter mt_result is defined in the private section of the class: private section. This can be either a very simple database select (e. types: BEGIN OF ty_ls_seltab. types: ty_lt_vendor TYPE STANDARD TABLE OF ty_ls_vendor . 4. ZTERM TYPE DZTERM. "#EC NOTEXT constants GC_ACTION_EXTEND type POWL_ACTIONID_TY value 'EXT'. TYPES END OF ty_ls_vendor . BUKRS TYPE BUKRS. (responsible for the actual query execution and delivery of the query results table which must adhere to the type definition given by GET_OBJECT_DEFINITION) © SAP AG Page 34 of 44 . * return the table type description for the private object attribute MT_RESULT e_object_def ?= cl_abap_tabledescr=>describe_by_data( mt_result ). data MT_SELCRITERIA type POWL_SELCRIT_TTY .

f GET_OBJECT_DEFINITION)] messages that occured during query execution/results determination and are to be displayed to the user E_MESSAGES Example The following example shows the GET_OBJECTS method of standard feeder class /KYK/CL_MM_POWL_VENDOR_LIST. ty_lt_seltab.SAP Best Practices How to Develop POWER Lists Parameters Importing I_USERNAME I_APPLID I_TYPE I_LANGU I_SELCRIT_VALUES the user ID the current portal user is mapped to Application ID identifying the current POWL Iview the POWL type ID as registered Language Key the selection criteria values of the current query Exporting E_RESULTS the actual query results for the criteria values supplied to the Feeder via I_SELCRIT_VALUES [selection result table (c. ls_selcrit TYPE rsparams. © SAP AG Page 35 of 44 . TYPE ty_lt_vendor. ls_seltab_lifnr-low = ls_selcrit-low. "'BT'. ls_seltab_lifnr-sign = ls_selcrit-sign. METHOD IF_POWL_FEEDER~GET_OBJECTS. "'I'. * select objects with criteria from i_selcrit_values * selname was defined in method get_sel_criteria DATA: lt_selcrit TYPE rsparams_tt. Please note how import parameter i_selcrit_values is used to build lt_seltab_lifnr and lt_seltab_ekorg for the WHERE-clause of the selection. ls_seltab_lifnr-option = ls_selcrit-option. The data retrieval is performed via a SELECT-statement on tables /KYK/V_LFA1M1 (Vendor List for Purchasing Organisation) and /KYK/V_LFA1B1 (Vendor List for Comapany). ty_ls_seltab. TYPE ty_lt_vendor. FIELD-SYMBOLS: <lf_lfa1m1> TYPE ty_ls_vendor. DATA: ls_seltab_lifnr lt_seltab_lifnr ls_seltab_bukrs lt_seltab_bukrs ls_seltab_ekorg lt_seltab_ekorg DATA: lt_lfa1m1 lt_result ls_result TYPE TYPE TYPE TYPE TYPE TYPE ty_ls_seltab. ty_lt_seltab. ty_lt_seltab. CASE ls_selcrit-selname. ty_ls_seltab. TYPE ty_ls_vendor. LOOP AT i_selcrit_values INTO ls_selcrit. WHEN 'S_LIFNR'.

BUKRS TYPE BUKRS. "#EC NOTEXT constants GC_ACTION_EXTEND type POWL_ACTIONID_TY value 'EXT'. types: BEGIN OF ty_ls_vendor. ls_seltab_ekorg-sign ls_seltab_ekorg-option ls_seltab_ekorg-low ls_seltab_ekorg-high APPEND ls_seltab_ekorg ENDCASE. ENDMETHOD. MOVE-CORRESPONDING <lf_lfa1m1> TO ls_result. LOOP AT lt_lfa1m1 ASSIGNING <lf_lfa1m1>. SELECT * FROM /kyk/v_lfa1m1 AS m1 INNER JOIN /kyk/v_lfa1b1 AS b1 ON m1~mandt = b1~mandt AND m1~lifnr = b1~lifnr INTO CORRESPONDING FIELDS OF TABLE lt_lfa1m1 WHERE m1~lifnr IN lt_seltab_lifnr AND m1~ekorg IN lt_seltab_ekorg.SAP Best Practices ls_seltab_lifnr-high APPEND ls_seltab_lifnr WHEN 'S_EKORG'. = ls_selcrit-high. types: BEGIN OF ty_ls_seltab. low TYPE char40. "#EC NOTEXT constants GC_ACTION_DELETE type POWL_ACTIONID_TY value 'DEL'. TO lt_seltab_lifnr. SPERR TYPE SPERB_B. TO lt_seltab_ekorg. LOEVM TYPE LOEVM_B. Following type definitions are assumed in the attributes section of the class: private section. "#EC NOTEXT constants GC_ACTION_EDIT type POWL_ACTIONID_TY value 'AEN'. TYPES END OF ty_ls_vendor . = ls_selcrit-high. = ls_selcrit-option. How to Develop POWER Lists = ls_selcrit-sign. © SAP AG Page 36 of 44 . "#EC NOTEXT data MT_ACTIONS type POWL_ACTDESCR_TTY . sign TYPE char1. ENDLOOP. ZTERM TYPE DZTERM. "#EC NOTEXT constants GC_ACTION_CREATE_REF type POWL_ACTIONID_TY value 'REF'. ENDLOOP. "#EC NOTEXT constants GC_ACTION_CREATE type POWL_ACTIONID_TY value 'ANL'. = ls_selcrit-low. types: ty_lt_vendor TYPE STANDARD TABLE OF ty_ls_vendor . "'I'. option TYPE char2. types: ty_lt_seltab TYPE STANDARD TABLE OF ty_ls_seltab . INCLUDE TYPE /kyk/v_lfa1m1. INSERT ls_result INTO TABLE me->mt_result. high TYPE char40. END OF ty_ls_seltab . e_results = me->mt_result. constants GC_ACTION_DISPLAY type POWL_ACTIONID_TY value 'ANZ'. "'BT'.

the respective "master result" data (adhering to GET_OBJECT_DEFINITION) will be supplied by the POWL to the detail component via method UPDATE_DETAIL_DATA as defined in IWCI_POWL_DETAIL_COMP_IF. This could be helpful if you have large data sets where a horizontal scrolling is too time consuming or not quite usable. MT_CRITERIA_DEFAULT type RSPARAMS_TT . Use The following steps have to be performed to create a POWER List detail Component Procedure 1. If this is desired. Create a WebDynpro ABAP component 2.) Parameters Importing I_USERNAME I_APPLID I_TYPE I_LANGU the user ID the current portal user is mapped to Application ID identifying the current POWL Iview the POWL type ID as registered Language Key Exporting E_DETAIL_COMP the name of a Web Dynpro Component which implements the component interface IWCI_POWL_DETAIL_COMP_IF.1. This component will be instantiated at runtime and has to manage the actual details display. Detail type ID (to be supplied if POWL_TABLE_COMP is used) E_DETAIL_TYPE If you don't want to display result details.SAP Best Practices data data data data MT_SELCRITERIA type POWL_SELCRIT_TTY . the detailed component offers a good alternative as it provides a detailed view area below the list.7 Method GET_DETAIL_COMP Purpose Enable the detail component feature (Method “GET_DETAIL_COMP’” This method can be used in case you want to show a detailed view of a specific business object below the POWER List. implement the WebDynpro ABAP component Interface 'POWL_DETAIL_COMP_IF' © SAP AG Page 37 of 44 . MT_FIELDCAT type POWL_FIELDCAT_TTY . custom details can be displayed for one query result at a time. MT_RESULT type TY_LT_VENDOR . this method has to deliver the neccessary meta information to the POWL. just leave this parameter blank. (optionally. How to Develop POWER Lists 4. where you can show all the different fields without the need of horizontal scrolling. In this case.

1. First you need to define the buttons with name. the ID of the action triggered by the user (i. © SAP AG Page 38 of 44 . either the ID of one of the explicit actions as defined by GET_ACTIONS or the results table column ID of an implicit action as defined by the field catalog by an active cell cenderer). you have a huge variety of options to improve the POWER Lists significantly. insert your views into the interface window 'POWL_DETAIL' 6. index and more (GET ACTIONS). Or it could be used to simplify a whole process by using the buttons to call several function modules in a sequence automating the process in the background based on the selected item(s) in the POWER List. Second you need to define the actions which should be initiated if the user presses such a button. Parameters Importing I_USERNAME I_APPLID I_TYPE I_LANGU I_ACTIONID the user ID the current portal user is mapped to Application ID identifying the current POWL Iview the POWL type ID as registered Language Key Action identifier. This Interface contains the following methods and events: How to Develop POWER Lists Methods: 'UPDATE_DETAIL_DATA' implement this method in order to receive the DATA reference of the POWL lead selection Parameter . This makes only sense when the POWL is embedded into another WD ABAP component. Parameters: 'ADD_EVENT_DATA' type ref to DATA 'EVENT_PARAMETERS' type POWL_NAMEVALUE_TTY 4.SAP Best Practices 3. pass the name of the above created WD component through your feeder class method 'GET_DETAIL_COMP' using the parameter 'E_DETAIL_COMP' Hint: as the POWL query data is cached it makes sense to have the detailed data also cached (synchronous) e. The action can simply be launching a transaction and forwarding the business object parameters to it.e.'I_POWL_LINE_DATA' type ref to DATA Events: 'DO_REFRESH' fire this event from your detail component when you need the POWL query refreshed 'POWL_FOLLOW_UP' use this event to pass 'something' to the 'POWL_UI_COMP' event 'POWL_FOLLOW_UP'. create your 'custom' detail Views (WD ABAP) 5. nested table structure in your POWL line data 4.g.8 Method HANDLE_ACTION Purpose Define buttons and their actions (Methods “GET_ACTIONS” & “HANDLE_ACTION”) By maintaining the two methods GET_ACTIONS and HANDLE_ACTION.

GET_ACTION_CONFIRMATION) Y . flag: actions in C_ACTION_DEFS changed (set if uncertain) Supplies a portal action to be performed upon the HANDLE_ACTION call. you will only have to adapt this index if result table lines were added and/or deleted. Otherwise. Normally. you can leave this flag unset.. If you want to fire the default operation of the resp.. selected results in C_SELECTED changed by Feeder if none of the action definitions supplied to the Feeder via C_ACTION_DEFS had to be changed. Changing E_CHANGES_PROCESSED E_SELECTED_CHANGED E_ACTIONS_CHANGED E_PORTAL_ACTIONS C_SELECTED supplies the indices of all results table lines selected/marked by the user to the Feeder. Continue?"). The first entry of this table corresponds to the lead selection index.e.. i. you can leave this flag unset. current result table (adhering to GET_OBJECT_DEFINITION) supplies the current explicit action definitions for the query to the Feeder.. the following portal actions are supported: Absolute navigation: just set the component PORTAL_PATH to the respective navigation target. Currently.change information on those query results changed by the user since most recent enabling of POWL "dirty" state.SAP Best Practices How to Develop POWER Lists I_CHANGED --only relevant for editable query results table-. Object based navigation: all components with prefix BO_ are to be filled according to the business object operation to be triggered. result table line index for cell-based actions in case there was an action confirmation message defined by GET_ACTION_CONF.. Portal client-side event: all components with prefix CS_ have to be filled accordingly. you may omit the component BO_OP_NAME.Yes (Execute action (default)) N . index of C_RESULT_TAB C_ACTION_DEFS C_FIRST_VISIBLE_ROW © SAP AG Page 39 of 44 . this parameter supplies the confirmation result (i. Note that all parameters supplied in component PARAMETERS will be transported as URL-encoded value string of URL parameter 'DynamicParameter'. Otherwise.. the current scroll position of the results table).. A typical action which would set this flag is something like "Save data". Otherwise. trigger a complete query refresh if none of the results supplied to the Feeder via C_RESULTS had to be changed.. supplies the current query results table (including all changes done by the user if the results table is ediatble) to the Feeder. to reset the POWL "dirty state". you can leave this flag unset.No (Don't execute action) Exporting I_ACTION_INDEX I_ACTION_CONF E_MESSAGES E_DO_REFRESH E_RESULT_LINES_CHANGED messages to be displayed to the user if this flag is set.if all results changes done by the user have been processed by the Feeder.e. result table C_RESULTS changed (set if uncertain) --only relevant for editable query results table-. this parameter will supply the results table line index where the action was triggered to the Feeder. you have to set it to 'X'. The default value (which is also supplied in case there was no confirmation message) is Yes. result table indices of selected results. POWL action definitions supplies the index of the first visible results table row to the Feeder (i.e. user changes processed by Feeder (reset POWL "dirty" state) if none of the selected result line indices supplied to the Feeder via C_SELECTED had to be changed.. business object. Y for Yes or N for No) to the Feeder.f. you can set this flag to 'X' in order to tell the POWL to suppres data loss confiramtion messages (like "Unsaved data will be lost. action confirmation result (c. a refresh of the query will be enforced upon the HANDLE_ACTION call. you have to set it to 'X'. you have to set it to 'X'.... outtab change infos (changes by the user) for Feeder in case an implicit action.

Via ls_portal_actions-bo_name the specific Business Object is specified.SAP Best Practices first visible results table row C_FIRST_VISIBLE_SCROLL_COL Name of first scrollable column How to Develop POWER Lists For each action defined in method GET_ACTIONS a record has to be added to table E_PORTAL_ACTION.The (ls_namevalue-key . Additional data for the event Example The following example shows the HANDLE_ACTION method of standard feeder class /KYK/CL_SLS_LIST_CUSTOMERS_FI. © SAP AG Page 40 of 44 . ls_namevalue-value)pairs provide the particular Business Object – parameters with values. how Business Objects are used for OBN navigation. Here it should become clear. SOURCE_ROLE Client side event name space Name of a client side event Name/Value set For wrapped POWL feeder classes to fire the event outwards. via ls_portal_actions-bo_op_name the Business Object-method. respectively. Please note that the respective ACTIONID to be handled is passed via parameter I_ACTIONID. The following table describes the structure and meaning of such a record. Field name PORTAL_PATH PORTAL_NAV_MODE Description Path for absolute portal navigation to fix target (not to be used in A1N) Navigation mode valid values: IF_WD_PORTAL_INTEGRATION=>CO_SHOW_<*> (not to be used in A1N) BO_SYSTEM BO_NAME BO_OP_NAME BO_RESOLVE_MODE CS_EVENT_NAMESPACE CS_EVENT PARAMETERS FIRE_WDEVENT ADD_WDEVENT_DATA System alias for Object Base Navigation (OBN) Name of OBN business object Name of an operation of the sepcified business object Scope of role resolution: USER_SET_OF_ROLES.

type i.Change’ is specified. like line of me->mt_result. where a POWER List based on the regarding feeder is assigned. © SAP AG Page 41 of 44 . Now. via Additional Details from the Context Menu it can be verified that method ‘KYK_CUSTOMER_BLOCK.Change’ via E_PORTAL_ACTION-bo_name and E_PORTAL_ACTIONbo_op_name. For example the handling of action ‘CHAN’ returns Business Object 'KYK_CUSTOMER_BLOCK' and it’s method 'Change' via parameter E_PORTAL_ACTION.furthermore the mapping between the Business Object-parameters and the screen fields. type powl_namevalue_sty. how the parameters are mapped to the particular screen fields of transaction screen XD02: RF02D-KUNNR={Customer}&RF02D-BUKRS={Company_Code}&RF02DVTWEG={Distribution_Channel}&RF02D-SPART={Division}&RF02DVKORG={Sales_Organization} method if_powl_feeder~handle_action . Furthermore we can see. that the OBN navigation requires an appropriate ‘Transaction assignment’ for the specific role (via Transaction PFCG).SAP Best Practices How to Develop POWER Lists It is important to note. let’s have a look at the menu entry Customers of role SAP_AIO_SALESPERSON-S. data: ls_portal_actions ls_namevalue lv_lines field-symbols: <fs_result> type powl_follow_up_sty. That way the connection between the Business Object-method and the transaction to be executed is established . Due to our considerations regarding OBN-navigation there must be a transaction within the menu folder. which is executed whenever method HANDLE_ACTION returns ‘KYK_CUSTOMER_BLOCK. Entry XD02 fulfills this requirement.

when 'DISP'. e_messages. ls_portal_actions-bo_name = 'KYK_CUSTOMER_BLOCK'. ls_namevalue-key = 'Distribution_Channel'. when 'DISP' or 'CHAN' or 'AACC'. *** ls_namevalue-value = space. check lv_lines = 1. * fill e_portal_actions to navigate ls_namevalue-key = 'Customer'. insert ls_namevalue into table ls_portal_actions-parameters. case i_actionid. * handle actions defined in method 'get_actions' ls_portal_actions-bo_system = space. insert ls_namevalue into table ls_portal_actions-parameters. ls_namevalue-key = 'AGKON'. How to Develop POWER Lists describe table c_selected lines lv_lines. insert ls_namevalue into table ls_portal_actions-parameters. e_do_refresh. "#EC NOTEXT ls_namevalue-value = <fs_result>-bukrs. * filled by default? *** ls_namevalue-key = 'CHANGE'. "#EC NOTEXT ls_namevalue-value = <fs_result>-spart. endcase. e_selected_changed. "#EC NOTEXT ls_namevalue-value = <fs_result>-vkorg. ls_namevalue-key = 'Sales_Organization'. e_changes_processed. when 'CLIT'. "#EC NOTEXT ls_namevalue-value = <fs_result>-bukrs. ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> read table c_selected assigning <fs_selected> index 1. ls_namevalue-key = 'BUKRS'. e_actions_changed. case i_actionid. ls_portal_actions-bo_op_name = 'Display'. "#EC NOTEXT © SAP AG Page 42 of 44 . insert ls_namevalue into table ls_portal_actions-parameters. clear: e_portal_actions. e_result_lines_changed. "#EC NOTEXT ls_namevalue-value = <fs_result>-kunnr. ls_namevalue-key = 'Division'. insert ls_namevalue into table ls_portal_actions-parameters. "#EC NOTEXT ls_namevalue-value = <fs_result>-vtweg. "#EC NOTEXT ls_namevalue-value = <fs_result>-kunnr. insert ls_namevalue into table ls_portal_actions-parameters. insert ls_namevalue into table ls_portal_actions-parameters. read table c_result_tab assigning <fs_result> index <fs_selected>-tabix.SAP Best Practices <fs_selected> type rstabix. ls_namevalue-key = 'Company_Code'.

"#EC NOTEXT ls_namevalue-value = space. "#EC NOTEXT ls_namevalue-value = <fs_result>-kunnr. e_portal_actions = ls_portal_actions. ls_namevalue-key = 'Reference_Division'. ls_namevalue-key = 'Reference_Company'. when 'CLIT'. insert ls_namevalue into table ls_portal_actions-parameters. when 'CHAN'. insert ls_namevalue into table ls_portal_actions-parameters. "#EC NOTEXT ls_namevalue-value = <fs_result>-vkorg. "#EC NOTEXT ls_namevalue-value = <fs_result>-bukrs. ls_namevalue-key = 'Reference_Distr_Chan'. ls_portal_actions-bo_op_name = 'Clear_Items'. insert ls_namevalue into table ls_portal_actions-parameters. "#EC NOTEXT ls_namevalue-key = 'Customer'. e_portal_actions = ls_portal_actions. ls_namevalue-key = 'Reference_Sales_Org'. * when 'COPY'. "#EC NOTEXT * 'Customer' and 'Company_Code' already provided. insert ls_namevalue into table ls_portal_actions-parameters. * when 'EXT'. insert ls_namevalue into table ls_portal_actions-parameters. e_portal_actions = ls_portal_actions. when 'AACC'. "#EC NOTEXT * space cannot be filled by default ls_namevalue-key = 'CHANGE'. e_portal_actions = ls_portal_actions. copy customer ls_portal_actions-bo_op_name = 'Copy'. "#EC NOTEXT ls_namevalue-value = <fs_result>-kunnr. "#EC NOTEXT ls_namevalue-value = <fs_result>-spart. endcase.SAP Best Practices *** How to Develop POWER Lists insert ls_namevalue into table ls_portal_actions-parameters. "#EC NOTEXT ls_namevalue-key = 'Reference_Customer'. e_portal_actions = ls_portal_actions. extend customer ls_portal_actions-bo_op_name = 'Extend'. insert ls_namevalue into table ls_portal_actions-parameters. insert ls_namevalue into table ls_portal_actions-parameters. analyze account ls_portal_actions-bo_op_name = 'Analyze_Account'. ls_portal_actions-bo_op_name = 'Change'. "#EC NOTEXT © SAP AG Page 43 of 44 . "#EC NOTEXT ls_namevalue-value = <fs_result>-vtweg. 'Fiscal_year' to be entered manually * e_portal_actions = ls_portal_actions.

e_portal_actions = ls_portal_actions. when 'DELE'. ls_namevalue-key = 'KUNNR'. when 'BLOC'.: SAP ECC menu Transaction code Tools tools SWO1 Business Workflow Development Definition Application Integation Business Object Builder Please see the Application Help for general information about scope and usage of the Business Object Builder. insert ls_namevalue into table ls_portal_actions-parameters. create own ones. "#EC NOTEXT ls_namevalue-value = <fs_result>-name. deletion flag ls_portal_actions-bo_op_name = 'Delete'. clear ls_portal_actions. "#EC NOTEXT ls_namevalue-value = <fs_result>-kkber. insert ls_namevalue into table ls_portal_actions-parameters. case i_actionid. endcase. ls_portal_actions-bo_name = 'KYK_CUSTOMER_BLOCK'. "#EC NOTEXT * * * "#EC NOTEXT "#EC NOTEXT "#EC NOTEXT ls_namevalue-key = 'KKBER'. ls_namevalue-key = 'NAME1'. "#EC NOTEXT ls_namevalue-value = <fs_result>-kunnr. block/unblock ls_portal_actions-bo_op_name = 'Block'. when 'BLOC' or 'DELE' or 'EDCL'. insert ls_namevalue into table ls_portal_actions-parameters. The Business Object Builder can be used to inspect the methods of a Business Objects resp.SAP Best Practices How to Develop POWER Lists * this came from general list case i_actionid. endcase. endmethod. when 'EDCL'. © SAP AG Page 44 of 44 . edit credit limit ls_portal_actions-bo_op_name = 'CRC_Edit'.