Skip to Content
0
Sep 27, 2020 at 11:58 PM

Dynamic Filter on Extractors in SAP Data Services

633 Views

Hi All,

Can you please check the possibilities on this requirements?

We have a requirement to provide Filters at Run time to the SAP BODS jobs. Here is the Scenario.

Source: SAP ECC Extractors

Target: File System

Load Option: Full Load with Dynamic filters.

Since the full load has millions of records, business wants to reduce the data based on the requirement by filtering data at tun time. For the same we need to provide Global Variables to the required fields to filter data during execution of job,

For Ex: If user want to filter based on Company Code and Fiscal Year, he/she will do at time as below

BUKRS = '001' / BUKRS = '001','004' (Multiple)

GJAHR = 2018 / GJAHR = 2018 - 2020 (Range) / GJAHR = 2017,2020


Since can't use pushdown_sql for the extractors, I have tried to implement below way but not able to pass GV values to where clause for all fields. Not sure what would be the issue.

Scenario #1: Single Value

Decode(GV_BUKRS IS NOT NULL, Extractor.BUKRS, 1) = Decode(GV_BUKRS IS NOT
NULL, GV_BUKRS, 1)

If GV_BUKRS = ‘004’, Results would be: Extractor.BUKRS = GV_BUKRS / Extractor.BUKRS = ‘004’

If GV_BUKRS = ‘ ‘ Results would be as 1 = 1 which bring all values.

Scenario #2: Multipule Value

Decode(GV_BUKRS IS NOT NULL, Extractor.BUKRS, 1) IN 
(Decode(GV_BUKRS IS NOT NULL, GV_BUKRS, 1))

If GV_BUKRS IN (‘004,001’) Extractor.BUKRS IN (GV_BUKRS) / Extractor.BUKRS IN (‘004,001’)

If GV_BUKRS = ‘ ‘ Results would be as 1 = 1 which bring all values.

But, When I tried to implement same logic for GJAHR the entered values in the GV at run time is not reading into the where clause.

Is this correct approach where can be use the same for any of the fields/filters/scenarios? Or any one had this experience or do SAP have any best practices for these scenarios?

Thanks
Venky