Business Scenario

In order to manage and optimize the procurement process in Public sector area a detailed reporting on the Workflow Process is needed. To be able to measure and analyze how long the process takes, where roadblocks may be occurring, and where there may be opportunities for improvement. 

The following types of workflow data required in BW to do reporting on the workflow statuses.

       For each RFx, RFx Response and Contract:

       When the document was created and who created

       For each step in the approval process, who submitted it, who received it, what the outcome was, and how long it took to accomplish the approval step (measured by the elapsed time between when it was first submitted and when a decision was made)Total amount of time taken to process the document.

       In addition, it is desirable to be able to incorporate relationships between documents into the workflow data, so that workflow across all of the documents related to procurement can be analyzed. Ex:To know what RFx Responses were tied to an RFx, as well as any contracts or POs that resulted from the responses so that we can measure and analyze how long it takes  to go from an RFx through to one or more POs or contracts

       The implementation needs to address the complexity of the process, in that there are several different scenarios that can occur, including

       The most common scenario, which is one RFx leading to 1 or more responses, with each response leading to 0 to many POs or contracts

       A contract can be entered without an RFx having been done in the system

       A contract can be tied to more than one RFx

       An RFx may result in a follow-up RFx .

 

To achieve the above business requirement, ccBPM integration with BW is required.All the below data modeling is done based on the requirement mentioned above.

Data Sources
0BPM_WIHEAD
0BPM_LOGHIST
0BPM_OBJREL
ZWF_REL_DOCS –Generic Extractor based on Function Module
ZSRM_DOC_GETDETAIL – Generic Extractor based on  Function Module


Data Store Objects

ZWF_DS01  Work Flow Items
ZWF_DS02  Work Flow Details
ZWF_DS03  Work item object relation information
ZWF_RDOC WF Related Documents (Newly Created DSO)
ZSRM_DET SRM Document Details   (Newly Created DSO)

 

Info Sets

ZWF_IS01

This info set will be used to create queries to find the workflow execution timings for each single document with the departmental approvals, approver name, purchase org, etc. Execution timings can be converted to Hours, minutes and seconds based on the client need.

ZWF_DS01  Work Flow Items
ZWF_DS03  Work item object relation information
ZSRM_DET SRM Document Details

ZWF_IS02

ZWF_DS01  Work Flow Items

ZWF_DS03  Work item object relation information

ZSRM_DET SRM Document Details

ZWF_RDOC WF Related Documents

This Infoset will be used to create queries to find the workflow execution timings for the related documents with the departmental approvals, approver name, purchase org, etc. Execution timings can be converted to Hours, minutes and seconds based on the client need.

Ex : Rfx – RFx’s response  —  Contract.

Data Model

Data source Enhancements

Following data sources can be enhanced based on the requirement and the fields needed in the report.

0BPM_WIHEAD – Enhancement can be done to get the approver name of the work item by calling the Function Module SUSR_USER_ADDRESS_READ

0BPM_OBJREL – Enhancement can be done to find the approving department based on the business object by reading the workflow configuration table. We made the customization as such to pull the approval steps of the workflow not all the workflow steps.

Generic Extractors

1. ZWF_REL_DOCS (Custom FM extractor, any nomenclature can be used)

This extractor is based on the function module RSAX_BBP_PROCDOC_GETDETAIL to extract related documents for a given RFx/Response/Contract.

 

Inputs 
  1. Create an extract structure ZWF_REL_EXTRACT with the following fields:
Component Component Type Data Type Length
GUID_A BBP_GUID RAW

16

OBJID_A BE_OBJECT_ID CHAR

20

DOCDATE_A BBP_DOC_DATE DATS

8

OBJTYPE_A SWO_OBJTYP CHAR

10

LOGSYS_A LOGSYS CHAR

10

ROLETYPE_A ROLETYPE CHAR

10

GUID_B BBP_GUID RAW

16

OBJID_B BE_OBJECT_ID CHAR

20

DOCDATE_B BBP_DOC_DATE DATS

8

OBJTYPE_B SWO_OBJTYP CHAR

10

LOGSYS_B LOGSYS CHAR

10

ROLETYPE_B ROLETYPE CHAR

10

RELATED_RFX BE_OBJECT_ID CHAR

20

RELATED_RESPONSE BE_OBJECT_ID CHAR

20

  1. Create a function module ZRSAX_BBP_PROCDOC_GETDETAIL with the following interface:

IMPORTING

Parameter Name Associated Type Default Value
I_REQUNR SRSC_S_IF_SIMPLE-REQUNR                     
I_DSOURCE SRSC_S_IF_SIMPLE-DSOURCE                     
I_MAXSIZE SRSC_S_IF_SIMPLE-MAXSIZE                     
I_INITFLAG SRSC_S_IF_SIMPLE-INITFLAG                     
I_READ_ONLY SRSC_S_IF_SIMPLE-READONLY                     
I_REMOTE_CALL SBIWA_FLAG SBIWA_C_FLAG_OFF

TABLES

Parameter Associated Type
I_T_SELECT SRSC_S_IF_SIMPLE-T_SELECT
I_T_FIELDS SRSC_S_IF_SIMPLE-T_FIELDS
E_T_DATA ZWF_REL_EXTRACT

Processing (pseudo code)

  1. Read all the documents from crmd_orderadm_h into table lt_head
  2. Loop through lt_head into ls_head

a. Call function module ‘BBP_PROCDOC_GETDETAIL’ to get the related documents into lt_header_rel for ls_head-guid

  1. b. Append entries from lt_header_rel into e_t_data
  2. a. If -objtype_a EQ ‘BUS2200’ (RFx)
  3. i. Assign -objid_a to -related_rfx
  4. ii. Assign blank to -related_response
  5. b. If -objtype_a EQ ‘BUS2202’ (RFx Response)
  6. i. Read table lt_e_t_data where guid_b = -guid_a and objtype_a = ‘BUS2200’. This will return the preceding document (RFx).
  7. ii. Assign -related_rfx = lt_e_t_data-objid_a
  8. iii. Assign -related_response = -objid_a
  9. c. If -objtype_b EQ ‘BUS2000113’ (Contract)
  10. i. -related_response = -objid_a.
  11. ii. Read table lt_e_t_data where guid_b = -guid_a and objtype_a = ‘BUS2200’.
  12. iii. Assign -related_rfx = lt_e_t_data-objid_a.
  1. Copy e_t_data to lt_e_t_data
  2. Loop through e_t_data assigning

2. ZSRM_DOC_GETDETAIL (Custom FM extractor, any nomenclature can be used)

 

This extractor is based on the function module  RSAX_SRM_DOC_GETDETAIL to extract the following details for an SRM document.

  1. Created date and time
  2. Object Type
  3. Purchasing Organization
  4. Purchasing Group
  5. Process type
  6. Process subtype
  7. Smart Number
  8. Bidder
  9. Bidder name
  10. Version
Inputs  (attach record layout if applicable)
  1. 1. Create an extract structure ZSRM_DOC_DETAILS with the following fields:
Component Component Type Data Type Length
GUID CRMT_OBJECT_GUID RAW

16

OBJECT_ID CRMT_OBJECT_ID_DB CHAR

10

CREATED_ON SYSTDATLO DATS

8

CREATED_AT SYSTTIMLO TIMS

6

CREATED_BY CRMT_CREATED_BY CHAR

12

OBJECT_TYPE CRMT_SUBOBJECT_CATEGORY_DB CHAR

10

PROC_ORG BBP_PROC_ORG_ID CHAR

12

PROC_GROUP BBP_PROC_GROUP_ID CHAR

12

PROCESS_TYPE CRMT_PROCESS_TYPE_DB CHAR

4

PROCESS_SUBTYPE ZZHELPDESK CHAR

15

SMART_NUMBER CRMT_PROCESS_DESCRIPTION CHAR

40

BIDDER_ID BU_PARTNER CHAR

10

BIDDER_NAME BU_NAMEOR1 CHAR

40

VERSION_NO BBP_VERSION_NO CHAR

8

  1. 2. Create a function module ZRSAX_SRM_DOC_GETDETAIL with the following interface.

IMPORTING

Parameter Name Associated Type Default Value
I_REQUNR SRSC_S_IF_SIMPLE-REQUNR                     
I_DSOURCE SRSC_S_IF_SIMPLE-DSOURCE                     
I_MAXSIZE SRSC_S_IF_SIMPLE-MAXSIZE                     
I_INITFLAG SRSC_S_IF_SIMPLE-INITFLAG                     
I_READ_ONLY SRSC_S_IF_SIMPLE-READONLY                     
I_REMOTE_CALL SBIWA_FLAG SBIWA_C_FLAG_OFF

TABLES

<td
Parameter Name Associated Type