cancel
Showing results for 
Search instead for 
Did you mean: 

Increase extractor size for Generic Extractor based on Funciton Module

Former Member
0 Kudos

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

Accepted Solutions (0)

Answers (2)

Answers (2)

former_member182470
Active Contributor
0 Kudos

Hi,

You can set the package size, Partition Size and frequency status i-doc in RSCUSTV6 transaction in BI system.

Regards,

Suman

Former Member
0 Kudos

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.

dielom
Active Contributor
0 Kudos

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

dielom
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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

dielom
Active Contributor
0 Kudos

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