Workflow Adapter setup
When integrating SAP and OneList there are two basic options:
Surfacing standard SAP Workflow tasks in OneList. Executing the actions in OneList then updates the Workflow or underlying SAP / business object.
Surfacing actions from a FAB Workflow in OneList. Executing the actions in OneList then updates the FAB Form workflow status.
Your company may use both options, or only one - either way, you will have to do some common configuration / setup for the processes to work. For example, the background job that needs to run to manage the communication between SAP and OneList will have to be set up in the system / client where the workflows are running.
Background job - setup (Mandatory)
This step needs to be completed whether you use OneList with standard SAP workflows, or FAB workflows, or both.
Define a Scheduler background job via SM36 with the following values:
Note: Do this in the client where you are executing your development, testing (Dev Unit Test or QAS), and in the live/productive client at go-live.
Step 1 | Enter the Job Name , for example |
Step 2 | Enter the Job Class - B or C (Medium / Low priority) |
Step 3 | Press the Step button |
Step 4 | Enter the ABAP Program Name:
|
Step 5 | Enter the User - e.g.
Press the Save button |
Step 6 | Press the Start conditions button Press the Date/Time button and enter the scheduled start date and time Press the Period Values button and choose Other period from the options Enter 1 in the Minute(s) field
Press the Save button to complete the setup Once the OneList Scheduler background job has been created, it will automatically schedule the OneList Adapter jobs defined in the 'OneList Job configuration' entries, discussed below (or the |
Roles and Authorizations for Background Processing
This role contains non-critical basis authorizations for all users, including job creation and job release.
Authorization Object | Fields | Value | Description |
---|---|---|---|
|
|
| Authorized user when scheduling |
|
|
| User is batch administrator The value "Y" of BTCADMIN enables all operations for any jobs across clients. |
For more information, you may refer to the SAP Help https://help.sap.com/doc/saphelp_snc70/7.0/en-US/4e/c48f2468ac35fde10000000a42189e/content.htm?no_cache=true and SAP Note 101146.
Standard SAP Workflow integration with OneList (Optional)
Not everyone will integrate a standard SAP Workflow with OneList. If you are using only FAB Workflows, then skip this section.
A custom SAP Workflow adapter can be used to facilitate the approval process for an existing SAP Workflow. This Adapter will provide a link between SAP and OneList, sending decision tasks to OneList and retrieving the associated actions (decisions made) from OneList, then updating the workflow (or underlying business objects) with these decisions.
This section will detail the steps you need to follow for setting up such a custom SAP Workflow adapter that can connect to OneList V6.
This example is based on a standard SAP Purchase Order workflow.
The SAP Package /IQX/ONELIST_ADAPTER contains most of the relevant development objects that will be used to set up the custom adapter.
Prerequisites:
OneList v6 Adapter framework is installed on your SAP Backend system
SAP Workflow already completely built and functional. You will need to know the decision task number (TSxxxxxxxx) so that you can configure the Adapter to read the task information.
SAP Development tasks
Create a custom implementation class (this will become your custom SAP OneList Adapter) based on the IQX Adapter base class:
Use the Class Builder in SAP (t-code
SE24
) to open the class/IQX/CL_SAP_WL_ADPT
.From the menu bar, select Edit → Create Subclass.
Enter the name of the subclass in the Class field.
e.g.
ZCL_OL_PO_ADAPTER
Enter a short description in the Description field.
e.g. Purchase Order adapter for OneList
Choose Save.
Enter the Package and choose Save again.
Redefine the following inherited methods (click on the method for the implementation example):
EXECUTE_ACTION - this method is called by the Adapter base class/es when the Adapter receives information from OneList.
GET_ATTCHMENT_CONTENT - this method is called by the Adapter base class/es methods during the sync process (sending tasks to OneList)
GET_OBJECT_DETAILS - this method is called by the Adapter base class/es methods during the sync process (sending tasks to OneList)
Create additional 'helper' methods (called by GET_OBJECT_DETAILS) to retrieve the correct PO information, as well as set up the Action buttons in OneList (this will vary from scenario to scenario - in our example, we are using a Purchase Order. This could be for a Parked Document, Purchase Requisition, Work Order or any other SAP Workflow):
Check, Save and Activate the implementation class.
OneList SAP Adapter framework configuration
Maintain the OneList configuration tables via transaction /IQX/OL_CONFIG
.
Note 1: If the above-mentioned transaction does not exist, then follow the instructions for the previous version below.
Note 2: Use the configuration / development development client, and transport this configuration to subsequent systems like QA and the Productive system. If you have a development Unit Test client, use SCC1 to copy the config from the configuration client..
Note that there is a sequence to be followed, as per the tree structure, shown below:
OneList Endpoint configuration
Add entries for each of the systems in your SAP landscape. When you save this information, SAP will prompt you for a transport request. This will enable you to transport the entries to your Quality Assurance and Productive systems, as well as importing into your Development Unit Testing Client.
Notes:
IQX will provide the values that need to be entered for the OneList URL and API Key.
All entries should be marked as 'active' under normal circumstances. The OneList Adapter will dynamically determine the correct URL and API key based on the system that it is running in. Only in unusual situations will the endpoint be marked as inactive, but then the Adapter will not be able to call the OneList instance in the relevant system.
There is a transaction (/IQX/OL_ENDPOINT
) that can be run in the 'active' clients (Unit Test, QA and PRD) to maintain these values directly in the active/target system. This should only be used when emergency maintenance needs to be performed (DOS attack, etc.). The changed values should be copied back into the configuration client and added to a new transport.
In the transaction /IQX/OL_ENDPOINT
there is a 'Connection Test' option to check for the correctness of the URL and API key. This can be executed in each system:
or, for example,
In FAB 3.3 release, the framework was improved should be resilient to terminate the long-running job after a period of time, i.e. 10hrs ~ 36000 seconds. This will make stuck background jobs to be restarted so next scheduler can continue on another round of background jobs. Configuring time-out period per OPS type would look like this. (If no value is specified, the default value is 86400 seconds/1day).
OneList Operation jobs configuration
Since IQX Component version 3.2.3, OneList framework introduces new operation job configuration in which the framework will check whether it is required to create the subsequent scenario based adapter jobs based on the available data of each TaskType/Adapter.
OneList Integration configuration
Note that you will (only once) have to configure a User integration entry. You may end up with multiple processes integrating with OneList, each of which will require their own entry here (and follow-on entries - see below). It does not matter how many processes you integrate with OneList, you will only need to do this step once - the processes all share the user integration. Add an entry to synchronise the SAP users with OneList, as follows (and note that the Task ID and the Fab Layout form entries remain empty):
There is no need to specify a Workflow task or FAB form for the user synchronisation.
Next, add an entry for the SAP Workflow process you want to integrate between SAP and OneList. If you are integrating OneList with an SAP Workflow, you will need to know the Standard Task ID (use the Workflow Builder (
SWDD
) or transactionPFTS
to get this information) that contains the processing steps - in the example below, it is called "SAP WF Process
", linking to Workflow taskTSxxxxxxxx.
When you add an entry, you will have to specify the following:
Paging Size" refers to the number of tasks that will be sent to OneList at one time - if this number is too large, then your integration activities may suffer from performance degradation.
OneList Job Configuration
User Sync
Highlight the User integration entry (configured above, and remember this is only done once):
Then double-click the 'OneList Job configuration' entry in the tree structure. Configuring this step allows the Adapter framework to communicate with the OneList instance, specifically for user integration. IQX has provided a standard user integration Adapter class (/IQX/CL_OL_SYNC_USERS
), but in rare circumstances your organisation may need to alter the behaviour of this class. In that case, you will have to create a subclass of this class (see step 1 above, under SAP Development tasks) and override the relevant methods to suit your needs. In that case, instead of /IQX/CL_OL_SYNC_USERS
, use the name of your subclass in the below configuration steps.
You will need to define entries for the SYNC_DELTA
OneList User Integration APIs/Actions. For each entry, specify:
Adapter Class name: /IQX/CL_OL_SYNC_USERS, or your user integration subclass
Frequency in minutes: how often the background job calling this OneList API should run. We recommend between 5 and 30 minutes.
Active - A flag to set whether this job should run. During specific scenarios (shutdown, data take-on, etc.) you may want to disable individual API calls. Normal value will be ticked.
Since IQX Component version 3.3 the following methods are supported by class /IQX/CL_OL_SYNC_USERS:
Methods | Description |
|
---|---|---|
SYNC_DELTA | Sync Delta user by SAP ID mapping |
|
SYNC_DELTA_EMAIL | Sync Delta user by Email mapping |
|
SYNC_DELTA_V2 | Sync Delta user using new OL API /GetUserSync with mapping is configured via /IQX/OL_CONFIG transaction in OneList Global Settings section |
|
SYNC_CHANGE | Sync Change user |
|
SYNC_ALL_DELEGATIONS | Sync delegation from OneList to SAP and vice versa. |
|
The end result should look something like this:
Integration for SAP WF Process
Now highlight the process integration point for which you want to configure the background jobs ("SAP WF Process
" in this example). Remember that there can be multiple processes integrated with OneList - these steps need to be repeated for every process:
Then double-click the 'OneList Job configuration' entry in the tree structure. Configuring this step provides a link between your SAP Adapter class (for example ZCL_OL_PO_ADAPTER, created above) and the IQX OneList SAP Adapter framework. For each entry defined here, the Adapter framework will create a background job at the specified frequency, thereby pushing / pulling data to and from OneList. You will need to define entries for the following 4 OneList Integration APIs/Actions:
SYNC_ACTIONS
SYNC_ATTACHMENTS
SYNC_CHANGED_TASK_LIST
SYNC_DELTA_TASK_LIST
For each entry, specify:Adapter Class name: your class created above, for example ZCL_OL_SRVC_ENTRY_SHEET_ADPT
Frequency in minutes: how often the background job calling this OneList API should run. We recommend between 1 and 5 minutes at most.
Active - A flag to set whether this job should run. During specific scenarios (shutdown, data take-on, etc.) you may want to disable individual API calls. Normal value will be ticked.
The end result should look something like this:
With the above in place, the background job defined in the first step will create a background job per integration task type, at the specified frequency. The 'SYNC*' methods (described above) will call the methods you have redefined in your custom Adapter class, thereby enabling the extraction of data from the SAP Workflow / SAP objects (which will be sent to OneList) and the return flow of the OneList Actions to the SAP Workflow / SAP Objects.
OneList Delegation Profiles
Delegation Profiles that should be synchronized to OneList can be configured in transaction /IQX/OL_CONFIG.
Key | Value |
---|---|
Workflow Type | WF - Workflow |
Substitution Profile | Defines the Substitution Profile maintained in SPRO that will be used by OneList. |
Active | Flag that sets the Delegation Profile as active when ticked or inactive when unticked. |
OneList Global Settings
OneList Global Settings can be configured in transaction /IQX/OL_CONFIG.
Key | Value |
---|---|
EMAIL_APPR_ENABLED | Flag that sets the email approval enabled if the value “X” or disabled if left blank. |
EMAIL_MAX_AGE_DAYS | Defines the maximum age of the email. |
EMAIL_MAX_FILESIZE | Defines the maximum size of the email. |
EMAIL_SOURCE | Possible values:
|
ONELIST_USER_ID - is only available since IQX Version 3.3 along with OneList version 8.0. | Possible values:
|
FAB Workflow integration with OneList (Optional)
SAP Development tasks
Create a FAB Form with a Workflow (in this example, we will refer to a FAB app called
IQX_FAB_APP
).
OneList FAB Adapter framework configuration
Maintain the OneList configuration tables via transaction /IQX/OL_CONFIG
.
Note 1: Parts of this section may have been done already if you also use standard SAP Workflow with OneList.
Note 2: If the above-mentioned transaction does not exist, then follow the instructions for the previous version below.
Note 3: Use the configuration / development development client, and transport this configuration to subsequent systems like QA and the Productive system. If you have a development Unit Test client, use SCC1 to copy the config from the configuration client..
Note that there is a sequence to be followed, as per the tree structure, shown below:
OneList Endpoint configuration (this may be complete already)
Add entries for each of the systems in your SAP landscape. When you save this information, SAP will prompt you for a transport request. This will enable you to transport the entries to your Quality Assurance and Productive systems, as well as importing into your Development Unit Testing Client.
Notes:
IQX will provide the values that need to be entered for the OneList URL and API Key.
All entries should be marked as 'active' under normal circumstances. The OneList Adapter will dynamically determine the correct URL and API key based on the system that it is running in. Only in unusual situations will the endpoint be marked as inactive, but then the Adapter will not be able to call the OneList instance in the relevant system.
There is a transaction (/IQX/OL_ENDPOINT
) that can be run in the 'active' clients (Unit Test, QA and PRD) to maintain these values directly in the active/target system. This should only be used when emergency maintenance needs to be performed (DOS attack, etc.). The changed values should be copied back into the configuration client and added to a new transport.
In the transaction /IQX/OL_ENDPOINT
there is a 'Connection Test' option to check for the correctness of the URL and API key. This can be executed in each system:
or, for example,
OneList Integration configuration
Note that you will (only once) have to configure a User integration entry. You may end up with multiple processes integrating with OneList, each of which will require their own entry here (and follow-on entries - see below). It does not matter how many processes you integrate with OneList, you will only need to do this step once - the processes all share the user integration. Add an entry to synchronise the SAP users with OneList, as follows (and note that the Task ID and the Fab Layout form entries remain empty):
There is no need to specify a Workflow task or FAB form for the user synchronisation.
Next, add an entry for the FAB process you want to integrate between SAP and OneList. You will need to specify the App name (IQX_IM_APR in this example).
OneList Job Configuration (part of this may be complete already, especially pertaining to the USER_SYNC entry)
User Sync
Highlight the User integration entry (configured above, and remember this is only done once):
Then double-click the 'OneList Job configuration' entry in the tree structure. Configuring this step allows the Adapter framework to communicate with the OneList instance, specifically for user integration. IQX has provided a standard user integration Adapter class (/IQX/CL_OL_SYNC_USERS
), but in rare circumstances your organisation may need to alter the behaviour of this class. In that case, you will have to create a subclass of this class (see step 1 above, under SAP Development tasks) and override the relevant methods to suit your needs. In that case, instead of /IQX/CL_OL_SYNC_USERS
, use the name of your subclass in the below configuration steps.
You will need to define entries for the SYNC_DELTA
OneList User Integration APIs/Actions. For each entry, specify:
Adapter Class name: /IQX/CL_OL_SYNC_USERS, or your user integration subclass
Frequency in minutes: how often the background job calling this OneList API should run. We recommend between 5 and 30 minutes.
Active - A flag to set whether this job should run. During specific scenarios (shutdown, data take-on, etc.) you may want to disable individual API calls. Normal value will be ticked.
Since IQX Component version 3.3 the following methods are supported by class /IQX/CL_OL_SYNC_USERS:
Methods | Description |
|
---|---|---|
SYNC_DELTA | Sync Delta user by SAP ID mapping |
|
SYNC_DELTA_EMAIL | Sync Delta user by Email mapping |
|
SYNC_DELTA_V2 | Sync Delta user using new OL API /GetUserSync with mapping is configured via /IQX/OL_CONFIG transaction in OneList Global Settings section |
|
SYNC_CHANGE | Sync Change user |
|
SYNC_ALL_DELEGATIONS | Sync delegation from OneList to SAP and vice versa. |
|
The end result should look something like this:
Now highlight the process integration point for which you want to configure the background jobs ("FAB_APP
" in this example). Remember that there can be multiple processes integrated with OneList - these steps need to be repeated for every process:
Then double-click the 'OneList Job configuration' entry in the tree structure. Configuring this step provides a link between the your form, the IQX FAB Adapter class (/IQX/CL_FAB_ADPT_V2
) and the IQX OneList SAP Adapter framework. For each entry defined here, the Adapter framework will create a background job at the specified frequency, thereby pushing / pulling data to and from OneList. You will need to define entries for the following 4 OneList Integration APIs/Actions:
SYNC_ACTIONS
SYNC_ATTACHMENTS
SYNC_CHANGED_TASK_LIST
SYNC_DELTA_TASK_LIST
SYNC_BUSINESS_OBJECTS
For each entry, specify:Adapter Class name: the IQX FAB Adapter class
/IQX/CL_FAB_ADPT_V2
Frequency in minutes: how often the background job calling this OneList API should run. We recommend between 1 and 5 minutes at most.
Active - A flag to set whether this job should run. During specific scenarios (shutdown, data take-on, etc.) you may want to disable individual API calls. Normal value will be ticked.
The end result should look something like this:
With the above in place, the background job defined in the first step will create a background job per integration task type, at the specified frequency. The 'SYNC*' methods (described above) will call the methods in the IQX FAB Adapter class, thereby enabling the extraction of data from the FAB Form (which will be sent to OneList) and the return flow of the OneList Actions to the FAB Form.
Older version of the SAP Adapter
Note: Ignore this section if you used transaction /IQX/OL_CONFIG above.
Use transaction SM30 to edit the following tables directly, as follows;
/IQX/OL_TASK_DEF - Task Definition
Create a new entry with the following values:
Job Type - The description of the type of task e.g. PO_APPROVAL
O.L.Task ID - The workflow task ID for the object you would like to retrieve the worklist items. e.g. TS20000166
Project Name - optional
Number - Page size (tasks processed in one run)
/IQX/OL_JOB_DEF - Background Job Definition (more info on this - the entries in this table will be used to automatically create background jobs that will run to execute functionality)
Create an entry for user sync
SYNC USER
Job Type: SYNC_USER
Class - /IQX/CL_OL_SYNC_USERS
Subcomponent - SYNC_USER_REQUEST
Short Description - Synchronize SAP users to OneList
Freq in mins - 5|
Create a new entry for each of the following values:
SYNC ACTIONS
Job Type - Use the job type defined in the previous step e.g. PO_APPROVAL
Class - Name of the implementation class created in step 1.c. e.g. ZCL_OL_PO_ADAPTER
Subcomponent - SYNC_ACTIONS
Short Description - Synchronize adapter task actions to OneList
Freq in mins - 2
SYNC ATTACHMENTS
Job Type - Use the job type defined in the previous step e.g. PO_APPROVAL
Class - Name of the implementation class created in step 1.c. e.g. ZCL_OL_PO_ADAPTER
Subcomponent - SYNC_ATTACHMENTS
Short Description - Synchronize attachments to OneList
Freq in mins - 2
SYNC CHANGED TASK
Job Type - Use the job type defined in the previous step e.g. PO_APPROVAL
Class - Name of the implementation class created in step 1.c. e.g. ZCL_OL_PO_ADAPTER
Subcomponent - SYNC_CHANGED_TASK
Short Description - Synchronize the changed task list to OneList
Freq in mins - 2
SYNC DELTA TASK LIST
Job Type - Use the job type defined in the previous step e.g. PO_APPROVAL
Class - Name of the implementation class created in step 1.c. e.g. ZCL_OL_PO_ADAPTER
Subcomponent - SYNC_DELTA_TASK_LIST
Short Description - Synchronize detailed task list to OneList (delta tasks)
Freq in mins - 2
/IQX/OL_ENDPOINT - OneList Service Endpoint
Create a new entry with the following values:
OneList URL - Specify the URL endpoint configured for OneList
OneList Server App Path: /onelistserver/api/DataSync
SSL Client Identity: e.g. ANONYM
API Key: The unique API key used by the endpoint
Active: Checked
Suggested schedule for background jobs:
Sub Component | Frequency |
---|---|
SYNC_ACTIONS | Every 2 minutes |
SYNC_ATTACHMENTS | Every 2 minutes |
SYNC_DELTA_TASK_LIST | Every 2 minutes |
SYNC_CHANGED_TASK_LIST | Every 2 minutes |
SYNC_USER | Every 5 minutes |
Note: Make sure you return to the step above to complete the creation of the background job.