on 06-01-2011 3:24 AM
Hi BW experts,
I created a Function module based Generic extractor which is FULL update. No delta functionality.
For last few days there is no change in Data. Looks like the extract size peaked at 16202 records. When I run the function module, I see there are 42000 records. I only get one data package. If the maximum records are reached in packet size should'nt it create a new data package.
I tried to increase the size in Info Package, but it has 20,000 KB maximum.
How to not set limit on the number of records. I did my function module based on the Sample FM.
Any help is greatly appreciated.
Thanks
Hi,
You can set the package size, Partition Size and frequency status i-doc in RSCUSTV6 transaction in BI system.
Regards,
Suman
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Here is my code in the funciton module.. Do I need to make any change to go to next data package when the max size is reached until no data is found.
I have removed code that is not necssary.. Data Package part is at the end..thanks
__________________________________________________________________________________________
First data package -> OPEN CURSOR
IF S_COUNTER_DATAPAKID = 0.
Select Statements to load it_vbrk, it_konv, it_konh
LOOP AT it_vbrk into ls_vbrk.
READ TABLE it_konv into ls_konv with key knumv = ls_vbrk-knumv.
LOOP AT it_konv into ls_konv WHERE knumv = ls_vbrk-knumv and kposn = ls_vbrk-posnr.
READ TABLE it_konh into ls_konh with key knumh = ls_konv-knumh.
if sy-subrc = 0.
MOVE-CORRESPONDING ls_vbrk to ls_actuals.
MOVE-CORRESPONDING ls_konv to ls_actuals.
MOVE-CORRESPONDING ls_konh to ls_actuals.
append ls_actuals to it_actuals.
endif.
ENDLOOP.
ENDLOOP.
initialize read index
s_index = 1.
ENDIF. "First data package ?
Fetch records into interface table.
named E_T_'Name of extract structure'.
DO s_s_if-maxsize TIMES.
READ TABLE it_actuals INDEX s_index INTO e_t_data.
IF sy-subrc <> 0.
IF e_t_data IS INITIAL.
RAISE no_more_data.
ENDIF.
EXIT.
ENDIF.
APPEND e_t_data.
s_index = s_index + 1.
ENDDO.
S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
ENDIF. "Initialization mode or data extraction ?
ENDFUNCTION.
Hi Raghu,
Interesting logic, not the way I would do it, but should work. The only thing i can see is, is it_actuals a static table?
Also, if you run RSA3 with package size 100 and 10 calls, what is the result you get? You should get 10 packages of size 100. If you get only one package with the 42000 records you mention, then the max number of records is not working correctly.
Cheers,
Diego
Hi,
In your infopackae, go to scheduler - datas. default data transfer. and in the first field (maximum size in rows), set the number of rows. but be careful, big packages can affect performance.
Cheers,
Diego
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Diego,
Thanks for your response. I don't see rows but I see max packet size in KBytes. I increased that to max. I think it is limited by the size in data source. It stil does not bring all the rows. How is it working for standard data sources?
Also this is the maximum for one packet size, should'nt the extractor create another package?
Thanks
Hi Raghu,
Sorry, i checked a 3.x datasource. For 7.x it is in KB.
Yes, it should create another package. But you need to have logic in your function module in the source system to do that.
Have a look at RSAX_BIW_GET_DATA_SIMPLE, check the package number, statics and the maxsize fields.
Cheers,
Diego
User | Count |
---|---|
88 | |
10 | |
10 | |
9 | |
7 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.