cancel
Showing results for 
Search instead for 
Did you mean: 

Generic delta with RSVD_BW_GET_DELTA_DATA

Former Member
0 Kudos

Hi all,

I am creating a generic datasource with delta using the copy of the function module RSVD_BW_GET_DELTA_DATA.

My function module has the logic to get delta records based on CPUDT.But when i run the extractor from rsa3 using delta or init mode the update mode is always 'F' ( full ).

when i debugged it i see that it is going to the function module RSC1_INIT_BIW_GET even before it goes to my function module where in the update mode is getting filled as 'F' all the time.

Is there a way to solve this. Please help as i have been struggling with it. I had tried the copy of RSAX_BIW_GET_DATA_SIMPLE, again with the code to handle delta but it also was behaving the same way: taking the update mode as full all the time.

Any help is greatly appreciated

thanks

shree

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

did you check a second load after the first?

Former Member
0 Kudos

Yes i have checked it many many times........

Please let me know if copy of RSVD_BW_GET_DELTA_DATA is really delta capable.

thanks

Shree

jasonmuzzy
Active Participant
0 Kudos

This is how generic delta via function module works. Function RSC1_INIT_BIW_GET calls RSA8_GENDELTA_RANGE_GET which reads table ROOSGENDLM to find out what the "deltaid" is (the delta pointer), then it uses that to fill the I_T_SELECT parameter and calls your function in full mode. Your function just needs to read the I_T_SELECT internal table parameter for field CPUDT, populate a range with it, and include it in the WHERE clause of your SELECT statement.

It's a little confusing at first but it's actually pretty cool since the SAPI layer takes care of all the delta handling for you.

Former Member
0 Kudos

Hi Jason,

Thanks for the reply. I do understand all the explaination you have provided. My code has all the logic to get the delta records. But the delta queue is not getting populated and because of this when I run a infopackage with delta from BW I am not getting any records. but if i run a infopackage with full load iam getting the delta's ( i.e the changes i made after the timeid in the ROOSGENDLM table).

could you please let me know as to y the delta queue ( rsa7) is not getting filled with the delta records.My datasource is listed in rsa7 but no records in the queue and every time i run a delta the time stamp in ROOSGENDLM gets changed but rsa7 has no records so bw gets 0 records.

thanks

shree

Former Member
0 Kudos

Hi,

your records will not appear in RSA7. Your records will be sent during execution of the FM. In RSA7 you can have a look at your delta pointer which will be updated by the next delta load.

Former Member
0 Kudos

Thanks for your reply.

But I still am not sure as to y my delta infopackage is not getting any records.

My code has all the logic to get the records and it does get the records in full infopackage but not in the delta package.

Please let me know what can be done and if iam missing any steps

Thanks and Regards

shree

jasonmuzzy
Active Participant
0 Kudos

Since your generic delta is based on a date field (not a timestamp), I believe the standard delta processing logic will only extract up to the PRIOR date. That is because you could never guarantee that all records have been posted for the current date. If you want to override this behavior you can adjust the safety intervals of your DataSource. I would suggest using -1 for the upper limit and 2 for the lower limit. These settings will cause it to extract from the prior day to the next day. You will get duplicate records with each delta run, so you will need to load into a DSO with only overwrite update rules.

If that doesn't help then you must have an error in your extractor logic. Put a breakpoint in your function module, examine what is passed into I_T_SELECT, verify you are populating your ranges correctly, verify your SELECT statement and WHERE clause.