cancel
Showing results for 
Search instead for 
Did you mean: 

Correct FM called when testing delta?

Former Member
0 Kudos

Hi all, I have created a copy of the RSAX_BIW_GET_DATA which is used by my extractor. Full load is working good.

First I triggered a init from BW, then debugged the delta from RSA3.

The program did not use the FM I created (ZRSAX_BIW_GET_DATA), but instead the FM RSC1_DELTA_BIW_GET !

Is that correct? I expected my Z FM to be called.

Any suggestions?

Accepted Solutions (1)

Accepted Solutions (1)

former_member187400
Active Contributor
0 Kudos

Hi Rune,

Could you check to your gen. data source using t-code : RSO2 ??

In over there, type for your data source, then go in.

You'll see over there whether that function is being used there for fetching the data ..

Hopefully it can helps you a lot.

Regards,

Niel

(Many thanks for any points you choose to assign).

Former Member
0 Kudos

Hi, yes my own FM is used in the generic extractor.

former_member186445
Active Contributor
0 Kudos

in the source system, check table ROOSOURCE. put your extractor name in and execute. check the fields extractor (your FM), Provider Structure (your data structure) and check if there's an entry in the field "delta process".

Former Member
0 Kudos

Mti: Hi, the entry in table ROOSOURCE seems to be ok, except that I don't know what should be in the field DELTA. The value is AIE. Should the value be D ?

Please let me know!

Former Member
0 Kudos

Yes,it should be 'D'.

Former Member
0 Kudos

Yes,it should be 'D'.

Former Member
0 Kudos

Jerome: Thanks! Do I have to change it directly in the table, or are there any transaction to use?

former_member186445
Active Contributor
0 Kudos

if you created your extractor based on the fm RSAX_BIW_GET_DATA, your delta extraction will never work as within this fm there is no handling of previous loads through a timestamp or any other field. this means that even if you enable the delta load the system has no pointer and will therefor not generate a delta load. what you could do is create a new extractor with a new fm based on a example fm of sap that's delta enabled, eg RSVD_BW_GET_DELTA_DATA.

i never did it myself so i don't know if it will work. but i took a quick look and it seems to be capable of delta handling, but i don't know in which case.

maybe somebody else already used it?

Former Member
0 Kudos

Jerome: Hi, I tried to set the field DELTA in table ROOSOURCE to value 'D'. I also tried the value 'E', but when I try to test delta, it still calls the FM RSC1_DELTA_BIW_GET and not my own! Why is that?

Mti: I have changed the RSAX_BIW_GET_DATA to handle delta.

Former Member
0 Kudos

The Function Module you have created does it have a different logic in terms of extracting data or its just extra validation thats different from the standard Function Module.If extraction logic is not different then use the standard extractor Function Module & perform checks/validations in user exit for this datasource.

Former Member
0 Kudos

Hi, the FM I have created is a copy from the RSAX_BIW_GET_DATA.

The FM have some logic to test delta, and some logic to select data from the database.

When I debug, the first init call is correct. Then <b>S_FNAME</b> have the value for my FM name ZRSAX_BIW_GET_DATA:

CALL FUNCTION <b>S_FNAME</b>

EXPORTING

I_REQUNR = S_S_IF_SIMPLE-REQUNR

I_DSOURCE = S_S_IF_SIMPLE-DSOURCE

I_MAXSIZE = S_S_IF_SIMPLE-MAXSIZE

I_INITFLAG = S_S_IF_SIMPLE-INITFLAG

TABLES

I_T_SELECT = S_S_IF_SIMPLE-T_SELECT

I_T_FIELDS = S_S_IF_SIMPLE-T_FIELDS

EXCEPTIONS

NO_MORE_DATA = 1

ERROR_PASSED_TO_MESS_HANDLER = 2

OTHERS.

But then, in the <b>second call</b> to fetch data, the field <b>l_fname</b> has the value RSC1_DELTA_BIW_GET:

  • by field ROIS-GENFLAG

IF ( p_s_request-updmode = sbiwa_c_updmode_delta

OR p_s_request-updmode = sbiwa_c_updmode_repeat

OR p_s_request-updmode = srsc_c_updmode_initsimu "30BSP07

OR p_s_request-updmode = sbiwa_c_updmode_deltainit ).

CALL FUNCTION <b>l_fname</b>

EXPORTING

i_requnr = p_s_request-requnr

TABLES

e_t_data = l_t_ZBW_STRCT_RJ_TEST1

EXCEPTIONS

no_more_data = 1

error_passed_to_mess_handler = 2.

I want my FM name ZRSAX_BIW_GET_DATA to be in the second call as well..

Former Member
0 Kudos

This is where l_fname gets it's value = <i>RSC1_DELTA_BIW_GET</i>:

71

72 * in case of delta request, call common delta extractor

73 CASE p_s_request-updmode.

74 WHEN sbiwa_c_updmode_delta.

75 l_fname = rsaot_c_extractor-gendelta.

Former Member
0 Kudos

The value is set in type group RSAOT:

  • Constants for some specific extractors.

CONSTANTS: BEGIN OF rsaot_c_extractor,

genextractor(30) VALUE 'RSA3_GEN_GET_DATA',

query(30) VALUE 'AQBW_GET_DATA',

querymsd(30) VALUE 'AQBW_GET_MASTER_DATA',

domaextractor(30) VALUE 'RSA3_EXT_DOMA_EXTRACT',

<b> gendelta(30) VALUE 'RSC1_DELTA_BIW_GET',</b>

gendeltainit(30) VALUE 'RSC1_INIT_BIW_GET',

oldgen(30) VALUE 'RSGE_BIW_GET_DATA',

oldlis(30) VALUE 'MCS_BIW_LIS_API',

simple(30) VALUE 'RSA3_GET_DATA_SIMPLE',

END OF rsaot_c_extractor.

So the question know is: How to implement delta? How to ensure that your own FM gets used?

Answers (0)