P2P analysis for SAP ERP toolkit
The P2P Analysis for SAP Robot toolkit is an analytics-as-a-service solution for monitoring purchase to payment (P2P) risk for organizations using SAP ERP systems. It analyzes and reports P2P data from SAP that may indicate fraud, waste or abuse.
The toolkit comes as a pre-configured solution that is applicable to most customers. Once deployed, you can update the analysis robot toolkit with new scripts as we release them. You can further customize it by adding custom scripts to refine the toolkit. The imported data can be output to Results or Excel files.
Note
The P2P Analysis for SAP ERP Robot does not support the following:
- Analytics Exchange (AX)
- Robots Cloud Agent for production purposes
- Custom analytics and data sources
- Any reporting other than Excel/Results outputs
System and subscription requirements
Ensure that you meet the following subscription and system requirements to use the P2P Analysis for SAP ERP Robot.
Requirement | Notes |
---|---|
ACL Robotics Enterprise Edition | Robot toolkits are available as add-ons |
On-premise Robots Agent version 15 |
Verify the version to be installed - Unicode or Non-Unicode |
ACL for Windows version 15 |
|
SAP ERP Data Integration Robot | Ensure that the SAP ERP Data Integration Robot has been successfully deployed into your organization and is currently running. |
About the toolkit
The toolkit installs several components in Diligent One.
Component | Count | Name |
---|---|---|
Collection | 2 |
P2P Analysis For SAP ERP - Development P2P Analysis For SAP ERP - Production |
Analysis |
4 |
|
Robot | 1 | P2P Analysis For SAP ERP |
Analytic Tables | 25 | For more information, see Analytics for SAP ERP. |
P2P Analysis For SAP ERP robot
The P2P Analysis For SAP ERP robot is automatically created when the toolkit is installed. This robot contains the following:
-
Analytic scripts - Contains the core scripts to import and process data.
Note
You should not modify the analytic scripts. Modifying the scripts may result in failures while running tasks. Any modifications required should be configured in the User Analytic Configuration file or uploaded as custom analytic scripts.
- (Optional) Custom analytic scripts - Scripts that are manually uploaded to add new customer-specific analytic capabilities to the robot or make a data logic changes. These scripts take precedence over the default analytic scripts and should be thoroughly reviewed.
-
Configuration files - All the configuration files listed in the following table are available in the Input/Output tab of the robot.
File Name Description Mode P2P_SAP_Default_
Analytic_Configuration.xlsxContains default configurations.
Note
You should not modify this file. Modifying the file may result in failures while running tasks. Any modifications required should be configured in the User Analytic Configuration file or uploaded as custom analytic scripts.
Generated automatically by the robot Result_Table_IDs.csv Contains the destinations for the tables exported to Results, within the respective Development and Production collections. Generated automatically by the robot
User Analytic Configuration File Contains custom configurations that must override configurations provided in the default analytic configuration file.
Configurations in this file takes precedence over inputs in the default analytic configuration file.
NOTE: If customizations exceed the capabilities of the User Analytic Configuration file, a custom script may be added.
Manually uploaded when implementing the toolkit -
Robot task - Executes the default and custom scripts within the robot and contains the following information.
Parameter Description Export to HighBond Results? Specifies whether to export imported data to Results. Options available are as follows:
- Export to Results - Overwrite - Overwrite the data in results tables each time data is exported.
- Export to Results - Append - Appends data to the results tables.
- Do not export - Does not export data to Results.
Export to Excel? Specifies whether to export the current results to an Excel file or not. Options available are as follows:
- Export to Excel
- Do not export
HighBond Access Token Token required to connect to Results. If exporting to Results is disabled, any random value can be provided for this parameter.
Linked tables
The required shared tables from the SAP ERP Data Integration robot is linked to the P2P Analysis for SAP ERP robot the Input/Output tab. When the analysis robot task runs, it pulls data from the linked tables and uses it to process the core analytic logic defined.
Note
You can create multiple analysis robots and link only the required tables to segregate the robots for specialized tasks or set of tasks.
Analytics for SAP ERP
The analytics for SAP ERP are listed in the following table.
Error logging
Any errors detected while running the task are logged to the Error Log table for each analytic. If the record count is 0, an error message is written to the Error Log table.
Tip
Review the error log after the task runs, even if the analytic returned no exceptions to ensure that the table was not flagged as having 0 records. For example, user input parameters from the User Analytic Configuration file can be ignored if the file is not formatted properly.
What each analytic does
Vendor Management Analytics
Analytic Name | Description |
---|---|
P2P01VM_Vendor_ Missing_Phone_Number |
This analytic identifies vendors with no primary phone number in the vendor master file.
The result table for this analytic is R_P2P01VM_Vendor_Missing_Phone_Number. |
P2P02VM_Vendor_ Missing_Banking_Data |
This analytic identifies vendors with no bank account number or bank key associated in the vendor master file.
The result table for this analytic is R_P2P02VM_Vendor_Missing_Banking_Data. |
P2P03VM_Vendor_ Missing_Tax_ID |
This analytic identifies vendors with no primary tax ID associated in the vendor master file.
The result table for this analytic is R_P2P03VM_Vendor_Missing_Tax_ID. |
P2P04VM_Vendor_ PO_BOX_Addresses |
This analytic identifies vendors with postal box addresses that may not have a physical address as follows:
The script analyzes the fields LFA1_STRAS and LFA1_PFACH.
The result table for this analytic is R_P2P04VM_Vendor_PO_BOX_Addresses. |
P2P05VM_Vendor_ Similar_Names |
This analytic identifies vendors having similar names for common company suffixes, such as Inc and Ltd. It uses the FUZZYDUP command to detect similar names, with the user defining parameters, such as the minimum percentage match, Levenshtein distance to be applied, and excluding exact matches on vendor name (optional). By default, exact matches are included in the results. The results of this analytic are presented in groups of similar or duplicated vendors names and the same vendor may be reported in multiple groups. For information on the processes applied by the FUZZYDUP command, see Fuzzy duplicates analysis. The vendor country is not considered when checking for duplicates. Three default parameters are available for this analytic in the Default_Config_Params worksheet of the Default Analytic Configuration File. If the default parameters do not apply, or are incomplete, you can declare the required values in the User Analytic Configuration File. Ensure that you follow the format and naming conventions as is from the Default Analytic Configuration File. You can use the following information to populate the values correctly in the User Analytic Configuration File:
The result table for this analytic is R_P2P05VM_Vendor_Similar_Names. |
P2P06VM_Vendor_ Same_Address |
This analytic identifies vendors with same addresses, based on street addresses with generic street suffixes, such as Street, Road, Rd, or Avenue, replaced by a standardized abbreviation. Addresses are identified as same when they meet one or both of the following criteria:
Vendors with blank street addresses are not included in the analysis. Vendor addresses that contain only non-alphanumeric characters, such as hyphens (-) are considered as blank. The results of this analytic are presented in groups of matched addresses with the field c_Match_Type, which identifies whether it is an address match or a numeric match. The field c_Matched_Key identifies the address component matched by the vendors in the group. When vendors match on both criteria, they are reported only once, as an address match. If the result group of the numeric match has additional vendors that are not matched on street address, both groups are reported in full. A vendor can be a member of more than one result group. For example, Vendor A’s physical address may match that of Vendor B's, and Vendor A’s combined numeric digits may match that of Vendor C. The result table for this analytic is R_P2P06VM_Vendor_Same_Address. |
P2P07VM_Vendor_ Same_Phone_Number |
This analytic identifies vendors whose primary or secondary phone numbers match that of another vendor. Telephone numbers are reported as same when their numeric digits are identical after removal of any non-numeric characters, such as hyphens or brackets. Primary or secondary telephone numbers that are blank are not included in the analysis. Telephone numbers with only non-numeric characters, such as hyphens or brackets are considered blank. The results of this analytic are presented in groups of matched telephone numbers with the field c_Match_Type that identifies whether a vendor’s primary or secondary phone number is matched. Field c_Matched_Key identifies the telephone number that was matched by the vendors in the group. A vendor can be a member of more than one result group. For example, Vendor A’s primary phone number may match that of Vendor B's, and Vendor A’s secondary phone number may match that of Vendor C's. The result table for this analytic is R_P2P07VM_Vendor_Same_Phone_Number. |
P2P08VM_Vendor_ Same_Banking_Data |
This analytic identifies vendors whose banking information matches that of another vendor and checks the fields LFBK_BANKN and LFBK_BANKL. It reports vendors as potential duplicates when the combination of the two fields match another vendor, after removal of any non-alphanumeric characters, such as hyphens or brackets. Vendors with blank data in both fields are not included in the analysis. Fields with only non-numeric characters in both fields, such as hyphens or brackets, are considered as blank. The results of this analytic are presented in groups of matching banking data. Field c_Matched_Key concatenates the matching bank account number and bank branch code, separated by a pipe and strips any non-alphanumeric characters. A vendor can be a member of more than one result group. For example, Vendor A has multiple bank accounts and an account may match Vendor B on the first bank account and Vendor C on the second bank account. The result table for this analytic is R_P2P08VM_Vendor_Same_Banking_Data. |
P2P09VM_Vendor_ Same_Tax_ID |
This analytic identifies vendors whose tax ID matches that of another vendor and verifies the fields LFA1_STCD1 and LFA1_STCD2. It reports the Tax IDs as same when the alphanumeric characters are identical, after removing any non-alphanumeric characters, such as hyphens or brackets. Blank tax IDs are not included in the analysis. Tax IDs with only non-alphanumeric characters, such as hyphens or brackets, are considered as blank. The results of this analytic are presented in groups of matched Tax IDs, with the field c_Match_Type identifying whether the value in field LFA1_STCD1 or LFA1_STCD2 is matched. Field c_Matched_Key identifies the tax ID matched by the vendors in the group, after removal of any non-alphanumeric characters. A vendor can be a member of more than one result group. For example, Vendor A’s tax ID in field LFA1_STCD1 may match Vendor B, and Vendor A’s tax ID in field LFA1_STCD2 may match Vendor C. The result table for this analytic is R_P2P09VM_Vendor_Same_Tax_ID. |
P2P10VM_Vendor_ Employee_Name_Match |
This analytic identifies vendors whose company name matches either an employees first name or last name, or both. For specific scenarios, the analytic matches the names as follows:
To match a vendor and an employee, the country must be the same (LFA1_LAND1 and PA0006_LAND1). A vendor may match for more than one employee. For example, vendor Alexander Muller Inc matches employees Alexander Smith and Sarah Muller. An employee may match for more than one vendor. For example, employee Alexander Smith matches vendors Alexander Muller Inc and Smith Brothers Ltd. The result table for this analytic is R_P2P10VM_Vendor_Employee_Name_Match. |
P2P11VM_Vendor_ Employee_Address_Match |
This analytic identifies vendors whose physical address or numeric postal code matches that of an employee in the same country. Addresses of both vendors and employees are standardized prior to comparison by replacing generic street suffixes, such as Street, Road, Rd, and Avenue, with standardized abbreviations. Addresses are matched when they meet one or both of the following criteria:
The analytic does not include vendors and employees with blank street addresses. Addresses that contain only non-alphanumeric characters, such as hyphens, are considered as blank. The results of this analytic are presented in groups of matched addresses, with vendor and employee fields displayed side by side.
When vendors and employees match on both criteria, they are reported only once, as an address match. If the result group of the numeric match has additional vendors or employees that are not matched on street address, it reports both groups in full. A vendor can be a member of more than one result group. For example, Vendor A’s physical address may match Employee A, and Vendor A’s combined numeric digits may match Employee B. To detect a match between an employee and a vendor, the vendor country and employee country must be the same. The result table for this analytic is R_P2P11VM_Vendor_Employee_Address_Match. |
P2P12VM_Vendor_ Employee_Phone_ Number_Match |
This analytic identifies vendors whose primary or secondary phone numbers match that of an employee. Telephone numbers are reported as same when their numeric digits are identical, after removal of any non-numeric characters, such as hyphens or brackets. Blank primary or secondary telephone numbers are not included in the analysis. Telephone numbers with only non-numeric characters, such as hyphens or brackets are considered as blank. The results of this analytic are presented in groups of matched telephone numbers.
A vendor can be a member of more than one result group. For example, Vendor A’s primary phone number may match Employee B, and Vendor A’s secondary phone number may match Employee C. To detect a match between an employee and a vendor, the vendor country and employee country must be the same. The result table for this analytic is R_P2P12VM_Vendor_Employee_Phone_Number_Match. |
P2P13VM_Vendor_ Employee_Banking_ Data_Match |
This analytic identifies vendors whose banking information matches that of an employee with the same banking country. It compares the vendor fields - LFBK_BANKN and LFBK_BANKL, to the employee fields - PA0009_BANKN and PA0009_BANKL. To match the vendors, the combined BANKN and BANKL fields must match those of an employee, after removal of any non-alphanumeric characters, such as hyphens or brackets. The vendor and employee master tables are joined on LFBK_BANKS and PA0009_BANKS as well to ensure that the country is same. Records with blank banking fields are not included in the analysis. Banking fields with only non-alphanumeric characters, such as hyphens or brackets are considered as blank. The results of this analytic are presented in groups of matched banking fields with field c_Matched_Key identifying the combined banking details of the employee(s) in the group. To detect a match between an employee and a vendor, the banking countries must be the same. The result table for this analytic is R_P2P13VM_Vendor_Employee_Banking_Data_Match. |
P2P14VM_Frequent_ Bank_Account_Changes |
This analytic identifies frequent changes made to a vendor's bank account details, based on the count of distinct change documents. Change documents are obtained from the joined table CDHDR_CDPOS, which is filtered on ObjectClass = 'KRED', CDPOS_TABNAME = 'LFBK' and CDPOS_FNAME = 'KEY' as well as using a date range. To analyze a vendor’s bank account changes, the total distinct document change count must be greater than or equal to the specified parameter threshold. Vendors with company codes that are excluded are not shown in the results. A default parameter, v_P2P14VM_change_count, is available for this analytic in the Default_Config_Params worksheet of the Default Analytic Configuration File. If the default parameter does not apply, or is incomplete, you can declare the required values in the User Analytic Configuration File. Ensure that you follow the format and naming conventions as is from the Default Analytic Configuration File. You can enter a numeric value without quotes. The unique change document count must be greater than or equal to the specified threshold to be reported. The result table for this analytic is R_P2P14VM_FREQUENT_BANK_ACCOUNT_CHANGES. |
P2P99VM_Vendor_ Summary_Matrix |
This analytic obtains vendor counts through the matrix table generated by the enabled analytics. Each matrix table summarizes the results of the analytic to obtain an exception count per unique vendor ID (not counting multiple company codes associated with a vendor). This analytic accumulates the matrix data from all analytics and cross-tabulates the results across each vendor and analytic. A computed field calculates the total exception counts by vendor across all exceptions, and sorts the results in descending order on total count. The Vendor Summary Matrix allows for a targeted review of the vendors that have been flagged the most across all analytics. Only those vendors with exceptions in at least one of the enabled analytics are included. Any other enabled analytics without exceptions for the vendor are counted as 0. Vendors with no exceptions in any analytics are not included. If none of the enabled analytics generated any exceptions, there are no vendors to report and the matrix will be empty. This scenario is logged in the Error Log table and identifies the reason for the matrix being empty. The result table for this analytic is R_P2P99VM_Vendor_Summary_Matrix. |
Accounts Payable Analytics
Analytic Name | Description |
---|---|
P2P01AP_Duplicate_Transactions |
This analytic identifies possible duplication transactions that are likely caused by either the vendor or AP staff error. A transaction is defined as a line item of an invoice. Duplicate transactions are identified on the basis of 12 different combinations of fields, these are called sub-tests. For more information about the sub-tests, see P2P analysis for SAP ERP toolkit. Duplicate line items on a single invoice are not reported for analysis and review, because such line items are mostly a scenario of the same item / services intended for different locations or entities. Many of the risks of duplicate invoices such as coding the same purchase to two different vendors or entering an incorrect vendor invoice number do not apply within the same invoice. These line items may be reported if they are duplicates of one or more line items in another invoice. A same-same different concept is applied to eliminate reporting the same set of flagged transactions multiple times. This is achieved by defining different fields as one or more fields that were identified as duplicates in a prior sub-test. Example
Notes
Default Parameters Two default parameters, v_P2P01AP_min_threshold and v_delete_P2P01AP, are available for this analytic in the Default_Config_Params and Script P2P01AP_Duplicate_Transactions worksheets of the Default Analytic Configuration File respectively. If the default parameters do not apply, or are incomplete, you can declare the required values in the User Analytic Configuration File. Ensure that you follow the same format and naming conventions as mentioned in the Default Analytic Configuration File. Result table for this analytic R_P2P01AP_Duplicate_Transactions. |
P2P02AP_High_Risk_Keywords |
This analytic identifies transactions and vendor details containing high-risk keywords that may indicate errors, waste, or abuse. The following fields are examined:
Several common high-risk keywords are stored in a parameter table in the Default Analytic Configuration File.
If there is a match of more than one keyword across the three test fields, the analytic concatenates them in a pipe-separated list, which is displayed in the field c_Matched_Keyword_List. In addition, the analytic reports the field Primary_Matched_Keyword, which contains the first matched keyword listed in the parameter table. This functionality assumes that the parameter table is populated with keywords in descending order of criticality.
A default result filter is not available. You can declare the result filters in the User Analytic Configuration File to further refine the results. Default Parameters A default parameter, v_P2P02AP_min_threshold, is available for this analytic in the Default_Config_Params worksheet of the Default Analytic Configuration File. If the default parameter does not apply, or is incomplete, you can declare the required values in the User Analytic Configuration File. Ensure that you follow the same format and naming conventions as mentioned in the Default Analytic Configuration File. Result table for this analytic R_P2P02AP_High_Risk_Keywords. |
P2P03AP_Outliers_Std_Dev |
This analytic identifies unusual transaction amounts for a given vendor that are equal to or greater than a specified number of standard deviations from the median transaction amount of the vendor. These transactions may indicate an error by either the vendor or AP staff. The following pseudo-code describes the process in detail. Each invoice line item is treated as a transaction.
A default result filter is not available. You can declare the result filters in the User Analytic Configuration File to further refine the results, such as the minimum outlier amount to report. Default Parameters A default parameter, v_P2P03AP_num_std_dev, is available for this analytic in the Default_Config_Params worksheet of the Default Analytic Configuration File. If the default parameter does not apply, or is incomplete, you can declare the required values in the User Analytic Configuration File. Ensure that you follow the same format and naming conventions as mentioned in the Default Analytic Configuration File. Result table for this analytic R_P2P03AP_Outliers_Std_Dev. |
P2P04AP_Outliers_Benford |
This analytic identifies unusual transaction amounts based on Benford’s analysis of the leading n digits. These transactions may indicate an error by either the vendor or AP staff. Initially, all transactions (line items) are examined to evaluate the distribution of the full data set and identify the statistical outliers. Outliers are defined as leading digit combinations whose frequency do not match the expected frequency according to Benford’s formula. This subset of transactions is further filtered down to only those leading digit combinations with a Z-Stat ratio equal to or greater than the user-specified threshold (default is 7). For each of the resulting flagged leading digit combinations, the vendors with the highest transaction counts are carried forward to the results, as these vendors contribute most to the statistical outliers. Vendors with lower transaction counts are not reported in the results or counted towards the vendor hit matrix. The following pseudo-code describes the process in detail:
A default result filter is not available. You can declare the result filters in the User Analytic Configuration File to further refine the results, such as the minimum transaction amount to report. Default Parameters Two default parameters, v_P2P04AP_leading_digits and v_P2P04AP_zstat_threshold, are available for this analytic in the Default_Config_Params worksheet of the Default Analytic Configuration File. If the default parameters do not apply, or are incomplete, you can declare the required values in the User Analytic Configuration File. Ensure that you follow the same format and naming conventions as mentioned in the Default Analytic Configuration File. Result table for this analytic R_P2P04AP_Outliers_Benford. |
P2P05AP_SOD_Vendor_AP |
This analytic identifies posting patterns that may indicate either the vendor or AP staff error. Specifically, this analytic reports transactions posted by users that have also created the vendor master record in LFA1, LFB1, or both, resulting in potentially inadequate segregation of duties. It compares the transaction field - BKPF_USNAM to the vendor fields - LFA1_ERNAM and LFB1_ERNAM. In LFA1, only the entry matching the company code of the transaction is examined. Initially, the full transactions table is examined at the line item level to identify all occurrences. The flagged transactions are then rolled up into a summary level report by user / vendor combination, showing a total transaction count and total transaction amount in local currency. The summary report carries forward the data from the transaction (line item) with the highest amount in local currency found for each flagged user / vendor combination. The following pseudo-code describes the process in detail. Each invoice line item is treated as a transaction.
A default result filter is not available. You can declare the result filters in the User Analytic Configuration File to further refine the results, such as the minimum transaction amount to report. Result table for this analytic R_P2P05AP_SOD_Vendor_AP. |
P2P06AP_Posting_Patterns_Single_User |
This analytic identifies posting patterns that may indicate either vendor or AP staff error. Specifically, this analytic reports vendors where, all transactions in the investigation period were posted by the same user across all the company codes of the vendor. Initially, the full transactions table is examined at line item level to identify all occurrences of the same user posting all the transactions of the vendor. The flagged transactions are then rolled up into a summary level report by vendor, showing a total transaction count and amount in local currency. The summary report carries forward the data from the transaction (line item) with the highest amount in local currency found for each flagged vendor. The following pseudo-code describes the process in detail. Each invoice line item is treated as a transaction.
A default result filter is not available. You can declare the result filters in the User Analytic Configuration File to further refine the results, such as the minimum transaction amount to report. Default Parameters A default parameter, v_P2P06AP_min_count, is available for this analytic in the Default_Config_Params worksheet of the Default Analytic Configuration File. If the default parameter does not apply, or is incomplete, you can declare the required values in the User Analytic Configuration File. Ensure that you follow the same format and naming conventions as mentioned in the Default Analytic Configuration File. Result table for this analytic R_P2P06AP_Posting_Patterns_Single_User. |