cancel
Showing results for 
Search instead for 
Did you mean: 

Number Range Buffering while Loading

Former Member
0 Kudos

Hi all,

does anyone know whether it is possible to change the buffer size of number range objects in BW while these number range objects are being accessed by loads?

Thanks

Gerrit

Accepted Solutions (0)

Answers (3)

Answers (3)

bi7kiran
Active Participant
0 Kudos

Hi

When loading large quantities of data into an InfoCube, the number range buffer should be increased for the dimensions that are likely to have a high number of values , Use Function module RSD_CUBE_GET to Identify the object name of the dimension.(Take the Object number from this function module)

Use Transaction SNRO ->EDIT-> Setup Buffering->Main memory buffering for package dimension

set the values between 500 and 1000

Please find below an wiki on this

https://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=50004015

Hope this would be helpful to you

Many thanks

kiran

Former Member
0 Kudos

Hi Diogo,

many thanks for this.

We have quite abig load running at the moment and we are wondering whether it would have any negative impact if we changed the buffer size of some objects now. Do you know if that would be the case?

Thanks

Gerrit

Former Member
0 Kudos

Hi there,

Never test it change it at the moment.

But if you know the load is still in an initial phase, you can cancel it, change the BID buffering, repeat the load and afterwords revert it.

But nevertheless you could try to change it even so (while running) and see if it changes anything, you can monitor it in sm50 the access to NRIV and the dimension which contains the BID if still persists. If so, nothing changed, if not, you're changes might be successfull.

Diogo.

Former Member
0 Kudos

Hi there,

I wrote a program adapted on another code that was present here in SDN and use it in process chain to change the BID number range, and after the load, I use the same program to revert it.

You pass the BID as parameter, the number to buffer the BID and the option to add to memory or do not use memory buffering.

Here it is the code:



*&---------------------------------------------------------------------*
*& Report Z_GET_NUMBER_RANGE_INFO_CUBE
*&
*&---------------------------------------------------------------------*
*& Author: Rajiv Deshpande Date: August 01 2006
*& Description: This program changes the value for selected Number Range
*& Input: Info Cube Name, No. of Numbers in Memory and radio button
*& selection Add / Delete (Main Memory Buffering)
*& Output: Displays the List of Dimensions in the given cube with
*& additional information like the Number Range #, Current
*& Status.The Number Range # has a HotSpot when clicked calls a
*& BDC program to do the user defined activity (Add/Delte (Main
*& Memory Buffer)).
*&---------------------------------------------------------------------*
report z_buffer_number_range line-size 225.
tables: nriv, tnro.
type-pools: rzd1.
constants: nodata type c value '/'. "nodata
parameter: BID like nriv-object obligatory,
*parameter: p_cube like rsdcube-infocube obligatory,
p_number like tnro-noivbuffer obligatory,
p_add radiobutton group grp1,
p_del radiobutton group grp1.
data:
opt type ctu_params,
c_cube type rsd_infocube,
c_number(8) type c,
bdc_obj like nriv-object,
l_escube type rsd_s_cube,
l_etdime type rsd_t_dime,
bdcdata like bdcdata occurs 0 with header line.

start-of-selection.
*  c_cube = p_cube.
  c_number = p_number.
  bdc_obj = BID.
*  perform get_the_cube_info.
*  perform write_info.

end-of-selection.

*at line-selection.
*  bdc_obj = sy-lisel+81(10).
  perform fill_bdc using bdc_obj c_number p_add p_del.
  perform call_tcode.
**&---------------------------------------------------------------------
**
**& Form get_the_cube_info
**&---------------------------------------------------------------------
**
** Gets CUBE Information
**----------------------------------------------------------------------
**
*form get_the_cube_info .
*  call function 'RSD_CUBE_GET'
*  exporting
*  i_infocube = c_cube
*  i_objvers = 'A'
*  i_bypass_buffer = 'X'
** I_WITH_ATR_NAV = RS_C_FALSE
*  importing
*  e_s_cube = l_escube
** E_S_TBHD =
** E_TBHD_NOT_FOUND =
** E_T_CUBET =
** E_T_CUBE_IOBJ =
** E_T_CUBE_DIME =
*  e_t_dime = l_etdime
** E_T_DIMET =
** E_T_DIME_IOBJ =
** E_T_ICHA_PRO =
** E_T_IKYF_PRO =
** E_T_IC_VAL_IOBJ =
** E_T_CUBE_PART =
** E_T_CUBE_PART_IOBJ =
** E_T_MULTI_IOBJ =
*  exceptions
*  infocube_not_found = 1
*  illegal_input = 2
*  others = 3.
*  if sy-subrc <> 0.
*    case sy-subrc.
*      when '1'.
*        write: 'Info cube :', c_cube, 'not found.'.
*    endcase.
*  endif.
*endform. " get_the_cube_info
*&---------------------------------------------------------------------*
*& Form write_info
*&---------------------------------------------------------------------*
* Writes the Cube Information, also has HotSpot defined on the Number
* Range #.
*----------------------------------------------------------------------*
*form write_info .
*  data: begin of i_time occurs 0.
*          include structure rsd_s_dime.
*  data: end of i_time.
*  data: value type i,
*  value1 type i.
*  if p_add = 'X'.
*    format color 5.
*    write:/, 'ADD MAIN MEMORY MODE'.
*    format color off.
*  else.
*    format color 6.
*    write:/, 'DELETE MAIN MEMORY MODE'.
*    format color off.
*  endif.
*  write:/,'Cube Name:', c_cube.
*  write:/, 00 'DIM',
*  12 'DIM TEXT',
*  38 '#',
*  43 'TYPE',
*  52 'DIM TABLE NAME',
*  82 'Number Range #',
*  100 'Current Status',
*  115 'Buffer(Y/N)',
*  130 '# in Memory'.
*  uline.
*  loop at l_etdime into i_time.
*    case i_time-iobjtp.
*      when 'DPA' or 'TIM' or 'UNI'.
*        continue.
*    endcase.
*    select single * from nriv client specified
*    where client = sy-mandt
*    and object = i_time-nobject.
*    if sy-subrc = 0.
*      select single * from tnro where object = i_time-nobject.
*    endif.
*    value = nriv-nrlevel.
*    value1 = tnro-noivbuffer.
*    write: /
** i_time-infocube,r
** i_time-objvers,
*    i_time-dimension(10) under 'DIM',
** i_time-langu,
** i_time-txtsh,
*    i_time-txtlg(25) under 'DIM TEXT',
*    i_time-posit under '#',
*    i_time-iobjtp under 'TYPE',
** i_time-linitfl,
** i_time-highcard,
*    i_time-tablnm under 'DIM TABLE NAME',
** i_time-tstpnm,
** i_time-timestmp,
** i_time-numbranr,
*    i_time-nobject under 'Number Range #' hotspot on
*    quickinfo 'Change' color 3,
*    value under 'Current Status' decimals 0,
*    tnro-buffer under 'Buffer(Y/N)',
*    value1 under '# in Memory'.
** i_time-ddstate.
*  endloop.
*  uline.
*endform. " write_info
*&---------------------------------------------------------------------*
*& Form fill_bdc
*&---------------------------------------------------------------------*
* Fills the BDC, depending on the flag (Add/Delete)
*----------------------------------------------------------------------*
* --> Object #, Number, Add Flag, Delete Flag
*----------------------------------------------------------------------*
form fill_bdc using object number add del.
  perform bdc_dynpro using 'SAPMSNRO' '0150'.
  perform bdc_field using 'BDC_CURSOR' 'NRIV-OBJECT'.
  perform bdc_field using 'BDC_OKCODE' '=UPD'.
  perform bdc_field using 'NRIV-OBJECT' object.
  if add = 'X'.
    perform bdc_dynpro using 'SAPLSNR2' '0100'.
    perform bdc_field using 'BDC_OKCODE' '=PUF1'.
    perform bdc_dynpro using 'SAPLSNR2' '0100'.
    perform bdc_field using 'BDC_CURSOR' 'TNRO-NOIVBUFFER'.
    perform bdc_field using 'BDC_OKCODE' '=SAVE'.
    perform bdc_field using 'TNRO-NOIVBUFFER' number.
  else.
    perform bdc_dynpro using 'SAPLSNR2' '0100'.
    perform bdc_field using 'BDC_OKCODE' '=NONE'.
    perform bdc_dynpro using 'SAPLSNR2' '0100'.
    perform bdc_field using 'BDC_OKCODE' '=SAVE'.
  endif.
  perform bdc_dynpro using 'SAPLSPO1' '0300'.
  perform bdc_field using 'BDC_OKCODE' '=YES'.
endform. " fill_bdc
*&---------------------------------------------------------------------*
*& Form call_tcode
*&---------------------------------------------------------------------*
* Call the TCODE SNRO with Display Mode as N (No Display) &
* Default Size.
*----------------------------------------------------------------------*
.
*&---------------------------------------------------------------------*
*& Form call_tcode
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form call_tcode .
  data: l_msg(25).
  concatenate 'Changing ' bdc_obj into l_msg separated by space.
  opt-dismode = 'N'.
  opt-defsize = 'X'.
  call function 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = 75
      text       = l_msg.
  call transaction 'SNRO' using bdcdata options from opt.
  if sy-subrc <> 0.
    write:/ 'System is Bloced to make any changes'.
    exit.
  endif.
  refresh bdcdata.
  clear bdcdata.
endform. " call_tcode
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
form bdc_dynpro using program dynpro.
  clear bdcdata.
  bdcdata-program = program.
  bdcdata-dynpro = dynpro.
  bdcdata-dynbegin = 'X'.
  append bdcdata.
endform. "bdc_dynpro
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
form bdc_field using fnam fval.
  if fval <> nodata.
    clear bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    append bdcdata.
  endif.
endform. "bdc_field

Diogo.