You are on page 1of 38

Ralf Kestler

Huaiyang Mao
Volker Guzman
Jrg 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

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

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 2

Suite Renovation

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

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 3

Suite Renovation

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.
Inbox
SRB-EBP-INB

WD Inbox
POWL

WD
Substitute

Action
Handler

R
R

Refresh
Handler

Configuration
Provider

Feeder
...
...

Inbox Facade

Subst
Facade

Figure 1: Inbox Architecture Overview

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 4

Suite Renovation

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 dont 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

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 5

Suite Renovation

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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 6

Suite Renovation

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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 7

Suite Renovation

Figure 3: SRM Reuse Architecture Overview

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 8

Suite Renovation

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
et_actions = lt_actions ).

IMPORTING
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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 9

Suite Renovation

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
IMPORTING

iv_type
= iv_type
iv_langu
= iv_langu
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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 10

Suite Renovation

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
DATA
DATA
DATA
DATA
DATA
DATA

if_powl_feeder~get_objects.
lt_results
TYPE your_ibo_t_inbox_workitem.
lr_result
TYPE REF TO your_ibo_s_inbox_workitem.
lt_container
TYPE swrtcont.
lr_container
TYPE REF TO swr_cont.
lt_messages
TYPE powl_msg_tty.
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

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 11

Suite Renovation

i_selcrit_values
i_langu
i_visible_fields
IMPORTING
e_results
e_messages
.

= i_selcrit_values
= sy-langu
= i_visible_fields
= lt_results
= 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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 12

Suite Renovation

Create a context ID
(APPLID)
Transaction:
FPB_MAINTAIN_HIER

Register the POWL Feeder


Type
Transaction:
POWL_TYPE

Make the POWL Feeder Type


visible to context ID
Transaction:
POWL_TYPER
(& POWL_TYPEU)

Create a POWL Query


Transaction:
POWL_QUERY

Create a POWL Category


Transaction:
POWL_CAT

Make the POWL Query


visible to the Application and
determine where the POWL
Query should be placed.
Transaction:
POWL_QUERYR
(& POWL_QUERYU)
Figure 6: POWL Customizing Transaction

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 13

Suite Renovation

3.2.1

Create POWL application for your inbox

If you want to reuse the standard inbox with configuration only, you dont 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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 14

Suite Renovation

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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 15

Suite Renovation

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 wont be available too.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 16

Suite Renovation

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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 17

Suite Renovation

Figure 11: Create POWL Query in Transaction POWL_QUERY

Query Parameters
Query Parameters for represented Query have to be filled.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 18

Suite Renovation

Figure 12: Set Query Parameters in Transaction POWL_QUERY

Query Settings
Query Settings for represented Query have to be maintained.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 19

Suite Renovation

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.
.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 20

Suite Renovation

Figure 14: Assign POWL Query to POWL Application in the Transaction POWL_QUERYR

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 21

Suite Renovation

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

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 22

Suite Renovation

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_wii
d=${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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 23

Suite Renovation

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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 24

Suite Renovation

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

<POWL application ID>

<workflow
task, e.g.
TS400079
53>

TASK_COMP
LETED

CUST_AT_NAME
<e.g. BOTYPE>

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 25

Suite Renovation

<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.B
OID}>

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_COMP
LETED

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>

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 26

Suite Renovation

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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 27

Suite Renovation

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

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 28

Suite Renovation

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>.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 29

Suite Renovation

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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 30

Suite Renovation

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

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 31

Suite Renovation

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. Lets see how to realize this requirement.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 32

Suite Renovation

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:

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 33

Suite Renovation

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 34

Suite Renovation

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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 35

Suite Renovation

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

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 36

Suite Renovation

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

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 37

Suite Renovation

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.

Cookbook for Reuse Inbox from Business Suite Foundation Layer

Seite 38

You might also like