on 11-12-2007 8:22 AM
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?
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).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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?
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.
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..
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?
User | Count |
---|---|
82 | |
10 | |
10 | |
9 | |
6 | |
6 | |
5 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.