WHAT IS INBOX? InBox , Lean office simulation, provides a ...
SAP Cookbook for Reuse Inbox from Business Suitee+Inbox+Cookbook+Version+1.12
-
Upload
anonymous-lwlcew -
Category
Documents
-
view
98 -
download
10
description
Transcript of SAP Cookbook for Reuse Inbox from Business Suitee+Inbox+Cookbook+Version+1.12
Ralf Kestler Huaiyang Mao Volker Guzman Jörg Brose Oliver Hilss Frank Dauscher
Suite Renovation Cookbook for Reuse Inbox from Business Suite Foundation Layer
Document Version Status Date
0.9 Draft 22.09.09
0.10 Draft 16.10.09
0.11 Draft 27.10.09
1.0 Released 01.12.09
1.1 Released 18.10.09
1.12 Released 10.02.10
Features and functions, which are not mentioned in this document, are not supported in the current release. You may submit your Development Request for the next release through SRM Solution Management.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 2
Inhaltsverzeichnis:
1 Inbox ................................................................................................................................ 4
1.1 Introduction ................................................................................................................................................. 4
2 Quick Guide to reuse Inbox ........................................................................................... 5
2.1 How to reuse inbox in general? ................................................................................................................. 5
2.2 How did SRM re-use the inbox? ................................................................................................................ 7
3 Tasks for Reusing Inbox ................................................................................................ 9
3.1 Define New POWL Feeder .......................................................................................................................... 9
3.1.1 Constructor ............................................................................................................................................... 9
3.1.2 Overide method READ_CUST_ACTIONS ............................................................................................... 9
3.1.3 Overide method READ_CUST_FIELDCAT ............................................................................................. 9
3.1.4 Override method SET_MV_RESULTSTRUCTURE............................................................................... 10
3.1.5 Overide method SET_MV_RESULTS .................................................................................................... 11
3.1.6 Override Interface method IF_POWL_FEEDER~GET_OBJECTS ........................................................ 11
3.2 POWL Customizing ................................................................................................................................... 12
3.2.1 Create POWL application for your inbox ................................................................................................ 14
3.2.2 Create your own POWL Feeder Type with your own Feeder Class ...................................................... 15
3.2.3 Assign the POWL Feeder Type to the your Inbox POWL application ................................................... 16
3.2.4 Create POWL Query .............................................................................................................................. 17
3.2.5 Assign the POWL Query to your inbox POWL application .................................................................... 20
3.3 Inbox Action and Task Definition ............................................................................................................ 22
3.3.1 Standard Actions .................................................................................................................................... 22
3.3.2 Create or Change Actions ...................................................................................................................... 22
3.3.3 Action Parameters .................................................................................................................................. 23
3.3.4 Define Action Parameters ...................................................................................................................... 24
3.3.5 Define Tasks........................................................................................................................................... 24
3.3.6 Select Custom Attributes ........................................................................................................................ 24
3.3.7 Assign Actions to Tasks ......................................................................................................................... 25
3.3.8 Defining the Standard Actions for Tasks, Notifications and Alerts ......................................................... 25
3.3.9 Example: Launch Application via OBN .................................................................................................. 25
3.3.10 Example: Launch Application via Launch Pad ................................................................................ 26
3.4 Other Customizing/Features .................................................................................................................... 27
3.4.1 Assign Task IDs to POWL Types ........................................................................................................... 27
3.4.2 BAdI to customize the work item details area ........................................................................................ 28
3.5 Webdynpro Configuration ........................................................................................................................ 29
3.5.1 Create the Webdynpro component configuration................................................................................... 29
3.5.2 Create the Webdynpro Application Configuration .................................................................................. 29
3.5.3 Start the application ................................................................................................................................ 29
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 3
3.6 Integrate Inbox in Business Client for Browser ..................................................................................... 30
3.6.1 Create the role ........................................................................................................................................ 30
3.6.2 Mandatory Navigation Customizing ....................................................................................................... 31
3.6.3 Optional Navigation Customizing ........................................................................................................... 32
4 FAQ ................................................................................................................................ 35
5 APPENDIX ..................................................................................................................... 36
5.1 Standard Actions ...................................................................................................................................... 36
5.1.1 Standard Actions in Work Item POWL ................................................................................................... 36
5.1.2 Standard Actions in Alert POWL ............................................................................................................ 36
5.1.3 Standard Actions in Notification POWL .................................................................................................. 36
5.2 Adapt the layout and pushbuttons of POWL in SRM ............................................................................ 37
5.2.1 Adjusting the initial table layout .............................................................................................................. 37
5.2.2 Configuring the pushbuttons .................................................................................................................. 37
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 4
1 Inbox
1.1 Introduction
The Inbox is a POWL application with extended functionality: workflow task specific action per configuration, Details Area, Substitution Filter etc. The following figure depicts an overview of building blocks of Inbox.
InboxSRB-EBP-INB
...
WD Inbox
POWL
Inbox Facade
Action
Handler
Refresh
Handler
R
R
Configuration
Provider
R
...Feeder
WD
Substitute
RSubst
Facade
R
R
Figure 1: Inbox Architecture Overview
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 5
2 Quick Guide to reuse Inbox
2.1 How to reuse inbox in general?
The inbox shall be reused with little effort, mostly through customizing.
There are two levels of reuse:
- Basic re-use with action configuration in step 7 (However, you will not have any application specific actions avaible except default action for the work item text link). After configuration you can start the inbox as in step 10.
- Advanced re-use with configuration and implementation of your own feeder classes, subclass of class CL_IBO_INBOX_FEEDER_WI for work items, subclass CL_IBO_INBOX_FEEDER_NOTIF for notification, or CL_IBO_INBOX_FEEDER_ALERT for alert, respectively. This allows complete control of work item list and field catalog.
Remark: See chapter 5.1 for a list of default actions provided. For these actions buttons are available without the need to create your own feeder implementations.
Remark : The POWL framework does not provide customizing tables for buttons and field catalogs; instead, each using application must implement their own feeder classes. The inbox as a re-use of the POWL assumes that each application already uses the POWL, already has a framework/ set of utility classes that assists with POWL buttons and field catalogs, and intends to re-use these.)
The steps to be followed as:
1. (Optional) Create your own Feeder classes.
Start SE80. Your own Feeder allows complete control over button layout and field catalogs; you can add application specific buttons and change the field catalog meta data. Subclass the inbox feeder class CL_IBO_INBOX_FEEDER_WI/NOTIF/ALERT respectively and override methods READ_CUST_ACTIONS and READ_CUST_FIELDCAT.
2. (Optional) Create POWL application for your inbox.
If you want to reuse the standard inbox with configuration only, you don‟t need create a new POWL application; otherwise, start transaction FPB_MAINTAIN_HIER. Each business application should use its own POWL application ID (Standard Inbox has the POWL application ID „IBO_INBOX‟).
3. (optional) Create your own POWL Type with your own Feeder Class
Start transaction POWL_TYPE to create new POWL feeder types with your own feeder class. Probably you will want to display workitems, alerts, and notifications. So you would need to create 3 different feeder types. (E.g. SRM uses 3 feeder types „SAPSRM_IBO_FEEDER_WI‟, „SAPSRM_IBO_FEEDER_ALERT‟, and „SAPSRM_IBO_FEEDER_NOTIF‟). Use feeder classes „CL_IBO_INBOX_FEEDER_WI‟, „CL_IBO_INBOX_FEEDER_ALERT‟, and „CL_IBO_INBOX_FEEDER_NOTIF‟ if you did not perform the previous step 2, otherwise use your own feeder classes.
4. (Optional) Assign the POWL Type to your Inbox POWL application.
Start transaction POWL_TYPER.
5. (Optional) Create POWL Query with the POWL Type
Start transaction POWL_QUERY
6. (Optional) Assign the POWL Query to your inbox POWL application
Start transaction POWL_QUERYR
7. Configure the mapping of workflow task and its actions.
Add all workflow task types to the configuration tables that should be handled in the inbox. Without declaration of workflow task types the tasks can only be displayed but cannot be processed. Each task
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 6
should have a default action, this action will be executed on link click (e.g. in SRM, a click opens a document in a new window).
8. (Optional) Create a Webdynpro component configuration
Create a Webdynpro component configuration for the Webdynpro component IBO_WDC_INBOX and set the POWL application ID. This is required for finding the correct configuration (e.g. SRM uses the POWL application ID „SAPSRM_IBO_INBOX‟).
9. (Optional) Create a Webdynpro application configuration
Create a Webdynpro application configuration for the Web Dynpro application IBO_WDA_INBOX (package IBO_INBOX_UI) and set the Webdynpro component configuration for WD component IBO_WDC_INBOX and POWL_UI_COMP(e.g. SRM uses a Webdynpro component component configuration „/SAPSRM/IBO_WDCC_INBOX‟ which is referenced in Webdynpro application configuration „/SAPSRM/IBO_WDAC_INBOX‟).
10. Start the application
Start the Webdynpro application IBO_WDA_INBOX with WDCONFIGURATIONID = IBO_WDAC_POWL_INBOX (for basic reuse) or the in step 7 created Webdynpro application configuration.
11. (optional) Maintain the menu of role if Navigation Frame used.
In transaction PFCG ensure that your employee role has the following menu entry: „Inbox‟ referring to WD application „IBO_WDA_INBOX‟ with parameter WDCONFIGURATIONID set to your Webdynpro application configuration created in step 7 (e.g. SRM uses a Webdynpro component component configuration „/SAPSRM/IBO_WDCC_INBOX‟ which is referenced in Webdynpro application configuration „/SAPSRM/IBO_WDAC_INBOX‟). These settings are recommended, they ensure that an employee user can open the inbox from his user menu.
The following figure shows the architecture of reuse inbox in general.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 7
Figure 2: Inbox Reuse Architecture Overview
2.2 How did SRM re-use the inbox?
The SRM application was able to reuse the Inbox with little effort, mostly through customizing. The steps of inbox re-use by SRM are listed in the following:
1. Create SRM Inbox Feeder Class.
In transaction SE80 SRM specific feeder classes /SAPSRM/CL_IBO_DELEGATE_WI, /SAPSRM/CL_IBO_DELEGATE_ALERT, and /SAPSRM/CL_IBO_DELEGATE_NOTIF were created. Note: SRM did not follow the recommendations to create subclasses of class CL_IBO_INBOX_FEEDER_WI/ALERT/NOTIF. Instead, the “bridge” pattern was used to dynamically leverage an SRM specific feeder class hierarchy to the feeder class hierarchy in the foundation layer. This was necessary as SRM classes and classes from IBO package must be completely decoupled.
2. Create POWL application „SAPSRM_IBO_INBOX‟.
Start transaction FPB_MAINTAIN_HIER to create SRM Inbox
3. Create POWL Feeder Type.
In transaction POWL_TYPE 3 new POWL feeder types were created: „SAPSRM_IBO_FEEDER_WI‟, „SAPSRM_IBO_FEEDER_ALERT‟, and „SAPSRM_IBO_FEEDER_NOTIF‟
4. Assign POWL Feeder Type to SRM POWL application.
In transaction POWL_TYPER the new POWL feeder types were assigned to the SRM Inbox POWL application.
5. Create POWL Query with the POWL Feeder Type
Start transaction POWL_QUERY
6. Assign the POWL Query to SRM inbox POWL application
Start transaction POWL_QUERYR
7. Customizing SRM Inbox POWL buttons and field catalogs.
SRM uses its own customizing tables for POWL buttons and POWL field catalogs. These SRM specific customizing tables are used for all POWL queries used in SRM, not only for the SRM inbox. The SRM specific feeder classes /SAPSRM/CL_IBO_DELEGATE_WI, /SAPSRM/CL_IBO_DELEGATE_ALERT, and /SAPSRM/CL_IBO_DELEGATE_NOTIF retrieve their customizing from these SRM specific customizing tables in the methods READ_CUST_ACTIONS and READ_CUST_FIELDCAT. In transaction /SAPSRM/POWL_CUST the SRM specific POWL buttons and POWL field catalogs were customized. This includes SRM specific tasks and their SRM specific actions (e.g. a task for approval of a shopping cart would include actions „Approve‟, „Reject‟, „Display‟, and „Print Preview‟).
8. Create Web Dynpro Component Cofiguration
Create the Webdynpro component configuration „/SAPSRM/IBO_WDCC_INBOX‟ for the Webdynpro component IBO_WDC_INBOX and set the POWL application ID „SAPSRM_IBO_INBOX‟.
9. Create a Webdynpro application configuration
Create a Webdynpro application configuration „/SAPSRM/IBO_WDAC_INBOX‟ for the Web Dynpro application IBO_WDA_INBOX (package IBO_INBOX_UI) and set the Webdynpro component configuration „/SAPSRM/IBO_WDCC_INBOX‟ for WD component IBO_WDC_INBOX and IBO_WDCC_POWL_INBOX for POWL_UI_COMP.
10. Start the application
Start the Webdynpro application IBO_WDA_INBOX with WDCONFIGURATIONID = /SAPSRM/IBO_WDAC_INBOX
The following figure shows the architecture of SRM reuse inbox.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 8
Figure 3: SRM Reuse Architecture Overview
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 9
3 Tasks for Reusing Inbox
3.1 Define New POWL Feeder
If you have application specific actions to be performed for work items, then you need to create new class <Feeder> which inherits from class CL_IBO_INBOX_FEEDER_WI.
3.1.1 Constructor
The constructor of the feeder should initialize the feeder as in the following coding.
METHOD constructor.
super->constructor( ).
CALL METHOD me->initialize_feeder.
ENDMETHOD.
3.1.2 Overide method READ_CUST_ACTIONS
In this method you can add application specific buttons in the POWL. The mapping of tasks and its actions in the customizing will determine if certain button should be enabled or not after the line of work item selected.
METHOD read_cust_actions.
DATA lt_actions TYPE powl_actdescr_tty.
DATA ls_action TYPE powl_actdescr_sty.
* get workflow standard actions
super->read_cust_actions(EXPORTING iv_type = iv_type
iv_langu = iv_langu
IMPORTING et_actions = lt_actions ). * add application specific actions
ls_action-actionid = 'APPROVE'.
ls_action-cardinality = 'S'. "At least one object has to be selected
ls_action-placement = 'B'. "Toolbar
ls_action-enabled = 'X'.
ls_action-placementindx = '1'.
ls_action-text = 'Approve'(001).
ls_action-tooltip = 'Approve'(002).
INSERT ls_action INTO TABLE lt_actions.
et_actions = lt_actions.
ENDMETHOD.
3.1.3 Overide method READ_CUST_FIELDCAT
In this method you can override the standard field catalog to change the field catalog meta description , e.g. column position, header , header, tooltip, display type.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 10
METHOD read_cust_fieldcat.
DATA ls_fieldcat TYPE powl_fieldcat_sty.
DATA lt_fieldcat TYPE powl_fieldcat_tty.
DATA ls_fieldcat_wa TYPE powl_fieldcat_sty.
* get standard field catalogs
super->read_cust_fieldcat(EXPORTING iv_type = iv_type
iv_langu = iv_langu
IMPORTING et_fieldcat = lt_fieldcat ).
* override standard field catalogs
READ TABLE lt_fieldcat INTO ls_fieldcat_wa
WITH TABLE KEY colid = 'WI_TEXT'.
* in standard inbox the display type of work item text is LU (Link to URL)
* because it is assumed that each re-use application uses the link to
* display a URL (OBN or launchpad) if work item text clicked.
* you can override its display type of to TV (Text View) if no action needs
* to be performed.
ls_fieldcat_wa-display_type = 'TV'. "Text View
MODIFY TABLE lt_fieldcat FROM ls_fieldcat_wa
TRANSPORTING display_type.
et_fieldcat = lt_fieldcat.
ENDMETHOD.
3.1.4 Override method SET_MV_RESULTSTRUCTURE
If you want to see additional work item information besides the information in the standard structure IBO_S_INBOX_WORKITEM in Inbox work item list, then you need to create a new structure, e.g.
YOUR_IBO_S_INBOX_WORKITEM, which includes IBO_S_INBOX_WORKITEM.
Figure 4: Extend Inbox Work Item Result Structure
This new structure should be set in this method. To fill the data in this new structure, the method IF_POWL_FEEDER~GET_OBJECTS have to be overridden, see Chapter 3.1.6.
METHOD set_mv_resultstructure.
mv_resultstructure = 'YOUR_IBO_S_INBOX_WORKITEM'.
ENDMETHOD.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 11
3.1.5 Overide method SET_MV_RESULTS
In this method the table type of the objects showed in the POWL (result table of this feeder) should be defined.
METHOD set_mv_results.
mv_results = 'YOUR_IBO_T_INBOX_WORKITEM'.
ENDMETHOD.
that is table type with the line type defined in 3.1.4.
Figure 5: Create Inbox Result Table Type
3.1.6 Override Interface method IF_POWL_FEEDER~GET_OBJECTS
If your own result structure of work item list is used, you can fill that structure with the additional work item information in this method. Here is an example of the implementation which retrieve information from workflow container.
METHOD if_powl_feeder~get_objects.
DATA lt_results TYPE your_ibo_t_inbox_workitem.
DATA lr_result TYPE REF TO your_ibo_s_inbox_workitem.
DATA lt_container TYPE swrtcont.
DATA lr_container TYPE REF TO swr_cont.
DATA lt_messages TYPE powl_msg_tty.
DATA lv_return_code TYPE sy-subrc.
CALL METHOD super->if_powl_feeder~get_objects
EXPORTING
i_username = i_username
i_applid = i_applid
i_type = i_type
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 12
i_selcrit_values = i_selcrit_values
i_langu = sy-langu
i_visible_fields = i_visible_fields
IMPORTING
e_results = lt_results
e_messages = lt_messages
.
* Fill additional work item information, e.g. from workflow container using
* the function module 'SAP_WAPI_READ_CONTAINER'
LOOP AT lt_results REFERENCE INTO lr_result.
CLEAR lt_container.
CALL FUNCTION 'SAP_WAPI_READ_CONTAINER'
EXPORTING
workitem_id = lr_result->wi_id
IMPORTING
return_code = lv_return_code
TABLES
simple_container = lt_container
.
READ TABLE lt_container REFERENCE INTO lr_container WITH KEY element = 'TOTA
L_VALUE_STRING'.
lr_result->total_value_string = lr_container->value.
ENDLOOP.
e_results = lt_results.
ENDMETHOD.
3.2 POWL Customizing
For POWL customizing following Transactions are used.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 13
Make the POWL Query
visible to the Application and
determine where the POWL
Query should be placed.
Transaction:
POWL_QUERYR
(& POWL_QUERYU)
Create a POWL Query
Transaction:
POWL_QUERY
Create a context ID
(APPLID)
Transaction:
FPB_MAINTAIN_HIER
Create a POWL Category
Transaction:
POWL_CAT
Make the POWL Feeder Type
visible to context ID
Transaction:
POWL_TYPER
(& POWL_TYPEU)
Register the POWL Feeder
Type
Transaction:
POWL_TYPE
Figure 6: POWL Customizing Transaction
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 14
3.2.1 Create POWL application for your inbox
If you want to reuse the standard inbox with configuration only, you don‟t need create a new POWL application; otherwise, start transaction FPB_MAINTAIN_HIER. This transaction is used to create the POWL application (POWL Application ID = APPLID) and to provide a short textual description (Name of POWL).
APPLID is needed in order to identify your POWL and the content ( POWL Feeder Types ).
Figure 7: Transaction FPB_MAINTAIN_HIER
The additional POWL terms explained before have following cardinality and relations.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 15
Figure 8: POWL Terms and their Relations
3.2.2 Create your own POWL Feeder Type with your own Feeder Class
Start transaction POWL_TYPE to create the new POWL Feeder Type. This POWL Feeder Type has to be assigned to the Feeder Class. Description of this POWL Feeder Type has to be added. The description will be used within the POWL dialog for the user specific query definition.
In addition attribute „Sync‟ must be set for inbox, this will force a synchronous refreshing of this type. By default the POWL refreshes asynchronous.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 16
Figure 9: Create POWL Feeder Type in Transaction POWL_TYPE
3.2.3 Assign the POWL Feeder Type to the your Inbox POWL application
Start the transaction POWL_TYPER to tell the POWL Application which feeder types are available for the new POWL application of Inbox (APPLID). If there are no entries for the Feeder Type in this table or the following transaction POWL_TYPEU, this Feeder Type will not be available within the POWL and all queries based on this type won‟t be available too.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 17
Remark: For SRM POWL only the Transaction POWL_TYPER is used without Role assignment.
Figure 10: Assign POWL Feeder Type to POWL application in Transaction POWL_TYPER
3.2.4 Create POWL Query
Start the transaction POWL _QUERY to create or change „admin‟ work lists. This queries will be, when assigned to a user or a context, used for derivation. This is a simple way for the administrator to define „template‟ work lists for n users. These templates queries can contain predefined selection values, special settings like read-only, quick search etc . plus you can create admin layout variants ( now called views ) for embedded WD ALV.
This Query ID has to be assigned to a Feeder Type.
Query Description should be created.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 18
Figure 11: Create POWL Query in Transaction POWL_QUERY
Query Parameters
Query Parameters for represented Query have to be filled.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 19
Figure 12: Set Query Parameters in Transaction POWL_QUERY
Query Settings
Query Settings for represented Query have to be maintained.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 20
Figure 13: Set Query Settings in the Transaction POWL_QUERY
3.2.5 Assign the POWL Query to your inbox POWL application
Transaction POWL_QUERYR/ POWL_QUERYU is similar to POWL_TYPER/ POWL_TYPEU, but this time for queries(work lists) . An entry for a admin query has to be assigned to your POWL application. These queries will be automatically derivated when a user starts his POWL the first time. The sequence of queries can be changed. Categories can be assigned. Assignments can be activated/deactivated.
Remark: For SRM POWL only the Transaction POWL_QUERYR is used without Role assignment.
The Role and User assignment are issues of role configuration in PFCG.
.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 21
Figure 14: Assign POWL Query to POWL Application in the Transaction POWL_QUERYR
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 22
3.3 Inbox Action and Task Definition
You can define actions and their properties, define default actions for specific tasks, and assign custom attributes and actions to tasks in IMG SAP Customizing Impementation Guide -> Cross-Application Components -> Inbox. Note: The Action and Task Definition of the inbox is comparable to the configuration of the Universal Worklist (UWL). For more information, see SAP Help Portal at http://help.sap.com -> SAP NetWeaver Library -> Technology Consultant's Guide -> Business Task Management -> Universal Worklist Configuration. Standard settings SAP delivers default settings using the following system tables:
IBO_C_WF_ACS for actions
IBO_C_WF_APS for action properties
IBO_C_WF_TAS for tasks and their default actions
IBO_C_WF_CAS for assignment of custom attributes to tasks
IBO_C_WF_TTAS for assignment of actions to tasks The customer can override the data through entries in the following customizing tables:
IBO_C_WF_AAC for actions
IBO_C_WF_APC for action properties
IBO_C_WF_TAC for tasks and their default actions
IBO_C_WF_CAC for assignment of custom attributes to tasks
IBO_C_WF_TTAC for assignment of actions to tasks
3.3.1 Standard Actions
The inbox provides some standard actions which are available without the need for customization. These standard actions are:
- “Forward” (of workitems and alerts, with button ID “FORWARD”
- “Resubmit” (of work items and notifications, with button ID “RESUBMIT”)
- “End Resubmission” (of work items, with button ID “END_RESUBMISSION”)
- “Assign to Me” (of work items, with button ID “ASSIGNTOME”)
- “Cancel Assignment” (of work items, with button ID “CANCELASSIGNMENT”)
- “Substitution” (of workflow agents, with button ID “SUBST”)
- “Subscribe” (of alert categories, with button ID “SUBSCRIBE”)
- “Complete” (of alerts, with button ID “COMPLETE”)
- “Delete” (of notifications, with button ID “DELETE”).
- “Not Responsible” (for a work item, with button ID “DECLINE”)
- “Refresh” (with button ID “REFRESH”)
- “Complete” (of work item and alerts, with button ID “COMPLETE”)
Note: The “Complete” action for work item is specific to tasks which has set the flag “Confirm end of processing” in the transaction PFTC (maintain task). This action will be enabled if the work item has the status „COMMITTED‟ and its attribute WI_CONFIRM is „X‟.
3.3.2 Create or Change Actions
You can define actions in the table IBO_C_WF_ACS: A new action needs the following entries:
Action Name: Name for the action you want to create.
Action Type for Action: The following action types are available: FUNCTIONMODULEACTIONHANDLER OBJECTNAVIGATIONLAUNCHER
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 23
LAUNCHPADACTIONHANDLER (BETA!!! Untested!!)
Button ID for Action Mapping: ID of the button to which this action is assigned. Example: The following buttons are available in SRM:
APPROVE REJECT FOLLOWUP DISPLAY (this is set as default action) PRINT
Refresh Type for Action: There are possible values
OPTIMISTIC (optimistic removal of selected line, after a click on “Refresh” button the entry may reappear)
(no entry, no refresh takes place)
Example: SRM uses the refresh type „OPTIMISTIC‟ for actions „APPROVE‟ and „REJECT‟. The work items are processed by calling a function module. It cannot be guaranteed that processing succeeds.
If the customizing table C_WF_IAC contains an entry for a specific action, the system ignores any entry for this action in the system table C_WF_ACS.
3.3.3 Action Parameters
Some actions have mandatory parameters.
An action of action type FUNCTIONMODULEACTIONHANDLER will try to call a function module. The minimum parameter list must include the name of the function module. Other parameters depend on the function module called. Only importing parameters of primitive types are supported.
Example: The SRM specific action “APPROVE” calls the function module „/SAPSRM/FU_WF_RFC_DECISION‟ with several importing parameters. The first parameter defines which function module is called. The other parameters are passed on to the function module :
FunctionModule = „/SAPSRM/FU_WF_RFC_DECISION‟
IV_APF_VERSION = „0600‟
IV_BOTYPE = „${item.BOTYPE}‟
IV_DECISION = „APPROVED‟
IV_HEADER_GUID = „${item.BOID}‟
IV_MODE = „APPROVAL‟
IV_WIID = „${item.externalId}‟
An action of action type OBJECTNAVIGATIONLAUNCHER will trigger object-based navigation. Mandatory parameters are „ObjectName‟, and „method‟.
Example: The SRM specific action “launchWD.sc.display” will display a shopping cart document in a new window. The Object “sc” and its method “detailprof” is called, the parameter „ObjectValue‟ will be passed on to the OBN navigation:
ObjectName = „launchWD.sc.display‟
Operation = „detailprof‟
System = „SAP_SRM‟ (optional, if empty OBN in local system will be used)
ObjectValue = „a=b&sapsrm_botype=${item.BOTYPE}&sapsrm_boid=${item.BOID}&System=${item.systemId}&sapsrm_wiid=${item.externalId}…‟ (optional, additional parameters can be passed as URL parameters)
An action of action type LAUNCHPADACTIONHANDLER will try to retrieve a launchpad configuration and launch the URL configured.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 24
A possible configuration might look like this:
LPD_ROLE = „SAPSRM‟
LPD_INSTANCE = „NAVIGATION‟
LPD_APPL_ALIAS = „SAP_SRM/SC/CREATE‟
3.3.4 Define Action Parameters
You can define parameters for actions that you have defined in the table IBO_C_WF_ACS A new action parameter needs the following entries:
Action Name: Name of the action as defined under Create or Change Actions.
Name of Action Property: Name of the parameter you want to define.
Value of Action Property: Enter a static or dynamic parameter. A dynamic parameter is replaced with an actual value read from the work item at runtime. It should be enclosed with "${item." and “}”, e.g., ${item.internalID}, or ${item.processor}.
If the customizing table IBO_C_WF_IAP contains one or more entries for a specific action, all entries in the corresponding system table IBO_C_WF_APS for this action are ignored.
3.3.5 Define Tasks
You can define the default action for a task in the table IBO_C_WF_TAS. s follows: You need the following entries:
Workflow Task ID: Task ID for which you want to define the default action.
Task Completed: Enter 'X' if the entry is for a completed task, otherwise leave the field empty. You can make two different entries for each task, one for the case that the task is completed, and one for the case that the task is not completed.
Action Name: Default action that is to be performed when accessing the document directly by using the link of the work item.
If the customizing table IBO_C_WF_ITA contains an entry for a specific task, the system ignores any entry for this task in the system table IBO_C_WF_TAS.
3.3.6 Select Custom Attributes
A task can have custom attributes defined at the task container in the transaction PFTC. These custom attributes must be added to the customizing tables if their values should be read.
Example: The SRM specific task TS40007936 has 4 custom attributes defined:
BOID
BOMODE
BOTYPE
WD_CONFIGID You can select which custom attributes a task should use in the table IBO_C_WF_CAS. You can use transaction PFTC_DIS to find out which attributes are assigned to the relevant task. You need the following entries:
Workflow Task ID: Task ID for which you want to select a custom attribute.
Task Completed: Enter 'X' if the entry is for a completed task. Otherwise leave the field empty.
Custom Attribute Name: Enter the custom attribute you want to use.
Custom Attribute Display Name: Enter the name of the column under which the attribute is displayed. Note that this field is used for compatibility with the Universal Worklist (UWL).
If the customizing table IBO_C_WF_ICA contains one or more entries for a specific task, all entries in the corresponding system table IBO_C_WF_CAS for this task are ignored.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 25
3.3.7 Assign Actions to Tasks
You can assign actions to tasks in the table IBO_C_WF_TTS. You need the following entries:
Workflow Task ID: Task ID to which you want to assign an action.
Task Completed: Enter 'X' if the entry is for a completed task, otherwise leave the field empty.
Action Name: Name of the action as defined under Create or Change Actions. If the customizing table IBO_C_WF_TTA contains one or more entries for a specific task, all entries in the corresponding system table IBO_C_WF_TTS for this task are ignored.
3.3.8 Defining the Standard Actions for Tasks, Notifications and Alerts
Additionally to the actions assigned to a specific task (see chapter 3.3.7), there are standard actions for all tasks, notifications and alerts defined in the respective methods GET_STA_ACTIONS_FOR_TASK_TYPE, GET_ACTIONS_FOR_NOTIFICATION and GET_ACTIONS_FOR_ALERT of class CL_IBO_WF_INBOX_CFG_PROV.
3.3.9 Example: Launch Application via OBN
The use case is, an application should be launched via OBN if clicking on the subject link of a work item. You need to perform the configuration in the following tables:
1. IBO_C_WF_ACS (Actions of Inbox and its action handler definition)
APPL_ID ACTION_ID ACTION_TYPE
<Your Inbox POWL application ID> <Inbox Action, e.g.
LAUNCHWD.SC.REVIEW>
„OBJECTNAVIGATIONLAUNCHER„
2. IBO_C_WF_TAS (Tasks of Inbox and its default action)
APPL_ID TASK_ID DEFAULT_ACTION
<Your Inbox POWL application ID> <workflow task, e.g. TS40007953> = <Default action of this task, e.g.
LAUNCHWD.SC.REVIEW>
3. IBO_C_WF_APS (Parameters needed for performing the action)
APPL_ID ACTION_ID PROP_NAME PROP_VALUE
<POWL application ID>
<Inbox Action, e.g.
LAUNCHWD.SC.REVIEW>
'OBJECTNAME' <BO Name>
<POWL application ID>
<Inbox Action, e.g.
LAUNCHWD.SC.REVIEW>
'OPERATION' <BO Operation>
<POWL application ID>
<Inbox Action, e.g.
LAUNCHWD.SC.REVIEW>
'SYSTEM' <System Alias>
<POWL application ID>
<Inbox Action, e.g.
LAUNCHWD.SC.REVIEW>
'OBJECTVALUE' <OBN Parameters, e.g. SAPSRM_BOTYPE=${ITEM.BOTYPE}&SAPSRM_BOID=${ITEM.BOID}>
4. IBO_C_WF_CAS
In this table you can configure the parameters which value will be read from the Workflow Container; the OBN parameters configured in IBO_C_WF_APS will be replaced by the values.
APPL_ID TASK_ID TASK_COMPLETED
CUST_AT_NAME
<POWL application ID> <workflow task, e.g. TS400079
53>
<e.g. BOTYPE>
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 26
<POWL application ID> <workflow task, e.g. TS400079
53>
<e.g. BOID>
3.3.10 Example: Launch Application via Launch Pad
The use case is, an application should be launched via Launch Pad if clicking on the subject link of a work item. You need to perform the configuration in the following tables:
1. IBO_C_WF_ACS (Actions of Inbox and its action handler definition)
APPL_ID ACTION_ID ACTION_TYPE
<Your Inbox POWL application ID> <Inbox Action, e.g.
LAUNCHWD.SC.REVIEW>
„LAUNCHPADHANDLER „
2. IBO_C_WF_TAS (Tasks of Inbox and its default action)
APPL_ID TASK_ID DEFAULT_ACTION
<Your Inbox POWL application ID> <workflow task, e.g. TS40007953> = <Default action of this task, e.g.
LAUNCHWD.SC.REVIEW>
3. IBO_C_WF_APS (Parameters needed for performing the action)
APPL_ID ACTION_ID PROP_NAME PROP_VALUE
<POWL application ID>
<Inbox Action, e.g.
LAUNCHWD.SC.REVIEW>
' LPD_ROLE' <Launch Pad Role>
<POWL application ID>
<Inbox Action, e.g.
LAUNCHWD.SC.REVIEW>
' LPD_INSTANCE' <Launch Pad Instance>
<POWL application ID>
<Inbox Action, e.g.
LAUNCHWD.SC.REVIEW>
' LPD_APPL_ALIAS' <Launch Pad Application Alias>
<POWL application ID>
<Inbox Action, e.g.
LAUNCHWD.SC.REVIEW>
' LPD_BUS_PARAMS' <Launch Pad Business Parameters, e.g. SAPSRM_BOTYPE=${ITEM.BOTYPE}&SAPSRM_BOID=${ITEM.BOID}>
4. IBO_C_WF_CAS
In this table you can configure the parameters which value will be read from the Workflow Container; the OBN parameters configured in IBO_C_WF_APS will be replaced by the values.
APPL_ID TASK_ID TASK_COMPLETED
CUST_AT_NAME
<POWL application ID> <workflow task, e.g. TS400079
53>
<e.g. BOTYPE>
<POWL application ID> <workflow task, e.g. TS400079
53>
<e.g. BOID>
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 27
3.4 Other Customizing/Features
3.4.1 Assign Task IDs to POWL Types
We assume that a certain role e.g. manager, wants to see certain types of work items (Task ID). To avoid implementation of a feeder class for each role, you can assign Task IDs to POWL Types with the maintenance view IBO_V_WF_TA_P_TY. You need the following entries:
Appl. ID: POWL application ID
POWL Type: POWL Type to which you want to assign a Task ID
Task ID: Task ID that shall be available as a search criteria for this POWL Type, including prefix TS
Note: Customers may use view cluster (SM34) IBO_VC_TA_P_TY_C for overriding the entries in the system table. They can add additional Taks IDs to POWL Types as well as hiding entries from the system table.
If Task IDs are assigned to a POWL Type, Task ID is displayed as a combobox in search criterias. Only Task IDs that are assigned to this POWL type can be used while defining queries. Leaving the field empty shows all Tasks that are assigned to this POWL Type.
If there are no Task IDs assigned to a POWL Type, Task ID is displayed as an input field with an appropriate value help. Leaving the field empty shows all Tasks of this user.
After assigning / unassigning Task IDs to POWL Types it might be necessary to delete your queries from database using report POWL_D01.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 28
3.4.2 BAdI to customize the work item details area
The BAdI BD_IBO_INBOX_WI_DETAILS can be implemented to customize the work item details area. The interface IF_EX_IBO_INBOX_WI_DETAILS has the following methods:
SHOULD_HIDE_PRIORITY
Based on the given work item information, this method will decide if the „Priority‟ field should be visible
SHOULD_HIDE_SENT
Based on the given work item information, this method will decide if the „Sent‟ field should be visible
SHOULD_HIDE_STATUS
Based on the given work item information, this method will decide if the „Status‟ field should be visible
MODIFY_TEXT_IN_WI_DETAILS_AREA
Modify the text in details area with the following parameters
Exporting Parameter Type Description
EV_ADDITIONAL_TASK_DESCRIPTION STRING Additional task description showed in the details area
ET_ADDITIONAL_TEXT_FIELDS IBO_INBOX_T_TEXT_AND_LABEL
Additional text fields and its label showed in details area
EV_ADDITIONAL_TASK_DESCRIPTION ABAP_BOOL Decide if the standard task description should be hidden in the details area
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 29
3.5 Webdynpro Configuration
3.5.1 Create the Webdynpro component configuration
Create a Webdynpro component configuration for the Webdynpro component IBO_WDC_INBOX and set the new POWL application ID. This is required for finding the correct POWL configuration (e.g. SRM uses the POWL application ID „SAPSRM_IBO_INBOX‟).
Figure 15: Create Webdynpro Component Configuration
3.5.2 Create the Webdynpro Application Configuration
Create a Webdynpro application configuration for the Web Dynpro application IBO_WDA_INBOX (package IBO_INBOX_UI) and set the Webdynpro component configuration for WD component IBO_WDC_INBOX and POWL_UI_COMP (e.g. SRM uses a Webdynpro component component configuration „/SAPSRM/IBO_WDCC_INBOX‟ which is referenced in Webdynpro application configuration „/SAPSRM/IBO_WDAC_INBOX‟).
Figure 16: Create Webdynpro Application Configuration
3.5.3 Start the application
Start the Webdynpro application IBO_WDA_INBOX with WDCONFIGURATIONID = <the new Webdynpro application configuration>.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 30
3.6 Integrate Inbox in Business Client for Browser
3.6.1 Create the role
In the following figure the inbox has been integrated in the Business Client for Browser.
To archieve this you need to create a role in the transaction PFCG and maintain your inbox in the menu.
The following attributes should also be maintained for this role.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 31
3.6.2 Mandatory Navigation Customizing
3.6.2.1 Execute Action in SAPGUI
If there is no default action for certain workflow task configured in the inbox, we will start the SAPGUI transaction SWNWIEX to process the selected work item as fallback. You should add the transaction SWNWIEX in the role and maintain the followings in the Popup „Details for NetWeaver Business Client‟:
Business Type = SWF_WIOBN
Method = NAVIGATE
Parameter Mapping:
Transaction SWNWIEX Value SWF_WIOBN.NAVIGATE
P_NOSECM {P_NOSECM}
P_ACTION {P_ACTION}
P_WI_ID {P_WI_ID}
Force OBN Call = „X‟
Skip Selection Screen = „X‟
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 32
3.6.3 Optional Navigation Customizing
Generally OBN is used for inter-window navigation. If a user action should trigger OBN navigation, the corresponding OBN parameters (System/BO Name/BO Operation/etc.) should be provided by the method HANDLE_SPECIAL_ACTION in exporting parameter E_PORTAL_ACTIONS of the implemented POWL feeder in 3.1. The NetWeaver Business Client will look into the role maintained in PFCG of the current user and determine which application should be started based on the BO Name and BO operation.
For example, if an SRM user clicks on the button „Details‟, the shopping cart should be opened in a new window through OBN. Let‟s see how to realize this requirement.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 33
First of all, the method HANDLE_SPECIAL_ACTION of the POWL feeder will return E_PORTAL_ACTIONS of type POWL_FOLLOW_UP_STY as following:
BO_NAME = sc
BO_OP_NAME = detailprof
Then based on this OBN parameters the business client will find out the associated application, in PFCG.
This application will then be started as configured in the following:
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 34
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 35
4 FAQ
1. How to restrict the result list of inbox in general?
You can override the method IF_POWL_FEEDER~GET_OBJECTS in the standard feeder so that filtering can be performed additionally by the subclasses of inbox feeder, see chapter 3.1.6.
2. How to use OBN navigation with parameters that are not available in the work item container?
You have to configure a FUNCTIONMODULEACTIONHANDLER action. Implement a function module and assign it to your action. The function module should have an exporting parameter OBN_TARGET of type IBO_S_WD_UI_OBN. Of course, the function module may also have import parameters that can be filled with work item container values and used in your function module e.g. work item ID.
In your function module fill the export structure OBN_TARGET with appropriate values. For reference, you can look at method EXECUTE_ACTION_WITH_PARAMS of class CL_IBO_CH_WD_INB_ACTHDL_ON on how to work with this structure.
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 36
5 APPENDIX
5.1 Standard Actions
5.1.1 Standard Actions in Work Item POWL
The following actions are provided as standard buttons in the work item POWL.
Action Constant Description
Resubmit if_ibo_inbox_feeder_c=>gc_action_resubmit Resubmit work item
End Resubmission if_ibo_inbox_feeder_c=>gc_action_end_resubmission End the resubmitssion of work item
Forward if_ibo_inbox_feeder_c=>gc_action_forward Forward work item
Assign To Me if_ibo_inbox_feeder_c=>gc_action_assigntome Assign the work item for me
Cancel Assignment if_ibo_inbox_feeder_c=>gc_action_cancelassignment Cancel the assignement of work item
Substitution if_ibo_inbox_feeder_c=>gc_action_substitution Maintain substitution rule
Refresh if_ibo_inbox_feeder_c=>gc_action_refresh Refresh the list
5.1.2 Standard Actions in Alert POWL
The following actions are provided as standard buttons in the Alert POWL.
Action Constant Description
Subscribe if_ibo_inbox_feeder_c=>gc_action_subscrib Subscribe Alert Category
Forward if_ibo_inbox_feeder_c=>gc_action_forward_alert Forward Alert
Complete if_ibo_inbox_feeder_c=>gc_action_complete_alert Complete Alert
Refresh if_ibo_inbox_feeder_c=>gc_action_refresh Refresh the list
5.1.3 Standard Actions in Notification POWL
The following actions are provided as standard buttons in the Notification POWL.
Action Constant Description
Delete if_ibo_inbox_feeder_c=>gc_action_delete_notification Delete Notification
Resubmit if_ibo_inbox_feeder_c=>gc_action_resubmit Resubmit Notification
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 37
Refresh if_ibo_inbox_feeder_c=>gc_action_refresh Refresh the list
5.2 Adapt the layout and pushbuttons of POWL in SRM
Start the transaction /SAPSRM/WF_CUST in SRM to adapt the layout and pushbuttons of the Personal Object Worklist (POWL) for each POWL Feeder Type. Note the following naming conventions for the feeder types that SAP provides for the POWLs in the SRM inbox:
The names of the feeder types start with "SAPSRM_IBO_FEEDER_”.
The name of the feeder type ends in a character string that indicates to which the feeder type refers. Examples:
SAPSRM_IBO_FEEDER_WI: Feeder type for an work items
SAPSRM_IBO_FEEDER_ALERT: Feeder type for alerts
5.2.1 Adjusting the initial table layout
1. In the dialog structure, choose Feeder Types. 2. Select a feeder type. 3. In the dialog structure, choose Field Catalog. 4. To add a table column for this feeder type, choose New Entries. To change a table column, select an entry from the Column ID column and choose Details. You can enter the following data:
Column: technical name of the field
Header: column heading that is displayed for this field in the POWL
Tooltip: defines the tooltip text
Display Type: output format of the field, for instance, 'Text' for fields that contain text only, 'Link to action' for fields that contain a link to the object details, or 'Checkbox'.
Position: defines the sequence of columns in the POWL from left to right; columns are displayed in ascending order depending on the position number you assign here.
Length You can also select the following indicators:
Fixed Column: column is visible all the time
Filtering Allowed: enables filtering for this column
Sorting Allowed: enables sorting for this column
Visible Column: column is visible for the user Hidden Column: column is displayed in the field catalog and can be activated by the user Technical Column: column is hidden and cannot be activated by the user
Ref. TextField: data source for columns that have display type 'Textview' or 'Link to action'
Ref. Checkbox: data source for columns that have display type 'Checkbox'
5.2.2 Configuring the pushbuttons
1. In the dialog structure, choose Actions. 2. To add a pushbutton for the selected feeder type, choose New Entries. To change a pushbutton, select an entry from the Action ID column and choose Details. You can enter the following data:
Action ID: unique identifier of the pushbutton
Action Text: pushbutton label
Tooltip: defines the tooltip text
Cardinality: defines whether an entry in the table needs to be selected before choosing this pushbutton
Display Area: defines the area of the screen where the pushbutton is displayed
Position: defines the order of the pushbuttons in the toolbar You can also select the following indicators:
Enabled: defines whether the pushbutton is enabled or not
Separator: defines whether the pushbutton is separated from other pushbuttons by a horizontal line
Suite Renovation
Cookbook for Reuse Inbox from Business Suite Foundation Layer Seite 38
3. If you want to group several actions, you can use pushbuttons with dropdown boxes containing several actions. To do so, select an action and choose Action Dropdowns in the dialog structure. 4. Enter the action IDs of the actions as well as the corresponding texts that you want to appear in the dropdown box.