Skip to Content
Technical Articles
Author's profile photo Yogananda Muthaiah

CDL (Commission Data Loader) – Data Extract Process

Dear Readers,

Summary

The Data extract feature allows you to export through custom outbound file types when running a pipeline job. The feature is available only on environments that use CDL (Commissions Data Loader) and are configured on HANA Database. You can extract custom files that you have previously or newly configured in CDL. The files are then stored in your previously configured outbound folder.

Prerequisites

  • User should have access to run a pipeline
  • User should have access to WebIDE/Hana Studio/Eclipse for connecting to Tenant DB
  • Custom Table and Custom Stored Proc should be created for the data to transfer
  • SFTP dropbox Access to Outbound folder.
  • RestAPI v2 and OData API Access for debugging

Data Extract Documentation and Examples

Steps to Setup Data Extract Process in Commission Data Loader (CDL)

Login to SAP Commission Portal with your credentials

After successful login, you can click on APPS highlighted in RED, a dropdown will appear and choose Commission Data Loader

Now you can click on Configuration and select from the dropdown File Type Setup

As you see, there are 2 types Inbound & Outbound file type…  To know more about File Types 

Click on Outbound and Click on (+) to create

Configure outbound file type and specify the target table and target stored procedure from below screens

As this task needs to be handled manually, please configure as per the above example

After Saving, you can see from below custom file type is created

 

Let’s create a Custom Table in HANA DB

Create a custom table to store the Extracted data in the EXT schema. (Extraction  will always run with the EXT schema)

Connect WebIDE or HANA Database with below example provided.

Example 

CREATE COLUMN TABLE Paymentextract (
positionseq BIGINT NOT NULL,
participantseq BIGINT NOT NULL,
periodseq BIGINT NOT NULL,
processingunitseq BIGINT NOT NULL,
payment DECIMAL(25,10) NULL,
unittypeforpayment BIGINT NULL
);

Create Custom Procedure in HANA DB

Create a custom stored procedure to extract the data:

CREATE OR REPLACE PROCEDURE ExtractPayment(OUT FILENAME varchar(120), IN pPlRunSeq BIGINT)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
AS
BEGIN
DECLARE DBMTK_TRUE TINYINT := 1; DECLARE DBMTK_FALSE TINYINT := 0; /* boolean constants */
DECLARE vSeq BIGINT;
declare vPeriodSeq bigint;
declare vPUSeq bigint;

select periodSeq into vPeriodSeq from CS_PlRun where pipelineRunSeq = :pPlRunSeq;
select processingUnitSeq into vPUSeq from CS_PlRun where pipelineRunSeq = :pPlRunSeq;

delete from Paymentextract;

insert into Paymentextract (positionSeq, participantSeq, periodSeq, processingUnitSeq, payment, unitTypeForPayment)
(select positionSeq, payeeSeq, periodSeq, processingUnitSeq, value, unitTypeForValue from CS_Payment
where periodSeq = :vPeriodSeq and processingUnitSeq = :vPUSeq);

commit;

FILENAME := 'PAYMENTEXTRACT.txt';
END

 

Run a Pipeline for the Data Extract Stage

The Data Extracts stage (option) can be selected from the PipelineRun wizard and below screen is provided with an example which is configured as per above

 

DataExtract file in Outbound Folder

After the pipeline job is completed with Success, you should see the file extracted in the tenant’s outbound directory (specified during CDL setup): To know more about dropbox (sFTP)

 

To Automate through RestAPI for Pipeline Job with Data Extract follow below

Request Method : POST 
Request URL : https://<tenantid>.callidusondemand.com/api/v2/pipelines
Content-Type: application/json
Authorization: {{authtoken}}

[
  {
      "command": "PipelineRun",
      "stageTypeSeq": "21673573206720532",
      "calendarSeq": "2251799813685250",
      "periodSeq": "2533274790396303",
      "processingUnitSeq": "38280596832649218",
      "runMode": "full",
      "removeStaleResults":false,
      "onDemand":true,
      "defer":false,
      "runStats": true,
      "traceLevel": "status",
      "runDataExtracts":true,
      "dataExtractsFileType":"PAYMENTEXTRACT",
      "userId":"yogananda.muthaiah@sap.com"
  }
]

 

Conclusion:

Customer/Admins/Finance Team will save man-hours to extract the data from the DB session in a Production environment and moreover this will be a one-time setup for payout extract and easily configurable through UI.


Another Known Issue:  If you see below pipeline error after running DataExtract, to resolve this issue Raise a support ticket immed.

 

Assigned Tags

      17 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Dan Hutchinson
      Dan Hutchinson

      Hi Yogananda,

      In your example above you create a custom CDL outbound file type named "PAYOUTEXTRACT", then when you run the pipeline and use the Data Extracts feature (both with UI and rest api call) you use file type "PAYMENTEXTRACT".

      I'd assume that's a typo?

      Nice article otherwise, it's helpful to know the plRunSeq will be automatically passed to the proc in this scenario.

      -Dan H

      Author's profile photo Yogananda Muthaiah
      Yogananda Muthaiah
      Blog Post Author

      Hi  Dan Hutchinson

      Yes, you're right.. I didn't notice this... I will edit and make the change.  Thanks for highlighting

      Author's profile photo Srinivas Rachapudi
      Srinivas Rachapudi

      Thanks Yogananda for the article. We are on Oracle instance and eventually migrating to HANA.  Quick question - We usually generate Outbound - PAYMENT extract  once we run Finalize pipeline. In the screenshot mentioned above, Data extracts option available under Comp and Pay stage. Could you please share your feedback how we could utilize this Data Extract process with finalize pipeline ? Thanks, Srinivas

      Author's profile photo Yogananda Muthaiah
      Yogananda Muthaiah
      Blog Post Author

      Srinivas Rachapudi

      Thanks for reading the article!
      SAP Commissions & CDL engineering team received a lot of feedback with your same request.  It's in the roadmap for 2022( Feb 2021). I hope your instance is migrated to HANA by the time product enhancement is shipped to the product.

      I will keep you informed once it's available under PAY.

      Author's profile photo Srinivas Rachapudi
      Srinivas Rachapudi

      Thank You.

      Author's profile photo Sohil Vidja
      Sohil Vidja

      Hi Yogananda

      In example above Parameter pipelinerunseq is being passed from Pipeline to Stored Procedure. Are there more parameters available for use ? e.g. periodseq, calendarseq, etc.. Any standard documentation available?

       

      Regards

      Sohil.

      Author's profile photo Yogananda Muthaiah
      Yogananda Muthaiah
      Blog Post Author

      Hi Sohil Vidja

      It depends and varies by customer implementation on using DataExtract.

      For example, If customer has multiple calendars then you may need to include calendarseq

      select periodSeq into vPeriodSeq from CS_PlRun where calendarSeq =:pCalendarSeq and pipelineRunSeq = :pPlRunSeq;
      select processingUnitSeq into vPUSeq from CS_PlRun where calendarSeq =:pCalendarSeq and pipelineRunSeq = :pPlRunSeq;

      Note: you need include in Declare and In select statement

      Author's profile photo Kedarnath Kanike
      Kedarnath Kanike

      This article helped me to guide customer on how to implement the DataExtract feature.

      Thank you Yoga for sharing this!

      Author's profile photo Yogananda Muthaiah
      Yogananda Muthaiah
      Blog Post Author

      Thanks, Kedarnath Kanike !!!.. you're most welcome!

      Author's profile photo Americo Flores
      Americo Flores

      Hello Yogananda

       

      I need Extract this file with a sequence such as suffix and the same time this sequence depends of each positiongroup,  for example:

      PAYROLL_POSITIONGROUP_PERIOD_SEQ.csv

      PAYROLL_POSITIONGROUP1_120220_001.csv

      PAYROLL_POSITIONGROUP1_120220_002.csv

      PAYROLL_POSITIONGROUP1_120220_003.csv

      PAYROLL_POSITIONGROUP2_120220_001.csv

      PAYROLL_POSITIONGROUP2_120220_002.csv

      PAYROLL_POSITIONGROUP3_120220_001.csv

       

      But I have no idea, how should I do it ... any tips?

       

      Thanks in advance

       

      Regards.

      Author's profile photo Yogananda Muthaiah
      Yogananda Muthaiah
      Blog Post Author

      Americo Flores

      There is an improvement request already for your ask with engineering team to support mutliple data extract filenames.

      Author's profile photo Pratik Poshiya
      Pratik Poshiya

      Thanks for blog Yogananda Muthaiah,

      I am facing same requirement to generate multiple data extract file from same procedure(by Position group loop), is there any update to from engineering team on this topic or if you know when this can be available.

      Best Regards,
      Pratik

      Author's profile photo Daniele Antonioli
      Daniele Antonioli

      Good morning.

      Is there a way to put the timestamp in the filename?

      This way you avoid overwriting the previous file in case of multiple extractions.

      We have tried many ways but without success.

      How can we do?

      Regards,

      Daniele

      Author's profile photo Yogananda Muthaiah
      Yogananda Muthaiah
      Blog Post Author

      Daniele Antonioli

      you have this line in your procedure... hope you know how to make it

      DECLARE v_outbtype VARCHAR(255) = 'PaymentFile';
      
      OutFileName = :v_tenantid || '_'||:v_outbtype||'_' || to_char(CURRENT_TIMESTAMP,'YYYYMMDDhhMiss')|| '_' || REPLACE(:in_periodname, ' ', '')||'.txt';
      Author's profile photo Daniele Antonioli
      Daniele Antonioli

      Hello Yogananda.

       

      we managed to get it working, thank you very much for your precious support!!

       

      one last question: is it possible to have permission to delete files from the outbound folder?

       

      Thank you.

       

      Regards,

      Daniele

      Author's profile photo Yogananda Muthaiah
      Yogananda Muthaiah
      Blog Post Author

      Daniele Antonioli

      kindly post your questions in answers.sap.com under SAP Commissions ?

      Author's profile photo Minjie Lao
      Minjie Lao

      Just one more add-on,

       

      Remember to grant the permissions to tenant, otherwise CDL will be failed due to permission issue

       

      Grant execute on <store proc> to <tenant-id>
      
      Grant select,update,delete,insert on <ext tables used by SP> to <tenant-id>